From: ChenQi <Qi.Chen@windriver.com>
To: Saul Wold <sgw@linux.intel.com>
Cc: qingtao.cao@windriver.com, openembedded-core@lists.openembedded.org
Subject: Re: [PATCH V2 1/1] image.bbclass: add a method to add/delete/modify user/group settings
Date: Thu, 11 Jul 2013 10:56:08 +0800 [thread overview]
Message-ID: <51DE1EC8.2090902@windriver.com> (raw)
In-Reply-To: <51DDBDDB.8080604@linux.intel.com>
On 07/11/2013 04:02 AM, Saul Wold wrote:
> On 07/09/2013 11:28 PM, Qi.Chen@windriver.com wrote:
>> From: Chen Qi <Qi.Chen@windriver.com>
>>
>> We may want to add a user or group which does not logically belong to
>> any specific package. For example, we may want to add a user with the
>> name 'tester' to our image. Besides, we may want to delete or modify
>> user/group in our image.
>>
>> This patch adds a variable, USER_GROUP_SETTINGS, which is dedicated
>> to these tasks. The configuration format is detailed in the local.conf.
>> sample.extended file.
>>
>> This patch also adds a function, set_user_group, which happens at
>> the end of the ROOTFS_POSTPROCESS_COMMAND. It handles the settings
>> in the USER_GROUP_SETTINGS variable.
>>
> After seeing the poky-tiny changes, which I will NAK, I am going to
> recommend that we need to share a common base between this and the
> existing useradd bbclass since you are both doing the same work.
>
> Also, I think what ever the top level looks like, it should be in a
> class of it's own that can be inherited, such that it won't affect
> other images, like a tiny or other distros that don't include login
> support.
>
> I understand the difference and usage of useradd is targeting packages
> and feeds, while this work is targeted towards customizing a final
> image that is not truly part of the package feed.
>
> Sau!
>
Thanks for your suggestion. That's definitely a better approach.
I'll rework on this feature.
Best Regards,
Chen Qi
>> This logic here is quite similar to that of useradd.bbclass. If we
>> need to add or modify user/group settings, base-passwd and shadow
>> are pulled into the RDEPENDS and thus installed on target.
>>
>
>
>> [YOCTO #4074]
>>
>> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
>> ---
>> meta/classes/image.bbclass | 42
>> ++++++++++++++++++++++++++++++++++++++++++
>> 1 file changed, 42 insertions(+)
>>
>> diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
>> index 380ed8e..a76289c 100644
>> --- a/meta/classes/image.bbclass
>> +++ b/meta/classes/image.bbclass
>> @@ -12,6 +12,8 @@ LICENSE = "MIT"
>> PACKAGES = ""
>> DEPENDS += "${MLPREFIX}qemuwrapper-cross
>> ${MLPREFIX}depmodwrapper-cross"
>> RDEPENDS += "${IMAGE_INSTALL} ${LINGUAS_INSTALL}
>> ${NORMAL_FEATURE_INSTALL} ${ROOTFS_BOOTSTRAP_INSTALL}"
>> +# Add to IMAGE_INSTALL base-passwd and shadow if USER_GROUP_SETTINGS
>> is set
>> +IMAGE_INSTALL_append += "${@['', 'base-passwd
>> shadow'][bool(d.getVar('USER_GROUP_SETTINGS', True))]}"
>> RRECOMMENDS += "${NORMAL_FEATURE_INSTALL_OPTIONAL}"
>>
>> INHIBIT_DEFAULT_DEPS = "1"
>> @@ -179,6 +181,8 @@ ROOTFS_POSTPROCESS_COMMAND +=
>> '${@base_contains("IMAGE_FEATURES", "debug-tweaks"
>> ROOTFS_POSTPROCESS_COMMAND += '${@base_contains("IMAGE_FEATURES",
>> "debug-tweaks", "postinst_enable_logging; ", "",d)}'
>> # Set default postinst log file
>> POSTINST_LOGFILE ?= "${localstatedir}/log/postinstall.log"
>> +# Image level user / group settings
>> +ROOTFS_POSTPROCESS_COMMAND_append = " set_user_group;"
>>
>> # some default locales
>> IMAGE_LINGUAS ?= "de-de fr-fr en-gb"
>> @@ -528,6 +532,44 @@ postinst_enable_logging () {
>> echo "LOGFILE=${POSTINST_LOGFILE}" >>
>> ${IMAGE_ROOTFS}${sysconfdir}/default/postinst
>> }
>>
>> +# 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
>> + user_group=`echo $setting | cut -d ',' -f1`
>> + action=`echo $setting | cut -d ',' -f2`
>> + opts=`echo $setting | cut -d ',' -f3`
>> + # determine the command according to user_group and action
>> + if [ "$user_group" = "USER" ]; then
>> + cmd_prefix="user"
>> + elif [ "$user_group" = "GROUP" ]; then
>> + cmd_prefix="group"
>> + else
>> + echo "Error: invalid setting of $user_group in the
>> USER_GROUP_SETTINGS"
>> + exit 1
>> + fi
>> + if [ "$action" = "ADD" ]; then
>> + cmd_suffix="add"
>> + elif [ "$action" = "DEL" ]; then
>> + cmd_suffix="del"
>> + elif [ "$action" = "MOD" ]; then
>> + cmd_suffix="mod"
>> + else
>> + echo "Error: invalid setting of $user_group in the
>> USER_GROUP_SETTINGS"
>> + exit 1
>> + fi
>> + cmd=$cmd_prefix$cmd_suffix
>> + echo "using commond <$cmd> for setting <$setting> ..."
>> + eval $PSEUDO $cmd -R ${IMAGE_ROOTFS} $opts
>> + # iterate to the next setting
>> + setting=`echo $remaining | cut -d ';' -f1`
>> + remaining=`echo $remaining | cut -d ';' -f2-`
>> + done
>> +}
>> +
>> # Turn any symbolic /sbin/init link into a file
>> remove_init_link () {
>> if [ -h ${IMAGE_ROOTFS}/sbin/init ]; then
>>
>
>
prev parent reply other threads:[~2013-07-11 2:56 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-10 6:28 [PATCH V2 0/1] image.bbclass: add a method for image level user/group configuration Qi.Chen
2013-07-10 6:28 ` [PATCH V2 1/1] image.bbclass: add a method to add/delete/modify user/group settings Qi.Chen
2013-07-10 20:02 ` Saul Wold
2013-07-11 2:56 ` ChenQi [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51DE1EC8.2090902@windriver.com \
--to=qi.chen@windriver.com \
--cc=openembedded-core@lists.openembedded.org \
--cc=qingtao.cao@windriver.com \
--cc=sgw@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.