Randolph Sapp via lists.openembedded.org schrieb am Mi 08. Apr, 14:50 (-0500):
> From: Randolph Sapp <[email protected]>
> 
> Systemd prefers both /bin and /sbin to link to /usr/bin. If this is not
> the case it reports that the system is tainted in systemctl status.
> 
> Add a link from /usr/sbin to /usr/bin to prevent anything from being
> excluded from the merged bin directory. This mimics the current merged
> bin directory structure of Arch Linux [1].
> 
> Update the systemd recipe to prevent creating a duplicate link when
> sbinmerge is enabled.
> 
> 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 <[email protected]>

How about including this commit in a updated form, now?

I'm using it since April, I found and fixed some issues, but in the end it
works (with binmerge enabled). So I would give my

Signed-off-by: Jörg Sommer <[email protected]>

About the question if binmerge/usrmerge should be part of the systemd
feature or be a stand-alone feature, I'm undecided. But I think bin+usrmerge
have their use case without systemd.

> ---
> 
> I feel like this is overloading the "usrmerge" distro feature somewhat. On the
> other hand, this parameter was added for systemd support, and systemd 
> considers
> all of this to result in an unmerged-bin warning. I figure it's kind of fine.
> 
> Open to opinions here, as we could also just add a "sbinmerge" distro feature.
> Then again, what would be the expected behavior when usrmerge is disabled? 
> Would
> /usr/sbin just point to /usr/bin and /sbin to /bin then?
> 
>  meta/classes-recipe/populate_sdk_base.bbclass | 5 +++--
>  meta/conf/bitbake.conf                        | 2 +-
>  meta/recipes-core/systemd/systemd_259.5.bb    | 8 ++++++--
>  3 files changed, 10 insertions(+), 5 deletions(-)
> 
> diff --git a/meta/classes-recipe/populate_sdk_base.bbclass 
> b/meta/classes-recipe/populate_sdk_base.bbclass
> index b427ff2761..15f393a3bb 100644
> --- a/meta/classes-recipe/populate_sdk_base.bbclass
> +++ b/meta/classes-recipe/populate_sdk_base.bbclass
> @@ -186,9 +186,10 @@ POPULATE_SDK_POST_HOST_COMMAND:append:task-populate-sdk 
> = " write_host_sdk_manif
>  # Prepare the root links to point to the /usr counterparts.
>  create_merged_usr_symlinks() {
>      root="$1"
> -    install -d $root${base_bindir} $root${base_sbindir} $root${base_libdir}
> +    install -d $root${base_bindir} $root${base_libdir}

Is this right in case of !binmerge? Install is not picky about creating the
same directory two times:

% install -d /tmp/foo /tmp/foo; echo $?
0

>      ln -rs $root${base_bindir} $root/bin
> -    ln -rs $root${base_sbindir} $root/sbin
> +    ln -rs $root${base_bindir} $root/sbin

In case of binmerge both lines are equivalent. But in case of !binmerge,
this should be wrong.

> +    ln -rs $root${base_bindir} $root/usr/sbin

This also.

>      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 84450386d9..29301534d2 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', 
> '${root_prefix}/bin', '${root_prefix}/sbin', d)}"
>  export base_libdir = "${root_prefix}/${baselib}"
>  export nonarch_base_libdir = "${root_prefix}/lib"
>  
> diff --git a/meta/recipes-core/systemd/systemd_259.5.bb 
> b/meta/recipes-core/systemd/systemd_259.5.bb
> index c3cb605b4d..d84e38d7cd 100644
> --- a/meta/recipes-core/systemd/systemd_259.5.bb
> +++ b/meta/recipes-core/systemd/systemd_259.5.bb
> @@ -69,6 +69,7 @@ PACKAGECONFIG ??= " \
>      quotacheck \
>      randomseed \
>      resolved \
> +    sbinmerge \

I think upstream names it binmerge after the target, as with usrmerge.

>      serial-getty-generator \
>      set-time-epoch \
>      sysusers \
> @@ -339,8 +340,11 @@ 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 existing udev rules if sbinmerge is not enabled
> +     if ${@bb.utils.contains('PACKAGECONFIG', 'sbinmerge', 'false', 'true', 
> d)}
> +     then
> +             ln -s ${base_bindir}/udevadm ${D}${base_sbindir}/udevadm
> +     fi
>  
>       # 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: smime.p7s
Description: S/MIME cryptographic signature

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#238162): 
https://lists.openembedded.org/g/openembedded-core/message/238162
Mute This Topic: https://lists.openembedded.org/mt/118731491/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to