[1/4] testsuite: fix sstate test with relocated build directory

Message ID 20261029102027.1974884-1-clara.kowalsky@siemens.com
State Under Review
Headers show
Series [1/4] testsuite: fix sstate test with relocated build directory | expand

Commit Message

Clara Kowalsky Oct. 29, 2026, 10:20 a.m. UTC
In rootful mode, sbuild uses schroot and creates its overlay upperdir
under TMPDIR. The test-container mounts /isar as an overlay, but
bind-mounts /isar/build to its work directory. The sstate test placed
its build outside that bind mount, so schroot could not use the
upperdir. The test failed when running:

scripts/run-tests.sh testsuite/citest.py:SstateTest.test_sstate \
  -p rootless=0 --debug

ERROR| E: 10mount: mount: /run/schroot/mount/isar-builder-...:
fsconfig() failed: overlay: filesystem on
/isar/build-sstate/tmp/schroot-overlay/isar-builder.../upper not
supported as upperdir.

This is fixed by moving the sstate build under /isar/build. Since this
relocates TOPDIR, BBLAYER paths are generated relative to the build
directory, so BitBake uses the relocated checkout.
The SignatureTest still passes successfully with this change.

Fixes: a00e0aa0afff ("testsuite: fix SignatureTest by avoiding absolute path in bblayers")
Signed-off-by: Clara Kowalsky <clara.kowalsky@siemens.com>
---
 meta-test/conf/bblayers.conf.sample | 8 ++++----
 scripts/isar-setup-builddir         | 5 +++--
 testsuite/cibase.py                 | 2 +-
 testsuite/citest.py                 | 2 +-
 4 files changed, 9 insertions(+), 8 deletions(-)

Patch

diff --git a/meta-test/conf/bblayers.conf.sample b/meta-test/conf/bblayers.conf.sample
index b04aba92..48928450 100644
--- a/meta-test/conf/bblayers.conf.sample
+++ b/meta-test/conf/bblayers.conf.sample
@@ -9,10 +9,10 @@  BBPATH = "${TOPDIR}"
 BBFILES ?= ""
 
 BBLAYERS ?= " \
-  ${TOPDIR}/../meta \
-  ${TOPDIR}/../meta-isar \
-  ${TOPDIR}/../meta-test \
+  ${TOPDIR}/##ISARROOT_RELATIVE##/meta \
+  ${TOPDIR}/##ISARROOT_RELATIVE##/meta-isar \
+  ${TOPDIR}/##ISARROOT_RELATIVE##/meta-test \
   "
 BBLAYERS_NON_REMOVABLE ?= " \
-  ${TOPDIR}/../meta \
+  ${TOPDIR}/##ISARROOT_RELATIVE##/meta \
   "
diff --git a/scripts/isar-setup-builddir b/scripts/isar-setup-builddir
index 3896793d..401a137c 100755
--- a/scripts/isar-setup-builddir
+++ b/scripts/isar-setup-builddir
@@ -100,9 +100,10 @@  into your configuration please add entries to conf/bblayers.conf.
 
 EOM
 
-    # Put the abosolute path to the layers in bblayers.conf so we can run
-    # bitbake without the init script after the first run
+    # Expand source-root placeholders so layers can be found independently
+    # of the build directory location.
     sed -e "s|##ISARROOT##|$ISARROOT|g" \
+        -e "s|##ISARROOT_RELATIVE##|$(realpath --relative-to="$BUILDDIR" "$ISARROOT")|g" \
         $ISARCORELAYERCONF > "$BUILDDIR/conf/bblayers.conf"
     SHOWYPDOC=yes
 fi
diff --git a/testsuite/cibase.py b/testsuite/cibase.py
index e5150b36..3f44e8ac 100755
--- a/testsuite/cibase.py
+++ b/testsuite/cibase.py
@@ -268,7 +268,7 @@  class CIBaseTest(CIBuilder):
         os.makedirs(isar_sstate)
         process.run(f"git --work-tree={isar_sstate} checkout HEAD -- .")
 
-        self.init('../build-sstate', isar_dir=isar_sstate)
+        self.init('../build/build-sstate', isar_dir=isar_sstate)
         self.configure(targets=image_target, sstate=True, sstate_dir='', **kwargs)
 
         # Cleanup sstate and tmp before test
diff --git a/testsuite/citest.py b/testsuite/citest.py
index af4cea6a..d057ffa2 100644
--- a/testsuite/citest.py
+++ b/testsuite/citest.py
@@ -1571,7 +1571,7 @@  class SstateTest(CIBaseTest):
         image_target = 'mc:qemuamd64-bullseye:isar-image-base'
         package_target = 'mc:qemuamd64-bullseye:hello'
 
-        self.init('build-sstate')
+        self.init('build/build-sstate')
         self.perform_sstate_test(image_target, package_target)