@@ -189,7 +189,8 @@ recipe_build_docker() {
189
189
test -e "$i" && ln -f "$i" "$BUILD_ROOT/$TOPDIR/SOURCES/repos/build-webcache/${i##*/build-webcache-}"
190
190
done
191
191
192
- # exclude repos directory
192
+ # exclude repos/containers directory
193
+ echo containers >> "$BUILD_ROOT/$TOPDIR/SOURCES/.dockerignore"
193
194
echo repos >> "$BUILD_ROOT/$TOPDIR/SOURCES/.dockerignore"
194
195
195
196
# find tags, first look into recipe file
@@ -332,21 +333,39 @@ recipe_build_docker() {
332
333
test -s "containers/annotation" && args=("${args[@]}" --annotationfile containers/annotation)
333
334
perl -I$BUILD_DIR -MBuild::Docker -e Build::Docker::showcontainerinfo -- "${args[@]}" "$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE" "$FILENAME.tar" "$ALLTAGS" > "$BUILD_ROOT$TOPDIR/DOCKER/$FILENAME.containerinfo"
334
335
335
- # copy over .packages files
336
- for i in basepackages packages ; do
337
- test -f "$BUILD_ROOT/$TOPDIR/SOURCES/repos/UPLOAD/$i" && cp "$BUILD_ROOT/$TOPDIR/SOURCES/repos/UPLOAD/$i" "$BUILD_ROOT$TOPDIR/DOCKER/$FILENAME.$i"
338
- done
339
- if test -e "$BUILD_ROOT/$TOPDIR/SOURCES/repos/.pkgsummaries" ; then
340
- for i in pkgsummaries ; do
336
+ if test -f "$BUILD_ROOT/$TOPDIR/SOURCES/repos/UPLOAD/packages" ; then
337
+ # copy over .packages files
338
+ for i in basepackages packages ; do
341
339
test -f "$BUILD_ROOT/$TOPDIR/SOURCES/repos/UPLOAD/$i" && cp "$BUILD_ROOT/$TOPDIR/SOURCES/repos/UPLOAD/$i" "$BUILD_ROOT$TOPDIR/DOCKER/$FILENAME.$i"
342
340
done
341
+ if test -e "$BUILD_ROOT/$TOPDIR/SOURCES/repos/.pkgsummaries" ; then
342
+ for i in pkgsummaries ; do
343
+ test -f "$BUILD_ROOT/$TOPDIR/SOURCES/repos/UPLOAD/$i" && cp "$BUILD_ROOT/$TOPDIR/SOURCES/repos/UPLOAD/$i" "$BUILD_ROOT$TOPDIR/DOCKER/$FILENAME.$i"
344
+ done
345
+ fi
346
+ else
347
+ # build did not create packages file, try introspection
348
+ cp --remove-destination "$BUILD_DIR/create_container_package_list" "$BUILD_ROOT/tmp/create_container_package_list"
349
+ echo "creating package information"
350
+ chroot "$BUILD_ROOT" /bin/bash /tmp/create_container_package_list "$TOPDIR/DOCKER/$FILENAME.tar" > "$BUILD_ROOT$TOPDIR/DOCKER/$FILENAME.packages"
351
+ if test -e "$BUILD_ROOT/$TOPDIR/SOURCES/repos/.pkgsummaries" ; then
352
+ echo "creating package summaries information"
353
+ chroot "$BUILD_ROOT" /bin/bash /tmp/create_container_package_list --summaries "$TOPDIR/DOCKER/$FILENAME.tar" > "$BUILD_ROOT$TOPDIR/DOCKER/$FILENAME.pkgsummaries"
354
+ fi
355
+ local basecontainer=$(perl -I$BUILD_DIR -MBuild::Docker -e Build::Docker::show -- "$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE" basecontainer)
356
+ if test -n "$basecontainer" ; then
357
+ echo "creating base package information for base container $basecontainer"
358
+ $DOCKER_CMD save --output "/tmp/basecontainer.tar" "$basecontainer"
359
+ chroot "$BUILD_ROOT" /bin/bash /tmp/create_container_package_list "/tmp/basecontainer.tar" > "$BUILD_ROOT$TOPDIR/DOCKER/$FILENAME.basepackages"
360
+ fi
361
+ rm -f "$BUILD_ROOT/tmp/create_container_package_list"
343
362
fi
344
363
rm -rf "$BUILD_ROOT/$TOPDIR/SOURCES/repos/UPLOAD"
345
364
346
365
# create sbom if requested
347
366
for format in $(queryconfig --dist "$BUILD_DIST" --configdir "$CONFIG_DIR" --archpath "$BUILD_ARCH" buildflags+ sbom | sort -u) ; do
348
367
echo "Generating $format sbom file"
349
- generate_sbom --format "$format" --container-archive "$TOPDIR/DOCKER/$FILENAME.tar" > "$BUILD_ROOT$TOPDIR/DOCKER/$FILENAME.${format/cyclonedx/cdx}.json" || cleanup_and_exit 1 "generate_sbom failed!"
368
+ generate_sbom --format "$format" --container-archive "$BUILD_ROOT/$ TOPDIR/DOCKER/$FILENAME.tar" > "$BUILD_ROOT$TOPDIR/DOCKER/$FILENAME.${format/cyclonedx/cdx}.json" || cleanup_and_exit 1 "generate_sbom failed!"
350
369
test -s "$BUILD_ROOT$TOPDIR/DOCKER/$FILENAME.${format/cyclonedx/cdx}.json" || rm -f "$BUILD_ROOT$TOPDIR/DOCKER/$FILENAME.${format/cyclonedx/cdx}.json"
351
370
done
352
371
0 commit comments