[OE-core] [PATCH] base.bbclass: add dependency on pseudo from do_prepare_recipe_sysroot

Peter Kjellerstedt peter.kjellerstedt at axis.com
Sat Aug 31 11:21:11 UTC 2019


> -----Original Message-----
> From: openembedded-core-bounces at lists.openembedded.org <openembedded-
> core-bounces at lists.openembedded.org> On Behalf Of Richard Purdie
> Sent: den 30 augusti 2019 18:50
> To: Mattias Hansson <Mattias.Hansson at axis.com>; openembedded-
> core at lists.openembedded.org
> Cc: Mattias Hansson <Mattias.Hansson at axis.com>
> Subject: Re: [OE-core] [PATCH] base.bbclass: add dependency on pseudo
> from do_prepare_recipe_sysroot
> 
> On Fri, 2019-08-16 at 11:13 +0200, Mattias Hansson wrote:
> > do_prepare_recipe_sysroot may perform groupadd, which requires pseudo.
> > However, do_prepare_recipe_sysroot does not depend on pseudo explicitly,
> > which sometimes causes a build error when building a recipe that adds
> > groups.
> >
> > This issue only occurs when executing do_prepare_recipe_sysroot for a
> > recipe that adds groups before finishing a task that depends on pseudo
> > for a recipe that doesn't add groups.
> >
> > Signed-off-by: Mattias Hansson <mattihn at axis.com>
> > ---
> >  meta/classes/base.bbclass | 1 +
> >  1 file changed, 1 insertion(+)
> >
> > diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
> > index 0c8a4b2862..0576b110c9 100644
> > --- a/meta/classes/base.bbclass
> > +++ b/meta/classes/base.bbclass
> > @@ -480,6 +480,7 @@ python () {
> >      # If we're building a target package we need to use fakeroot (pseudo)
> >      # in order to capture permissions, owners, groups and special files
> >      if not bb.data.inherits_class('native', d) and not bb.data.inherits_class('cross', d):
> > +        d.setVarFlag('do_prepare_recipe_sysroot', 'fakeroot', '1')
> >          d.setVarFlag('do_unpack', 'umask', '022')
> >          d.setVarFlag('do_configure', 'umask', '022')
> >          d.setVarFlag('do_compile', 'umask', '022')
> 
> This basically forces all target recipes prepare-recipe sysroot to run
> under pseudo "just in case", with all the performance overhead that
> entails. prepare_recipe_sysroot does a lot of file accesses so this is
> significant. It will also increase the pseudo database sizes
> everywhere.
> 
> We'll need to find a better way to handle this I'm afraid.
> 
> Cheers,
> 
> Richard

What do you prefer then, that we add this to useradd.bbclass instead?

python () {
    # This corresponds to similar code in base.bbclass, but is added here as it
    # is only needed for recipes that add users/groups.
    if not bb.data.inherits_class('native', d) and not bb.data.inherits_class('cross', d):
        d.setVarFlag('do_prepare_recipe_sysroot', 'fakeroot', '1')}
}

That way it should only affect recipes that manipulate users/groups.

//Peter



More information about the Openembedded-core mailing list