[PATCH 1/8] sysroot user management postinsts: run with /bin/sh -e to report errors when they happen

Alexander Kanavin
2024-01-26T13:35:22Z

This exposes the following failure in a multilib setup, when everything
up to do_package_write_rpm is in sstate, but do_package_write_rpm is not
(there's a similar fail for lib64-man-db, and the failures themselves will be fixed separately
in the next commit):

Exception: subprocess.CalledProcessError: Command '/srv/storage/alex/yocto/build-multilib/tmp/work/x86_64-pokymllib64-linux/lib64-quilt/0.67/recipe-sysroot/usr/bin/postinst-base-passwd' returned non-zero exit status 1.

Subprocess output:
install: cannot stat '/srv/storage/alex/yocto/build-multilib/tmp/work/x86_64-pokymllib64-linux/lib64-quilt/0.67/lib64-recipe-sysroot/usr/share/base-passwd/passwd.master': No such file or directory

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
---
meta/classes/useradd.bbclass | 2 +-
meta/recipes-core/base-passwd/base-passwd_3.6.3.bb | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/meta/classes/useradd.bbclass b/meta/classes/useradd.bbclass
index cb809b5dd74..a58f8287c96 100644
--- a/meta/classes/useradd.bbclass
+++ b/meta/classes/useradd.bbclass
@@ -167,7 +167,7 @@ python useradd_sysroot_sstate () {
if scriptfile:
bb.utils.mkdirhier(os.path.dirname(scriptfile))
with open(scriptfile, 'w') as script:
- script.write("#!/bin/sh\n")
+ script.write("#!/bin/sh -e\n")
bb.data.emit_func("useradd_sysroot", script, d)
script.write("useradd_sysroot\n")
os.chmod(scriptfile, 0o755)
diff --git a/meta/recipes-core/base-passwd/base-passwd_3.6.3.bb b/meta/recipes-core/base-passwd/base-passwd_3.6.3.bb
index 9d7703b1c00..bf50b01fd5a 100644
--- a/meta/recipes-core/base-passwd/base-passwd_3.6.3.bb
+++ b/meta/recipes-core/base-passwd/base-passwd_3.6.3.bb
@@ -54,7 +54,7 @@ do_install () {
}

basepasswd_sysroot_postinst() {
-#!/bin/sh
+#!/bin/sh -e

# Install passwd.master and group.master to sysconfdir
install -d -m 755 ${STAGING_DIR_TARGET}${sysconfdir}
--
2.39.2