[OE-core] [PATCH 1/2] systemd: Correct and clean up user/group definitions

Peter Kjellerstedt peter.kjellerstedt at axis.com
Tue Jan 15 00:59:30 UTC 2019


> -----Original Message-----
> From: openembedded-core-bounces at lists.openembedded.org <openembedded-
> core-bounces at lists.openembedded.org> On Behalf Of Peter Kjellerstedt
> Sent: den 15 januari 2019 01:49
> To: openembedded-core at lists.openembedded.org
> Subject: [OE-core] [PATCH 1/2] systemd: Correct and clean up user/group
> definitions
> 
> This makes sure that packages are only added to USERADD_PACKAGES if
> they will create users/groups. This avoids the following error:
> 
>   ERROR: systemd_239.bb: meta/recipes-core/systemd/systemd_239.bb
>   inherits useradd but doesn't set USERADD_PARAM, GROUPADD_PARAM or
>   GROUPMEMS_PARAM for package systemd-journal-gateway
> 
> Normally this problem is not triggered even if the conditional code
> that
> expands in, e.g., USERADD_PARAM_${PN}-journal-gateway is empty because
> it is assigned with += and thus ends up as " ", which fools the check
> in
> useradd.bbclass.
> 
> However, if USERADDEXTENSION += "useradd-staticids" and
> INHERIT += "extrausers" are used, they cause the problem to occur. The
> reason for this is because when useradd-staticids is used, it rewrites
> USERADD_PARAM_${PN}-journal-gateway, which strips unnecessary
> whitespace
> and thus USERADD_PARAM_${PN}-journal-gateway becomes empty. And
> extrausers is needed, because otherwise the test in useradd.bbclass is
> triggered before useradd-staticids has rewritten the variables...
> 
> Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt at axis.com>
> ---
>  meta/recipes-core/systemd/systemd_239.bb | 22 +++++++++++++---------
>  1 file changed, 13 insertions(+), 9 deletions(-)
> 
> diff --git a/meta/recipes-core/systemd/systemd_239.bb b/meta/recipes-
> core/systemd/systemd_239.bb
> index be836ffa42..aa05af3beb 100644
> --- a/meta/recipes-core/systemd/systemd_239.bb
> +++ b/meta/recipes-core/systemd/systemd_239.bb
> @@ -343,17 +343,21 @@ SYSTEMD_PACKAGES =
> "${@bb.utils.contains('PACKAGECONFIG', 'binfmt', '${PN}-binfm
>  "
>  SYSTEMD_SERVICE_${PN}-binfmt = "systemd-binfmt.service"
> 
> -USERADD_PACKAGES = "${PN} ${PN}-extra-utils ${PN}-journal-gateway
> ${PN}-journal-upload ${PN}-journal-remote"
> -USERADD_PARAM_${PN}-journal-gateway +=
> "${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '--system -d / -M
> --shell /bin/nologin systemd-journal-gateway;', '', d)}"
> -USERADD_PARAM_${PN}-journal-remote +=
> "${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '--system -d / -M
> --shell /bin/nologin systemd-journal-remote;', '', d)}"
> -USERADD_PARAM_${PN}-journal-upload +=
> "${@bb.utils.contains('PACKAGECONFIG', 'journal-upload', '--system -d /
> -M --shell /bin/nologin systemd-journal-upload;', '', d)}"
> -USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG',
> 'timesyncd', '--system -d / -M --shell /bin/nologin systemd-timesync;',
> '', d)}"
> -USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG',
> 'networkd', '--system -d / -M --shell /bin/nologin systemd-network;',
> '', d)}"
> +USERADD_PACKAGES = "${PN} ${PN}-extra-utils \
> +                    ${@bb.utils.contains('PACKAGECONFIG',
> 'microhttpd', '${PN}-journal-gateway', '', d)} \
> +                    ${@bb.utils.contains('PACKAGECONFIG',
> 'microhttpd', '${PN}-journal-remote', '', d)} \
> +                    ${@bb.utils.contains('PACKAGECONFIG', 'journal-
> upload', '${PN}-journal-upload', '', d)} \
> +"
> +GROUPADD_PARAM_${PN} = "-r systemd-journal"
>  USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG',
> 'coredump', '--system -d / -M --shell /bin/nologin systemd-coredump;',
> '', d)}"
> -USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG',
> 'resolved', '--system -d / -M --shell /bin/nologin systemd-resolve;',
> '', d)}"
> +USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG',
> 'networkd', '--system -d / -M --shell /bin/nologin systemd-network;',
> '', d)}"
>  USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG',
> 'polkit', '--system --no-create-home --user-group --home-dir
> ${sysconfdir}/polkit-1 polkitd;', '', d)}"
> -GROUPADD_PARAM_${PN} = "-r systemd-journal"
> -USERADD_PARAM_${PN}-extra-utils += "--system -d / -M --shell
> /bin/nologin systemd-bus-proxy;"
> +USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG',
> 'resolved', '--system -d / -M --shell /bin/nologin systemd-resolve;',
> '', d)}"
> +USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG',
> 'timesyncd', '--system -d / -M --shell /bin/nologin systemd-timesync;',
> '', d)}"
> +USERADD_PARAM_${PN}-extra-utils = "--system -d / -M --shell
> /bin/nologin systemd-bus-proxy"
> +USERADD_PARAM_${PN}-journal-gateway = "--system -d / -M --shell
> /bin/nologin systemd-journal-gateway"
> +USERADD_PARAM_${PN}-journal-remote = "--system -d / -M --shell
> /bin/nologin systemd-journal-remote"
> +USERADD_PARAM_${PN}-journal-upload = "--system -d / -M --shell
> /bin/nologin systemd-journal-upload"
> 
>  FILES_${PN}-analyze = "${bindir}/systemd-analyze"
> 
> --
> 2.12.0

This also needs to be cherry-picked to Thud once it has been accepted for 
master. I assume it is too late for 2.6.1, but one can always hope...

//Peter



More information about the Openembedded-core mailing list