summaryrefslogtreecommitdiffstats
path: root/meta/classes/useradd.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes/useradd.bbclass')
-rw-r--r--meta/classes/useradd.bbclass34
1 files changed, 21 insertions, 13 deletions
diff --git a/meta/classes/useradd.bbclass b/meta/classes/useradd.bbclass
index 82f4d52758..326c04d0b1 100644
--- a/meta/classes/useradd.bbclass
+++ b/meta/classes/useradd.bbclass
@@ -3,7 +3,7 @@ inherit useradd_base
3# base-passwd-cross provides the default passwd and group files in the 3# base-passwd-cross provides the default passwd and group files in the
4# target sysroot, and shadow -native and -sysroot provide the utilities 4# target sysroot, and shadow -native and -sysroot provide the utilities
5# and support files needed to add and modify user and group accounts 5# and support files needed to add and modify user and group accounts
6DEPENDS_append_class-target = " base-files shadow-native shadow-sysroot shadow" 6DEPENDS_append_class-target = " base-files shadow-native shadow-sysroot shadow base-passwd"
7PACKAGE_WRITE_DEPS += "shadow-native" 7PACKAGE_WRITE_DEPS += "shadow-native"
8 8
9# This preinstall function can be run in four different contexts: 9# This preinstall function can be run in four different contexts:
@@ -97,13 +97,13 @@ fi
97} 97}
98 98
99useradd_sysroot () { 99useradd_sysroot () {
100 # Pseudo may (do_install) or may not (do_populate_sysroot_setscene) be running 100 # Pseudo may (do_prepare_recipe_sysroot) or may not (do_populate_sysroot_setscene) be running
101 # at this point so we're explicit about the environment so pseudo can load if 101 # at this point so we're explicit about the environment so pseudo can load if
102 # not already present. 102 # not already present.
103 export PSEUDO="${FAKEROOTENV} PSEUDO_LOCALSTATEDIR=${STAGING_DIR_TARGET}${localstatedir}/pseudo ${STAGING_DIR_NATIVE}${bindir_native}/pseudo" 103 export PSEUDO="${FAKEROOTENV} PSEUDO_LOCALSTATEDIR=${STAGING_DIR_TARGET}${localstatedir}/pseudo ${PSEUDO_SYSROOT}${bindir_native}/pseudo"
104 104
105 # Explicitly set $D since it isn't set to anything 105 # Explicitly set $D since it isn't set to anything
106 # before do_install 106 # before do_prepare_recipe_sysroot
107 D=${STAGING_DIR_TARGET} 107 D=${STAGING_DIR_TARGET}
108 108
109 # Add groups and users defined for all recipe packages 109 # Add groups and users defined for all recipe packages
@@ -117,17 +117,25 @@ useradd_sysroot () {
117 useradd_preinst 117 useradd_preinst
118} 118}
119 119
120useradd_sysroot_sstate () { 120python useradd_sysroot_sstate () {
121 if [ "${BB_CURRENTTASK}" = "package_setscene" -o "${BB_CURRENTTASK}" = "populate_sysroot_setscene" ] 121 task = d.getVar("BB_CURRENTTASK")
122 then 122 if task == "package_setscene":
123 useradd_sysroot 123 bb.build.exec_func("useradd_sysroot", d)
124 fi 124 elif task == "prepare_recipe_sysroot":
125 scriptfile = d.expand("${RECIPE_SYSROOT}${bindir}/postinst-useradd-${PN}")
126 bb.utils.mkdirhier(os.path.dirname(scriptfile))
127 with open(scriptfile, 'w') as script:
128 script.write("#!/bin/sh\n")
129 bb.data.emit_func("useradd_sysroot", script, d)
130 script.write("useradd_sysroot\n")
131 os.chmod(scriptfile, 0o755)
132 bb.build.exec_func("useradd_sysroot", d)
125} 133}
126 134
127userdel_sysroot_sstate () { 135userdel_sysroot_sstate () {
128if test "x${STAGING_DIR_TARGET}" != "x"; then 136if test "x${STAGING_DIR_TARGET}" != "x"; then
129 if [ "${BB_CURRENTTASK}" = "clean" ]; then 137 if [ "${BB_CURRENTTASK}" = "clean" ]; then
130 export PSEUDO="${FAKEROOTENV} PSEUDO_LOCALSTATEDIR=${STAGING_DIR_TARGET}${localstatedir}/pseudo ${STAGING_DIR_NATIVE}${bindir_native}/pseudo" 138 export PSEUDO="${FAKEROOTENV} PSEUDO_LOCALSTATEDIR=${STAGING_DIR_TARGET}${localstatedir}/pseudo ${PSEUDO_SYSROOT}${bindir_native}/pseudo"
131 OPT="--root ${STAGING_DIR_TARGET}" 139 OPT="--root ${STAGING_DIR_TARGET}"
132 140
133 # Remove groups and users defined for package 141 # Remove groups and users defined for package
@@ -154,10 +162,10 @@ if test "x${STAGING_DIR_TARGET}" != "x"; then
154fi 162fi
155} 163}
156 164
157SSTATECLEANFUNCS_append_class-target = " userdel_sysroot_sstate" 165#SSTATECLEANFUNCS_append_class-target = " userdel_sysroot_sstate"
158 166
159do_install[prefuncs] += "${SYSROOTFUNC}" 167do_prepare_recipe_sysroot[postfuncs] += "${SYSROOTFUNC}"
160SYSROOTFUNC_class-target = "useradd_sysroot" 168SYSROOTFUNC_class-target = "useradd_sysroot_sstate"
161SYSROOTFUNC = "" 169SYSROOTFUNC = ""
162 170
163SSTATEPREINSTFUNCS_append_class-target = " useradd_sysroot_sstate" 171SSTATEPREINSTFUNCS_append_class-target = " useradd_sysroot_sstate"