Patchwork [2/4] useradd.bbclass: check if a group already exists manually

login
register
mail settings
Submitter Otavio Salvador
Date Oct. 21, 2011, 3:31 a.m.
Message ID <9c3cff6e514e8ccc69b9462197c7bceeb117a55e.1319167843.git.otavio@ossystems.com.br>
Download mbox | patch
Permalink /patch/13647/
State Accepted
Commit 82933a1ff921fd0836f03e6f379fd8536cdc0a30
Headers show

Comments

Otavio Salvador - Oct. 21, 2011, 3:31 a.m.
The use of groupadd -f makes much more difficult to figure when a
group is not add. This was the case of the class not working for our
usage and this being caused by the lack of '/etc/group' file but
unnoticed as groupadd wasn't failing according.

Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---
 meta/classes/useradd.bbclass |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)
Scott Garman - Oct. 21, 2011, 3:41 a.m.
On 10/20/2011 08:31 PM, Otavio Salvador wrote:
> The use of groupadd -f makes much more difficult to figure when a
> group is not add. This was the case of the class not working for our
> usage and this being caused by the lack of '/etc/group' file but
> unnoticed as groupadd wasn't failing according.
>
> Signed-off-by: Otavio Salvador<otavio@ossystems.com.br>

Thanks for getting to the bottom of this!

Acked-by: Scott Garman <scott.a.garman@intel.com>

> ---
>   meta/classes/useradd.bbclass |    8 +++++++-
>   1 files changed, 7 insertions(+), 1 deletions(-)
>
> diff --git a/meta/classes/useradd.bbclass b/meta/classes/useradd.bbclass
> index 1e03a04..fb70b3e 100644
> --- a/meta/classes/useradd.bbclass
> +++ b/meta/classes/useradd.bbclass
> @@ -37,7 +37,13 @@ if test "x$GROUPADD_PARAM" != "x"; then
>   	opts=`echo "$GROUPADD_PARAM" | cut -d ';' -f 1`
>   	remaining=`echo "$GROUPADD_PARAM" | cut -d ';' -f 2-`
>   	while test "x$opts" != "x"; do
> -		eval $PSEUDO groupadd -f $OPT $opts
> +		groupname=`echo "$opts" | awk '{ print $NF }'`
> +		group_exists=`grep "^$groupname:" $SYSROOT/etc/group || true`
> +		if test "x$group_exists" = "x"; then
> +			eval $PSEUDO groupadd  $OPT $opts
> +		else
> +			echo "Note: group $groupname already exists, not re-creating it"
> +		fi
>
>   		if test "x$opts" = "x$remaining"; then
>   			break

Patch

diff --git a/meta/classes/useradd.bbclass b/meta/classes/useradd.bbclass
index 1e03a04..fb70b3e 100644
--- a/meta/classes/useradd.bbclass
+++ b/meta/classes/useradd.bbclass
@@ -37,7 +37,13 @@  if test "x$GROUPADD_PARAM" != "x"; then
 	opts=`echo "$GROUPADD_PARAM" | cut -d ';' -f 1`
 	remaining=`echo "$GROUPADD_PARAM" | cut -d ';' -f 2-`
 	while test "x$opts" != "x"; do
-		eval $PSEUDO groupadd -f $OPT $opts
+		groupname=`echo "$opts" | awk '{ print $NF }'`
+		group_exists=`grep "^$groupname:" $SYSROOT/etc/group || true`
+		if test "x$group_exists" = "x"; then
+			eval $PSEUDO groupadd  $OPT $opts
+		else
+			echo "Note: group $groupname already exists, not re-creating it"
+		fi
 
 		if test "x$opts" = "x$remaining"; then
 			break