Skip to content

Commit 86d6b88

Browse files
committed
feature: sbom macro to based on debuginfo_template
Added macros so that a $PACKAGE-sbom sub package is always created unless an opt out is used. This package contains the spdx and cyclonedx sbom files generated by sbomtool. Signed-off-by: Richard Kelly <rpkelly@amazon.com>
1 parent 8408245 commit 86d6b88

File tree

1 file changed

+55
-4
lines changed

1 file changed

+55
-4
lines changed

macros/shared

Lines changed: 55 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -297,14 +297,52 @@ CROSS_CMAKE_TOOLCHAIN_EOF\
297297
%_cross_sbom_dir %{_cross_datadir}/sboms
298298
%_cross_sbom_package_dir %{_cross_sbom_dir}/%{_uncross_name}
299299

300+
%_sbom_template \
301+
%ifnarch noarch\
302+
%global __sbom_package 1\
303+
%{?buildsubdir:%%global __sbom_package 1}\
304+
%package sbom\
305+
Summary: SBOM (Software Bill of Materials) for %{name}\
306+
AutoReqProv: 0\
307+
Supplements: (%{_cross_os}image-metadata(sbom) and %{name})\
308+
%description sbom\
309+
This package provides SBOM files for %{name}.\
310+
%files sbom\
311+
%{_cross_sbom_package_dir}/*\
312+
%endif\
313+
%{nil}
314+
315+
%_enable_sbom_packages 1
316+
317+
%sbom_package \
318+
%ifnarch noarch\
319+
%global __sbom_package 1\
320+
%{?buildsubdir:%%global __sbom_package 1}\
321+
%_sbom_template\
322+
%endif\
323+
%{nil}
324+
325+
%__sbom_install_post \
326+
%cross_generate_sbom \
327+
%cross_install_sbom\
328+
%{nil}
329+
330+
%__spec_install_template\
331+
%{__spec_install_pre}\
332+
%[ 0%{?_enable_debug_packages} > 0 ? "%{?buildsubdir:%(echo "%{debug_package}" > %{specpartsdir}/rpm-debuginfo.specpart)}" : "" ]\
333+
%[ 0%{?_enable_sbom_packages} > 0 ? "%{?buildsubdir:%{expand:%%global __sbom_package 1}%(echo "%{_sbom_template}" > %{specpartsdir}/rpm-sbom.specpart)}" : "" ]\
334+
%{nil}
335+
300336
%cross_generate_sbom \
301337
mkdir -p %{_builddir}/sbom-temp \
302-
sbomtool generate --name %{name} --out-dir %{_builddir}/sbom-temp --build-dir %{_builddir} --spdx --cyclonedx
338+
sbomtool generate --name %{_uncross_name} --out-dir %{_builddir}/sbom-temp --build-dir %{_builddir} --spdx --cyclonedx
303339

304340
%cross_install_sbom \
305341
install -d %{buildroot}%{_cross_sbom_package_dir} \
306-
install -p -m 0644 %{_builddir}/sbom-temp/%{name}-spdx.json %{buildroot}%{_cross_sbom_package_dir}/ \
307-
install -p -m 0644 %{_builddir}/sbom-temp/%{name}-cyclonedx.json %{buildroot}%{_cross_sbom_package_dir}/
342+
sed -i 's|%{buildroot}||g' %{_builddir}/sbom-temp/%{_uncross_name}-spdx.json \
343+
sed -i 's|%{buildroot}||g' %{_builddir}/sbom-temp/%{_uncross_name}-cyclonedx.json \
344+
install -p -m 0644 %{_builddir}/sbom-temp/%{_uncross_name}-spdx.json %{buildroot}%{_cross_sbom_package_dir}/ \
345+
install -p -m 0644 %{_builddir}/sbom-temp/%{_uncross_name}-cyclonedx.json %{buildroot}%{_cross_sbom_package_dir}/
308346

309347
%__nm %{_bindir}/%{_cross_target}-nm
310348
%__objcopy %{_bindir}/%{_cross_target}-objcopy
@@ -351,10 +389,23 @@ CROSS_CMAKE_TOOLCHAIN_EOF\
351389

352390
# Generate license attribution and check for FIPS-enabled binaries.
353391
# (The FIPS check is disabled by default, pending tree-wide packaging changes.)
392+
%__spec_install_post\
393+
%{?__debug_package:%{__debug_install_post}}\
394+
%{?__sbom_package:%{__sbom_install_post}}\
395+
%{__arch_install_post}\
396+
%{__os_install_post}\
397+
%{nil}
398+
354399
%__arch_install_post \
355400
/usr/lib/rpm/check-buildroot \
356401
%{?cross_check_fips:%{__cross_check_fips_cmd}} \
357-
%cross_generate_attribution
402+
%cross_generate_attribution \
403+
%{?__sbom_package:%cross_install_sbom}
404+
405+
# Post-build hook for SBOM generation
406+
%__spec_build_post \
407+
%{?__sbom_package:%cross_generate_sbom} \
408+
%{___build_post}
358409

359410
# Link "sources" from the new per-package build directory to the old location.
360411
%__spec_prep_pre \

0 commit comments

Comments
 (0)