[OE-core] [PATCH] useradd-staticids: don't create username-group if gid is specified
Peter Kjellerstedt
peter.kjellerstedt at axis.com
Mon Sep 4 10:22:31 UTC 2017
> -----Original Message-----
> From: openembedded-core-bounces at lists.openembedded.org
> [mailto:openembedded-core-bounces at lists.openembedded.org] On Behalf Of
> André Draszik
> Sent: den 4 september 2017 11:37
> To: openembedded-core at lists.openembedded.org
> Subject: [OE-core] [PATCH] useradd-staticids: don't create username-
> group if gid is specified
>
> From: André Draszik <adraszik at tycoint.com>
>
> Adding distcc to an image, and having staticids enabled,
> doesn't work as it causes a a superfluous 'distcc' group
> being added using a conflicting GID, thus failing the
> build:
> | ERROR: distcc-3.2-r0 do_prepare_recipe_sysroot: distcc: groupadd command did not succeed.
>
> Compared to other recipes, the distcc recipe only
> specifies --gid for the primary group, and doesn't specify
> --no-user-group, but when --gid is given, it doesn't make
> sense to create a matching username-group in addition,
> even if --no-user-group was not specified, and 'useradd'
> actually complains if --gid and --user-group are given
> both.
>
> If only --gid is given, the current code in here
> effectively behaves as if --user-group was specified,
> taking the group-id of the username-group from the
> --gid parameter. This causes the error above, as we try
> to add a new group (distcc) with an existing group-id
> (nogroup).
>
> This is contrary to the comment in this file just above,
> contrary to what useradd can do, contrary to behaviour
> without the useradd-staticids bbclass, and non-intuitive.
>
> Change the code such that a username-group is only created
> if actually requested, of if a primary group using --gid
> was *not* specified.
>
> Signed-off-by: André Draszik <adraszik at tycoint.com>
> ---
> meta/classes/useradd-staticids.bbclass | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/meta/classes/useradd-staticids.bbclass b/meta/classes/useradd-staticids.bbclass
> index ce4ac62ab5..1b61a8bf9b 100644
> --- a/meta/classes/useradd-staticids.bbclass
> +++ b/meta/classes/useradd-staticids.bbclass
> @@ -102,7 +102,7 @@ def update_useradd_static_config(d):
> # So if the implicit username-group creation is on, then the implicit groupname (LOGIN)
> # is used, and we disable the user_group option.
> #
> - user_group = uaargs.user_group is None or uaargs.user_group is True
> + user_group = uaargs.gid is None or uaargs.user_group is True
Hmm, I believe that should be:
user_group = uaargs.gid is None and uaargs.user_group is None or uaargs.user_group is True
I.e., if neither --gid nor --user-group is specified, then it should
treat it as if --user-group was specified.
> uaargs.groupname = uaargs.LOGIN if user_group else uaargs.gid
> uaargs.groupid = field[3] or uaargs.gid or uaargs.groupname
>
> --
> 2.14.1
//Peter
More information about the Openembedded-core
mailing list