public inbox for isar-users@googlegroups.com
 help / color / mirror / Atom feed
From: "'Felix Moessbauer' via isar-users" <isar-users@googlegroups.com>
To: isar-users@googlegroups.com
Cc: quirin.gylstorff@siemens.com, jan.kiszka@siemens.com,
	Felix Moessbauer <felix.moessbauer@siemens.com>
Subject: [PATCH 1/8] rootfs: generalize deployment of rootfs artifact
Date: Tue, 15 Sep 2026 12:01:18 +0200	[thread overview]
Message-ID: <20260915100125.1991311-2-felix.moessbauer@siemens.com> (raw)
In-Reply-To: <20260915100125.1991311-1-felix.moessbauer@siemens.com>

We already have two locations where the generated rootfs is deployed as
an artifact. We now generalize the logic and hide it behind an
interface. We further register a function to remove the generated
artifact on clean.

Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
---
 meta/classes-recipe/imagetypes_wic.bbclass    |  2 +-
 meta/classes-recipe/rootfs-deploy.bbclass     | 30 +++++++++++++++++++
 meta/classes/sbom.bbclass                     |  2 +-
 .../sbom-chroot/sbom-chroot.bb                | 19 ++++--------
 .../sbuild-chroot/sbuild-chroot.inc           | 30 +++++--------------
 5 files changed, 44 insertions(+), 39 deletions(-)
 create mode 100644 meta/classes-recipe/rootfs-deploy.bbclass

diff --git a/meta/classes-recipe/imagetypes_wic.bbclass b/meta/classes-recipe/imagetypes_wic.bbclass
index c1647081..6cf7bd8e 100644
--- a/meta/classes-recipe/imagetypes_wic.bbclass
+++ b/meta/classes-recipe/imagetypes_wic.bbclass
@@ -143,7 +143,7 @@ check_for_wic_warnings() {
     fi
 }
 
-do_image_wic[depends] += "${@bb.utils.contains('ROOTFS_FEATURES', 'generate-sbom', 'sbom-chroot:do_sbomchroot_deploy', '', d)}"
+do_image_wic[depends] += "${@bb.utils.contains('ROOTFS_FEATURES', 'generate-sbom', 'sbom-chroot:do_build', '', d)}"
 do_image_wic[file-checksums] += "${WKS_FILE_CHECKSUM}"
 IMAGE_CMD:wic() {
     generate_wic_image
diff --git a/meta/classes-recipe/rootfs-deploy.bbclass b/meta/classes-recipe/rootfs-deploy.bbclass
new file mode 100644
index 00000000..35b1a5cc
--- /dev/null
+++ b/meta/classes-recipe/rootfs-deploy.bbclass
@@ -0,0 +1,30 @@
+# This software is a part of Isar.
+# Copyright (c) Siemens AG, 2026
+#
+# Inherit this class to deploy the rootfs as a compressed tarball
+# and remove the (local) extracted rootfs after deployment.
+
+ROOTFS_TAR_FLAGS ?= ""
+ROOTFS_ZSTD_CLEVEL ?= "8"
+ROOTFS_DEPLOY_DIR ?= "${DEPLOY_DIR}/chroot-${PN}"
+ROOTFS_DEPLOY_FILE ?= "${ROOTFS_DEPLOY_DIR}/${HOST_DISTRO}-${HOST_ARCH}_${DISTRO}-${DISTRO_ARCH}.tar.zst"
+
+do_rootfs_deploy[dirs] = "${ROOTFS_DEPLOY_DIR}"
+do_rootfs_deploy[network] = "${TASK_USE_SUDO}"
+do_rootfs_deploy() {
+    # deploy with empty var to make it smaller
+    lopts="--one-file-system"
+    ZSTD="zstd -${ROOTFS_ZSTD_CLEVEL} -T${ZSTD_THREADS}"
+
+    run_privileged \
+        tar -C ${ROOTFSDIR} -cpS $lopts ${ROOTFS_TAR_FLAGS} . \
+            | $ZSTD > ${ROOTFS_DEPLOY_FILE}
+    # cleanup extracted rootfs
+    run_privileged rm -rf ${ROOTFSDIR}
+}
+addtask do_rootfs_deploy before do_build after do_rootfs
+
+CLEANFUNCS += "rootfs_deploy_clean"
+rootfs_deploy_clean() {
+    rm -rf ${ROOTFS_DEPLOY_FILE}
+}
diff --git a/meta/classes/sbom.bbclass b/meta/classes/sbom.bbclass
index dad8e8f6..f7adde36 100644
--- a/meta/classes/sbom.bbclass
+++ b/meta/classes/sbom.bbclass
@@ -79,7 +79,7 @@ do_generate_sbom[cleandirs] += "${SBOM_LOCAL_DEPLOYDIR}"
 do_generate_sbom[sstate-inputdirs] = "${SBOM_LOCAL_DEPLOYDIR}"
 do_generate_sbom[sstate-outputdirs] = "${DEPLOY_DIR_SBOM}"
 do_generate_sbom[network] = "${TASK_USE_SUDO}"
-do_generate_sbom[depends] += "sbom-chroot:do_sbomchroot_deploy"
+do_generate_sbom[depends] += "sbom-chroot:do_build"
 python do_generate_sbom() {
     sbom_doc_uuid(d)
     try:
diff --git a/meta/recipes-devtools/sbom-chroot/sbom-chroot.bb b/meta/recipes-devtools/sbom-chroot/sbom-chroot.bb
index f347327b..4727efe4 100644
--- a/meta/recipes-devtools/sbom-chroot/sbom-chroot.bb
+++ b/meta/recipes-devtools/sbom-chroot/sbom-chroot.bb
@@ -26,17 +26,8 @@ SBOM_IMAGE_INSTALL = "python3-debsbom python3-spdx-tools python3-cyclonedx-lib"
 ROOTFSDIR = "${WORKDIR}/rootfs"
 ROOTFS_PACKAGES = "${SBOM_IMAGE_INSTALL}"
 
-do_sbomchroot_deploy[dirs] = "${SBOM_DIR}"
-do_sbomchroot_deploy[network] = "${TASK_USE_SUDO}"
-do_sbomchroot_deploy() {
-    # deploy with empty var to make it smaller
-    lopts="--one-file-system --exclude=var/*"
-    ZSTD="zstd -${SSTATE_ZSTD_CLEVEL} -T${ZSTD_THREADS}"
-
-    run_privileged \
-        tar -C ${ROOTFSDIR} -cpS $lopts ${ROOTFS_TAR_ATTR_FLAGS} . \
-            | $ZSTD > ${SBOM_CHROOT}
-    # cleanup extracted rootfs
-    run_privileged rm -rf ${ROOTFSDIR}
-}
-addtask do_sbomchroot_deploy before do_build after do_rootfs
+inherit rootfs-deploy
+
+ROOTFS_DEPLOY_DIR = "${SBOM_DIR}"
+ROOTFS_DEPLOY_FILE = "${SBOM_CHROOT}"
+ROOTFS_TAR_FLAGS += "--exclude=var/*"
diff --git a/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc b/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc
index 80c43d20..ae9e0e76 100644
--- a/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc
+++ b/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc
@@ -70,28 +70,12 @@ ROOTFS_POSTPROCESS_COMMAND:remove = "rootfs_cleanup_base_apt"
 
 DEPLOY_SCHROOT = "${@d.getVar('SCHROOT_' + d.getVar('SBUILD_VARIANT').upper() + '_DIR')}${SBUILD_SCHROOT_SUFFIX}"
 
-sbuildchroot_deploy_tree() {
-    ln -Tfsr "${ROOTFSDIR}" "${DEPLOY_SCHROOT}"
-}
-sbuildchroot_deploy_tar() {
-    lopts="--one-file-system --exclude=var/cache/apt/archives --exclude=isar-apt"
-    # we cannot use pzstd, as this results in a different magic
-    # (zstd skippable frame) which is not detected by sbuild
-    # https://salsa.debian.org/debian/sbuild/-/blob/d975d388a98627a0d7d112791e441c27a6d529df/lib/Sbuild/ChrootUnshare.pm#L608
-    ZSTD="zstd -${SSTATE_ZSTD_CLEVEL} -T${ZSTD_THREADS}"
-    run_privileged \
-        tar -C ${ROOTFSDIR} -cpS $lopts ${ROOTFS_TAR_ATTR_FLAGS} . \
-            | $ZSTD > ${DEPLOY_SCHROOT}.tar.zst
-    # cleanup extracted rootfs
-    run_privileged rm -rf ${ROOTFSDIR}
-}
+inherit rootfs-deploy
+
+ROOTFS_DEPLOY_DIR = "${DEPLOY_DIR}/schroot-${SBUILD_VARIANT}"
+ROOTFS_DEPLOY_FILE = "${DEPLOY_SCHROOT}"
+ROOTFS_DEPLOY_FILE:unshare = "${DEPLOY_SCHROOT}.tar.zst"
 
-do_sbuildchroot_deploy[network] = "${TASK_USE_SUDO}"
-do_sbuildchroot_deploy[dirs] += "${DEPLOY_DIR}/schroot-${SBUILD_VARIANT}"
-python do_sbuildchroot_deploy() {
-    if d.getVar('ISAR_CHROOT_MODE') == 'unshare':
-        bb.build.exec_func('sbuildchroot_deploy_tar', d)
-    else:
-        bb.build.exec_func('sbuildchroot_deploy_tree', d)
+do_rootfs_deploy:schroot() {
+    ln -Tfsr "${ROOTFSDIR}" "${ROOTFS_DEPLOY_FILE}"
 }
-addtask sbuildchroot_deploy before do_build after do_rootfs
-- 
2.55.0

-- 
You received this message because you are subscribed to the Google Groups "isar-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/isar-users/20260915100125.1991311-2-felix.moessbauer%40siemens.com.

  reply	other threads:[~2026-09-15 10:01 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-15 10:01 [PATCH 0/8] Add support to cross-compile a dracut initramfs 'Felix Moessbauer' via isar-users
2026-09-15 10:01 ` 'Felix Moessbauer' via isar-users [this message]
2026-09-15 10:01 ` [PATCH 2/8] dracut-module: make module-setup compatible with sysroot 'Felix Moessbauer' via isar-users
2026-09-15 10:01 ` [PATCH 3/8] initramfs: move dracut logic to initrd-dracut class 'Felix Moessbauer' via isar-users
2026-09-15 10:01 ` [PATCH 4/8] dracut: use fixed log level on generation for progress reporting 'Felix Moessbauer' via isar-users
2026-09-15 10:01 ` [PATCH 5/8] dracut: enforce build of reproducible initrd 'Felix Moessbauer' via isar-users
2026-09-15 10:01 ` [PATCH 6/8] add host-tooling chroot for generic host tooling 'Felix Moessbauer' via isar-users
2026-09-15 10:01 ` [PATCH 7/8] dracut: add support for cross initrd generation 'Felix Moessbauer' via isar-users
2026-09-15 10:01 ` [PATCH 8/8] rootfs: stub both dracut and update-initramfs on dracut 'Felix Moessbauer' via isar-users

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260915100125.1991311-2-felix.moessbauer@siemens.com \
    --to=isar-users@googlegroups.com \
    --cc=felix.moessbauer@siemens.com \
    --cc=jan.kiszka@siemens.com \
    --cc=quirin.gylstorff@siemens.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox