mbox series

[0/2] Prevent adding unneeded package variants to recursive dependency chain

Message ID 20251103154223.985951-1-anaumann@emlix.com
Headers show
Series Prevent adding unneeded package variants to recursive dependency chain | expand

Message

Andreas Naumann Nov. 3, 2025, 3:42 p.m. UTC
This is a stripped down version of my previous 
[RFC 0/5] Improving multiarch support for arch-incompatible packages

For now, I've dropped all patches except the one which covers the problem
where targets in the dependency chain are built for both the host and the
target architecture while only one is needed.

The second patch is a way to reproduce this. It's quite hacky, and
would need serious rework before integration into the testsuite.

Andreas Naumann (2):
  rootfs: Prevent adding unneeded package variants to recursive
    dependency chain
  DONOTMERGE: testcase for transient native dependency

 meta-isar/recipes-app/adduser/adduser.bb         | 6 ++++++
 meta-isar/recipes-app/gss/gss.bb                 | 5 +++++
 meta-isar/recipes-core/images/isar-image-base.bb | 2 ++
 meta/classes/rootfs.bbclass                      | 3 ++-
 4 files changed, 15 insertions(+), 1 deletion(-)
 create mode 100644 meta-isar/recipes-app/adduser/adduser.bb
 create mode 100644 meta-isar/recipes-app/gss/gss.bb

Comments

Zhihang Wei Nov. 7, 2025, noon UTC | #1
Hi,

the patch caused "citest.py:ReproTest.test_repro_unsigned" to fail on 
full CI,
when building target 'mc:qemuarm-bookworm:isar-image-base'.

Log follows:

11:39:04  (1/1) 
/build/isar_wzh_devel_8/13/testsuite/citest.py:ReproTest.test_repro_unsigned: 
STARTED
11:58:27  (1/1) 
/build/isar_wzh_devel_8/13/testsuite/citest.py:ReproTest.test_repro_unsigned: 
FAIL: Bitbake failed (1162.57 s)

[stdlog] 2025-11-07 10:56:41,807 avocado.test cibuilder L0320 INFO | 
NOTE: Running task 199 of 216 
(mc:qemuarm-bookworm:/build/isar_wzh_devel_8/13/meta-isar/recipes-app/hello/hello.bb:do_deploy_deb)
[stdlog] 2025-11-07 10:56:41,838 avocado.test cibuilder L0320 INFO | 
NOTE: recipe hello-1.0-r0: task do_deploy_deb: Started
[stdlog] 2025-11-07 10:56:41,882 avocado.test cibuilder L0320 INFO | 
NOTE: recipe hello-1.0-r0: task do_deploy_deb: Succeeded
[stdlog] 2025-11-07 10:57:25,345 avocado.app cibuilder L0322 ERROR| 
ERROR: mc:qemuarm-bookworm:gss-1.0-r0 do_dpkg_build: 
ExecutionError('/build/isar_wzh_devel_8/13/build/tmp/work/debian-bookworm-armhf/gss/1.0-r0/temp/run.dpkg_runbuild.1741456', 
2, None, None)
[stdlog] 2025-11-07 10:57:25,346 avocado.app cibuilder L0322 ERROR| 
ERROR: Logfile of failure stored in: 
/build/isar_wzh_devel_8/13/build/tmp/work/debian-bookworm-armhf/gss/1.0-r0/temp/log.do_dpkg_build.1741456
[stdlog] 2025-11-07 10:57:52,019 avocado.app cibuilder L0322 ERROR| 
ERROR: Task 
(mc:qemuarm-bookworm:/build/isar_wzh_devel_8/13/meta-isar/recipes-app/gss/gss.bb:do_dpkg_build) 
failed with exit code '1'

In log.do_dpkg_build.1741456:
Making check in tests
make[3]: Entering directory '/<<PKGBUILDDIR>>/build/tests'
make  basic saslname krb5context \
   threadsafety.sh
make[4]: Entering directory '/<<PKGBUILDDIR>>/build/tests'
gcc -DHAVE_CONFIG_H -I. -I../../tests -I..  -I../lib/headers 
-I../../lib/headers -DLOCALEDIR=\"/usr/share/locale\" -Wdate-time 
-D_FORTIFY_SOURCE=2   -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. 
-fstack-protector-strong -Wformat -Werror=format-security -c -o basic.o 
../../tests/basic.c
gcc -DHAVE_CONFIG_H -I. -I../../tests -I..  -I../lib/headers 
-I../../lib/headers -DLOCALEDIR=\"/usr/share/locale\" -Wdate-time 
-D_FORTIFY_SOURCE=2   -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. 
-fstack-protector-strong -Wformat -Werror=format-security -c -o 
saslname.o ../../tests/saslname.c
gcc -DHAVE_CONFIG_H -I. -I../../tests -I..  -I../lib/headers 
-I../../lib/headers -DLOCALEDIR=\"/usr/share/locale\" -Wdate-time 
-D_FORTIFY_SOURCE=2   -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. 
-fstack-protector-strong -Wformat -Werror=format-security -c -o 
krb5context.o ../../tests/krb5context.c
make[4]: Nothing to be done for '../../tests/threadsafety.sh'.
/bin/bash ../libtool  --tag=CC   --mode=link gcc   -g -O2 
-ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat 
-Werror=format-security -no-install -Wl,-z,relro -Wl,-z,now -o saslname 
saslname.o ../lib/libgss.la
/bin/bash ../libtool  --tag=CC   --mode=link gcc   -g -O2 
-ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat 
-Werror=format-security -no-install -Wl,-z,relro -Wl,-z,now -o basic 
basic.o ../lib/libgss.la
/bin/bash ../libtool  --tag=CC   --mode=link gcc   -g -O2 
-ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat 
-Werror=format-security -no-install -Wl,-z,relro -Wl,-z,now -o 
krb5context krb5context.o ../lib/libgss.la  
-L/usr/lib/arm-linux-gnueabihf -lshishi
libtool: link: gcc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. 
-fstack-protector-strong -Wformat -Werror=format-security -Wl,-z 
-Wl,relro -Wl,-z -Wl,now -o saslname saslname.o ../lib/.libs/libgss.so 
-Wl,-rpath -Wl,/<<PKGBUILDDIR>>/build/lib/.libs
libtool: link: gcc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. 
-fstack-protector-strong -Wformat -Werror=format-security -Wl,-z 
-Wl,relro -Wl,-z -Wl,now -o basic basic.o  ../lib/.libs/libgss.so 
-Wl,-rpath -Wl,/<<PKGBUILDDIR>>/build/lib/.libs
libtool: link: gcc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. 
-fstack-protector-strong -Wformat -Werror=format-security -Wl,-z 
-Wl,relro -Wl,-z -Wl,now -o krb5context krb5context.o 
../lib/.libs/libgss.so -L/usr/lib/arm-linux-gnueabihf -lshishi 
-Wl,-rpath -Wl,/<<PKGBUILDDIR>>/build/lib/.libs
make[4]: Leaving directory '/<<PKGBUILDDIR>>/build/tests'
make  check-TESTS
make[4]: Entering directory '/<<PKGBUILDDIR>>/build/tests'
make[5]: Entering directory '/<<PKGBUILDDIR>>/build/tests'
PASS: threadsafety.sh
PASS: saslname
PASS: basic
FAIL: krb5context
==============================================================
    GNU Generic Security Service 1.0.4: tests/test-suite.log
==============================================================

# TOTAL: 4
# PASS:  3
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0

.. contents:: :depth: 2

FAIL: krb5context
=================

loop 0 init failure
gss_accept_sec_context failure
==1811217== Conditional jump or move depends on uninitialised value(s)
==1811217==    at 0x108C2C: main (krb5context.c:225)
==1811217==
==1811217== Use of uninitialised value of size 4
==1811217==    at 0x492AD0C: _itoa_word (_itoa.c:177)
==1811217==    by 0x4932851: __vfprintf_internal 
(vfprintf-process-arg.c:164)
==1811217==    by 0x49331B3: buffered_vfprintf (vfprintf-internal.c:1748)
==1811217==    by 0x1093E1: vfprintf (stdio2.h:109)
==1811217==    by 0x1093E1: fail (utils.c:43)
==1811217==    by 0x108C39: main (krb5context.c:229)
==1811217==
==1811217== Conditional jump or move depends on uninitialised value(s)
==1811217==    at 0x492AD12: _itoa_word (_itoa.c:177)
==1811217==    by 0x4932851: __vfprintf_internal 
(vfprintf-process-arg.c:164)
==1811217==    by 0x49331B3: buffered_vfprintf (vfprintf-internal.c:1748)
==1811217==    by 0x1093E1: vfprintf (stdio2.h:109)
==1811217==    by 0x1093E1: fail (utils.c:43)
==1811217==    by 0x108C39: main (krb5context.c:229)
==1811217==
==1811217== Conditional jump or move depends on uninitialised value(s)
==1811217==    at 0x49327B8: __vfprintf_internal 
(vfprintf-process-arg.c:174)
==1811217==    by 0x49331B3: buffered_vfprintf (vfprintf-internal.c:1748)
==1811217==    by 0x1093E1: vfprintf (stdio2.h:109)
==1811217==    by 0x1093E1: fail (utils.c:43)
==1811217==    by 0x108C39: main (krb5context.c:229)
==1811217==
==1811217== Conditional jump or move depends on uninitialised value(s)
==1811217==    at 0x49324D4: __vfprintf_internal 
(vfprintf-process-arg.c:184)
==1811217==    by 0x49331B3: buffered_vfprintf (vfprintf-internal.c:1748)
==1811217==    by 0x1093E1: vfprintf (stdio2.h:109)
==1811217==    by 0x1093E1: fail (utils.c:43)
==1811217==    by 0x108C39: main (krb5context.c:229)
==1811217==
==1811217== Conditional jump or move depends on uninitialised value(s)
==1811217==    at 0x4932500: __vfprintf_internal 
(vfprintf-process-arg.c:204)
==1811217==    by 0x49331B3: buffered_vfprintf (vfprintf-internal.c:1748)
==1811217==    by 0x1093E1: vfprintf (stdio2.h:109)
==1811217==    by 0x1093E1: fail (utils.c:43)
==1811217==    by 0x108C39: main (krb5context.c:229)
==1811217==
loop 0 accept flag failure (32)
gss_accept_sec_context failure
gss_init_sec_context failure (2)
client gss_wrap failure
server gss_unwrap failure
==1811217== Conditional jump or move depends on uninitialised value(s)
==1811217==    at 0x108CDA: main (krb5context.c:344)
==1811217==
==1811217== Conditional jump or move depends on uninitialised value(s)
==1811217==    at 0x49327B8: __vfprintf_internal 
(vfprintf-process-arg.c:174)
==1811217==    by 0x49331B3: buffered_vfprintf (vfprintf-internal.c:1748)
==1811217==    by 0x1093E1: vfprintf (stdio2.h:109)
==1811217==    by 0x1093E1: fail (utils.c:43)
==1811217==    by 0x108CFD: main (krb5context.c:346)
==1811217==
==1811217== Conditional jump or move depends on uninitialised value(s)
==1811217==    at 0x49324D4: __vfprintf_internal 
(vfprintf-process-arg.c:184)
==1811217==    by 0x49331B3: buffered_vfprintf (vfprintf-internal.c:1748)
==1811217==    by 0x1093E1: vfprintf (stdio2.h:109)
==1811217==    by 0x1093E1: fail (utils.c:43)
==1811217==    by 0x108CFD: main (krb5context.c:346)
==1811217==
==1811217== Conditional jump or move depends on uninitialised value(s)
==1811217==    at 0x49324F2: __vfprintf_internal 
(vfprintf-process-arg.c:188)
==1811217==    by 0x49331B3: buffered_vfprintf (vfprintf-internal.c:1748)
==1811217==    by 0x1093E1: vfprintf (stdio2.h:109)
==1811217==    by 0x1093E1: fail (utils.c:43)
==1811217==    by 0x108CFD: main (krb5context.c:346)
==1811217==
==1811217== Conditional jump or move depends on uninitialised value(s)
==1811217==    at 0x4932500: __vfprintf_internal 
(vfprintf-process-arg.c:204)
==1811217==    by 0x49331B3: buffered_vfprintf (vfprintf-internal.c:1748)
==1811217==    by 0x1093E1: vfprintf (stdio2.h:109)
==1811217==    by 0x1093E1: fail (utils.c:43)
==1811217==    by 0x108CFD: main (krb5context.c:346)
==1811217==
==1811217== Conditional jump or move depends on uninitialised value(s)
==1811217==    at 0x493250C: pad_func (vfprintf-internal.c:192)
==1811217==    by 0x493250C: __vfprintf_internal 
(vfprintf-process-arg.c:211)
==1811217==    by 0x49331B3: buffered_vfprintf (vfprintf-internal.c:1748)
==1811217==    by 0x1093E1: vfprintf (stdio2.h:109)
==1811217==    by 0x1093E1: fail (utils.c:43)
==1811217==    by 0x108CFD: main (krb5context.c:346)
==1811217==
==1811217== Conditional jump or move depends on uninitialised value(s)
==1811217==    at 0x4932182: __vfprintf_internal 
(vfprintf-process-arg.c:368)
==1811217==    by 0x49331B3: buffered_vfprintf (vfprintf-internal.c:1748)
==1811217==    by 0x1093E1: vfprintf (stdio2.h:109)
==1811217==    by 0x1093E1: fail (utils.c:43)
==1811217==    by 0x108CFD: main (krb5context.c:346)
==1811217==
==1811217== Conditional jump or move depends on uninitialised value(s)
==1811217==    at 0x49322A4: __vfprintf_internal 
(vfprintf-process-arg.c:392)
==1811217==    by 0x49331B3: buffered_vfprintf (vfprintf-internal.c:1748)
==1811217==    by 0x1093E1: vfprintf (stdio2.h:109)
==1811217==    by 0x1093E1: fail (utils.c:43)
==1811217==    by 0x108CFD: main (krb5context.c:346)
==1811217==
==1811217== Conditional jump or move depends on uninitialised value(s)
==1811217==    at 0x486BECC: strnlen (in 
/usr/libexec/valgrind/vgpreload_memcheck-arm-linux.so)
==1811217==
==1811217== Use of uninitialised value of size 4
==1811217==    at 0x486BED8: strnlen (in 
/usr/libexec/valgrind/vgpreload_memcheck-arm-linux.so)
==1811217==
==1811217== Conditional jump or move depends on uninitialised value(s)
==1811217==    at 0x486BEE4: strnlen (in 
/usr/libexec/valgrind/vgpreload_memcheck-arm-linux.so)
==1811217==
==1811217== Use of uninitialised value of size 4
==1811217==    at 0x49496E4: _IO_default_xsputn (genops.c:394)
==1811217==    by 0x49496E4: _IO_default_xsputn (genops.c:370)
==1811217==    by 0x4932DBB: outstring_func (vfprintf-internal.c:239)
==1811217==    by 0x4932DBB: __vfprintf_internal 
(vfprintf-process-arg.c:421)
==1811217==    by 0x49331B3: buffered_vfprintf (vfprintf-internal.c:1748)
==1811217==    by 0x1093E1: vfprintf (stdio2.h:109)
==1811217==    by 0x1093E1: fail (utils.c:43)
==1811217==    by 0x108CFD: main (krb5context.c:346)
==1811217==
==1811217== Conditional jump or move depends on uninitialised value(s)
==1811217==    at 0x49496EE: _IO_default_xsputn (genops.c:393)
==1811217==    by 0x49496EE: _IO_default_xsputn (genops.c:370)
==1811217==    by 0x4932DBB: outstring_func (vfprintf-internal.c:239)
==1811217==    by 0x4932DBB: __vfprintf_internal 
(vfprintf-process-arg.c:421)
==1811217==    by 0x49331B3: buffered_vfprintf (vfprintf-internal.c:1748)
==1811217==    by 0x1093E1: vfprintf (stdio2.h:109)
==1811217==    by 0x1093E1: fail (utils.c:43)
==1811217==    by 0x108CFD: main (krb5context.c:346)
==1811217==
==1811217== Use of uninitialised value of size 4
==1811217==    at 0x49496EE: _IO_default_xsputn (genops.c:393)
==1811217==    by 0x49496EE: _IO_default_xsputn (genops.c:370)
==1811217==    by 0x4932DBB: outstring_func (vfprintf-internal.c:239)
==1811217==    by 0x4932DBB: __vfprintf_internal 
(vfprintf-process-arg.c:421)
==1811217==    by 0x49331B3: buffered_vfprintf (vfprintf-internal.c:1748)
==1811217==    by 0x1093E1: vfprintf (stdio2.h:109)
==1811217==    by 0x1093E1: fail (utils.c:43)
==1811217==    by 0x108CFD: main (krb5context.c:346)
==1811217==
wrap+unwrap failed (4, 1065348400, GNUTLS)
==1811217== Conditional jump or move depends on uninitialised value(s)
==1811217==    at 0x4867A54: free (in 
/usr/libexec/valgrind/vgpreload_memcheck-arm-linux.so)
==1811217==
==1811217== Invalid free() / delete / delete[] / realloc()
==1811217==    at 0x4867AA4: free (in 
/usr/libexec/valgrind/vgpreload_memcheck-arm-linux.so)
==1811217==  Address 0x401e630 is 1520 bytes inside data symbol 
"_rtld_local"
==1811217==
client gss_delete_sec_context failure
server gss_delete_sec_context failure
loop 0 init failure
gss_accept_sec_context failure
gss_accept_sec_context failure
loop 1 ret_flags failure (0)
gss_init_sec_context failure (2)
client gss_wrap failure
server gss_unwrap failure
wrap+unwrap failed (4, 0, )
client gss_delete_sec_context failure
server gss_delete_sec_context failure
loop 2 ret_flags failure (0)
loop 1 init failure
gss_accept_sec_context failure
gss_accept_sec_context failure
gss_init_sec_context failure (2)
client gss_wrap failure
server gss_unwrap failure
wrap+unwrap failed (4, 0, )
client gss_delete_sec_context failure
server gss_delete_sec_context failure
GSS-API error accept_sec_context (major): No credentials were supplied, 
or the credentials were unavailable or inaccessible
GSS-API error accept_sec_context (minor): Principal in credential cache 
does not match desired name
GSS-API error accept_sec_context (major): A token was invalid
GSS-API error accept_sec_context (minor): No krb5 error
GSS-API error init_sec_context (major): No credentials were supplied, or 
the credentials were unavailable or inaccessible
GSS-API error init_sec_context (minor): Principal in credential cache 
does not match desired name
GSS-API error client wrap (major): No context has been established
GSS-API error client wrap (minor): No krb5 error
GSS-API error client wrap (major): No context has been established
GSS-API error client wrap (minor): No krb5 error
GSS-API error client delete_sec_context (major): No context has been 
established
GSS-API error client delete_sec_context (major): A parameter was malformed
GSS-API error client delete_sec_context (minor): No krb5 error
GSS-API error server delete_sec_context (major): No context has been 
established
GSS-API error server delete_sec_context (major): A parameter was malformed
GSS-API error server delete_sec_context (minor): No krb5 error
GSS-API error accept_sec_context (major): No credentials were supplied, 
or the credentials were unavailable or inaccessible
GSS-API error accept_sec_context (minor): Principal in credential cache 
does not match desired name
GSS-API error accept_sec_context (major): A token was invalid
GSS-API error accept_sec_context (minor): No krb5 error
GSS-API error init_sec_context (major): No credentials were supplied, or 
the credentials were unavailable or inaccessible
GSS-API error init_sec_context (minor): Principal in credential cache 
does not match desired name
GSS-API error client wrap (major): No context has been established
GSS-API error client wrap (minor): No krb5 error
GSS-API error client wrap (major): No context has been established
GSS-API error client wrap (minor): No krb5 error
GSS-API error client delete_sec_context (major): No context has been 
established
GSS-API error client delete_sec_context (major): A parameter was malformed
GSS-API error client delete_sec_context (minor): No krb5 error
GSS-API error server delete_sec_context (major): No context has been 
established
GSS-API error server delete_sec_context (major): A parameter was malformed
GSS-API error server delete_sec_context (minor): No krb5 error
GSS-API error accept_sec_context (major): No credentials were supplied, 
or the credentials were unavailable or inaccessible
GSS-API error accept_sec_context (minor): Principal in credential cache 
does not match desired name
GSS-API error accept_sec_context (major): A token was invalid
GSS-API error accept_sec_context (minor): No krb5 error
GSS-API error init_sec_context (major): A token was invalid
GSS-API error init_sec_context (minor): No krb5 error
GSS-API error client wrap (major): No context has been established
GSS-API error client wrap (minor): No krb5 error
GSS-API error client wrap (major): No context has been established
GSS-API error client wrap (minor): No krb5 error
GSS-API error client delete_sec_context (major): No context has been 
established
GSS-API error client delete_sec_context (major): A parameter was malformed
GSS-API error client delete_sec_context (minor): No krb5 error
GSS-API error server delete_sec_context (major): No context has been 
established
GSS-API error server delete_sec_context (major): A parameter was malformed
GSS-API error server delete_sec_context (minor): No krb5 error
FAIL krb5context (exit status: 1)

============================================================================
Testsuite summary for GNU Generic Security Service 1.0.4
============================================================================
# TOTAL: 4
# PASS:  3
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0
============================================================================
See tests/test-suite.log
Please report to bug-gss@gnu.org
============================================================================
make[5]: *** [Makefile:1839: test-suite.log] Error 1
make[5]: Leaving directory '/<<PKGBUILDDIR>>/build/tests'
make[4]: *** [Makefile:1947: check-TESTS] Error 2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/build/tests'
make[3]: *** [Makefile:2034: check-am] Error 2
make[3]: Leaving directory '/<<PKGBUILDDIR>>/build/tests'
make[2]: *** [Makefile:1557: check-recursive] Error 1
make[2]: Leaving directory '/<<PKGBUILDDIR>>/build'
make[1]: *** [Makefile:1857: check] Error 2
make[1]: Leaving directory '/<<PKGBUILDDIR>>/build'
dh_auto_test: error: cd build && make -j32 check "TESTSUITEFLAGS=-j32 
--verbose" VERBOSE=1 returned exit code 2
make: *** [debian/rules:9: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit 
status 2



To redo the test using avocado:
1. Have a clean clone of isar, checkout to branch next and apply your 
patches:
$ git clone -b next https://github.com/ilbers/isar.git
$ cd isar
$ git am /path-to/0001-my-contribution-to-isar.patch
2. Disable unrelated targets to make error appears faster, by applying
the following diff to "testsuite/citest.py":

diff --git a/testsuite/citest.py b/testsuite/citest.py
index a1214e9c..f81f46a3 100755
--- a/testsuite/citest.py
+++ b/testsuite/citest.py
@@ -135,7 +135,6 @@ class ReproTest(CIBaseTest):

      def test_repro_unsigned(self):
          targets = [
-            'mc:qemuamd64-bookworm:isar-image-base',
              'mc:qemuarm-bookworm:isar-image-base',
          ]

3.Run kas shell, setup CI prerequisites (avocado, qemu) and cleanup:
$ ./kas/kas-container shell kas/isar.yaml --command \
     "rm -rf /work/build/conf && /work/scripts/ci_setup.sh"
4.Run the failed test in fast:
$ cd /work/testsuite
$ avocado run citest.py:ReproTest.test_repro_unsigned$

Best regards,
Zhihang

On 11/3/25 16:42, 'Andreas Naumann' via isar-users wrote:
> This is a stripped down version of my previous
> [RFC 0/5] Improving multiarch support for arch-incompatible packages
>
> For now, I've dropped all patches except the one which covers the problem
> where targets in the dependency chain are built for both the host and the
> target architecture while only one is needed.
>
> The second patch is a way to reproduce this. It's quite hacky, and
> would need serious rework before integration into the testsuite.
>
> Andreas Naumann (2):
>    rootfs: Prevent adding unneeded package variants to recursive
>      dependency chain
>    DONOTMERGE: testcase for transient native dependency
>
>   meta-isar/recipes-app/adduser/adduser.bb         | 6 ++++++
>   meta-isar/recipes-app/gss/gss.bb                 | 5 +++++
>   meta-isar/recipes-core/images/isar-image-base.bb | 2 ++
>   meta/classes/rootfs.bbclass                      | 3 ++-
>   4 files changed, 15 insertions(+), 1 deletion(-)
>   create mode 100644 meta-isar/recipes-app/adduser/adduser.bb
>   create mode 100644 meta-isar/recipes-app/gss/gss.bb
>