summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChen Qi <Qi.Chen@windriver.com>2013-07-19 09:52:26 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-07-24 11:35:35 +0100
commit6d42c2718373a13b67986627b4c7a91719194c4b (patch)
tree04ae0e41f7948da6cef109c187d9718cc9cef578
parent50d2548f74322c130129cb2e7bb0b763c8774968 (diff)
downloadpoky-6d42c2718373a13b67986627b4c7a91719194c4b.tar.gz
extrausers.bbclass: add a new bbclass
This class is dedicated to image level user/group configuration. It inherits useradd_base.bbclass. Users need to inherit this class in their layers or local.conf to make the setting of EXTRA_USERS_PARAMS effective. For detailed configuration format of EXTRA_USERS_PARAMS, please refer to local.conf.sample.extended. [YOCTO #4074] (From OE-Core rev: 4b6deb521183b728d9a1c651d4805fe635e6cb50) Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/extrausers.bbclass61
1 files changed, 61 insertions, 0 deletions
diff --git a/meta/classes/extrausers.bbclass b/meta/classes/extrausers.bbclass
new file mode 100644
index 0000000000..8670a2a85a
--- /dev/null
+++ b/meta/classes/extrausers.bbclass
@@ -0,0 +1,61 @@
1# This bbclass is mainly used for image level user/group configuration.
2# Inherit this class if you want to make EXTRA_USERS_PARAMS effective.
3
4# Below is an example showing how to use this functionality.
5# INHERIT += "extrausers"
6# EXTRA_USERS_PARAMS = "\
7# useradd -p '' tester; \
8# groupadd developers; \
9# userdel nobody; \
10# groupdel -g video; \
11# groupmod -g 1020 developers; \
12# usermod -s /bin/sh tester; \
13# "
14
15
16inherit useradd_base
17
18IMAGE_INSTALL_append = " ${@['', 'base-passwd shadow'][bool(d.getVar('EXTRA_USERS_PARAMS', True))]}"
19
20# Image level user / group settings
21ROOTFS_POSTPROCESS_COMMAND_append = " set_user_group;"
22
23# Image level user / group settings
24set_user_group () {
25 user_group_settings="${EXTRA_USERS_PARAMS}"
26 export PSEUDO="${FAKEROOTENV} ${STAGING_DIR_NATIVE}${bindir}/pseudo"
27 setting=`echo $user_group_settings | cut -d ';' -f1`
28 remaining=`echo $user_group_settings | cut -d ';' -f2-`
29 while test "x$setting" != "x"; do
30 cmd=`echo $setting | cut -d ' ' -f1`
31 opts=`echo $setting | cut -d ' ' -f2-`
32 # Different from useradd.bbclass, there's no file locking issue here, as
33 # this setting is actually a serial process. So we only retry once.
34 case $cmd in
35 useradd)
36 perform_useradd "${IMAGE_ROOTFS}" "-R ${IMAGE_ROOTFS} $opts" 1
37 ;;
38 groupadd)
39 perform_groupadd "${IMAGE_ROOTFS}" "-R ${IMAGE_ROOTFS} $opts" 1
40 ;;
41 userdel)
42 perform_userdel "${IMAGE_ROOTFS}" "-R ${IMAGE_ROOTFS} $opts" 1
43 ;;
44 groupdel)
45 perform_groupdel "${IMAGE_ROOTFS}" "-R ${IMAGE_ROOTFS} $opts" 1
46 ;;
47 usermod)
48 perform_usermod "${IMAGE_ROOTFS}" "-R ${IMAGE_ROOTFS} $opts" 1
49 ;;
50 groupmod)
51 perform_groupmod "${IMAGE_ROOTFS}" "-R ${IMAGE_ROOTFS} $opts" 1
52 ;;
53 *)
54 bbfatal "Invalid command in EXTRA_USERS_PARAMS: $cmd"
55 ;;
56 esac
57 # iterate to the next setting
58 setting=`echo $remaining | cut -d ';' -f1`
59 remaining=`echo $remaining | cut -d ';' -f2-`
60 done
61}