Re: [OE-core] [PATCH 1/3] useradd.bbclass: Fix order of postinst-useradd-*

Piotr Łobacz
2024-02-22T15:05:28Z

Dnia czwartek, 22 lutego 2024 16:02:47 CET Richard Purdie pisze:
> On Thu, 2024-02-22 at 14:53 +0000, Eilís 'pidge' Ní Fhlannagáin wrote:
> > From: Piotr Łobacz <p.lobacz@welotec.com>
> >
> > postinst-useradd-* haven't been running in order of dependency.
> >
> > This patch is reworked from Piotr Łobacz's patch and fixes:
> >
> > https://eur04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugzilla
> > .yoctoproject.org%2Fshow_bug.cgi%3Fid%3D15084&data=05%7C02%7Cp.lobacz%40we
> > lotec.com%7C71e58402c2f2409f56bb08dc33b755b3%7C25111a7f1d5a4c51a4ca7f8e440
> > 11b39%7C0%7C0%7C638442109731703010%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjA
> > wMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=%2B
> > U2cg6Esme3QhxIwjKW417DMncM%2FwWjEChZwrBNullA%3D&reserved=0
> > https://eur04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugzill
> > a.yoctoproject.org%2Fshow_bug.cgi%3Fid%3D13904&data=05%7C02%7Cp.lobacz%40w
> > elotec.com%7C71e58402c2f2409f56bb08dc33b755b3%7C25111a7f1d5a4c51a4ca7f8e44
> > 011b39%7C0%7C0%7C638442109731710513%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLj
> > AwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=s3
> > %2B9l0f1cr7JKjcg9R9arzZHAnBPOzOtecWUGj1vBF4%3D&reserved=0
> >
> > It ensures that groups, users and groupmems are all run in the correct
> > order.
> I think this needs a little bit more explanation in the commit message.
> What is the issue, why do we need to solve it like this etc.

Acctualy, the issue was discovered by me and the patch given by me was created
by Jan so I think he can put his comments on that. That would be the best I
think.

> > Signed-off-by: Eilís 'pidge' Ní Fhlannagáin <pidge@baylibre.com>
> > ---
> > meta/classes-global/staging.bbclass | 7 +--
> > meta/classes/useradd.bbclass | 72 ++++++++++++++++++-----------
> > 2 files changed, 49 insertions(+), 30 deletions(-)
> >
> > diff --git a/meta/classes-global/staging.bbclass
> > b/meta/classes-global/staging.bbclass index ab3e1d71b5..6c21510377 100644
> > --- a/meta/classes-global/staging.bbclass
> > +++ b/meta/classes-global/staging.bbclass
> > @@ -245,8 +245,9 @@ def staging_populate_sysroot_dir(targetsysroot,
> > nativesysroot, native, d): continue
> >
> > staging_processfixme(fixme, targetdir, targetsysroot, nativesysroot,
> > d) - for p in postinsts:
> > - bb.note("Running postinst {}, output:\n{}".format(p,
> > subprocess.check_output(p, shell=True, stderr=subprocess.STDOUT)))
> >
> >
> > + bb.warn(sorted(postinsts))
>
> Come on, please! :)
>
> > + for p in sorted(postinsts):
> > + bb.warn("Running postinst {}, output:\n{}".format(p,
> > subprocess.check_output(p, shell=True, stderr=subprocess.STDOUT)))
> > #
> > # Manifests here are complicated. The main sysroot area has the unpacked
> > sstate @@ -629,7 +630,7 @@ python extend_recipe_sysroot() {
> > for f in fixme:
> > staging_processfixme(fixme[f], f, recipesysroot,
> > recipesysrootnative, d)
> > - for p in postinsts:
> > + for p in sorted(postinsts):
> > bb.note("Running postinst {}, output:\n{}".format(p,
> > subprocess.check_output(p, shell=True, stderr=subprocess.STDOUT)))
> > for dep in manifests:
> > diff --git a/meta/classes/useradd.bbclass b/meta/classes/useradd.bbclass
> > index a58f8287c9..924eeadf9c 100644
> > --- a/meta/classes/useradd.bbclass
> > +++ b/meta/classes/useradd.bbclass
> > @@ -103,6 +103,18 @@ fi
> > }
> >
> > useradd_sysroot () {
> > + user_group_groupmems_add_sysroot user
> > +}
> > +
> > +groupadd_sysroot () {
> > + user_group_groupmems_add_sysroot group
> > +}
> > +
> > +groupmemsadd_sysroot () {
> > + user_group_groupmems_add_sysroot groupmems
> > +}
> > +
> > +user_group_groupmems_add_sysroot () {
> > # Pseudo may (do_prepare_recipe_sysroot) or may not
> > (do_populate_sysroot_setscene) be running # at this point so we're
> > explicit about the environment so pseudo can load if # not already
> > present.
> > @@ -130,10 +142,19 @@ useradd_sysroot () {
> > exit 0
> > fi
> >
> > - # Add groups and users defined for all recipe packages
> > - GROUPADD_PARAM="${@get_all_cmd_params(d, 'groupadd')}"
> > - USERADD_PARAM="${@get_all_cmd_params(d, 'useradd')}"
> > - GROUPMEMS_PARAM="${@get_all_cmd_params(d, 'groupmems')}"
> > + # Add groups and users defined for all recipe packages
> > + if test "x$1" = "xgroup"; then
> > + GROUPADD_PARAM="${@get_all_cmd_params(d, 'groupadd')}"
> > + fi
> > + if test "x$1" = "xuser"; then
> > + USERADD_PARAM="${@get_all_cmd_params(d, 'useradd')}"
> > + fi
> > + if test "x$1" = "xgroupmems"; then
> > + GROUPMEMS_PARAM="${@get_all_cmd_params(d,
'groupmems')}"
> > + fi
> > + if test "x$1" = "x"; then
> > + bbwarn "missing type of passwd db action"
> > + fi
>
> whitespace...
>
>
>
> Cheers,
>
> Richard

BR
Piotr