From: "Piotr Łobacz" <p.lobacz@welotec.com>
To: "Eilís 'pidge' Ní Fhlannagáin" <pidge@baylibre.com>,
"openembedded-core@lists.openembedded.org"
<openembedded-core@lists.openembedded.org>
Cc: "Qi.Chen@windriver.com" <Qi.Chen@windriver.com>
Subject: Re: [OE-core] [PATCH 1/3] useradd.bbclass: Fix order of postinst-useradd-*
Date: Fri, 23 Feb 2024 09:57:04 +0000 [thread overview]
Message-ID: <12386959.O9o76ZdvQC@latitude> (raw)
In-Reply-To: <0d86535f-8745-443f-d5ac-48fbc337db6a@windriver.com>
Dnia piątek, 23 lutego 2024 10:36:27 CET Chen Qi via lists.openembedded.org
pisze:
> 1. I can see what this patch mainly does is ensuring groups first, then
> user, then groupmems. But the current useradd_preinst, which is called
> by useradd_sysroot has already ensured this. Is that not working?
It is working but all postinst scripts are being called alphabetically which
in some corner cases is causing the failures...
> 2. You're using bb.warn as a method of outputting debugging information,
> which I don't think is appropriate.
> Regards,
> Qi
>
> On 2/22/24 22:53, 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%7C4b378de2bbf8442903fe08dc3452f110%7C25111a7f1d5a4c51a4ca7f8e440
> > 11b39%7C0%7C0%7C638442778043567095%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjA
> > wMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=NtJ
> > L1zoUYxbKRErJ9GBH6cx%2F2UMoSFAT53LLQ8XBzYk%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%7C4b378de2bbf8442903fe08dc3452f110%7C25111a7f1d5a4c51a4ca7f8e44
> > 011b39%7C0%7C0%7C638442778043575031%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLj
> > AwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=wY
> > jvmpaXqsu8GzyGrYJflJA8oNxniQXkDKZ8GxKRnXY%3D&reserved=0
> >
> > It ensures that groups, users and groupmems are all run in the correct
> > order.
> >
> > 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))
> > + 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
> >
> > # Tell the system to use the environment vars
> > UA_SYSROOT=1
> >
> > @@ -148,29 +169,26 @@ useradd_sysroot () {
> >
> > EXTRA_STAGING_FIXMES += "PSEUDO_SYSROOT PSEUDO_LOCALSTATEDIR LOGFIFO"
> >
> > python useradd_sysroot_sstate () {
> >
> > - scriptfile = None
> > - task = d.getVar("BB_CURRENTTASK")
> > - if task == "package_setscene":
> > - bb.build.exec_func("useradd_sysroot", d)
> > - elif task == "prepare_recipe_sysroot":
> > - # Used to update this recipe's own sysroot so the user/groups are
> > available to do_install -
> > - # If do_populate_sysroot is triggered and we write the file here,
> > there would be an overlapping - # files. See
> > usergrouptests.UserGroupTests.test_add_task_between_p_sysroot_and_package
> > - scriptfile =
> > d.expand("${RECIPE_SYSROOT}${bindir}/postinst-useradd-${PN}-recipedebug")
> > -
> > - bb.build.exec_func("useradd_sysroot", d)
> > - elif task == "populate_sysroot":
> > - # Used when installed in dependent task sysroots
> > - scriptfile =
> > d.expand("${SYSROOT_DESTDIR}${bindir}/postinst-useradd-${PN}") -
> > - if scriptfile:
> > - bb.utils.mkdirhier(os.path.dirname(scriptfile))
> > - with open(scriptfile, 'w') as script:
> > - script.write("#!/bin/sh -e\n")
> > - bb.data.emit_func("useradd_sysroot", script, d)
> > - script.write("useradd_sysroot\n")
> > - os.chmod(scriptfile, 0o755)
> > + for type, sort_prefix in [("group", "01"), ("user", "02"),
> > ("groupmems", "03")]: + scriptfile = None
> > + task = d.getVar("BB_CURRENTTASK")
> > + if task == "package_setscene":
> > + bb.build.exec_func(f"{type}add_sysroot", d)
> > + elif task == "prepare_recipe_sysroot":
> > + # Used to update this recipe's own sysroot so the user/groups
> > are available to do_install + scriptfile =
> > d.expand("${RECIPE_SYSROOT}${bindir}/"
> > f"postinst-useradd-{sort_prefix}{type}" "-${PN}") +
> > bb.build.exec_func(f"{type}add_sysroot", d)
> > + elif task == "populate_sysroot":
> > + # Used when installed in dependent task sysroots
> > + scriptfile = d.expand("${SYSROOT_DESTDIR}${bindir}/"
> > f"postinst-useradd-{sort_prefix}{type}" "-${PN}") +
> > + if scriptfile:
> > + bb.utils.mkdirhier(os.path.dirname(scriptfile))
> > + with open(scriptfile, 'w') as script:
> > + script.write("#!/bin/sh\n")
> > + bb.data.emit_func(f"{type}add_sysroot", script, d)
> > + script.write(f"{type}add_sysroot\n")
> > + os.chmod(scriptfile, 0o755)
> >
> > }
> >
> > do_prepare_recipe_sysroot[postfuncs] += "${SYSROOTFUNC}"
BR
Piotr
next prev parent reply other threads:[~2024-02-23 9:57 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-22 14:53 [PATCH 0/3] Useradd postinstall fixes and tests Eilís 'pidge' Ní Fhlannagáin
2024-02-22 14:53 ` [PATCH 1/3] useradd.bbclass: Fix order of postinst-useradd-* Eilís 'pidge' Ní Fhlannagáin
2024-02-22 15:02 ` [OE-core] " Richard Purdie
2024-02-22 15:05 ` Piotr Łobacz
2024-02-23 9:10 ` Jermain Horsman
2024-02-23 9:36 ` [OE-core] " ChenQi
2024-02-23 9:57 ` Piotr Łobacz [this message]
2024-02-22 14:53 ` [PATCH 2/3] selftest-users: Convoluted selftest for USERADD_DEPENDS Eilís 'pidge' Ní Fhlannagáin
2024-02-22 14:53 ` [PATCH 3/3] creategroup*: Remove coreutils-native as a DEPENDS Eilís 'pidge' Ní Fhlannagáin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=12386959.O9o76ZdvQC@latitude \
--to=p.lobacz@welotec.com \
--cc=Qi.Chen@windriver.com \
--cc=openembedded-core@lists.openembedded.org \
--cc=pidge@baylibre.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.