[OE-core] [PATCH 1/1] useradd.bbclass: use locking of bb.utils to avoid lock race issue of useradd/groupadd

Randy MacLeod randy.macleod at windriver.com
Mon Jul 23 03:24:26 UTC 2012


On 12-07-22 09:56 PM, Randy MacLeod wrote:
> On 12-07-22 08:10 AM, Huang, j (Jackie) wrote:
>>
>>
>>> On Sun, 2012-07-22 at 14:53 +0800, jackie.huang at windriver.com wrote:
>>>> From: Jackie Huang <jackie.huang at windriver.com>
>>>>
>>>> A race condition can occur when adding users and groups to the
>>>> passwd and group files, in [YOCTO #1794], 10 times retry added
>>>> but it is not fixed completely.
>>>>
>>>> This fix re-writes the useradd_preinst and useradd_sysroot with
>>>> python and use locking of bb.utils to lock the passwd and group
>>>> files before executing useradd/groupadd commands to avoid the
>>>> lock race themselves.
>>>>
>>>> [YOCTO #2779]
>>>>
>>>> Signed-off-by: Jackie Huang <jackie.huang at windriver.com>
>>>> ---
>>>>   meta/classes/useradd.bbclass |  284
>>>> ++++++++++++++++++------------------------
>>>>   1 files changed, 124 insertions(+), 160 deletions(-)
>>>
>>> Please resend this with the whitespace issues resolved. Its near
>>> impossible to review as it stands :(
>>
>> Re-sent, sorry about that.
>
> Hi Jackie,
>
> I don't see that your new version sent at 8:01 is any better
> but I could be wrong...
>
> Robert,
> Please take a look and help Jackie with formatting
> and perhaps small single purpose commits as needed -
> i.e. separate the whitespace changes from the functional changes.

Summary:
    Jackie did the right thing; I need to read more carefully. ;-)

// Randy

Details:

I've looked at the two emails more closely now and see the
white space problem lines and saw that Jackie did fix those up
in the new patch. Specifically:

-USERADDSETSCENEDEPS = "${MLPREFIX}base-passwd:do_populate_sy
+USERADDSETSCENEDEPS = "base-passwd:do_populate_sysroot_setsc
  USERADDSETSCENEDEPS_virtclass-cross = ""
  USERADDSETSCENEDEPS_virtclass-native = ""
  USERADDSETSCENEDEPS_virtclass-nativesdk = ""
@@ -154,61 +118,61 @@ do_package_setscene[depends] = "${USERA

  # Recipe parse-time sanity checks
  def update_useradd_after_parse(d):
-    useradd_packages = d.getVar('USERADD_PACKAGES', True)
+       useradd_packages = d.getVar('USERADD_PACKAGES', True)

-    if not useradd_packages:
-        raise bb.build.FuncFailed, "%s inherits useradd but
+       if not useradd_packages:
+               raise bb.build.FuncFailed, "%s inherits usera

-    for pkg in useradd_packages.split():
-        if not d.getVar('USERADD_PARAM_%s' % pkg, True) and
-            raise bb.build.FuncFailed, "%s inherits useradd
+       for pkg in useradd_packages.split():
+               if not d.getVar('USERADD_PARAM_%s' % pkg, Tru
+                       raise bb.build.FuncFailed, "%s inheri

  python __anonymous() {
-    update_useradd_after_parse(d)
+       update_useradd_after_parse(d)
  }

Sorry for the noise.

// Randy



>
> This problem is happening frequently so I'd like to get this
> worked out upstream.
>
> Thanks,
> // Randy
>
>
>>
>> Thanks,
>> Jackie
>>
>>>
>>> Cheers,
>>>
>>> Richard
>>
>>
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core at lists.openembedded.org
>> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>>
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core at lists.openembedded.org
>> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>>
>
>


-- 
# Randy MacLeod. MTS, Linux, Wind River
Direct: 613.963.1350




More information about the Openembedded-core mailing list