On 7/11/13 6:11 AM, qi.c...@windriver.com wrote:
From: Chen Qi <qi.c...@windriver.com>
This class is dedicated to image level user/group configuration.
It inherits userbase.bbclass.
Users need to inherit this class in their layers or local.conf to
make the setting of USER_GROUP_SETTINGS effective.
For detailed configuration format of USER_GROUP_SETTINGS, please
refer to local.conf.sample.extended.
[YOCTO #4074]
Signed-off-by: Chen Qi <qi.c...@windriver.com>
---
meta/classes/usersettings.bbclass | 48 +++++++++++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
create mode 100644 meta/classes/usersettings.bbclass
diff --git a/meta/classes/usersettings.bbclass
b/meta/classes/usersettings.bbclass
new file mode 100644
index 0000000..e5a5156
--- /dev/null
+++ b/meta/classes/usersettings.bbclass
@@ -0,0 +1,48 @@
+# This bbclass is mainly used for image level user/group configuration.
+# Inherit this class if you want to make USER_GROUP_SETTINGS effective.
+inherit userbase
One request, in the comment above, please put some examples of the using the new
functionality. It's not completely clear to me looking at this what may be
expected of the user.
--Mark
+
+IMAGE_INSTALL_append += "${@['', 'base-passwd
shadow'][bool(d.getVar('USER_GROUP_SETTINGS', True))]}"
+
+# Image level user / group settings
+ROOTFS_POSTPROCESS_COMMAND_append = " set_user_group;"
+
+# Image level user / group settings
+set_user_group () {
+ user_group_settings="${USER_GROUP_SETTINGS}"
+ export PSEUDO="${FAKEROOTENV} ${STAGING_DIR_NATIVE}${bindir}/pseudo"
+ setting=`echo $user_group_settings | cut -d ';' -f1`
+ remaining=`echo $user_group_settings | cut -d ';' -f2-`
+ while test "x$setting" != "x"; do
+ action=`echo $setting | cut -d ',' -f1`
+ opts=`echo $setting | cut -d ',' -f2`
+ # Different from useradd.bbclass, there's no file locking issue
here, as
+ # this setting is actually a serial process. So we only retry
once.
+ case $action in
+ useradd)
+ perform_useradd "${IMAGE_ROOTFS}" "-R
${IMAGE_ROOTFS} $opts" 1
+ ;;
+ groupadd)
+ perform_groupadd "${IMAGE_ROOTFS}" "-R
${IMAGE_ROOTFS} $opts" 1
+ ;;
+ userdel)
+ perform_userdel "${IMAGE_ROOTFS}" "-R
${IMAGE_ROOTFS} $opts" 1
+ ;;
+ groupdel)
+ perform_groupdel "${IMAGE_ROOTFS}" "-R
${IMAGE_ROOTFS} $opts" 1
+ ;;
+ usermod)
+ perform_usermod "${IMAGE_ROOTFS}" "-R
${IMAGE_ROOTFS} $opts" 1
+ ;;
+ groupmod)
+ perform_groupmod "${IMAGE_ROOTFS}" "-R
${IMAGE_ROOTFS} $opts" 1
+ ;;
+ *)
+ bbfatal "Incorrect setting for
USER_GROUP_SETTINGS"
+ ;;
+ esac
+ # iterate to the next setting
+ setting=`echo $remaining | cut -d ';' -f1`
+ remaining=`echo $remaining | cut -d ';' -f2-`
+ done
+}
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core