On Thursday 11 July 2013 19:11:39 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 > + > +IMAGE_INSTALL_append += "${@['', 'base-passwd > shadow'][bool(d.getVar('USER_GROUP_SETTINGS', True))]}"
This is a bit ugly. We should avoid using _append += since it is confusing, and we have base_conditional for things like this. I'd suggest: IMAGE_INSTALL_append = "${@base_conditional('USER_GROUP_SETTINGS', '1', ' base-passwd shadow', '', d)}" > +# 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" Could you please make it report $action in the error so it's clear which value is invalid? > + ;; > + esac > + # iterate to the next setting > + setting=`echo $remaining | cut -d ';' -f1` > + remaining=`echo $remaining | cut -d ';' -f2-` > + done > +} Cheers, Paul -- Paul Eggleton Intel Open Source Technology Centre _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core