packages/cortexa15t2hf-neon-poky-linux-gnueabi/ptest-runner/ptest-runner-dev: RRECOMMENDS: added "base-passwd-dev shadow-sysroot-dev base-files-dev shadow-dev" packages/cortexa15t2hf-neon-poky-linux-gnueabi/ptest-runner/ptest-runner: RDEPENDS: added "base-files base-passwd shadow" Changes to packages/cortexa15t2hf-neon-poky-linux-gnueabi/ptest-runner (sysroot): /usr was added /usr/bin was added /usr/bin/postinst-useradd-ptest-runner was added packages/cortexa15t2hf-neon-poky-linux-gnueabi/quilt/quilt-dev: RRECOMMENDS: added "ptest-runner-dev" packages/cortexa15t2hf-neon-poky-linux-gnueabi/quilt/quilt-ptest: RDEPENDS: added "ptest-runner" packages/cortexa15t2hf-neon-poky-linux-gnueabi/ptest-runner/ptest-runner: pkg_preinst added: @@ -0,0 +1,142 @@ +#!/bin/sh +set -e +bbnote () { + echo "NOTE: $*" +} +bbwarn () { + echo "WARNING: $*" +} +bbfatal () { + echo "ERROR: $*" + exit 1 +} +perform_groupadd () { + local rootdir="$1" + local opts="$2" + bbnote "ptest-runner: Performing groupadd with [$opts]" + local groupname=`echo "$opts" | awk '{ print $NF }'` + local group_exists="`grep "^$groupname:" $rootdir/etc/group || true`" + if test "x$group_exists" = "x"; then + eval flock -x $rootdir/etc -c \"$PSEUDO groupadd \$opts\" || true + group_exists="`grep "^$groupname:" $rootdir/etc/group || true`" + if test "x$group_exists" = "x"; then + bbfatal "ptest-runner: groupadd command did not succeed." + fi + else + bbnote "ptest-runner: group $groupname already exists, not re-creating it" + fi +} +perform_useradd () { + local rootdir="$1" + local opts="$2" + bbnote "ptest-runner: Performing useradd with [$opts]" + local username=`echo "$opts" | awk '{ print $NF }'` + local user_exists="`grep "^$username:" $rootdir/etc/passwd || true`" + if test "x$user_exists" = "x"; then + eval flock -x $rootdir/etc -c \"$PSEUDO useradd \$opts\" || true + user_exists="`grep "^$username:" $rootdir/etc/passwd || true`" + if test "x$user_exists" = "x"; then + bbfatal "ptest-runner: useradd command did not succeed." + fi + else + bbnote "ptest-runner: user $username already exists, not re-creating it" + fi +} +perform_groupmems () { + local rootdir="$1" + local opts="$2" + bbnote "ptest-runner: Performing groupmems with [$opts]" + local groupname=`echo "$opts" | awk '{ for (i = 1; i < NF; i++) if ($i == "-g" || $i == "--group") print $(i+1) }'` + local username=`echo "$opts" | awk '{ for (i = 1; i < NF; i++) if ($i == "-a" || $i == "--add") print $(i+1) }'` + bbnote "ptest-runner: Running groupmems command with group $groupname and user $username" + local mem_exists="`grep "^$groupname:[^:]*:[^:]*:\([^,]*,\)*$username\(,[^,]*\)*$" $rootdir/etc/group || true`" + if test "x$mem_exists" = "x"; then + eval flock -x $rootdir/etc -c \"$PSEUDO groupmems \$opts\" || true + mem_exists="`grep "^$groupname:[^:]*:[^:]*:\([^,]*,\)*$username\(,[^,]*\)*$" $rootdir/etc/group || true`" + if test "x$mem_exists" = "x"; then + bbfatal "ptest-runner: groupmems command did not succeed." + fi + else + bbnote "ptest-runner: group $groupname already contains $username, not re-adding it" + fi +} +OPT="" +SYSROOT="" + +if test "x$D" != "x"; then + # Installing into a sysroot + SYSROOT="$D" + OPT="--root $D" + + # Make sure login.defs is there, this is to make debian package backend work + # correctly while doing rootfs. + # The problem here is that if /etc/login.defs is treated as a config file for + # shadow package, then while performing preinsts for packages that depend on + # shadow, there might only be /etc/login.def.dpkg-new there in root filesystem. + if [ ! -e $D/etc/login.defs -a -e $D/etc/login.defs.dpkg-new ]; then + cp $D/etc/login.defs.dpkg-new $D/etc/login.defs + fi + + # user/group lookups should match useradd/groupadd --root + export PSEUDO_PASSWD="$SYSROOT" +fi + +# If we're not doing a special SSTATE/SYSROOT install +# then set the values, otherwise use the environment +if test "x$UA_SYSROOT" = "x"; then + # Installing onto a target + # Add groups and users defined only for this package + GROUPADD_PARAM="" + USERADD_PARAM="--system --no-create-home --home / --user-group ptest" + GROUPMEMS_PARAM="" +fi + +# Perform group additions first, since user additions may depend +# on these groups existing +if test "x`echo $GROUPADD_PARAM | tr -d '[:space:]'`" != "x"; then + echo "Running groupadd commands..." + # Invoke multiple instances of groupadd for parameter lists + # separated by ';' + opts=`echo "$GROUPADD_PARAM" | cut -d ';' -f 1 | sed -e 's#[ \t]*$##'` + remaining=`echo "$GROUPADD_PARAM" | cut -d ';' -f 2- | sed -e 's#[ \t]*$##'` + while test "x$opts" != "x"; do + perform_groupadd "$SYSROOT" "$OPT $opts" + if test "x$opts" = "x$remaining"; then + break + fi + opts=`echo "$remaining" | cut -d ';' -f 1 | sed -e 's#[ \t]*$##'` + remaining=`echo "$remaining" | cut -d ';' -f 2- | sed -e 's#[ \t]*$##'` + done +fi + +if test "x`echo $USERADD_PARAM | tr -d '[:space:]'`" != "x"; then + echo "Running useradd commands..." + # Invoke multiple instances of useradd for parameter lists + # separated by ';' + opts=`echo "$USERADD_PARAM" | cut -d ';' -f 1 | sed -e 's#[ \t]*$##'` + remaining=`echo "$USERADD_PARAM" | cut -d ';' -f 2- | sed -e 's#[ \t]*$##'` + while test "x$opts" != "x"; do + perform_useradd "$SYSROOT" "$OPT $opts" + if test "x$opts" = "x$remaining"; then + break + fi + opts=`echo "$remaining" | cut -d ';' -f 1 | sed -e 's#[ \t]*$##'` + remaining=`echo "$remaining" | cut -d ';' -f 2- | sed -e 's#[ \t]*$##'` + done +fi + +if test "x`echo $GROUPMEMS_PARAM | tr -d '[:space:]'`" != "x"; then + echo "Running groupmems commands..." + # Invoke multiple instances of groupmems for parameter lists + # separated by ';' + opts=`echo "$GROUPMEMS_PARAM" | cut -d ';' -f 1 | sed -e 's#[ \t]*$##'` + remaining=`echo "$GROUPMEMS_PARAM" | cut -d ';' -f 2- | sed -e 's#[ \t]*$##'` + while test "x$opts" != "x"; do + perform_groupmems "$SYSROOT" "$OPT $opts" + if test "x$opts" = "x$remaining"; then + break + fi + opts=`echo "$remaining" | cut -d ';' -f 1 | sed -e 's#[ \t]*$##'` + remaining=`echo "$remaining" | cut -d ';' -f 2- | sed -e 's#[ \t]*$##'` + done +fi --