[OE-core] [PATCH] useradd-staticids.bbclass: Support recipes specifying static IDs
Mark Hatle
mark.hatle at windriver.com
Mon Mar 13 16:50:22 UTC 2017
On 3/13/17 11:11 AM, Peter Kjellerstedt wrote:
>> -----Original Message-----
>> From: Mark Hatle [mailto:mark.hatle at windriver.com]
>> Sent: den 13 mars 2017 14:56
>> To: Peter Kjellerstedt; openembedded-core at lists.openembedded.org
>> Subject: Re: [OE-core] [PATCH] useradd-staticids.bbclass: Support
>> recipes specifying static IDs
>>
>> On 3/10/17 11:27 PM, Peter Kjellerstedt wrote:
>>> If this bblcass is used and a recipe specifies a static ID for a
>>> user/group as part of the USERADD_PARAM_${PN} or GROUPADD_PARAM_${PN},
>>> the build would fail with and error like this if there was no
>>> corresponding ID in the passwd/group files specified via
>>> USERADD_UID_TABLES/USERADD_GID_TABLES:
>>
>> If the system is set in warning mode, it should warn if this is done
>> (but allow it).
>>
>> If the system is set to error mode, it should error.
>>
>> The useradd-staticids class is expecting the files (tables) to contain
>> all of the entries. This is specifically to avoid the situation where
>> a new recipe is introduced that adds a new user or group (dynamic or
>> static -- static because it could conflict with one of your existing
>> static entries.)
>
> AFAICT, even before my rewrite of much of this code in 3149319a and
> subsequent correction in adc0f830, if a static ID was specified as part
> of USERADD_PARAM_${PN} then no error would be issued. However, we can
> certainly change the code to always fail/warn if no ID is specified
> in any of the passwd/groups files. It should just be a matter of
> removing the if statements preceding the calls to handle_missing_id()
> below. (I will do some verification and send an updated patch tomorrow
> if this is the way the class should work.)
The intention was always that the uname/gname had to be specified in the useradd
tables in some way, or a warning/error would occur.
If the fields were blank in the tables, the system would use the versions
located in the recipe -- otherwise it would use the version in the table. (At
one point, but I don't think this was ever pushed in -- if a static ID was set
in the recipe, there was a verification that the static version in both the
recipe and the table files was the same -- otherwise it could indicate the
package may not be built properly.)
>> I agree the error message below looks wrong, do the existing warning/
>> error messages about it not being defined int he useradd tables still
>> occur with this patch?
>
> The error message below occurred because before my fix it forgot all
> the parameters that were specified in USERADD_PARAM_${PN} when it took
> the continue.
Ok, we need to fix that bug first then.
We should then verify the second issue and fix it in a subsequent commit. The
key being that of the user/group was not in the table we warn them (or error) --
preventing unexpected users from showing up.
The check both static IDs are the same could very well be a TODO item (that is
never done) -- but something that should be considered.
Thanks!
--Mark
>> --Mark
>>
>>> ERROR: meta-oe/recipes-support/postgresql/postgresql_9.4.11.bb:
>>> meta-oe/recipes-support/postgresql/postgresql_9.4.11.bb inherits
>>> useradd but doesn't set USERADD_PARAM, GROUPADD_PARAM or
>>> GROUPMEMS_PARAM for package postgresql
>>>
>>> Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt at axis.com>
>>> ---
>>> meta/classes/useradd-staticids.bbclass | 2 ++
>>> 1 file changed, 2 insertions(+)
>>>
>>> diff --git a/meta/classes/useradd-staticids.bbclass
>> b/meta/classes/useradd-staticids.bbclass
>>> index a65c3f69cb..9b194df490 100644
>>> --- a/meta/classes/useradd-staticids.bbclass
>>> +++ b/meta/classes/useradd-staticids.bbclass
>>> @@ -125,6 +125,7 @@ def update_useradd_static_config(d):
>>> if uaargs.LOGIN not in users:
>>> if not uaargs.uid or not uaargs.uid.isdigit() or not uaargs.gid:
>>> handle_missing_id(uaargs.LOGIN, 'user', pkg)
>>> + newparams.append(param)
>>> continue
>>>
>>> field = users[uaargs.LOGIN]
>>> @@ -260,6 +261,7 @@ def update_useradd_static_config(d):
>>> if gaargs.GROUP not in groups:
>>> if not gaargs.gid or not gaargs.gid.isdigit():
>>> handle_missing_id(gaargs.GROUP, 'group', pkg)
>>> + newparams.append(param)
>>> continue
>>>
>>> field = groups[gaargs.GROUP]
>>>
>
More information about the Openembedded-core
mailing list