]> code.ossystems Code Review - openembedded-core.git/commitdiff
useradd.bbclass: Strip trailing ';' in cmd params
authorKhem Raj <raj.khem@gmail.com>
Wed, 18 May 2016 04:20:15 +0000 (21:20 -0700)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 27 Sep 2016 08:05:43 +0000 (09:05 +0100)
When there are more than 1 packages in a recipe requiring useradd
services, they are concatnated and a ';' is inserted just after
each of the users being added by the packages. A situation arises
in cases where this is controlled by PACKAGECONFIG then we add a
';' separator in the USERADD_PARAM value itself for each packagecofig
since we do not know which one will be picked, we end up in situation
where the final string returned from get_all_cmd_params() appears to be

a; ; b; c;

and then the logic which uses these cmds triggers with ';' as separator
but in this case it will fail after executing useradd 'a' because the next
cmd it will call will be just a whitespace

This is highlighted by the systemd patch to add more users as needed
by systemd 229 components.

(From OE-Core rev: e8d4356c38e3c2aacd6dc49231c73bcb7d597308)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
meta/classes/useradd.bbclass

index 8283bf301bdbd14f1e4cb515e7afe65e4dac0441..67dae880b7d49a4ee19eb2e1c40db1e3d2aa59e4 100644 (file)
@@ -54,14 +54,14 @@ 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`
+       opts=`echo "$GROUPADD_PARAM" | cut -d ';' -f 1 | sed -e 's#[ \t]*$##'`
        remaining=`echo "$GROUPADD_PARAM" | cut -d ';' -f 2-`
        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`
+               opts=`echo "$remaining" | cut -d ';' -f 1 | sed -e 's#[ \t]*$##'`
                remaining=`echo "$remaining" | cut -d ';' -f 2-`
        done
 fi 
@@ -70,14 +70,14 @@ 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`
+       opts=`echo "$USERADD_PARAM" | cut -d ';' -f 1 | sed -e 's#[ \t]*$##'`
        remaining=`echo "$USERADD_PARAM" | cut -d ';' -f 2-`
        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`
+               opts=`echo "$remaining" | cut -d ';' -f 1 | sed -e 's#[ \t]*$##'`
                remaining=`echo "$remaining" | cut -d ';' -f 2-`
        done
 fi
@@ -86,14 +86,14 @@ 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`
+       opts=`echo "$GROUPMEMS_PARAM" | cut -d ';' -f 1 | sed -e 's#[ \t]*$##'`
        remaining=`echo "$GROUPMEMS_PARAM" | cut -d ';' -f 2-`
        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`
+               opts=`echo "$remaining" | cut -d ';' -f 1 | sed -e 's#[ \t]*$##'`
                remaining=`echo "$remaining" | cut -d ';' -f 2-`
        done
 fi
@@ -203,7 +203,7 @@ def get_all_cmd_params(d, cmd_type):
     for pkg in useradd_packages.split():
         param = d.getVar(param_type % pkg, True)
         if param:
-            params.append(param)
+            params.append(param.rstrip(" ;"))
 
     return "; ".join(params)