* [PATCH v2] bitbake.conf: Extend distro feature usrmerge to merge bin+sbin
@ 2026-07-24 9:00 Jörg Sommer
2026-07-25 7:34 ` [OE-core] " Mathieu Dubois-Briand
` (2 more replies)
0 siblings, 3 replies; 16+ messages in thread
From: Jörg Sommer @ 2026-07-24 9:00 UTC (permalink / raw)
To: openembedded-core, richard.purdie, ross.burton,
mathieu.dubois-briand, rs, joerg.sommer
Cc: richard.purdie, ross.burton, mathieu.dubois-briand, Randolph Sapp,
Jörg Sommer
From: Randolph Sapp <rs@ti.com>
The split of bin and sbin became more artificial over time, and it is no
longer clear why programmes goes into the one or the other directory; e.g.
forever normal users have used sendmail in /usr/sbin, and fdisk and mkfs
learned to operate on files to create images long ago.
Because systemd drives this movement to have only /usr/bin and symlink /bin,
/sbin and /usr/sbin to there, the usrmerge feature (started by systemd too)
should be extended to include the binmerge. For a system with split bin/sbin
`systemctl status` reports the system as tainted for *unmerged-bin.*
Override most sbin variables to point to their bin equivalent when
usermerge is enabled, with the exception being base_sbindir_native and
sbindir_native. There is no guarantee the host machine is using this
filesystem scheme.
This check was added to systemd back in 2024 [2].
[1] https://gitlab.archlinux.org/archlinux/packaging/packages/filesystem/-/blob/main/PKGBUILD
[2] https://github.com/systemd/systemd/commit/844863c61e7b501097da84a1e4d1e4a6aa6d9f0d
Signed-off-by: Randolph Sapp <rs@ti.com>
Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
---
I took Randolph's version and reworked it a bit. But the idea stays the same.
meta/classes-recipe/populate_sdk_base.bbclass | 2 ++
meta/conf/bitbake.conf | 8 ++++----
meta/recipes-core/systemd/systemd_261.1.bb | 6 +++---
3 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/meta/classes-recipe/populate_sdk_base.bbclass b/meta/classes-recipe/populate_sdk_base.bbclass
index b427ff2761..c63601b1da 100644
--- a/meta/classes-recipe/populate_sdk_base.bbclass
+++ b/meta/classes-recipe/populate_sdk_base.bbclass
@@ -189,6 +189,8 @@ create_merged_usr_symlinks() {
install -d $root${base_bindir} $root${base_sbindir} $root${base_libdir}
ln -rs $root${base_bindir} $root/bin
ln -rs $root${base_sbindir} $root/sbin
+ # if base_sbindir == base_bindir, aka binmerge
+ test -e $root/usr/sbin || ln -rs $root${base_bindir} $root/usr/sbin
ln -rs $root${base_libdir} $root/${baselib}
if [ "${nonarch_base_libdir}" != "${base_libdir}" ]; then
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index bdf37d0da2..18aa1441e6 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -22,7 +22,7 @@ root_prefix = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${exec_prefi
# Base paths
export base_bindir = "${root_prefix}/bin"
-export base_sbindir = "${root_prefix}/sbin"
+export base_sbindir = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${base_bindir}', '${root_prefix}/sbin', d)}"
export base_libdir = "${root_prefix}/${baselib}"
export nonarch_base_libdir = "${root_prefix}/lib"
@@ -44,7 +44,7 @@ firmwaredir = "${nonarch_base_libdir}/firmware"
# Architecture dependent paths
export bindir = "${exec_prefix}/bin"
-export sbindir = "${exec_prefix}/sbin"
+export sbindir = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${bindir}', '${exec_prefix}/sbin', d)}"
export libdir = "${exec_prefix}/${baselib}"
export libexecdir = "${exec_prefix}/libexec"
export includedir = "${exec_prefix}/include"
@@ -66,9 +66,9 @@ bindir_cross = "/bin"
bindir_crossscripts = "${bindir}/crossscripts"
prefix_nativesdk = "/usr"
bindir_nativesdk = "${prefix_nativesdk}/bin"
-sbindir_nativesdk = "${prefix_nativesdk}/sbin"
+sbindir_nativesdk = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${bindir_nativesdk}', '${prefix_nativesdk}/sbin', d)}"
base_bindir_nativesdk = "/bin"
-base_sbindir_nativesdk = "/sbin"
+base_sbindir_nativesdk = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${base_bindir_nativesdk}', '/sbin', d)}"
includedir_nativesdk = "${prefix_nativesdk}/include"
libdir_nativesdk = "${prefix_nativesdk}/lib"
base_libdir_nativesdk = "/lib"
diff --git a/meta/recipes-core/systemd/systemd_261.1.bb b/meta/recipes-core/systemd/systemd_261.1.bb
index 0a1d4870bf..97a91ff5e2 100644
--- a/meta/recipes-core/systemd/systemd_261.1.bb
+++ b/meta/recipes-core/systemd/systemd_261.1.bb
@@ -195,7 +195,6 @@ def build_epoch(d):
PACKAGECONFIG[set-time-epoch] = "${@build_epoch(d)},-Dtime-epoch=0"
PACKAGECONFIG[timedated] = "-Dtimedated=true,-Dtimedated=false"
PACKAGECONFIG[timesyncd] = "-Dtimesyncd=true,-Dtimesyncd=false"
-PACKAGECONFIG[sbinmerge] = "-Dsplit-bin=false,-Dsplit-bin=true"
PACKAGECONFIG[userdb] = "-Duserdb=true,-Duserdb=false"
PACKAGECONFIG[utmp] = "-Dutmp=true,-Dutmp=false"
PACKAGECONFIG[valgrind] = "-DVALGRIND=1,,valgrind"
@@ -226,6 +225,7 @@ EXTRA_OEMESON += "-Dnobody-user=nobody \
-Dtranslations=${@'false' if d.getVar('USE_NLS') == 'no' else 'true'} \
${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', '-Ddefault-mdns=no -Ddefault-llmnr=no', '', d)} \
-Ddbus=disabled \
+ -Dsplit-bin=${@'false' if '${bindir}' == '${sbindir}' else 'true'} \
-Dtests=false \
-Dlibc=${TCLIBC} \
"
@@ -342,8 +342,8 @@ do_install() {
install -m 0644 ${UNPACKDIR}/org.freedesktop.hostname1_no_polkit.conf ${D}${datadir}/dbus-1/system.d/
fi
- # create link for existing udev rules
- ln -s ${base_bindir}/udevadm ${D}${base_sbindir}/udevadm
+ # create link for old udev rules
+ test -e ${D}${base_sbindir}/udevadm || ln -s ${base_bindir}/udevadm ${D}${base_sbindir}/udevadm
# install default policy for presets
# https://www.freedesktop.org/wiki/Software/systemd/Preset/#howto
--
2.53.0
^ permalink raw reply related [flat|nested] 16+ messages in thread* Re: [OE-core] [PATCH v2] bitbake.conf: Extend distro feature usrmerge to merge bin+sbin
2026-07-24 9:00 [PATCH v2] bitbake.conf: Extend distro feature usrmerge to merge bin+sbin Jörg Sommer
@ 2026-07-25 7:34 ` Mathieu Dubois-Briand
2026-08-22 7:56 ` Jörg Sommer
2026-08-24 12:48 ` [PATCH v3] " Jörg Sommer
2 siblings, 0 replies; 16+ messages in thread
From: Mathieu Dubois-Briand @ 2026-07-25 7:34 UTC (permalink / raw)
To: joerg.sommer, openembedded-core, richard.purdie, ross.burton, rs
On Fri Jul 24, 2026 at 11:00 AM CEST, Jörg Sommer via lists.openembedded.org wrote:
> From: Randolph Sapp <rs@ti.com>
>
> The split of bin and sbin became more artificial over time, and it is no
> longer clear why programmes goes into the one or the other directory; e.g.
> forever normal users have used sendmail in /usr/sbin, and fdisk and mkfs
> learned to operate on files to create images long ago.
>
> Because systemd drives this movement to have only /usr/bin and symlink /bin,
> /sbin and /usr/sbin to there, the usrmerge feature (started by systemd too)
> should be extended to include the binmerge. For a system with split bin/sbin
> `systemctl status` reports the system as tainted for *unmerged-bin.*
>
> Override most sbin variables to point to their bin equivalent when
> usermerge is enabled, with the exception being base_sbindir_native and
> sbindir_native. There is no guarantee the host machine is using this
> filesystem scheme.
>
> This check was added to systemd back in 2024 [2].
>
> [1] https://gitlab.archlinux.org/archlinux/packaging/packages/filesystem/-/blob/main/PKGBUILD
> [2] https://github.com/systemd/systemd/commit/844863c61e7b501097da84a1e4d1e4a6aa6d9f0d
>
> Signed-off-by: Randolph Sapp <rs@ti.com>
> Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
> ---
>
Hi Jörg,
Thanks for your patch.
It looks like this is failing to build with poky-altcfg on various
recipes:
ERROR: tcf-agent-1.11.0-r0 do_package: QA Issue: tcf-agent: Files/directories were installed but not shipped in any package:
/usr/sbin/tcf-client
/usr/sbin/tcf-agent
...
ERROR: bootchart2-0.14.9-r0 do_package: QA Issue: bootchart2: Files/directories were installed but not shipped in any package:
/usr/sbin
/usr/sbin/bootchartd
https://autobuilder.yoctoproject.org/valkyrie/#/builders/25/builds/4214
https://autobuilder.yoctoproject.org/valkyrie/#/builders/65/builds/4176
https://autobuilder.yoctoproject.org/valkyrie/#/builders/95/builds/4146
https://autobuilder.yoctoproject.org/valkyrie/#/builders/22/builds/4215
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] 16+ messages in thread
* Re: [PATCH v2] bitbake.conf: Extend distro feature usrmerge to merge bin+sbin
2026-07-24 9:00 [PATCH v2] bitbake.conf: Extend distro feature usrmerge to merge bin+sbin Jörg Sommer
2026-07-25 7:34 ` [OE-core] " Mathieu Dubois-Briand
@ 2026-08-22 7:56 ` Jörg Sommer
2026-08-22 12:16 ` Mathieu Dubois-Briand
2026-08-24 12:48 ` [PATCH v3] " Jörg Sommer
2 siblings, 1 reply; 16+ messages in thread
From: Jörg Sommer @ 2026-08-22 7:56 UTC (permalink / raw)
To: openembedded-core, richard.purdie, ross.burton,
mathieu.dubois-briand, rs
[-- Attachment #1: Type: text/plain, Size: 6200 bytes --]
Jörg Sommer schrieb am Fr 24. Jul, 11:00 (+0200):
> From: Randolph Sapp <rs@ti.com>
>
> The split of bin and sbin became more artificial over time, and it is no
> longer clear why programmes goes into the one or the other directory; e.g.
> forever normal users have used sendmail in /usr/sbin, and fdisk and mkfs
> learned to operate on files to create images long ago.
Gentle ping. What's the state of this?
> Because systemd drives this movement to have only /usr/bin and symlink /bin,
> /sbin and /usr/sbin to there, the usrmerge feature (started by systemd too)
> should be extended to include the binmerge. For a system with split bin/sbin
> `systemctl status` reports the system as tainted for *unmerged-bin.*
>
> Override most sbin variables to point to their bin equivalent when
> usermerge is enabled, with the exception being base_sbindir_native and
> sbindir_native. There is no guarantee the host machine is using this
> filesystem scheme.
>
> This check was added to systemd back in 2024 [2].
>
> [1] https://gitlab.archlinux.org/archlinux/packaging/packages/filesystem/-/blob/main/PKGBUILD
> [2] https://github.com/systemd/systemd/commit/844863c61e7b501097da84a1e4d1e4a6aa6d9f0d
>
> Signed-off-by: Randolph Sapp <rs@ti.com>
> Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
> ---
>
> I took Randolph's version and reworked it a bit. But the idea stays the same.
>
> meta/classes-recipe/populate_sdk_base.bbclass | 2 ++
> meta/conf/bitbake.conf | 8 ++++----
> meta/recipes-core/systemd/systemd_261.1.bb | 6 +++---
> 3 files changed, 9 insertions(+), 7 deletions(-)
>
> diff --git a/meta/classes-recipe/populate_sdk_base.bbclass b/meta/classes-recipe/populate_sdk_base.bbclass
> index b427ff2761..c63601b1da 100644
> --- a/meta/classes-recipe/populate_sdk_base.bbclass
> +++ b/meta/classes-recipe/populate_sdk_base.bbclass
> @@ -189,6 +189,8 @@ create_merged_usr_symlinks() {
> install -d $root${base_bindir} $root${base_sbindir} $root${base_libdir}
> ln -rs $root${base_bindir} $root/bin
> ln -rs $root${base_sbindir} $root/sbin
> + # if base_sbindir == base_bindir, aka binmerge
> + test -e $root/usr/sbin || ln -rs $root${base_bindir} $root/usr/sbin
> ln -rs $root${base_libdir} $root/${baselib}
>
> if [ "${nonarch_base_libdir}" != "${base_libdir}" ]; then
> diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
> index bdf37d0da2..18aa1441e6 100644
> --- a/meta/conf/bitbake.conf
> +++ b/meta/conf/bitbake.conf
> @@ -22,7 +22,7 @@ root_prefix = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${exec_prefi
>
> # Base paths
> export base_bindir = "${root_prefix}/bin"
> -export base_sbindir = "${root_prefix}/sbin"
> +export base_sbindir = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${base_bindir}', '${root_prefix}/sbin', d)}"
> export base_libdir = "${root_prefix}/${baselib}"
> export nonarch_base_libdir = "${root_prefix}/lib"
>
> @@ -44,7 +44,7 @@ firmwaredir = "${nonarch_base_libdir}/firmware"
>
> # Architecture dependent paths
> export bindir = "${exec_prefix}/bin"
> -export sbindir = "${exec_prefix}/sbin"
> +export sbindir = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${bindir}', '${exec_prefix}/sbin', d)}"
> export libdir = "${exec_prefix}/${baselib}"
> export libexecdir = "${exec_prefix}/libexec"
> export includedir = "${exec_prefix}/include"
> @@ -66,9 +66,9 @@ bindir_cross = "/bin"
> bindir_crossscripts = "${bindir}/crossscripts"
> prefix_nativesdk = "/usr"
> bindir_nativesdk = "${prefix_nativesdk}/bin"
> -sbindir_nativesdk = "${prefix_nativesdk}/sbin"
> +sbindir_nativesdk = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${bindir_nativesdk}', '${prefix_nativesdk}/sbin', d)}"
> base_bindir_nativesdk = "/bin"
> -base_sbindir_nativesdk = "/sbin"
> +base_sbindir_nativesdk = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${base_bindir_nativesdk}', '/sbin', d)}"
> includedir_nativesdk = "${prefix_nativesdk}/include"
> libdir_nativesdk = "${prefix_nativesdk}/lib"
> base_libdir_nativesdk = "/lib"
> diff --git a/meta/recipes-core/systemd/systemd_261.1.bb b/meta/recipes-core/systemd/systemd_261.1.bb
> index 0a1d4870bf..97a91ff5e2 100644
> --- a/meta/recipes-core/systemd/systemd_261.1.bb
> +++ b/meta/recipes-core/systemd/systemd_261.1.bb
> @@ -195,7 +195,6 @@ def build_epoch(d):
> PACKAGECONFIG[set-time-epoch] = "${@build_epoch(d)},-Dtime-epoch=0"
> PACKAGECONFIG[timedated] = "-Dtimedated=true,-Dtimedated=false"
> PACKAGECONFIG[timesyncd] = "-Dtimesyncd=true,-Dtimesyncd=false"
> -PACKAGECONFIG[sbinmerge] = "-Dsplit-bin=false,-Dsplit-bin=true"
> PACKAGECONFIG[userdb] = "-Duserdb=true,-Duserdb=false"
> PACKAGECONFIG[utmp] = "-Dutmp=true,-Dutmp=false"
> PACKAGECONFIG[valgrind] = "-DVALGRIND=1,,valgrind"
> @@ -226,6 +225,7 @@ EXTRA_OEMESON += "-Dnobody-user=nobody \
> -Dtranslations=${@'false' if d.getVar('USE_NLS') == 'no' else 'true'} \
> ${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', '-Ddefault-mdns=no -Ddefault-llmnr=no', '', d)} \
> -Ddbus=disabled \
> + -Dsplit-bin=${@'false' if '${bindir}' == '${sbindir}' else 'true'} \
> -Dtests=false \
> -Dlibc=${TCLIBC} \
> "
> @@ -342,8 +342,8 @@ do_install() {
> install -m 0644 ${UNPACKDIR}/org.freedesktop.hostname1_no_polkit.conf ${D}${datadir}/dbus-1/system.d/
> fi
>
> - # create link for existing udev rules
> - ln -s ${base_bindir}/udevadm ${D}${base_sbindir}/udevadm
> + # create link for old udev rules
> + test -e ${D}${base_sbindir}/udevadm || ln -s ${base_bindir}/udevadm ${D}${base_sbindir}/udevadm
>
> # install default policy for presets
> # https://www.freedesktop.org/wiki/Software/systemd/Preset/#howto
> --
> 2.53.0
>
--
Navimatix GmbH T: 03641 - 327 99 0
Tatzendpromenade 2 F: 03641 - 526 306
07745 Jena www.navimatix.de
Geschäftsführer: Steffen Späthe, Jan Rommeley
Registergericht: Amtsgericht Jena, HRB 501480
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 6684 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [PATCH v2] bitbake.conf: Extend distro feature usrmerge to merge bin+sbin
2026-08-22 7:56 ` Jörg Sommer
@ 2026-08-22 12:16 ` Mathieu Dubois-Briand
2026-08-22 14:09 ` Jörg Sommer
0 siblings, 1 reply; 16+ messages in thread
From: Mathieu Dubois-Briand @ 2026-08-22 12:16 UTC (permalink / raw)
To: Jörg Sommer, openembedded-core, richard.purdie, ross.burton,
rs
On Sat Aug 22, 2026 at 9:56 AM CEST, Jörg Sommer wrote:
> Jörg Sommer schrieb am Fr 24. Jul, 11:00 (+0200):
>> From: Randolph Sapp <rs@ti.com>
>>
>> The split of bin and sbin became more artificial over time, and it is no
>> longer clear why programmes goes into the one or the other directory; e.g.
>> forever normal users have used sendmail in /usr/sbin, and fdisk and mkfs
>> learned to operate on files to create images long ago.
>
> Gentle ping. What's the state of this?
>
Hi Jörg,
Previous builds showed some errors. Should it have evolve since that?
Thanks,
Mathieu
--
Mathieu Dubois-Briand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2] bitbake.conf: Extend distro feature usrmerge to merge bin+sbin
2026-08-22 12:16 ` Mathieu Dubois-Briand
@ 2026-08-22 14:09 ` Jörg Sommer
2026-08-24 6:30 ` Mathieu Dubois-Briand
0 siblings, 1 reply; 16+ messages in thread
From: Jörg Sommer @ 2026-08-22 14:09 UTC (permalink / raw)
To: Mathieu Dubois-Briand; +Cc: openembedded-core, richard.purdie, ross.burton, rs
[-- Attachment #1: Type: text/plain, Size: 1014 bytes --]
Mathieu Dubois-Briand schrieb am Sa 22. Aug, 14:16 (+0200):
> On Sat Aug 22, 2026 at 9:56 AM CEST, Jörg Sommer wrote:
> > Jörg Sommer schrieb am Fr 24. Jul, 11:00 (+0200):
> >> From: Randolph Sapp <rs@ti.com>
> >>
> >> The split of bin and sbin became more artificial over time, and it is no
> >> longer clear why programmes goes into the one or the other directory; e.g.
> >> forever normal users have used sendmail in /usr/sbin, and fdisk and mkfs
> >> learned to operate on files to create images long ago.
> >
> > Gentle ping. What's the state of this?
> >
>
> Hi Jörg,
>
> Previous builds showed some errors. Should it have evolve since that?
Yes, I think so. The bootchart2 errors were addressed by 2bf18f9908, and the
tcf-agent by 443f8c62ad.
--
Navimatix GmbH T: 03641 - 327 99 0
Tatzendpromenade 2 F: 03641 - 526 306
07745 Jena www.navimatix.de
Geschäftsführer: Steffen Späthe, Jan Rommeley
Registergericht: Amtsgericht Jena, HRB 501480
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 6684 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2] bitbake.conf: Extend distro feature usrmerge to merge bin+sbin
2026-08-22 14:09 ` Jörg Sommer
@ 2026-08-24 6:30 ` Mathieu Dubois-Briand
2026-08-24 9:53 ` Jörg Sommer
0 siblings, 1 reply; 16+ messages in thread
From: Mathieu Dubois-Briand @ 2026-08-24 6:30 UTC (permalink / raw)
To: Jörg Sommer; +Cc: openembedded-core, richard.purdie, ross.burton, rs
On Sat Aug 22, 2026 at 4:09 PM CEST, Jörg Sommer wrote:
> Mathieu Dubois-Briand schrieb am Sa 22. Aug, 14:16 (+0200):
>> On Sat Aug 22, 2026 at 9:56 AM CEST, Jörg Sommer wrote:
>> > Jörg Sommer schrieb am Fr 24. Jul, 11:00 (+0200):
>> >> From: Randolph Sapp <rs@ti.com>
>> >>
>> >> The split of bin and sbin became more artificial over time, and it is no
>> >> longer clear why programmes goes into the one or the other directory; e.g.
>> >> forever normal users have used sendmail in /usr/sbin, and fdisk and mkfs
>> >> learned to operate on files to create images long ago.
>> >
>> > Gentle ping. What's the state of this?
>> >
>>
>> Hi Jörg,
>>
>> Previous builds showed some errors. Should it have evolve since that?
>
> Yes, I think so. The bootchart2 errors were addressed by 2bf18f9908, and the
> tcf-agent by 443f8c62ad.
Hi Jörg,
It looks like this is still failing, at least with alt distro:
ERROR: systemd-1_261.2-r0 do_package: QA Issue: systemd: Files/directories were installed but not shipped in any package:
/usr/sbin
/usr/sbin/poweroff
/usr/sbin/mount.ddi
/usr/sbin/init
/usr/sbin/resolvconf
/usr/sbin/mount.storage
/usr/sbin/halt
/usr/sbin/mount.mstack
/usr/sbin/reboot
/usr/sbin/shutdown
Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
systemd: 10 installed and not shipped files. [installed-vs-shipped]
https://autobuilder.yoctoproject.org/valkyrie/#/builders/20/builds/4407
https://autobuilder.yoctoproject.org/valkyrie/#/builders/9/builds/4430
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] 16+ messages in thread
* Re: [PATCH v2] bitbake.conf: Extend distro feature usrmerge to merge bin+sbin
2026-08-24 6:30 ` Mathieu Dubois-Briand
@ 2026-08-24 9:53 ` Jörg Sommer
2026-08-24 10:02 ` Mathieu Dubois-Briand
0 siblings, 1 reply; 16+ messages in thread
From: Jörg Sommer @ 2026-08-24 9:53 UTC (permalink / raw)
To: Mathieu Dubois-Briand; +Cc: openembedded-core, richard.purdie, ross.burton, rs
[-- Attachment #1: Type: text/plain, Size: 2222 bytes --]
Mathieu Dubois-Briand schrieb am Mo 24. Aug, 08:30 (+0200):
> On Sat Aug 22, 2026 at 4:09 PM CEST, Jörg Sommer wrote:
> > Mathieu Dubois-Briand schrieb am Sa 22. Aug, 14:16 (+0200):
> >> On Sat Aug 22, 2026 at 9:56 AM CEST, Jörg Sommer wrote:
> >> > Jörg Sommer schrieb am Fr 24. Jul, 11:00 (+0200):
> >> >> From: Randolph Sapp <rs@ti.com>
> >> >>
> >> >> The split of bin and sbin became more artificial over time, and it is no
> >> >> longer clear why programmes goes into the one or the other directory; e.g.
> >> >> forever normal users have used sendmail in /usr/sbin, and fdisk and mkfs
> >> >> learned to operate on files to create images long ago.
> >> >
> >> > Gentle ping. What's the state of this?
> >> >
> >>
> >> Hi Jörg,
> >>
> >> Previous builds showed some errors. Should it have evolve since that?
> >
> > Yes, I think so. The bootchart2 errors were addressed by 2bf18f9908, and the
> > tcf-agent by 443f8c62ad.
>
> Hi Jörg,
>
> It looks like this is still failing, at least with alt distro:
>
> ERROR: systemd-1_261.2-r0 do_package: QA Issue: systemd: Files/directories were installed but not shipped in any package:
> /usr/sbin
> /usr/sbin/poweroff
> /usr/sbin/mount.ddi
> /usr/sbin/init
> /usr/sbin/resolvconf
> /usr/sbin/mount.storage
> /usr/sbin/halt
> /usr/sbin/mount.mstack
> /usr/sbin/reboot
> /usr/sbin/shutdown
> Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
> systemd: 10 installed and not shipped files. [installed-vs-shipped]
>
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/20/builds/4407
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/9/builds/4430
>
> Can you have a look at the issue?
Thank you Mathieu for your testing. I built systemd 261.2 with poky-altcfg
and had no errors. Can I find your branch mathieu/master-next somewhere?
Regards, Jörg
--
Navimatix GmbH T: 03641 - 327 99 0
Tatzendpromenade 2 F: 03641 - 526 306
07745 Jena www.navimatix.de
Geschäftsführer: Steffen Späthe, Jan Rommeley
Registergericht: Amtsgericht Jena, HRB 501480
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 6684 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2] bitbake.conf: Extend distro feature usrmerge to merge bin+sbin
2026-08-24 9:53 ` Jörg Sommer
@ 2026-08-24 10:02 ` Mathieu Dubois-Briand
2026-08-24 12:43 ` Jörg Sommer
0 siblings, 1 reply; 16+ messages in thread
From: Mathieu Dubois-Briand @ 2026-08-24 10:02 UTC (permalink / raw)
To: Jörg Sommer; +Cc: openembedded-core, richard.purdie, ross.burton, rs
On Mon Aug 24, 2026 at 11:53 AM CEST, Jörg Sommer wrote:
> Mathieu Dubois-Briand schrieb am Mo 24. Aug, 08:30 (+0200):
>> On Sat Aug 22, 2026 at 4:09 PM CEST, Jörg Sommer wrote:
>> > Mathieu Dubois-Briand schrieb am Sa 22. Aug, 14:16 (+0200):
>> >> On Sat Aug 22, 2026 at 9:56 AM CEST, Jörg Sommer wrote:
>> >> > Jörg Sommer schrieb am Fr 24. Jul, 11:00 (+0200):
>> >> >> From: Randolph Sapp <rs@ti.com>
>> >> >>
>> >> >> The split of bin and sbin became more artificial over time, and it is no
>> >> >> longer clear why programmes goes into the one or the other directory; e.g.
>> >> >> forever normal users have used sendmail in /usr/sbin, and fdisk and mkfs
>> >> >> learned to operate on files to create images long ago.
>> >> >
>> >> > Gentle ping. What's the state of this?
>> >> >
>> >>
>> >> Hi Jörg,
>> >>
>> >> Previous builds showed some errors. Should it have evolve since that?
>> >
>> > Yes, I think so. The bootchart2 errors were addressed by 2bf18f9908, and the
>> > tcf-agent by 443f8c62ad.
>>
>> Hi Jörg,
>>
>> It looks like this is still failing, at least with alt distro:
>>
>> ERROR: systemd-1_261.2-r0 do_package: QA Issue: systemd: Files/directories were installed but not shipped in any package:
>> /usr/sbin
>> /usr/sbin/poweroff
>> /usr/sbin/mount.ddi
>> /usr/sbin/init
>> /usr/sbin/resolvconf
>> /usr/sbin/mount.storage
>> /usr/sbin/halt
>> /usr/sbin/mount.mstack
>> /usr/sbin/reboot
>> /usr/sbin/shutdown
>> Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
>> systemd: 10 installed and not shipped files. [installed-vs-shipped]
>>
>> https://autobuilder.yoctoproject.org/valkyrie/#/builders/20/builds/4407
>> https://autobuilder.yoctoproject.org/valkyrie/#/builders/9/builds/4430
>>
>> Can you have a look at the issue?
>
> Thank you Mathieu for your testing. I built systemd 261.2 with poky-altcfg
> and had no errors. Can I find your branch mathieu/master-next somewhere?
>
>
> Regards, Jörg
You can find a tag in there:
https://git.yoctoproject.org/poky-ci-archive/tag/?h=oecore/autobuilder.yoctoproject.org/valkyrie/a-full-4555
Thanks,
Mathieu
--
Mathieu Dubois-Briand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2] bitbake.conf: Extend distro feature usrmerge to merge bin+sbin
2026-08-24 10:02 ` Mathieu Dubois-Briand
@ 2026-08-24 12:43 ` Jörg Sommer
2026-08-24 13:10 ` Mathieu Dubois-Briand
0 siblings, 1 reply; 16+ messages in thread
From: Jörg Sommer @ 2026-08-24 12:43 UTC (permalink / raw)
To: Mathieu Dubois-Briand; +Cc: openembedded-core, richard.purdie, ross.burton, rs
[-- Attachment #1: Type: text/plain, Size: 3513 bytes --]
Mathieu Dubois-Briand schrieb am Mo 24. Aug, 12:02 (+0200):
> On Mon Aug 24, 2026 at 11:53 AM CEST, Jörg Sommer wrote:
> > Mathieu Dubois-Briand schrieb am Mo 24. Aug, 08:30 (+0200):
> >> On Sat Aug 22, 2026 at 4:09 PM CEST, Jörg Sommer wrote:
> >> > Mathieu Dubois-Briand schrieb am Sa 22. Aug, 14:16 (+0200):
> >> >> On Sat Aug 22, 2026 at 9:56 AM CEST, Jörg Sommer wrote:
> >> >> > Jörg Sommer schrieb am Fr 24. Jul, 11:00 (+0200):
> >> >> >> From: Randolph Sapp <rs@ti.com>
> >> >> >>
> >> >> >> The split of bin and sbin became more artificial over time, and it is no
> >> >> >> longer clear why programmes goes into the one or the other directory; e.g.
> >> >> >> forever normal users have used sendmail in /usr/sbin, and fdisk and mkfs
> >> >> >> learned to operate on files to create images long ago.
> >> >> >
> >> >> > Gentle ping. What's the state of this?
> >> >> >
> >> >>
> >> >> Hi Jörg,
> >> >>
> >> >> Previous builds showed some errors. Should it have evolve since that?
> >> >
> >> > Yes, I think so. The bootchart2 errors were addressed by 2bf18f9908, and the
> >> > tcf-agent by 443f8c62ad.
> >>
> >> Hi Jörg,
> >>
> >> It looks like this is still failing, at least with alt distro:
> >>
> >> ERROR: systemd-1_261.2-r0 do_package: QA Issue: systemd: Files/directories were installed but not shipped in any package:
> >> /usr/sbin
> >> /usr/sbin/poweroff
> >> /usr/sbin/mount.ddi
> >> /usr/sbin/init
> >> /usr/sbin/resolvconf
> >> /usr/sbin/mount.storage
> >> /usr/sbin/halt
> >> /usr/sbin/mount.mstack
> >> /usr/sbin/reboot
> >> /usr/sbin/shutdown
> >> Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
> >> systemd: 10 installed and not shipped files. [installed-vs-shipped]
> >>
> >> https://autobuilder.yoctoproject.org/valkyrie/#/builders/20/builds/4407
> >> https://autobuilder.yoctoproject.org/valkyrie/#/builders/9/builds/4430
> >>
> >> Can you have a look at the issue?
> >
> > Thank you Mathieu for your testing. I built systemd 261.2 with poky-altcfg
> > and had no errors. Can I find your branch mathieu/master-next somewhere?
> >
> >
> > Regards, Jörg
>
> You can find a tag in there:
>
> https://git.yoctoproject.org/poky-ci-archive/tag/?h=oecore/autobuilder.yoctoproject.org/valkyrie/a-full-4555
This really helped to track down the issue. In your commit [1] this block is
missing:
```
--- meta/recipes-core/systemd/systemd_261.2.bb
+++ meta/recipes-core/systemd/systemd_261.2.bb
@@ -196,7 +196,6 @@ def build_epoch(d):
PACKAGECONFIG[set-time-epoch] = "${@build_epoch(d)},-Dtime-epoch=0"
PACKAGECONFIG[timedated] = "-Dtimedated=true,-Dtimedated=false"
PACKAGECONFIG[timesyncd] = "-Dtimesyncd=true,-Dtimesyncd=false"
-PACKAGECONFIG[sbinmerge] = "-Dsplit-bin=false,-Dsplit-bin=true"
PACKAGECONFIG[userdb] = "-Duserdb=true,-Duserdb=false"
PACKAGECONFIG[utmp] = "-Dutmp=true,-Dutmp=false"
PACKAGECONFIG[valgrind] = "-DVALGRIND=1,,valgrind"
```
[1] https://git.yoctoproject.org/poky-ci-archive/commit/?h=oecore/autobuilder.yoctoproject.org/valkyrie/a-full-4555&id=9da89593957c05809e58e85f2d521ab80ce7f807
I'll send a v3 based on 261.2
--
Navimatix GmbH T: 03641 - 327 99 0
Tatzendpromenade 2 F: 03641 - 526 306
07745 Jena www.navimatix.de
Geschäftsführer: Steffen Späthe, Jan Rommeley
Registergericht: Amtsgericht Jena, HRB 501480
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 6684 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [PATCH v2] bitbake.conf: Extend distro feature usrmerge to merge bin+sbin
2026-08-24 12:43 ` Jörg Sommer
@ 2026-08-24 13:10 ` Mathieu Dubois-Briand
0 siblings, 0 replies; 16+ messages in thread
From: Mathieu Dubois-Briand @ 2026-08-24 13:10 UTC (permalink / raw)
To: Jörg Sommer; +Cc: openembedded-core, richard.purdie, ross.burton, rs
On Mon Aug 24, 2026 at 2:43 PM CEST, Jörg Sommer wrote:
> Mathieu Dubois-Briand schrieb am Mo 24. Aug, 12:02 (+0200):
>> You can find a tag in there:
>>
>> https://git.yoctoproject.org/poky-ci-archive/tag/?h=oecore/autobuilder.yoctoproject.org/valkyrie/a-full-4555
>
> This really helped to track down the issue. In your commit [1] this block is
> missing:
>
> ```
> --- meta/recipes-core/systemd/systemd_261.2.bb
> +++ meta/recipes-core/systemd/systemd_261.2.bb
> @@ -196,7 +196,6 @@ def build_epoch(d):
> PACKAGECONFIG[set-time-epoch] = "${@build_epoch(d)},-Dtime-epoch=0"
> PACKAGECONFIG[timedated] = "-Dtimedated=true,-Dtimedated=false"
> PACKAGECONFIG[timesyncd] = "-Dtimesyncd=true,-Dtimesyncd=false"
> -PACKAGECONFIG[sbinmerge] = "-Dsplit-bin=false,-Dsplit-bin=true"
> PACKAGECONFIG[userdb] = "-Duserdb=true,-Duserdb=false"
> PACKAGECONFIG[utmp] = "-Dutmp=true,-Dutmp=false"
> PACKAGECONFIG[valgrind] = "-DVALGRIND=1,,valgrind"
> ```
>
> [1] https://git.yoctoproject.org/poky-ci-archive/commit/?h=oecore/autobuilder.yoctoproject.org/valkyrie/a-full-4555&id=9da89593957c05809e58e85f2d521ab80ce7f807
>
> I'll send a v3 based on 261.2
Looks like I missed it while resolving conflicts. Thanks for the v3.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v3] bitbake.conf: Extend distro feature usrmerge to merge bin+sbin
2026-07-24 9:00 [PATCH v2] bitbake.conf: Extend distro feature usrmerge to merge bin+sbin Jörg Sommer
2026-07-25 7:34 ` [OE-core] " Mathieu Dubois-Briand
2026-08-22 7:56 ` Jörg Sommer
@ 2026-08-24 12:48 ` Jörg Sommer
2026-08-24 13:11 ` [OE-core] " Marko, Peter
2026-08-25 7:33 ` Mathieu Dubois-Briand
2 siblings, 2 replies; 16+ messages in thread
From: Jörg Sommer @ 2026-08-24 12:48 UTC (permalink / raw)
To: openembedded-core, mathieu.dubois-briand, rs, joerg.sommer
Cc: mathieu.dubois-briand, Randolph Sapp, Jörg Sommer
From: Randolph Sapp <rs@ti.com>
The split of bin and sbin became more artificial over time, and it is no
longer clear why programmes goes into the one or the other directory; e.g.
forever normal users have used sendmail in /usr/sbin, and fdisk and mkfs
learned to operate on files to create images long ago.
Because systemd drives this movement to have only /usr/bin and symlink /bin,
/sbin and /usr/sbin to there, the usrmerge feature (started by systemd too)
should be extended to include the binmerge. For a system with split bin/sbin
`systemctl status` reports the system as tainted for *unmerged-bin.*
Override most sbin variables to point to their bin equivalent when
usermerge is enabled, with the exception being base_sbindir_native and
sbindir_native. There is no guarantee the host machine is using this
filesystem scheme.
This check was added to systemd back in 2024 [2].
[1] https://gitlab.archlinux.org/archlinux/packaging/packages/filesystem/-/blob/main/PKGBUILD
[2] https://github.com/systemd/systemd/commit/844863c61e7b501097da84a1e4d1e4a6aa6d9f0d
Signed-off-by: Randolph Sapp <rs@ti.com>
Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
---
Changes in v3:
* rebase on systemd 261.2
Changes in v2:
* I took Randolph's version and reworked it a bit. But the idea stays the same.
Reference to v1:
* https://lists.openembedded.org/g/openembedded-core/message/234858
meta/classes-recipe/populate_sdk_base.bbclass | 2 ++
meta/conf/bitbake.conf | 8 ++++----
meta/recipes-core/systemd/systemd_261.2.bb | 6 +++---
3 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/meta/classes-recipe/populate_sdk_base.bbclass b/meta/classes-recipe/populate_sdk_base.bbclass
index f32e9add01..f9367d0d17 100644
--- a/meta/classes-recipe/populate_sdk_base.bbclass
+++ b/meta/classes-recipe/populate_sdk_base.bbclass
@@ -188,6 +188,8 @@ create_merged_usr_symlinks() {
install -d $root${base_bindir} $root${base_sbindir} $root${base_libdir}
ln -rs $root${base_bindir} $root/bin
ln -rs $root${base_sbindir} $root/sbin
+ # if base_sbindir == base_bindir, aka binmerge
+ test -e $root/usr/sbin || ln -rs $root${base_bindir} $root/usr/sbin
ln -rs $root${base_libdir} $root/${baselib}
if [ "${nonarch_base_libdir}" != "${base_libdir}" ]; then
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index 41e98ce629..a6833f98de 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -22,7 +22,7 @@ root_prefix = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${exec_prefi
# Base paths
export base_bindir = "${root_prefix}/bin"
-export base_sbindir = "${root_prefix}/sbin"
+export base_sbindir = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${base_bindir}', '${root_prefix}/sbin', d)}"
export base_libdir = "${root_prefix}/${baselib}"
export nonarch_base_libdir = "${root_prefix}/lib"
@@ -44,7 +44,7 @@ firmwaredir = "${nonarch_base_libdir}/firmware"
# Architecture dependent paths
export bindir = "${exec_prefix}/bin"
-export sbindir = "${exec_prefix}/sbin"
+export sbindir = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${bindir}', '${exec_prefix}/sbin', d)}"
export libdir = "${exec_prefix}/${baselib}"
export libexecdir = "${exec_prefix}/libexec"
export includedir = "${exec_prefix}/include"
@@ -66,9 +66,9 @@ bindir_cross = "/bin"
bindir_crossscripts = "${bindir}/crossscripts"
prefix_nativesdk = "/usr"
bindir_nativesdk = "${prefix_nativesdk}/bin"
-sbindir_nativesdk = "${prefix_nativesdk}/sbin"
+sbindir_nativesdk = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${bindir_nativesdk}', '${prefix_nativesdk}/sbin', d)}"
base_bindir_nativesdk = "/bin"
-base_sbindir_nativesdk = "/sbin"
+base_sbindir_nativesdk = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '${base_bindir_nativesdk}', '/sbin', d)}"
includedir_nativesdk = "${prefix_nativesdk}/include"
libdir_nativesdk = "${prefix_nativesdk}/lib"
base_libdir_nativesdk = "/lib"
diff --git a/meta/recipes-core/systemd/systemd_261.2.bb b/meta/recipes-core/systemd/systemd_261.2.bb
index 8237b040a5..4475fb2514 100644
--- a/meta/recipes-core/systemd/systemd_261.2.bb
+++ b/meta/recipes-core/systemd/systemd_261.2.bb
@@ -196,7 +196,6 @@ def build_epoch(d):
PACKAGECONFIG[set-time-epoch] = "${@build_epoch(d)},-Dtime-epoch=0"
PACKAGECONFIG[timedated] = "-Dtimedated=true,-Dtimedated=false"
PACKAGECONFIG[timesyncd] = "-Dtimesyncd=true,-Dtimesyncd=false"
-PACKAGECONFIG[sbinmerge] = "-Dsplit-bin=false,-Dsplit-bin=true"
PACKAGECONFIG[userdb] = "-Duserdb=true,-Duserdb=false"
PACKAGECONFIG[utmp] = "-Dutmp=true,-Dutmp=false"
PACKAGECONFIG[valgrind] = "-DVALGRIND=1,,valgrind"
@@ -227,6 +226,7 @@ EXTRA_OEMESON += "-Dnobody-user=nobody \
-Dtranslations=${@'false' if d.getVar('USE_NLS') == 'no' else 'true'} \
${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', '-Ddefault-mdns=no -Ddefault-llmnr=no', '', d)} \
-Ddbus=disabled \
+ -Dsplit-bin=${@'false' if '${bindir}' == '${sbindir}' else 'true'} \
-Dtests=false \
-Dlibc=${TCLIBC} \
"
@@ -343,8 +343,8 @@ do_install() {
install -m 0644 ${UNPACKDIR}/org.freedesktop.hostname1_no_polkit.conf ${D}${datadir}/dbus-1/system.d/
fi
- # create link for existing udev rules
- ln -s ${base_bindir}/udevadm ${D}${base_sbindir}/udevadm
+ # create link for old udev rules
+ test -e ${D}${base_sbindir}/udevadm || ln -s ${base_bindir}/udevadm ${D}${base_sbindir}/udevadm
# install default policy for presets
# https://www.freedesktop.org/wiki/Software/systemd/Preset/#howto
--
2.53.0
^ permalink raw reply related [flat|nested] 16+ messages in thread* RE: [OE-core] [PATCH v3] bitbake.conf: Extend distro feature usrmerge to merge bin+sbin
2026-08-24 12:48 ` [PATCH v3] " Jörg Sommer
@ 2026-08-24 13:11 ` Marko, Peter
2026-08-24 15:17 ` joerg.sommer
2026-08-25 7:33 ` Mathieu Dubois-Briand
1 sibling, 1 reply; 16+ messages in thread
From: Marko, Peter @ 2026-08-24 13:11 UTC (permalink / raw)
To: joerg.sommer@navimatix.de,
openembedded-core@lists.openembedded.org,
mathieu.dubois-briand@bootlin.com, rs@ti.com
systemd recipe has:
REQUIRED_DISTRO_FEATURES += "usrmerge"
So the changes in systemd recipe can be made unconditional.
Peter
> -----Original Message-----
> From: openembedded-core@lists.openembedded.org <openembedded-
> core@lists.openembedded.org> On Behalf Of Jörg Sommer via
> lists.openembedded.org
> Sent: Monday, August 24, 2026 2:48 PM
> To: openembedded-core@lists.openembedded.org; mathieu.dubois-
> briand@bootlin.com; rs@ti.com; joerg.sommer@navimatix.de
> Cc: mathieu.dubois-briand@bootlin.com; Randolph Sapp <rs@ti.com>; Jörg
> Sommer <joerg.sommer@navimatix.de>
> Subject: [OE-core] [PATCH v3] bitbake.conf: Extend distro feature usrmerge to
> merge bin+sbin
>
> From: Randolph Sapp <rs@ti.com>
>
> The split of bin and sbin became more artificial over time, and it is no
> longer clear why programmes goes into the one or the other directory; e.g.
> forever normal users have used sendmail in /usr/sbin, and fdisk and mkfs
> learned to operate on files to create images long ago.
>
> Because systemd drives this movement to have only /usr/bin and symlink /bin,
> /sbin and /usr/sbin to there, the usrmerge feature (started by systemd too)
> should be extended to include the binmerge. For a system with split bin/sbin
> `systemctl status` reports the system as tainted for *unmerged-bin.*
>
> Override most sbin variables to point to their bin equivalent when
> usermerge is enabled, with the exception being base_sbindir_native and
> sbindir_native. There is no guarantee the host machine is using this
> filesystem scheme.
>
> This check was added to systemd back in 2024 [2].
>
> [1] https://gitlab.archlinux.org/archlinux/packaging/packages/filesystem/-
> /blob/main/PKGBUILD
> [2]
> https://github.com/systemd/systemd/commit/844863c61e7b501097da84a1e4d1e
> 4a6aa6d9f0d
>
> Signed-off-by: Randolph Sapp <rs@ti.com>
> Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
> ---
> Changes in v3:
>
> * rebase on systemd 261.2
>
> Changes in v2:
>
> * I took Randolph's version and reworked it a bit. But the idea stays the same.
>
> Reference to v1:
>
> * https://lists.openembedded.org/g/openembedded-core/message/234858
>
> meta/classes-recipe/populate_sdk_base.bbclass | 2 ++
> meta/conf/bitbake.conf | 8 ++++----
> meta/recipes-core/systemd/systemd_261.2.bb | 6 +++---
> 3 files changed, 9 insertions(+), 7 deletions(-)
>
> diff --git a/meta/classes-recipe/populate_sdk_base.bbclass b/meta/classes-
> recipe/populate_sdk_base.bbclass
> index f32e9add01..f9367d0d17 100644
> --- a/meta/classes-recipe/populate_sdk_base.bbclass
> +++ b/meta/classes-recipe/populate_sdk_base.bbclass
> @@ -188,6 +188,8 @@ create_merged_usr_symlinks() {
> install -d $root${base_bindir} $root${base_sbindir} $root${base_libdir}
> ln -rs $root${base_bindir} $root/bin
> ln -rs $root${base_sbindir} $root/sbin
> + # if base_sbindir == base_bindir, aka binmerge
> + test -e $root/usr/sbin || ln -rs $root${base_bindir} $root/usr/sbin
> ln -rs $root${base_libdir} $root/${baselib}
>
> if [ "${nonarch_base_libdir}" != "${base_libdir}" ]; then
> diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
> index 41e98ce629..a6833f98de 100644
> --- a/meta/conf/bitbake.conf
> +++ b/meta/conf/bitbake.conf
> @@ -22,7 +22,7 @@ root_prefix = "${@bb.utils.contains('DISTRO_FEATURES',
> 'usrmerge', '${exec_prefi
>
> # Base paths
> export base_bindir = "${root_prefix}/bin"
> -export base_sbindir = "${root_prefix}/sbin"
> +export base_sbindir = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge',
> '${base_bindir}', '${root_prefix}/sbin', d)}"
> export base_libdir = "${root_prefix}/${baselib}"
> export nonarch_base_libdir = "${root_prefix}/lib"
>
> @@ -44,7 +44,7 @@ firmwaredir = "${nonarch_base_libdir}/firmware"
>
> # Architecture dependent paths
> export bindir = "${exec_prefix}/bin"
> -export sbindir = "${exec_prefix}/sbin"
> +export sbindir = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge',
> '${bindir}', '${exec_prefix}/sbin', d)}"
> export libdir = "${exec_prefix}/${baselib}"
> export libexecdir = "${exec_prefix}/libexec"
> export includedir = "${exec_prefix}/include"
> @@ -66,9 +66,9 @@ bindir_cross = "/bin"
> bindir_crossscripts = "${bindir}/crossscripts"
> prefix_nativesdk = "/usr"
> bindir_nativesdk = "${prefix_nativesdk}/bin"
> -sbindir_nativesdk = "${prefix_nativesdk}/sbin"
> +sbindir_nativesdk = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge',
> '${bindir_nativesdk}', '${prefix_nativesdk}/sbin', d)}"
> base_bindir_nativesdk = "/bin"
> -base_sbindir_nativesdk = "/sbin"
> +base_sbindir_nativesdk = "${@bb.utils.contains('DISTRO_FEATURES',
> 'usrmerge', '${base_bindir_nativesdk}', '/sbin', d)}"
> includedir_nativesdk = "${prefix_nativesdk}/include"
> libdir_nativesdk = "${prefix_nativesdk}/lib"
> base_libdir_nativesdk = "/lib"
> diff --git a/meta/recipes-core/systemd/systemd_261.2.bb b/meta/recipes-
> core/systemd/systemd_261.2.bb
> index 8237b040a5..4475fb2514 100644
> --- a/meta/recipes-core/systemd/systemd_261.2.bb
> +++ b/meta/recipes-core/systemd/systemd_261.2.bb
> @@ -196,7 +196,6 @@ def build_epoch(d):
> PACKAGECONFIG[set-time-epoch] = "${@build_epoch(d)},-Dtime-epoch=0"
> PACKAGECONFIG[timedated] = "-Dtimedated=true,-Dtimedated=false"
> PACKAGECONFIG[timesyncd] = "-Dtimesyncd=true,-Dtimesyncd=false"
> -PACKAGECONFIG[sbinmerge] = "-Dsplit-bin=false,-Dsplit-bin=true"
> PACKAGECONFIG[userdb] = "-Duserdb=true,-Duserdb=false"
> PACKAGECONFIG[utmp] = "-Dutmp=true,-Dutmp=false"
> PACKAGECONFIG[valgrind] = "-DVALGRIND=1,,valgrind"
> @@ -227,6 +226,7 @@ EXTRA_OEMESON += "-Dnobody-user=nobody \
> -Dtranslations=${@'false' if d.getVar('USE_NLS') == 'no' else 'true'} \
> ${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', '-Ddefault-
> mdns=no -Ddefault-llmnr=no', '', d)} \
> -Ddbus=disabled \
> + -Dsplit-bin=${@'false' if '${bindir}' == '${sbindir}' else 'true'} \
> -Dtests=false \
> -Dlibc=${TCLIBC} \
> "
> @@ -343,8 +343,8 @@ do_install() {
> install -m 0644
> ${UNPACKDIR}/org.freedesktop.hostname1_no_polkit.conf ${D}${datadir}/dbus-
> 1/system.d/
> fi
>
> - # create link for existing udev rules
> - ln -s ${base_bindir}/udevadm ${D}${base_sbindir}/udevadm
> + # create link for old udev rules
> + test -e ${D}${base_sbindir}/udevadm || ln -s ${base_bindir}/udevadm
> ${D}${base_sbindir}/udevadm
>
> # install default policy for presets
> # https://www.freedesktop.org/wiki/Software/systemd/Preset/#howto
> --
> 2.53.0
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [OE-core] [PATCH v3] bitbake.conf: Extend distro feature usrmerge to merge bin+sbin
2026-08-24 13:11 ` [OE-core] " Marko, Peter
@ 2026-08-24 15:17 ` joerg.sommer
2026-08-24 16:18 ` Marko, Peter
2026-08-24 17:10 ` Richard Purdie
0 siblings, 2 replies; 16+ messages in thread
From: joerg.sommer @ 2026-08-24 15:17 UTC (permalink / raw)
To: Marko, Peter
Cc: openembedded-core@lists.openembedded.org,
mathieu.dubois-briand@bootlin.com, rs@ti.com
[-- Attachment #1: Type: text/plain, Size: 7815 bytes --]
Marko, Peter schrieb am Mo 24. Aug, 13:11 (+0000):
> [You don't often get email from peter.marko@siemens.com. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]
>
> systemd recipe has:
> REQUIRED_DISTRO_FEATURES += "usrmerge"
> So the changes in systemd recipe can be made unconditional.
I can update the commit, but with the current version, if someone doesn't
like the bin-merge he can revert it and stay with usr-merge only.
But does really someone want this? Maybe somewhen systemd will require the
bin-merge, too.
Any votes for or against hard-coding bin-merge?
> > -----Original Message-----
> > From: openembedded-core@lists.openembedded.org <openembedded-
> > core@lists.openembedded.org> On Behalf Of Jörg Sommer via
> > lists.openembedded.org
> > Sent: Monday, August 24, 2026 2:48 PM
> > To: openembedded-core@lists.openembedded.org; mathieu.dubois-
> > briand@bootlin.com; rs@ti.com; joerg.sommer@navimatix.de
> > Cc: mathieu.dubois-briand@bootlin.com; Randolph Sapp <rs@ti.com>; Jörg
> > Sommer <joerg.sommer@navimatix.de>
> > Subject: [OE-core] [PATCH v3] bitbake.conf: Extend distro feature usrmerge to
> > merge bin+sbin
> >
> > From: Randolph Sapp <rs@ti.com>
> >
> > The split of bin and sbin became more artificial over time, and it is no
> > longer clear why programmes goes into the one or the other directory; e.g.
> > forever normal users have used sendmail in /usr/sbin, and fdisk and mkfs
> > learned to operate on files to create images long ago.
> >
> > Because systemd drives this movement to have only /usr/bin and symlink /bin,
> > /sbin and /usr/sbin to there, the usrmerge feature (started by systemd too)
> > should be extended to include the binmerge. For a system with split bin/sbin
> > `systemctl status` reports the system as tainted for *unmerged-bin.*
> >
> > Override most sbin variables to point to their bin equivalent when
> > usermerge is enabled, with the exception being base_sbindir_native and
> > sbindir_native. There is no guarantee the host machine is using this
> > filesystem scheme.
> >
> > This check was added to systemd back in 2024 [2].
> >
> > [1] https://gitlab.archlinux.org/archlinux/packaging/packages/filesystem/-
> > /blob/main/PKGBUILD
> > [2]
> > https://github.com/systemd/systemd/commit/844863c61e7b501097da84a1e4d1e
> > 4a6aa6d9f0d
> >
> > Signed-off-by: Randolph Sapp <rs@ti.com>
> > Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
> > ---
> > Changes in v3:
> >
> > * rebase on systemd 261.2
> >
> > Changes in v2:
> >
> > * I took Randolph's version and reworked it a bit. But the idea stays the same.
> >
> > Reference to v1:
> >
> > * https://lists.openembedded.org/g/openembedded-core/message/234858
> >
> > meta/classes-recipe/populate_sdk_base.bbclass | 2 ++
> > meta/conf/bitbake.conf | 8 ++++----
> > meta/recipes-core/systemd/systemd_261.2.bb | 6 +++---
> > 3 files changed, 9 insertions(+), 7 deletions(-)
> >
> > diff --git a/meta/classes-recipe/populate_sdk_base.bbclass b/meta/classes-
> > recipe/populate_sdk_base.bbclass
> > index f32e9add01..f9367d0d17 100644
> > --- a/meta/classes-recipe/populate_sdk_base.bbclass
> > +++ b/meta/classes-recipe/populate_sdk_base.bbclass
> > @@ -188,6 +188,8 @@ create_merged_usr_symlinks() {
> > install -d $root${base_bindir} $root${base_sbindir} $root${base_libdir}
> > ln -rs $root${base_bindir} $root/bin
> > ln -rs $root${base_sbindir} $root/sbin
> > + # if base_sbindir == base_bindir, aka binmerge
> > + test -e $root/usr/sbin || ln -rs $root${base_bindir} $root/usr/sbin
> > ln -rs $root${base_libdir} $root/${baselib}
> >
> > if [ "${nonarch_base_libdir}" != "${base_libdir}" ]; then
> > diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
> > index 41e98ce629..a6833f98de 100644
> > --- a/meta/conf/bitbake.conf
> > +++ b/meta/conf/bitbake.conf
> > @@ -22,7 +22,7 @@ root_prefix = "${@bb.utils.contains('DISTRO_FEATURES',
> > 'usrmerge', '${exec_prefi
> >
> > # Base paths
> > export base_bindir = "${root_prefix}/bin"
> > -export base_sbindir = "${root_prefix}/sbin"
> > +export base_sbindir = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge',
> > '${base_bindir}', '${root_prefix}/sbin', d)}"
> > export base_libdir = "${root_prefix}/${baselib}"
> > export nonarch_base_libdir = "${root_prefix}/lib"
> >
> > @@ -44,7 +44,7 @@ firmwaredir = "${nonarch_base_libdir}/firmware"
> >
> > # Architecture dependent paths
> > export bindir = "${exec_prefix}/bin"
> > -export sbindir = "${exec_prefix}/sbin"
> > +export sbindir = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge',
> > '${bindir}', '${exec_prefix}/sbin', d)}"
> > export libdir = "${exec_prefix}/${baselib}"
> > export libexecdir = "${exec_prefix}/libexec"
> > export includedir = "${exec_prefix}/include"
> > @@ -66,9 +66,9 @@ bindir_cross = "/bin"
> > bindir_crossscripts = "${bindir}/crossscripts"
> > prefix_nativesdk = "/usr"
> > bindir_nativesdk = "${prefix_nativesdk}/bin"
> > -sbindir_nativesdk = "${prefix_nativesdk}/sbin"
> > +sbindir_nativesdk = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge',
> > '${bindir_nativesdk}', '${prefix_nativesdk}/sbin', d)}"
> > base_bindir_nativesdk = "/bin"
> > -base_sbindir_nativesdk = "/sbin"
> > +base_sbindir_nativesdk = "${@bb.utils.contains('DISTRO_FEATURES',
> > 'usrmerge', '${base_bindir_nativesdk}', '/sbin', d)}"
> > includedir_nativesdk = "${prefix_nativesdk}/include"
> > libdir_nativesdk = "${prefix_nativesdk}/lib"
> > base_libdir_nativesdk = "/lib"
> > diff --git a/meta/recipes-core/systemd/systemd_261.2.bb b/meta/recipes-
> > core/systemd/systemd_261.2.bb
> > index 8237b040a5..4475fb2514 100644
> > --- a/meta/recipes-core/systemd/systemd_261.2.bb
> > +++ b/meta/recipes-core/systemd/systemd_261.2.bb
> > @@ -196,7 +196,6 @@ def build_epoch(d):
> > PACKAGECONFIG[set-time-epoch] = "${@build_epoch(d)},-Dtime-epoch=0"
> > PACKAGECONFIG[timedated] = "-Dtimedated=true,-Dtimedated=false"
> > PACKAGECONFIG[timesyncd] = "-Dtimesyncd=true,-Dtimesyncd=false"
> > -PACKAGECONFIG[sbinmerge] = "-Dsplit-bin=false,-Dsplit-bin=true"
> > PACKAGECONFIG[userdb] = "-Duserdb=true,-Duserdb=false"
> > PACKAGECONFIG[utmp] = "-Dutmp=true,-Dutmp=false"
> > PACKAGECONFIG[valgrind] = "-DVALGRIND=1,,valgrind"
> > @@ -227,6 +226,7 @@ EXTRA_OEMESON += "-Dnobody-user=nobody \
> > -Dtranslations=${@'false' if d.getVar('USE_NLS') == 'no' else 'true'} \
> > ${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', '-Ddefault-
> > mdns=no -Ddefault-llmnr=no', '', d)} \
> > -Ddbus=disabled \
> > + -Dsplit-bin=${@'false' if '${bindir}' == '${sbindir}' else 'true'} \
> > -Dtests=false \
> > -Dlibc=${TCLIBC} \
> > "
> > @@ -343,8 +343,8 @@ do_install() {
> > install -m 0644
> > ${UNPACKDIR}/org.freedesktop.hostname1_no_polkit.conf ${D}${datadir}/dbus-
> > 1/system.d/
> > fi
> >
> > - # create link for existing udev rules
> > - ln -s ${base_bindir}/udevadm ${D}${base_sbindir}/udevadm
> > + # create link for old udev rules
> > + test -e ${D}${base_sbindir}/udevadm || ln -s ${base_bindir}/udevadm
> > ${D}${base_sbindir}/udevadm
> >
> > # install default policy for presets
> > # https://www.freedesktop.org/wiki/Software/systemd/Preset/#howto
> > --
> > 2.53.0
>
--
Navimatix GmbH T: 03641 - 327 99 0
Tatzendpromenade 2 F: 03641 - 526 306
07745 Jena www.navimatix.de
Geschäftsführer: Steffen Späthe, Jan Rommeley
Registergericht: Amtsgericht Jena, HRB 501480
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 6684 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread* RE: [OE-core] [PATCH v3] bitbake.conf: Extend distro feature usrmerge to merge bin+sbin
2026-08-24 15:17 ` joerg.sommer
@ 2026-08-24 16:18 ` Marko, Peter
2026-08-24 17:10 ` Richard Purdie
1 sibling, 0 replies; 16+ messages in thread
From: Marko, Peter @ 2026-08-24 16:18 UTC (permalink / raw)
To: joerg.sommer@navimatix.de
Cc: openembedded-core@lists.openembedded.org,
mathieu.dubois-briand@bootlin.com, rs@ti.com
> -----Original Message-----
> From: joerg.sommer@navimatix.de <joerg.sommer@navimatix.de>
> Sent: Monday, August 24, 2026 5:18 PM
> To: Marko, Peter (FT D EU SK BFS1) <Peter.Marko@siemens.com>
> Cc: openembedded-core@lists.openembedded.org; mathieu.dubois-
> briand@bootlin.com; rs@ti.com
> Subject: Re: [OE-core] [PATCH v3] bitbake.conf: Extend distro feature usrmerge to
> merge bin+sbin
>
> Marko, Peter schrieb am Mo 24. Aug, 13:11 (+0000):
> > [You don't often get email from peter.marko@siemens.com. Learn why this is
> important at https://aka.ms/LearnAboutSenderIdentification ]
> >
> > systemd recipe has:
> > REQUIRED_DISTRO_FEATURES += "usrmerge"
> > So the changes in systemd recipe can be made unconditional.
>
> I can update the commit, but with the current version, if someone doesn't
> like the bin-merge he can revert it and stay with usr-merge only.
I failed to find a way how to revert bin-merge with systemd as INIT_MANAGER.
I think you can control this only for mdev-busybox or systemv init managers and in those you can't build system recipe...
Peter
>
> But does really someone want this? Maybe somewhen systemd will require the
> bin-merge, too.
>
> Any votes for or against hard-coding bin-merge?
>
> > > -----Original Message-----
> > > From: openembedded-core@lists.openembedded.org <openembedded-
> > > core@lists.openembedded.org> On Behalf Of Jörg Sommer via
> > > lists.openembedded.org
> > > Sent: Monday, August 24, 2026 2:48 PM
> > > To: openembedded-core@lists.openembedded.org; mathieu.dubois-
> > > briand@bootlin.com; rs@ti.com; joerg.sommer@navimatix.de
> > > Cc: mathieu.dubois-briand@bootlin.com; Randolph Sapp <rs@ti.com>; Jörg
> > > Sommer <joerg.sommer@navimatix.de>
> > > Subject: [OE-core] [PATCH v3] bitbake.conf: Extend distro feature usrmerge to
> > > merge bin+sbin
> > >
> > > From: Randolph Sapp <rs@ti.com>
> > >
> > > The split of bin and sbin became more artificial over time, and it is no
> > > longer clear why programmes goes into the one or the other directory; e.g.
> > > forever normal users have used sendmail in /usr/sbin, and fdisk and mkfs
> > > learned to operate on files to create images long ago.
> > >
> > > Because systemd drives this movement to have only /usr/bin and symlink /bin,
> > > /sbin and /usr/sbin to there, the usrmerge feature (started by systemd too)
> > > should be extended to include the binmerge. For a system with split bin/sbin
> > > `systemctl status` reports the system as tainted for *unmerged-bin.*
> > >
> > > Override most sbin variables to point to their bin equivalent when
> > > usermerge is enabled, with the exception being base_sbindir_native and
> > > sbindir_native. There is no guarantee the host machine is using this
> > > filesystem scheme.
> > >
> > > This check was added to systemd back in 2024 [2].
> > >
> > > [1] https://gitlab.archlinux.org/archlinux/packaging/packages/filesystem/-
> > > /blob/main/PKGBUILD
> > > [2]
> > > https://github.com/systemd/systemd/commit/844863c61e7b501097da84a1e4d1e
> > > 4a6aa6d9f0d
> > >
> > > Signed-off-by: Randolph Sapp <rs@ti.com>
> > > Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
> > > ---
> > > Changes in v3:
> > >
> > > * rebase on systemd 261.2
> > >
> > > Changes in v2:
> > >
> > > * I took Randolph's version and reworked it a bit. But the idea stays the same.
> > >
> > > Reference to v1:
> > >
> > > * https://lists.openembedded.org/g/openembedded-core/message/234858
> > >
> > > meta/classes-recipe/populate_sdk_base.bbclass | 2 ++
> > > meta/conf/bitbake.conf | 8 ++++----
> > > meta/recipes-core/systemd/systemd_261.2.bb | 6 +++---
> > > 3 files changed, 9 insertions(+), 7 deletions(-)
> > >
> > > diff --git a/meta/classes-recipe/populate_sdk_base.bbclass b/meta/classes-
> > > recipe/populate_sdk_base.bbclass
> > > index f32e9add01..f9367d0d17 100644
> > > --- a/meta/classes-recipe/populate_sdk_base.bbclass
> > > +++ b/meta/classes-recipe/populate_sdk_base.bbclass
> > > @@ -188,6 +188,8 @@ create_merged_usr_symlinks() {
> > > install -d $root${base_bindir} $root${base_sbindir} $root${base_libdir}
> > > ln -rs $root${base_bindir} $root/bin
> > > ln -rs $root${base_sbindir} $root/sbin
> > > + # if base_sbindir == base_bindir, aka binmerge
> > > + test -e $root/usr/sbin || ln -rs $root${base_bindir} $root/usr/sbin
> > > ln -rs $root${base_libdir} $root/${baselib}
> > >
> > > if [ "${nonarch_base_libdir}" != "${base_libdir}" ]; then
> > > diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
> > > index 41e98ce629..a6833f98de 100644
> > > --- a/meta/conf/bitbake.conf
> > > +++ b/meta/conf/bitbake.conf
> > > @@ -22,7 +22,7 @@ root_prefix = "${@bb.utils.contains('DISTRO_FEATURES',
> > > 'usrmerge', '${exec_prefi
> > >
> > > # Base paths
> > > export base_bindir = "${root_prefix}/bin"
> > > -export base_sbindir = "${root_prefix}/sbin"
> > > +export base_sbindir = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge',
> > > '${base_bindir}', '${root_prefix}/sbin', d)}"
> > > export base_libdir = "${root_prefix}/${baselib}"
> > > export nonarch_base_libdir = "${root_prefix}/lib"
> > >
> > > @@ -44,7 +44,7 @@ firmwaredir = "${nonarch_base_libdir}/firmware"
> > >
> > > # Architecture dependent paths
> > > export bindir = "${exec_prefix}/bin"
> > > -export sbindir = "${exec_prefix}/sbin"
> > > +export sbindir = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge',
> > > '${bindir}', '${exec_prefix}/sbin', d)}"
> > > export libdir = "${exec_prefix}/${baselib}"
> > > export libexecdir = "${exec_prefix}/libexec"
> > > export includedir = "${exec_prefix}/include"
> > > @@ -66,9 +66,9 @@ bindir_cross = "/bin"
> > > bindir_crossscripts = "${bindir}/crossscripts"
> > > prefix_nativesdk = "/usr"
> > > bindir_nativesdk = "${prefix_nativesdk}/bin"
> > > -sbindir_nativesdk = "${prefix_nativesdk}/sbin"
> > > +sbindir_nativesdk = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge',
> > > '${bindir_nativesdk}', '${prefix_nativesdk}/sbin', d)}"
> > > base_bindir_nativesdk = "/bin"
> > > -base_sbindir_nativesdk = "/sbin"
> > > +base_sbindir_nativesdk = "${@bb.utils.contains('DISTRO_FEATURES',
> > > 'usrmerge', '${base_bindir_nativesdk}', '/sbin', d)}"
> > > includedir_nativesdk = "${prefix_nativesdk}/include"
> > > libdir_nativesdk = "${prefix_nativesdk}/lib"
> > > base_libdir_nativesdk = "/lib"
> > > diff --git a/meta/recipes-core/systemd/systemd_261.2.bb b/meta/recipes-
> > > core/systemd/systemd_261.2.bb
> > > index 8237b040a5..4475fb2514 100644
> > > --- a/meta/recipes-core/systemd/systemd_261.2.bb
> > > +++ b/meta/recipes-core/systemd/systemd_261.2.bb
> > > @@ -196,7 +196,6 @@ def build_epoch(d):
> > > PACKAGECONFIG[set-time-epoch] = "${@build_epoch(d)},-Dtime-epoch=0"
> > > PACKAGECONFIG[timedated] = "-Dtimedated=true,-Dtimedated=false"
> > > PACKAGECONFIG[timesyncd] = "-Dtimesyncd=true,-Dtimesyncd=false"
> > > -PACKAGECONFIG[sbinmerge] = "-Dsplit-bin=false,-Dsplit-bin=true"
> > > PACKAGECONFIG[userdb] = "-Duserdb=true,-Duserdb=false"
> > > PACKAGECONFIG[utmp] = "-Dutmp=true,-Dutmp=false"
> > > PACKAGECONFIG[valgrind] = "-DVALGRIND=1,,valgrind"
> > > @@ -227,6 +226,7 @@ EXTRA_OEMESON += "-Dnobody-user=nobody \
> > > -Dtranslations=${@'false' if d.getVar('USE_NLS') == 'no' else 'true'} \
> > > ${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', '-Ddefault-
> > > mdns=no -Ddefault-llmnr=no', '', d)} \
> > > -Ddbus=disabled \
> > > + -Dsplit-bin=${@'false' if '${bindir}' == '${sbindir}' else 'true'} \
> > > -Dtests=false \
> > > -Dlibc=${TCLIBC} \
> > > "
> > > @@ -343,8 +343,8 @@ do_install() {
> > > install -m 0644
> > > ${UNPACKDIR}/org.freedesktop.hostname1_no_polkit.conf ${D}${datadir}/dbus-
> > > 1/system.d/
> > > fi
> > >
> > > - # create link for existing udev rules
> > > - ln -s ${base_bindir}/udevadm ${D}${base_sbindir}/udevadm
> > > + # create link for old udev rules
> > > + test -e ${D}${base_sbindir}/udevadm || ln -s ${base_bindir}/udevadm
> > > ${D}${base_sbindir}/udevadm
> > >
> > > # install default policy for presets
> > > # https://www.freedesktop.org/wiki/Software/systemd/Preset/#howto
> > > --
> > > 2.53.0
> >
> --
> Navimatix GmbH T: 03641 - 327 99 0
> Tatzendpromenade 2 F: 03641 - 526 306
> 07745 Jena www.navimatix.de
>
> Geschäftsführer: Steffen Späthe, Jan Rommeley
> Registergericht: Amtsgericht Jena, HRB 501480
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [OE-core] [PATCH v3] bitbake.conf: Extend distro feature usrmerge to merge bin+sbin
2026-08-24 15:17 ` joerg.sommer
2026-08-24 16:18 ` Marko, Peter
@ 2026-08-24 17:10 ` Richard Purdie
1 sibling, 0 replies; 16+ messages in thread
From: Richard Purdie @ 2026-08-24 17:10 UTC (permalink / raw)
To: joerg.sommer, Marko, Peter
Cc: openembedded-core@lists.openembedded.org,
mathieu.dubois-briand@bootlin.com, rs@ti.com
On Mon, 2026-08-24 at 17:17 +0200, Jörg Sommer via lists.openembedded.org wrote:
> Marko, Peter schrieb am Mo 24. Aug, 13:11 (+0000):
> > [You don't often get email from peter.marko@siemens.com. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]
> >
> > systemd recipe has:
> > REQUIRED_DISTRO_FEATURES += "usrmerge"
> > So the changes in systemd recipe can be made unconditional.
>
> I can update the commit, but with the current version, if someone doesn't
> like the bin-merge he can revert it and stay with usr-merge only.
>
> But does really someone want this? Maybe somewhen systemd will require the
> bin-merge, too.
>
> Any votes for or against hard-coding bin-merge?
I have wondered about changing the sdk layout (i.e. nativesdk) to merge
all the bin directories. That should really be independent of any of
the target layout/sysroot options.
I'm not sure where the patch would stand with regard to that...
Cheers,
Richard
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [OE-core] [PATCH v3] bitbake.conf: Extend distro feature usrmerge to merge bin+sbin
2026-08-24 12:48 ` [PATCH v3] " Jörg Sommer
2026-08-24 13:11 ` [OE-core] " Marko, Peter
@ 2026-08-25 7:33 ` Mathieu Dubois-Briand
1 sibling, 0 replies; 16+ messages in thread
From: Mathieu Dubois-Briand @ 2026-08-25 7:33 UTC (permalink / raw)
To: joerg.sommer, openembedded-core, rs
On Mon Aug 24, 2026 at 2:48 PM CEST, Jörg Sommer via lists.openembedded.org wrote:
> From: Randolph Sapp <rs@ti.com>
>
> The split of bin and sbin became more artificial over time, and it is no
> longer clear why programmes goes into the one or the other directory; e.g.
> forever normal users have used sendmail in /usr/sbin, and fdisk and mkfs
> learned to operate on files to create images long ago.
>
> Because systemd drives this movement to have only /usr/bin and symlink /bin,
> /sbin and /usr/sbin to there, the usrmerge feature (started by systemd too)
> should be extended to include the binmerge. For a system with split bin/sbin
> `systemctl status` reports the system as tainted for *unmerged-bin.*
>
> Override most sbin variables to point to their bin equivalent when
> usermerge is enabled, with the exception being base_sbindir_native and
> sbindir_native. There is no guarantee the host machine is using this
> filesystem scheme.
>
> This check was added to systemd back in 2024 [2].
>
> [1] https://gitlab.archlinux.org/archlinux/packaging/packages/filesystem/-/blob/main/PKGBUILD
> [2] https://github.com/systemd/systemd/commit/844863c61e7b501097da84a1e4d1e4a6aa6d9f0d
>
> Signed-off-by: Randolph Sapp <rs@ti.com>
> Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
> ---
Hi Jörg,
I do note just one failure with this version, in two builds:
ERROR: lib32-inetutils-2.8-r0 do_install: Execution of '/srv/pokybuild/yocto-worker/qemux86-world-alt/build/build/tmp/work/x86-pokymllib32-linux/lib32-inetutils/2.8/temp/run.do_install.4024907' failed with exit code 1
...
| mv: '/srv/pokybuild/yocto-worker/qemux86-world-alt/build/build/tmp/work/x86-pokymllib32-linux/lib32-inetutils/2.8/image/usr/bin/ifconfig' and '/srv/pokybuild/yocto-worker/qemux86-world-alt/build/build/tmp/work/x86-pokymllib32-linux/lib32-inetutils/2.8/image/usr/bin/ifconfig' are the same file
| WARNING: exit code 1 from a shell command.
NOTE: recipe lib32-inetutils-2.8-r0: task do_install: Failed
https://autobuilder.yoctoproject.org/valkyrie/#/builders/17/builds/4324
https://autobuilder.yoctoproject.org/valkyrie/#/builders/25/builds/4479
Thanks,
Mathieu
--
Mathieu Dubois-Briand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2026-08-25 7:34 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-24 9:00 [PATCH v2] bitbake.conf: Extend distro feature usrmerge to merge bin+sbin Jörg Sommer
2026-07-25 7:34 ` [OE-core] " Mathieu Dubois-Briand
2026-08-22 7:56 ` Jörg Sommer
2026-08-22 12:16 ` Mathieu Dubois-Briand
2026-08-22 14:09 ` Jörg Sommer
2026-08-24 6:30 ` Mathieu Dubois-Briand
2026-08-24 9:53 ` Jörg Sommer
2026-08-24 10:02 ` Mathieu Dubois-Briand
2026-08-24 12:43 ` Jörg Sommer
2026-08-24 13:10 ` Mathieu Dubois-Briand
2026-08-24 12:48 ` [PATCH v3] " Jörg Sommer
2026-08-24 13:11 ` [OE-core] " Marko, Peter
2026-08-24 15:17 ` joerg.sommer
2026-08-24 16:18 ` Marko, Peter
2026-08-24 17:10 ` Richard Purdie
2026-08-25 7:33 ` Mathieu Dubois-Briand
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).