[RFC,01/12] refactor bootstrap: store rootfs tar with user permissions

Message ID 20260218115827.3947145-2-felix.moessbauer@siemens.com
State New
Headers show
Series add support to build isar unprivileged | expand

Commit Message

MOESSBAUER, Felix Feb. 18, 2026, 11:58 a.m. UTC
As the mmdebstrap itself is executed as root, the generated rootfs will
also be owned by root when stored as file. To avoid this, we let
mmdebstrap emit the rootfs on stdout and write it to a file outside of
the sudo call.

Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
---
 .../isar-mmdebstrap/isar-mmdebstrap.inc             | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

Patch

diff --git a/meta/recipes-core/isar-mmdebstrap/isar-mmdebstrap.inc b/meta/recipes-core/isar-mmdebstrap/isar-mmdebstrap.inc
index 73fe9434..d5bbae70 100644
--- a/meta/recipes-core/isar-mmdebstrap/isar-mmdebstrap.inc
+++ b/meta/recipes-core/isar-mmdebstrap/isar-mmdebstrap.inc
@@ -240,11 +240,11 @@  do_bootstrap() {
                    ${@get_apt_opts(d, '--aptopt')} \
                    ${@get_distro_components_argument(d)} \
                    "${@get_distro_suite(d)}" \
-                   "${WORKDIR}/rootfs.tar.zst" \
-                   "$bootstrap_list"
+                   - \
+                   "$bootstrap_list" > ${WORKDIR}/rootfs.tar.zst
 
     # Finalize bootstrap by setting the link in deploy
-    sudo ln -Tfsr "${WORKDIR}/rootfs.tar.zst" "${DEPLOY_ISAR_BOOTSTRAP}.tar.zst"
+    ln -Tfsr "${WORKDIR}/rootfs.tar.zst" "${DEPLOY_ISAR_BOOTSTRAP}.tar.zst"
 
     if [ "${ISAR_USE_CACHED_BASE_REPO}" != "1" ]; then
         deb_dl_dir_export "${WORKDIR}/dl_dir" "${BOOTSTRAP_BASE_DISTRO}-${BASE_DISTRO_CODENAME}"
@@ -259,8 +259,7 @@  SSTATEPOSTINSTFUNCS += "bootstrap_sstate_finalize"
 
 bootstrap_sstate_prepare() {
     # this runs in SSTATE_BUILDDIR, which will be deleted automatically
-    sudo cp -a "${WORKDIR}/rootfs.tar.zst" ./bootstrap.tar.zst
-    sudo chown $(id -u):$(id -g) bootstrap.tar.zst
+    cp -a "${WORKDIR}/rootfs.tar.zst" ./bootstrap.tar.zst
 }
 
 bootstrap_sstate_finalize() {
@@ -268,8 +267,8 @@  bootstrap_sstate_finalize() {
     # we should restore symlinks after using tar
     if [ -f bootstrap.tar.zst ]; then
         mv bootstrap.tar.zst "${WORKDIR}/rootfs.tar.zst"
-        sudo ln -Tfsr "${WORKDIR}/rootfs.tar.zst" \
-                      "${DEPLOY_ISAR_BOOTSTRAP}.tar.zst"
+        ln -Tfsr "${WORKDIR}/rootfs.tar.zst" \
+                 "${DEPLOY_ISAR_BOOTSTRAP}.tar.zst"
     fi
 }