* [PATCH 0/3] Fix multilib package variable propagation
@ 2026-04-29 14:31 jaeyoon.jung
2026-04-29 14:31 ` [PATCH 1/3] libpam: Add missing MLPREFIX to FILES:pam-plugin-env jaeyoon.jung
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: jaeyoon.jung @ 2026-04-29 14:31 UTC (permalink / raw)
To: openembedded-core; +Cc: Jaeyoon Jung
From: Jaeyoon Jung <jaeyoon.jung@lge.com>
This set of patches addresses the issue where package variables in
PACKAGEVARS (e.g. LICENSE) are not extended for a multilib variant
build, by invoking rename_package_variables() in ClassExtender.
It also adds a selftest that verifies the consistency of pkgdata
variables between the base and 'lib32' multilib variant.
With this change, I found another issue in libpam:
| ERROR: lib32-libpam-1.7.2-r0 do_package: QA Issue: lib32-libpam: Files/directories were installed but not shipped in any package:
| /usr/lib/security/pam_env.so
| Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
| lib32-libpam: 1 installed and not shipped files. [installed-vs-shipped]
It is because FILES variable for pam-plugin-env is not defined for a
multilib build. Another patch in this series addressed it by adding
MLPREFIX.
Jaeyoon Jung (3):
libpam: Add missing MLPREFIX to FILES:pam-plugin-env
oeqa/selftest/pkgdata: add multilib LICENSE consistency test
package.bbclass: extend package variables for multilib variants
meta/classes-global/package.bbclass | 11 +++++++++++
meta/lib/oeqa/selftest/cases/pkgdata.py | 15 +++++++++++++++
meta/recipes-extended/pam/libpam_1.7.2.bb | 2 +-
3 files changed, 27 insertions(+), 1 deletion(-)
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/3] libpam: Add missing MLPREFIX to FILES:pam-plugin-env
2026-04-29 14:31 [PATCH 0/3] Fix multilib package variable propagation jaeyoon.jung
@ 2026-04-29 14:31 ` jaeyoon.jung
2026-04-29 14:31 ` [PATCH 2/3] oeqa/selftest/pkgdata: add multilib LICENSE consistency test jaeyoon.jung
2026-04-29 14:31 ` [PATCH 3/3] package.bbclass: extend package variables for multilib variants jaeyoon.jung
2 siblings, 0 replies; 7+ messages in thread
From: jaeyoon.jung @ 2026-04-29 14:31 UTC (permalink / raw)
To: openembedded-core; +Cc: Jaeyoon Jung
From: Jaeyoon Jung <jaeyoon.jung@lge.com>
pam-plugin-env is treated as a multilib package, but
FILES:pam-plugin-env did not include MLPREFIX which is inconsistent to
PACKAGES_DYNAMIC and pam_plugin_hook().
Signed-off-by: Jaeyoon Jung <jaeyoon.jung@lge.com>
---
meta/recipes-extended/pam/libpam_1.7.2.bb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meta/recipes-extended/pam/libpam_1.7.2.bb b/meta/recipes-extended/pam/libpam_1.7.2.bb
index 6955a5f2f6..6e1c5899db 100644
--- a/meta/recipes-extended/pam/libpam_1.7.2.bb
+++ b/meta/recipes-extended/pam/libpam_1.7.2.bb
@@ -53,7 +53,7 @@ FILES:${PN}-xtests = "${datadir}/Linux-PAM/xtests"
# libpam installs /etc/environment for use with the pam_env plugin. Make sure it is
# packaged with the pam-plugin-env package to avoid breaking installations which
# install that file via other packages
-FILES:pam-plugin-env = "${sysconfdir}/environment"
+FILES:${MLPREFIX}pam-plugin-env = "${sysconfdir}/environment"
PACKAGES_DYNAMIC += "^${MLPREFIX}pam-plugin-.*"
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/3] oeqa/selftest/pkgdata: add multilib LICENSE consistency test
2026-04-29 14:31 [PATCH 0/3] Fix multilib package variable propagation jaeyoon.jung
2026-04-29 14:31 ` [PATCH 1/3] libpam: Add missing MLPREFIX to FILES:pam-plugin-env jaeyoon.jung
@ 2026-04-29 14:31 ` jaeyoon.jung
2026-04-30 11:00 ` [OE-core] " Mathieu Dubois-Briand
2026-04-29 14:31 ` [PATCH 3/3] package.bbclass: extend package variables for multilib variants jaeyoon.jung
2 siblings, 1 reply; 7+ messages in thread
From: jaeyoon.jung @ 2026-04-29 14:31 UTC (permalink / raw)
To: openembedded-core; +Cc: Jaeyoon Jung
From: Jaeyoon Jung <jaeyoon.jung@lge.com>
Add a selftest to verify that pkgdata variables such as LICENSE
are identical between base and multilib variants (e.g. lib32).
Signed-off-by: Jaeyoon Jung <jaeyoon.jung@lge.com>
---
meta/lib/oeqa/selftest/cases/pkgdata.py | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/meta/lib/oeqa/selftest/cases/pkgdata.py b/meta/lib/oeqa/selftest/cases/pkgdata.py
index d786c33018..d3d38e7419 100644
--- a/meta/lib/oeqa/selftest/cases/pkgdata.py
+++ b/meta/lib/oeqa/selftest/cases/pkgdata.py
@@ -225,3 +225,18 @@ class OePkgdataUtilTests(OESelftestTestCase):
self.assertEqual(result.status, 2, "Status different than 2. output: %s" % result.output)
currpos = result.output.find('usage: oe-pkgdata-util')
self.assertTrue(currpos != -1, msg = "Test is Failed. Help is not Displayed in %s" % result.output)
+
+ def test_multilib_variables(self):
+ self.write_config("""
+MACHINE = "qemux86-64"
+require conf/multilib.conf
+MULTILIBS = "multilib:lib32"
+DEFAULTTUNE:virtclass-multilib-lib32 = "x86"
+""")
+ self.logger.info("Build with multilib lib32 enabled")
+ bitbake('systemd lib32-systemd')
+ pkg = runCmd('oe-pkgdata-util lookup-pkg libsystemd').output
+ pkg_lib32 = runCmd('oe-pkgdata-util lookup-pkg lib32-libsystemd').output
+ license = runCmd('oe-pkgdata-util read-value LICENSE %s' % pkg).output
+ license_lib32 = runCmd('oe-pkgdata-util read-value LICENSE %s' % pkg_lib32).output
+ self.assertEqual(license, license_lib32)
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/3] package.bbclass: extend package variables for multilib variants
2026-04-29 14:31 [PATCH 0/3] Fix multilib package variable propagation jaeyoon.jung
2026-04-29 14:31 ` [PATCH 1/3] libpam: Add missing MLPREFIX to FILES:pam-plugin-env jaeyoon.jung
2026-04-29 14:31 ` [PATCH 2/3] oeqa/selftest/pkgdata: add multilib LICENSE consistency test jaeyoon.jung
@ 2026-04-29 14:31 ` jaeyoon.jung
2026-04-30 13:54 ` [OE-core] " Richard Purdie
2 siblings, 1 reply; 7+ messages in thread
From: jaeyoon.jung @ 2026-04-29 14:31 UTC (permalink / raw)
To: openembedded-core; +Cc: Jaeyoon Jung
From: Jaeyoon Jung <jaeyoon.jung@lge.com>
Ensure PACKAGEVARS are extended for multilib variants during
do_split_packages so that per-package metadata is correctly
renamed when BBEXTENDVARIANT is in use.
Signed-off-by: Jaeyoon Jung <jaeyoon.jung@lge.com>
---
meta/classes-global/package.bbclass | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/meta/classes-global/package.bbclass b/meta/classes-global/package.bbclass
index 67148fc1ac..d981424290 100644
--- a/meta/classes-global/package.bbclass
+++ b/meta/classes-global/package.bbclass
@@ -169,6 +169,7 @@ def do_split_packages(d, root, file_regex, output_pattern, description, postinst
for o in sorted(objs):
import re, stat
+ import oe.package
if match_path:
m = re.match(file_regex, o)
else:
@@ -225,6 +226,16 @@ def do_split_packages(d, root, file_regex, output_pattern, description, postinst
hook(f, pkg, file_regex, output_pattern, m.group(1))
d.setVar('PACKAGES', ' '.join(packages))
+
+ variant = d.getVar("BBEXTENDVARIANT")
+ prefixes = (d.getVar("MULTILIB_VARIANTS") or "").split()
+
+ if variant and prefixes:
+ import oe.classextend
+ # Extend package variables for the given variant if unset
+ clsextend = oe.classextend.ClassExtender(variant, prefixes, d)
+ clsextend.rename_package_variables((d.getVar("PACKAGEVARS") or "").split())
+
return list(split_packages)
PACKAGE_DEPENDS += "file-native"
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [OE-core] [PATCH 2/3] oeqa/selftest/pkgdata: add multilib LICENSE consistency test
2026-04-29 14:31 ` [PATCH 2/3] oeqa/selftest/pkgdata: add multilib LICENSE consistency test jaeyoon.jung
@ 2026-04-30 11:00 ` Mathieu Dubois-Briand
0 siblings, 0 replies; 7+ messages in thread
From: Mathieu Dubois-Briand @ 2026-04-30 11:00 UTC (permalink / raw)
To: jaeyoon.jung, openembedded-core
On Wed Apr 29, 2026 at 4:31 PM CEST, Jaeyoon Jung (LGE) via lists.openembedded.org wrote:
> From: Jaeyoon Jung <jaeyoon.jung@lge.com>
>
> Add a selftest to verify that pkgdata variables such as LICENSE
> are identical between base and multilib variants (e.g. lib32).
>
> Signed-off-by: Jaeyoon Jung <jaeyoon.jung@lge.com>
> ---
Hi Jaeyoon,
Thanks for your patch.
It looks like the new test is failing on the autobuilder:
2026-04-30 08:14:06,391 - oe-selftest - INFO - pkgdata.OePkgdataUtilTests.test_multilib_variables (subunit.RemotedTestCase)
2026-04-30 08:14:06,391 - oe-selftest - INFO - ... FAIL
...
2026-04-30 08:13:46,986 - oe-selftest - INFO - Build with multilib lib32 enabled
2026-04-30 08:14:06,391 - oe-selftest - INFO - 13: 19/53 356/686 (19.41s) (2 failed) (pkgdata.OePkgdataUtilTests.test_multilib_variables)
2026-04-30 08:14:06,391 - oe-selftest - INFO - testtools.testresult.real._StringException: Traceback (most recent call last):
File "/srv/pokybuild/yocto-worker/oe-selftest-fedora/build/layers/openembedded-core/meta/lib/oeqa/selftest/cases/pkgdata.py", line 237, in test_multilib_variables
bitbake('systemd lib32-systemd')
~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
File "/srv/pokybuild/yocto-worker/oe-selftest-fedora/build/layers/openembedded-core/meta/lib/oeqa/utils/commands.py", line 236, in bitbake
return runCmd(cmd, ignore_status, timeout, output_log=output_log, **options)
File "/srv/pokybuild/yocto-worker/oe-selftest-fedora/build/layers/openembedded-core/meta/lib/oeqa/utils/commands.py", line 214, in runCmd
raise AssertionError("Command '%s' returned non-zero exit status %d:\n%s" % (command, result.status, exc_output))
AssertionError: Command 'bitbake systemd lib32-systemd' returned non-zero exit status 1:
NOTE: Reconnecting to bitbake server...
Loading cache...done.
Loaded 0 entries from dependency cache.
Parsing recipes...done.
Parsing of 1031 .bb files complete (0 cached, 1031 parsed). 3100 targets, 145 skipped, 0 masked, 0 errors.
Removing 18 recipes from the allarch sysroot...done.
Removing 18 recipes from the qemux86_64 sysroot...done.
ERROR: Nothing PROVIDES 'systemd'
systemd was skipped: using DISTRO 'poky', which is missing required DISTRO_FEATURES: 'systemd usrmerge'
systemd was skipped: using DISTRO 'poky', which is missing required DISTRO_FEATURES: 'systemd usrmerge'
https://autobuilder.yoctoproject.org/valkyrie/#/builders/48/builds/3649
https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/3770
https://autobuilder.yoctoproject.org/valkyrie/#/builders/23/builds/3880
Can you have a look at the issue?
Thanks,
Mathieu
--
Mathieu Dubois-Briand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [OE-core] [PATCH 3/3] package.bbclass: extend package variables for multilib variants
2026-04-29 14:31 ` [PATCH 3/3] package.bbclass: extend package variables for multilib variants jaeyoon.jung
@ 2026-04-30 13:54 ` Richard Purdie
2026-04-30 21:00 ` 정재윤/Task Leader/SW Platform(연)선행Platform개발실 Lightweight System Task
0 siblings, 1 reply; 7+ messages in thread
From: Richard Purdie @ 2026-04-30 13:54 UTC (permalink / raw)
To: jaeyoon.jung, openembedded-core
On Wed, 2026-04-29 at 23:31 +0900, Jaeyoon Jung (LGE) via lists.openembedded.org wrote:
> From: Jaeyoon Jung <jaeyoon.jung@lge.com>
>
> Ensure PACKAGEVARS are extended for multilib variants during
> do_split_packages so that per-package metadata is correctly
> renamed when BBEXTENDVARIANT is in use.
>
> Signed-off-by: Jaeyoon Jung <jaeyoon.jung@lge.com>
> ---
> meta/classes-global/package.bbclass | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/meta/classes-global/package.bbclass b/meta/classes-global/package.bbclass
> index 67148fc1ac..d981424290 100644
> --- a/meta/classes-global/package.bbclass
> +++ b/meta/classes-global/package.bbclass
> @@ -169,6 +169,7 @@ def do_split_packages(d, root, file_regex, output_pattern, description, postinst
>
> for o in sorted(objs):
> import re, stat
> + import oe.package
> if match_path:
> m = re.match(file_regex, o)
> else:
> @@ -225,6 +226,16 @@ def do_split_packages(d, root, file_regex, output_pattern, description, postinst
> hook(f, pkg, file_regex, output_pattern, m.group(1))
>
> d.setVar('PACKAGES', ' '.join(packages))
> +
> + variant = d.getVar("BBEXTENDVARIANT")
> + prefixes = (d.getVar("MULTILIB_VARIANTS") or "").split()
> +
> + if variant and prefixes:
> + import oe.classextend
> + # Extend package variables for the given variant if unset
> + clsextend = oe.classextend.ClassExtender(variant, prefixes, d)
> + clsextend.rename_package_variables((d.getVar("PACKAGEVARS") or "").split())
> +
> return list(split_packages)
Firstly, this puts multilib code into generic code, which we've tried
very hard to avoid.
Secondly, this processes all of PACKAGES again.
rename_package_variables is designed to only be called once. Calling it
a second time isn't a good idea. We really should only process the new
split_packages?
Cheers,
Richard
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [OE-core] [PATCH 3/3] package.bbclass: extend package variables for multilib variants
2026-04-30 13:54 ` [OE-core] " Richard Purdie
@ 2026-04-30 21:00 ` 정재윤/Task Leader/SW Platform(연)선행Platform개발실 Lightweight System Task
0 siblings, 0 replies; 7+ messages in thread
From: 정재윤/Task Leader/SW Platform(연)선행Platform개발실 Lightweight System Task @ 2026-04-30 21:00 UTC (permalink / raw)
To: Richard Purdie, openembedded-core@lists.openembedded.org
> From: Richard Purdie <richard.purdie@linuxfoundation.org>
> Sent: Thursday, April 30, 2026 22:54
> To: 정재윤/Task Leader/SW Platform(연)선행Platform개발실 Lightweight System Task <jaeyoon.jung@lge.com>; openembedded-core@lists.openembedded.org <openembedded-core@lists.openembedded.org>
> Subject: Re: [OE-core] [PATCH 3/3] package.bbclass: extend package variables for multilib variants
>
> On Wed, 2026-04-29 at 23:31 +0900, Jaeyoon Jung (LGE) via lists.openembedded.org wrote:
> > From: Jaeyoon Jung <jaeyoon.jung@lge.com>
> >
> > Ensure PACKAGEVARS are extended for multilib variants during
> > do_split_packages so that per-package metadata is correctly
> > renamed when BBEXTENDVARIANT is in use.
> >
> > Signed-off-by: Jaeyoon Jung <jaeyoon.jung@lge.com>
> > ---
> > meta/classes-global/package.bbclass | 11 +++++++++++
> > 1 file changed, 11 insertions(+)
> >
> > diff --git a/meta/classes-global/package.bbclass b/meta/classes-global/package.bbclass
> > index 67148fc1ac..d981424290 100644
> > --- a/meta/classes-global/package.bbclass
> > +++ b/meta/classes-global/package.bbclass
> > @@ -169,6 +169,7 @@ def do_split_packages(d, root, file_regex, output_pattern, description, postinst
> >
> > for o in sorted(objs):
> > import re, stat
> > + import oe.package
> > if match_path:
> > m = re.match(file_regex, o)
> > else:
> > @@ -225,6 +226,16 @@ def do_split_packages(d, root, file_regex, output_pattern, description, postinst
> > hook(f, pkg, file_regex, output_pattern, m.group(1))
> >
> > d.setVar('PACKAGES', ' '.join(packages))
> > +
> > + variant = d.getVar("BBEXTENDVARIANT")
> > + prefixes = (d.getVar("MULTILIB_VARIANTS") or "").split()
> > +
> > + if variant and prefixes:
> > + import oe.classextend
> > + # Extend package variables for the given variant if unset
> > + clsextend = oe.classextend.ClassExtender(variant, prefixes, d)
> > + clsextend.rename_package_variables((d.getVar("PACKAGEVARS") or "").split())
> > +
> > return list(split_packages)
>
> Firstly, this puts multilib code into generic code, which we've tried
> very hard to avoid.
>
> Secondly, this processes all of PACKAGES again.
> rename_package_variables is designed to only be called once. Calling it
> a second time isn't a good idea. We really should only process the new
> split_packages?
>
On your second point, I agree that the new split_packages are the only
things to be processed here. I see two possible approaches:
1) Introduce a new variant of rename_package_variables in ClassExtender
that takes an explicit list of packages to process, or
2) Extend rename_package_variables to accept a package list, and update
its existing callers (multilib.bbclass and nativesdk.bbclass) to pass
PACKAGES explicitly.
On your first point, I’m wondering whether doing this unconditionally in
do_split_packages would be a preferable approach — keeping it generic
rather than limiting it to the multilib case. Alternatively, if you even
want to avoid anything multilib-specific in public code like
do_split_packages, then it should be handled within multilib.bbclass.
But I don't see how to achieve that. It seems to be tricky to do it
after dynamic packages are processed and before entering
oe.package.populate_packages.
Best regards,
---
Jaeyoon Jung
Software Platform Lab. / Corporate R&D / LG Electronics Inc.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-04-30 21:00 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-29 14:31 [PATCH 0/3] Fix multilib package variable propagation jaeyoon.jung
2026-04-29 14:31 ` [PATCH 1/3] libpam: Add missing MLPREFIX to FILES:pam-plugin-env jaeyoon.jung
2026-04-29 14:31 ` [PATCH 2/3] oeqa/selftest/pkgdata: add multilib LICENSE consistency test jaeyoon.jung
2026-04-30 11:00 ` [OE-core] " Mathieu Dubois-Briand
2026-04-29 14:31 ` [PATCH 3/3] package.bbclass: extend package variables for multilib variants jaeyoon.jung
2026-04-30 13:54 ` [OE-core] " Richard Purdie
2026-04-30 21:00 ` 정재윤/Task Leader/SW Platform(연)선행Platform개발실 Lightweight System Task
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox