* [PATCH 0/3] Useradd postinstall fixes and tests
@ 2024-02-22 14:53 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
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Eilís 'pidge' Ní Fhlannagáin @ 2024-02-22 14:53 UTC (permalink / raw)
To: openembedded-core
Cc: Piotr Łobacz,
Eilís 'pidge' Ní Fhlannagáin
These commits fix #13904 and #15084, adds a test for it and adds a minor fix for
the creategroup tests
Eilís 'pidge' Ní Fhlannagáin (2):
selftest-users: Convoluted selftest for USERADD_DEPENDS
creategroup*: Remove coreutils-native as a DEPENDS
Piotr Łobacz (1):
useradd.bbclass: Fix order of postinst-useradd-*
.../selftest-users/acreategroup.bb | 32 +++++++++
.../selftest-users/bcreategroup.bb | 37 ++++++++++
.../selftest-users/ccreategroup.bb | 34 +++++++++
.../selftest-users/creategroup1.bb | 2 -
.../selftest-users/creategroup2.bb | 1 -
.../selftest-users/dcreategroup.bb | 33 +++++++++
meta/classes-global/staging.bbclass | 7 +-
meta/classes/useradd.bbclass | 72 ++++++++++++-------
.../lib/oeqa/selftest/cases/usergrouptests.py | 4 ++
9 files changed, 189 insertions(+), 33 deletions(-)
create mode 100644 meta-selftest/recipes-test/selftest-users/acreategroup.bb
create mode 100644 meta-selftest/recipes-test/selftest-users/bcreategroup.bb
create mode 100644 meta-selftest/recipes-test/selftest-users/ccreategroup.bb
create mode 100644 meta-selftest/recipes-test/selftest-users/dcreategroup.bb
--
2.34.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/3] useradd.bbclass: Fix order of postinst-useradd-*
2024-02-22 14:53 [PATCH 0/3] Useradd postinstall fixes and tests Eilís 'pidge' Ní Fhlannagáin
@ 2024-02-22 14:53 ` Eilís 'pidge' Ní Fhlannagáin
2024-02-22 15:02 ` [OE-core] " Richard Purdie
` (2 more replies)
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
2 siblings, 3 replies; 9+ messages in thread
From: Eilís 'pidge' Ní Fhlannagáin @ 2024-02-22 14:53 UTC (permalink / raw)
To: openembedded-core
Cc: Piotr Łobacz,
Eilís 'pidge' Ní Fhlannagáin
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://bugzilla.yoctoproject.org/show_bug.cgi?id=15084
https://bugzilla.yoctoproject.org/show_bug.cgi?id=13904
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}"
--
2.34.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/3] selftest-users: Convoluted selftest for USERADD_DEPENDS
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 14:53 ` 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
2 siblings, 0 replies; 9+ messages in thread
From: Eilís 'pidge' Ní Fhlannagáin @ 2024-02-22 14:53 UTC (permalink / raw)
To: openembedded-core
Cc: Piotr Łobacz,
Eilís 'pidge' Ní Fhlannagáin
This adds a test for 13904's fix by creating a convoluted set of recipes
with USERADD_DEPENDS in non-alpha order.
Signed-off-by: Eilís 'pidge' Ní Fhlannagáin <pidge@baylibre.com>
---
.../selftest-users/acreategroup.bb | 32 ++++++++++++++++
.../selftest-users/bcreategroup.bb | 37 +++++++++++++++++++
.../selftest-users/ccreategroup.bb | 34 +++++++++++++++++
.../selftest-users/dcreategroup.bb | 33 +++++++++++++++++
.../lib/oeqa/selftest/cases/usergrouptests.py | 4 ++
5 files changed, 140 insertions(+)
create mode 100644 meta-selftest/recipes-test/selftest-users/acreategroup.bb
create mode 100644 meta-selftest/recipes-test/selftest-users/bcreategroup.bb
create mode 100644 meta-selftest/recipes-test/selftest-users/ccreategroup.bb
create mode 100644 meta-selftest/recipes-test/selftest-users/dcreategroup.bb
diff --git a/meta-selftest/recipes-test/selftest-users/acreategroup.bb b/meta-selftest/recipes-test/selftest-users/acreategroup.bb
new file mode 100644
index 0000000000..66ed5695a2
--- /dev/null
+++ b/meta-selftest/recipes-test/selftest-users/acreategroup.bb
@@ -0,0 +1,32 @@
+SUMMARY = "creategroup_a"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+LICENSE = "MIT"
+
+S = "${WORKDIR}"
+
+EXCLUDE_FROM_WORLD="1"
+
+inherit useradd allarch
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "-u 5560 --gid a_group a_user"
+GROUPADD_PARAM:${PN} = "-r a_group"
+
+TESTDIR = "${D}${sysconfdir}/creategroup"
+
+do_install() {
+ install -d ${TESTDIR}
+ install -d ${TESTDIR}/dir
+ touch ${TESTDIR}/file
+ ln -s ./file ${TESTDIR}/symlink
+ install -d ${TESTDIR}/fifotest
+ mkfifo ${TESTDIR}/fifotest/fifo
+
+ chown a_user:a_group ${TESTDIR}/file
+ chown -R a_user:a_group ${TESTDIR}/dir
+ chown -h a_user:a_group ${TESTDIR}/symlink
+ chown -R a_user:a_group ${TESTDIR}/fifotest
+}
+
+FILES:${PN} = "${sysconfdir}/creategroup/*"
diff --git a/meta-selftest/recipes-test/selftest-users/bcreategroup.bb b/meta-selftest/recipes-test/selftest-users/bcreategroup.bb
new file mode 100644
index 0000000000..c4844dd0da
--- /dev/null
+++ b/meta-selftest/recipes-test/selftest-users/bcreategroup.bb
@@ -0,0 +1,37 @@
+SUMMARY = "creategroup_b"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+LICENSE = "MIT"
+
+# This recipe requires a and c. C requires A. Reverse alpha.
+
+USERADD_DEPENDS = "acreategroup ccreategroup"
+
+S = "${WORKDIR}"
+
+EXCLUDE_FROM_WORLD="1"
+
+inherit useradd allarch
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "-u 5561 -g b_group -G a_group,c_group b_user "
+GROUPADD_PARAM:${PN} = "-r b_group"
+
+TESTDIR = "${D}${sysconfdir}/creategroup"
+
+do_install() {
+ install -d ${TESTDIR}
+ install -d ${TESTDIR}/dir
+ touch ${TESTDIR}/file
+ ln -s ./file ${TESTDIR}/symlink
+ install -d ${TESTDIR}/fifotest
+ mkfifo ${TESTDIR}/fifotest/fifo
+
+ chown a_user:a_group ${TESTDIR}/file
+ chown -R c_user:c_group ${TESTDIR}/dir
+ chown -h a_user:a_group ${TESTDIR}/symlink
+ chown -R b_user:b_group ${TESTDIR}/fifotest
+}
+
+FILES:${PN} = "${sysconfdir}/creategroup/*"
+
diff --git a/meta-selftest/recipes-test/selftest-users/ccreategroup.bb b/meta-selftest/recipes-test/selftest-users/ccreategroup.bb
new file mode 100644
index 0000000000..021b1ebbf7
--- /dev/null
+++ b/meta-selftest/recipes-test/selftest-users/ccreategroup.bb
@@ -0,0 +1,34 @@
+SUMMARY = "creategroup_c"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+LICENSE = "MIT"
+
+USERADD_DEPENDS = "acreategroup"
+
+S = "${WORKDIR}"
+
+EXCLUDE_FROM_WORLD="1"
+
+inherit useradd allarch
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "-u 5563 --gid c_group -G a_group c_user"
+GROUPADD_PARAM:${PN} = "-r c_group"
+
+TESTDIR = "${D}${sysconfdir}/creategroup"
+
+do_install() {
+ install -d ${TESTDIR}
+ install -d ${TESTDIR}/dir
+ touch ${TESTDIR}/file
+ ln -s ./file ${TESTDIR}/symlink
+ install -d ${TESTDIR}/fifotest
+ mkfifo ${TESTDIR}/fifotest/fifo
+
+ chown c_user:c_group ${TESTDIR}/file
+ chown -R c_user:c_group ${TESTDIR}/dir
+ chown -h c_user:c_group ${TESTDIR}/symlink
+ chown -R c_user:c_group ${TESTDIR}/fifotest
+}
+
+FILES:${PN} = "${sysconfdir}/creategroup/*"
diff --git a/meta-selftest/recipes-test/selftest-users/dcreategroup.bb b/meta-selftest/recipes-test/selftest-users/dcreategroup.bb
new file mode 100644
index 0000000000..b96ca92a16
--- /dev/null
+++ b/meta-selftest/recipes-test/selftest-users/dcreategroup.bb
@@ -0,0 +1,33 @@
+SUMMARY = "creategroup_d"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+LICENSE = "MIT"
+
+USERADD_DEPENDS = "bcreategroup"
+
+S = "${WORKDIR}"
+
+EXCLUDE_FROM_WORLD="1"
+
+inherit useradd allarch
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "-u 5564 -g d_group -G b_group d_user "
+GROUPADD_PARAM:${PN} = "-r d_group"
+
+TESTDIR = "${D}${sysconfdir}/creategroup"
+
+do_install() {
+ install -d ${TESTDIR}
+ install -d ${TESTDIR}/dir
+ touch ${TESTDIR}/file
+ ln -s ./file ${TESTDIR}/symlink
+ install -d ${TESTDIR}/fifotest
+ mkfifo ${TESTDIR}/fifotest/fifo
+
+ chown d_user:d_group ${TESTDIR}/file
+ chown -R d_user:b_group ${TESTDIR}/dir
+ chown -h d_user:d_group ${TESTDIR}/symlink
+ chown -R d_user:b_group ${TESTDIR}/fifotest
+}
+
diff --git a/meta/lib/oeqa/selftest/cases/usergrouptests.py b/meta/lib/oeqa/selftest/cases/usergrouptests.py
index a331ca9f2c..3c59b0f290 100644
--- a/meta/lib/oeqa/selftest/cases/usergrouptests.py
+++ b/meta/lib/oeqa/selftest/cases/usergrouptests.py
@@ -22,6 +22,10 @@ class UserGroupTests(OESelftestTestCase):
# Test for YOCTO #14961
self.assertTrue(bitbake('useraddbadtask -C fetch'))
+ def test_postinst_order(self):
+ self.logger.info("Building dcreategroup")
+ self.assertTrue(bitbake(' dcreategroup'))
+
def test_static_useradd_from_dynamic(self):
metaselftestpath = get_test_layer()
self.logger.info("Building core-image-minimal to generate passwd/group file")
--
2.34.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/3] creategroup*: Remove coreutils-native as a DEPENDS
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 14:53 ` [PATCH 2/3] selftest-users: Convoluted selftest for USERADD_DEPENDS Eilís 'pidge' Ní Fhlannagáin
@ 2024-02-22 14:53 ` Eilís 'pidge' Ní Fhlannagáin
2 siblings, 0 replies; 9+ messages in thread
From: Eilís 'pidge' Ní Fhlannagáin @ 2024-02-22 14:53 UTC (permalink / raw)
To: openembedded-core
Cc: Piotr Łobacz,
Eilís 'pidge' Ní Fhlannagáin
There isn't any reason for coreutils-native as a DEPENDS, so
remove it to speed up tests.
Signed-off-by: Eilís 'pidge' Ní Fhlannagáin <pidge@baylibre.com>
---
meta-selftest/recipes-test/selftest-users/creategroup1.bb | 2 --
meta-selftest/recipes-test/selftest-users/creategroup2.bb | 1 -
2 files changed, 3 deletions(-)
diff --git a/meta-selftest/recipes-test/selftest-users/creategroup1.bb b/meta-selftest/recipes-test/selftest-users/creategroup1.bb
index ebbbfaa83d..afd23ed1ee 100644
--- a/meta-selftest/recipes-test/selftest-users/creategroup1.bb
+++ b/meta-selftest/recipes-test/selftest-users/creategroup1.bb
@@ -3,8 +3,6 @@ LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda
LICENSE = "MIT"
-DEPENDS = "coreutils-native"
-
S = "${WORKDIR}"
inherit useradd allarch
diff --git a/meta-selftest/recipes-test/selftest-users/creategroup2.bb b/meta-selftest/recipes-test/selftest-users/creategroup2.bb
index ef697f09b4..f776f43aed 100644
--- a/meta-selftest/recipes-test/selftest-users/creategroup2.bb
+++ b/meta-selftest/recipes-test/selftest-users/creategroup2.bb
@@ -3,7 +3,6 @@ LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda
LICENSE = "MIT"
-DEPENDS = "coreutils-native"
USERADD_DEPENDS = "creategroup1"
S = "${WORKDIR}"
--
2.34.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [OE-core] [PATCH 1/3] useradd.bbclass: Fix order of postinst-useradd-*
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 ` Richard Purdie
2024-02-22 15:05 ` Piotr Łobacz
2024-02-23 9:10 ` Jermain Horsman
2024-02-23 9:36 ` [OE-core] " ChenQi
2 siblings, 1 reply; 9+ messages in thread
From: Richard Purdie @ 2024-02-22 15:02 UTC (permalink / raw)
To: Eilís 'pidge' Ní Fhlannagáin,
openembedded-core
Cc: Piotr Łobacz
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://bugzilla.yoctoproject.org/show_bug.cgi?id=15084
> https://bugzilla.yoctoproject.org/show_bug.cgi?id=13904
>
> 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.
>
> 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
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [OE-core] [PATCH 1/3] useradd.bbclass: Fix order of postinst-useradd-*
2024-02-22 15:02 ` [OE-core] " Richard Purdie
@ 2024-02-22 15:05 ` Piotr Łobacz
0 siblings, 0 replies; 9+ messages in thread
From: Piotr Łobacz @ 2024-02-22 15:05 UTC (permalink / raw)
To: Eilís 'pidge' Ní Fhlannagáin,
openembedded-core@lists.openembedded.org, Richard Purdie,
Jan Górski
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
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] useradd.bbclass: Fix order of postinst-useradd-*
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-23 9:10 ` Jermain Horsman
2024-02-23 9:36 ` [OE-core] " ChenQi
2 siblings, 0 replies; 9+ messages in thread
From: Jermain Horsman @ 2024-02-23 9:10 UTC (permalink / raw)
To: openembedded-core
Although I did notice the rest of the file uses this syntax,
and I do not believe there are any guidelines specific to this (that I am aware of),
I did want to comment on this.
> + if test "x$1" = "xgroup"; then
> + if test "x$1" = "xuser"; then
> + if test "x$1" = "xgroupmems"; then
As these are quotes variables the added 'x' doesn't really add anything here.
> + if test "x$1" = "x"; then
Same here, but this could just test for a zero length variable instead using 'test -z "$1"'.
Sincerely,
Jermain Horsman
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [OE-core] [PATCH 1/3] useradd.bbclass: Fix order of postinst-useradd-*
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-23 9:10 ` Jermain Horsman
@ 2024-02-23 9:36 ` ChenQi
2024-02-23 9:57 ` Piotr Łobacz
2 siblings, 1 reply; 9+ messages in thread
From: ChenQi @ 2024-02-23 9:36 UTC (permalink / raw)
To: Eilís 'pidge' Ní Fhlannagáin,
openembedded-core
Cc: Piotr Łobacz
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?
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://bugzilla.yoctoproject.org/show_bug.cgi?id=15084
> https://bugzilla.yoctoproject.org/show_bug.cgi?id=13904
>
> 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}"
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#196031): https://lists.openembedded.org/g/openembedded-core/message/196031
> Mute This Topic: https://lists.openembedded.org/mt/104509398/7304865
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [Qi.Chen@eng.windriver.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [OE-core] [PATCH 1/3] useradd.bbclass: Fix order of postinst-useradd-*
2024-02-23 9:36 ` [OE-core] " ChenQi
@ 2024-02-23 9:57 ` Piotr Łobacz
0 siblings, 0 replies; 9+ messages in thread
From: Piotr Łobacz @ 2024-02-23 9:57 UTC (permalink / raw)
To: Eilís 'pidge' Ní Fhlannagáin,
openembedded-core@lists.openembedded.org
Cc: Qi.Chen@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
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2024-02-23 9:57 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
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
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox