| Message ID | 5fff22004037096d27276023cf29c473c8c8ce85.1787575546.git.joerg.sommer@navimatix.de |
|---|---|
| State | Under Review |
| Headers | show |
| Series | [v3] bitbake.conf: Extend distro feature usrmerge to merge bin+sbin | expand |
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
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 >
> -----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
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
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