From: Peter Kjellerstedt Date: Tue, 26 May 2026 12:44:18 +0000 (+0200) Subject: useradd_base.bbclass: Emulate the groupmems command using usermod X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cec67e24ac94554e092f8ab18b42e09b4feba77e;p=thirdparty%2Fopenembedded%2Fopenembedded-core.git useradd_base.bbclass: Emulate the groupmems command using usermod The groupmems command does to support the --prefix option, which is being used since commit a7b846ba7d6d63a5e59939d75d9c5fe3e4cbb0e9. However, the groupmems command can easily be emulated using the usermod command. [YOCTO#16277] Signed-off-by: Peter Kjellerstedt Signed-off-by: Richard Purdie --- diff --git a/meta/classes/useradd_base.bbclass b/meta/classes/useradd_base.bbclass index 5e1c699118..5e12880b64 100644 --- a/meta/classes/useradd_base.bbclass +++ b/meta/classes/useradd_base.bbclass @@ -56,13 +56,20 @@ perform_groupmems () { bbnote "${PN}: 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 "${PN}: Running groupmems command with group $groupname and user $username" + local prefix=`echo "$opts" | awk '{ for (i = 1; i < NF; i++) if ($i == "-P" || $i == "--prefix") print $(i+1) }'` + if test "x$groupname" = "x"; then + bbfatal "${PN}: groupmems: No user specified using --add." + + elif test "x$username" = "x"; then + bbfatal "${PN}: groupmems: No group specified using --group." + fi + bbnote "${PN}: Emulating groupmems command using usermod 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${sysconfdir} -c \"$PSEUDO groupmems \$opts\" || true + eval flock -x $rootdir${sysconfdir} -c \"$PSEUDO usermod \${prefix:+--prefix \$prefix} --append --groups \$groupname \$username\" || true mem_exists="`grep "^$groupname:[^:]*:[^:]*:\([^,]*,\)*$username\(,[^,]*\)*$" $rootdir/etc/group || true`" if test "x$mem_exists" = "x"; then - bbfatal "${PN}: groupmems command did not succeed." + bbfatal "${PN}: groupmems command (emulated using usermod) did not succeed." fi else bbnote "${PN}: group $groupname already contains $username, not re-adding it"