> -----Original Message-----
> From: Louis Rannou <[email protected]>
> Sent: den 29 juni 2023 15:04
> To: Peter Kjellerstedt <[email protected]>; openembedded-
> [email protected]
> Cc: [email protected]
> Subject: Re: [OE-core] [PATCH 2/3] systemd: replace the sysusers.d basic
> configuration
> 
> Hello, please find an answer to the last comment
> 
> On 19/06/2023 14:10, Louis Rannou wrote:
> > Hello,
> >
> > On 16/06/2023 18:51, Peter Kjellerstedt wrote:
> >>> -----Original Message-----
> >>> From: [email protected]
> >>> <[email protected]> On Behalf Of Louis Rannou
> >>> Sent: den 15 juni 2023 13:44
> >>> To: [email protected]
> >>> Cc: Louis Rannou <[email protected]>; [email protected]
> >>> Subject: [OE-core] [PATCH 2/3] systemd: replace the sysusers.d basic
> >>> configuration
> >>>
> >>> The default sysusers basic.conf.in file sets the root home directory
> >>> to `/root`
> >>> and does not permit its configuration. Replace the file delivered by
> >>> systemd so
> >>> the root home directory matches the `ROOT_HOME` variable.
> >>>
> >>> Signed-off-by: Louis Rannou <[email protected]>
> >>> ---
> >>>   meta/recipes-core/systemd/systemd/basic.conf.in | 40
> >>> +++++++++++++++++++++++++
> >>>   meta/recipes-core/systemd/systemd_253.3.bb      |  5 ++++
> >>>   2 files changed, 45 insertions(+)
> >>>
> >>> diff --git a/meta/recipes-core/systemd/systemd/basic.conf.in
> >>> b/meta/recipes-core/systemd/systemd/basic.conf.in
> >>> new file mode 100644
> >>> index 0000000000..fac288f7fa
> >>> --- /dev/null
> >>> +++ b/meta/recipes-core/systemd/systemd/basic.conf.in
> >>> @@ -0,0 +1,40 @@
> >>> +#  This file is part of systemd.
> >>> +#
> >>> +#  systemd is free software; you can redistribute it and/or modify it
> >>> +#  under the terms of the GNU Lesser General Public License as
> >>> published by
> >>> +#  the Free Software Foundation; either version 2.1 of the License,
> or
> >>> +#  (at your option) any later version.
> >>> +
> >>> +# The superuser
> >>> +u root    0     "root" :ROOT_HOME:
> >>> +
> >>> +# The nobody user/group for NFS file systems
> >>> +g {{NOBODY_GROUP_NAME}} 65534       -            -
> >>> +u {{NOBODY_USER_NAME }} 65534:65534 "Nobody"     -
> >>> +
> >>> +# Administrator group: can *see* more than normal users
> >>> +g adm     {{ADM_GID    }}     -            -
> >>> +
> >>> +# Administrator group: can *do* more than normal users
> >>> +g wheel   {{WHEEL_GID  }}     -            -
> >>> +
> >>> +# Access to shared database of users on the system
> >>> +g utmp    {{UTMP_GID   }}     -            -
> >>> +
> >>> +# Physical and virtual hardware access groups
> >>> +g audio   {{AUDIO_GID  }}     -            -
> >>> +g cdrom   {{CDROM_GID  }}     -            -
> >>> +g dialout {{DIALOUT_GID}}     -            -
> >>> +g disk    {{DISK_GID   }}     -            -
> >>> +g input   {{INPUT_GID  }}     -            -
> >>> +g kmem    {{KMEM_GID   }}     -            -
> >>> +g kvm     {{KVM_GID    }}     -            -
> >>> +g lp      {{LP_GID     }}     -            -
> >>> +g render  {{RENDER_GID }}     -            -
> >>> +g sgx     {{SGX_GID    }}     -            -
> >>> +g tape    {{TAPE_GID   }}     -            -
> >>> +g tty     {{TTY_GID    }}     -            -
> >>> +g video   {{VIDEO_GID  }}     -            -
> >>> +
> >>> +# Default group for normal users
> >>> +g users   {{USERS_GID  }}     -            -
> >>> diff --git a/meta/recipes-core/systemd/systemd_253.3.bb
> >>> b/meta/recipes-core/systemd/systemd_253.3.bb
> >>> index 45dc6ab5bb..87fbf6f785 100644
> >>> --- a/meta/recipes-core/systemd/systemd_253.3.bb
> >>> +++ b/meta/recipes-core/systemd/systemd_253.3.bb
> >>> @@ -17,6 +17,7 @@ REQUIRED_DISTRO_FEATURES = "systemd"
> >>>   SRC_URI += " \
> >>>              file://touchscreen.rules \
> >>>              file://00-create-volatile.conf \
> >>> +           file://basic.conf.in \
> >>
> >> Instead of including a modified copy of the basic.conf.in file
> >> from systemd, include a patch that modifies the file that systemd
> >> provides. Otherwise this becomes a maintenance problem where it
> >> is easy to miss changes that upstream does to the file, and also
> >> hard to know what you have changed.
> >>
> > This came to my mind, but it seems to me it's a configuration and not a
> > patch. Some distribution as debian generate their own.
> >
> >>>              ${@bb.utils.contains('PACKAGECONFIG', 
> >>> 'polkit_hostnamed_fallback', 
> >>> 'file://org.freedesktop.hostname1_no_polkit.conf', '', d)} \
> >>>              ${@bb.utils.contains('PACKAGECONFIG', 
> >>> 'polkit_hostnamed_fallback', 'file://00-hostnamed-network-user.conf', '', 
> >>> d)} \
> >>>              file://init \
> >>> @@ -252,6 +253,10 @@ EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec \
> >>>   # The 60 seconds is watchdog's default vaule.
> >>>   WATCHDOG_TIMEOUT ??= "60"
> >>>
> >>> +do_configure:prepend() {
> >>> +  sed s@:ROOT_HOME:@${ROOT_HOME}@g ${WORKDIR}/basic.conf.in > 
> >>> ${S}/sysusers.d/basic.conf.in
> >>
> >> Please indent shell code using tabs, and change the command to:
> >>
> >>     sed -i s@:ROOT_HOME:@${ROOT_HOME}@g ${S}/sysusers.d/basic.conf.in
> >>
> >> once you have added the patch as per above.
> 
> That's incorrect as the source and destination are different. Perhaps I
> should call the initial file basic.conf.in.in if it's more clear.

Note the "once you have added the patch" part. I.e., once you have added a 
patch to modify the basic.conf.in that systemd provides, the above command 
should work. However, depending on whether systemd´s build system actually 
uses the path provided in the basic.conf.in file (which I doubt), a better 
way would be do run the sed above on the installed basic.conf file. I.e., 
use a patch to modify basic.conf.in to contain ":ROOT_HOME:" instead of 
what path systemd upstream provides, and then use sed in do_install:append 
to replace ":ROOT_HOME:" with "${ROOT_HOME}" in the installed basic.conf 
file.

> 
> >>
> >> However, I am wondering if this has to be done during do_configure()?
> >> It might become confusing if you ever `devtool modify systemd` (which
> >> we do). Wouldn't it be better to do it on the installed file in the
> >> do_install() below instead?
> This file is used at compilation to produce the basic.conf file. So it's
> needed after the configuration. What would go wrong with devtool ?

The change that sed makes would be seen as a change to the sources checked 
out by devtool, and thus you risk someone accidentally committing it when 
they make other changes to systemd using devtool modify.

> 
> >>
> >>> +}
> >>> +
> >>>   do_install() {
> >>>       meson_do_install
> >>>       install -d ${D}/${base_sbindir}
> >>>
> 
> Louis

//Peter

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

Reply via email to