[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