Hi, On Tue, Apr 05, 2016 at 02:58:57PM +0100, Richard Purdie wrote: > On Tue, 2016-04-05 at 10:25 +0300, Maxin B. John wrote: > > At present, if a recipe is built which creates users/groups via > > useradd.bbclass, > > those users/groups are not removed (at least from sysroot) when the > > recipe/package is cleaned using clean/cleansstate/cleanall. > > need to add "or when a recipe is rebuild and 'unstaged' from the the > sysroot".
Thanks for pointing it out. I will update the commit message and send v3 soon. > > The "userdel_sysroot_sstate()" provides that functionality. > > > > [YOCTO #9262] > > > > Signed-off-by: Maxin B. John <[email protected]> > > --- > > meta/classes/sstate.bbclass | 6 ++++++ > > meta/classes/useradd.bbclass | 26 ++++++++++++++++++++++++++ > > 2 files changed, 32 insertions(+) > > > > diff --git a/meta/classes/sstate.bbclass > > b/meta/classes/sstate.bbclass > > index 6f285da..96b6265 100644 > > --- a/meta/classes/sstate.bbclass > > +++ b/meta/classes/sstate.bbclass > > @@ -51,6 +51,7 @@ SSTATEPREINSTFUNCS = "" > > SSTATEPOSTUNPACKFUNCS = "sstate_hardcode_path_unpack" > > SSTATEPOSTINSTFUNCS = "" > > EXTRA_STAGING_FIXMES ?= "" > > +SSTATECLEANFUNCS = "" > > > > SIGGEN_LOCKEDSIGS_CHECK_LEVEL ?= 'error' > > > > @@ -444,6 +445,11 @@ def sstate_clean(ss, d): > > stfile.endswith(rm_nohash): > > oe.path.remove(stfile) > > > > + # Remove the users/groups created by the package > > + for cleanfunc in (d.getVar('SSTATECLEANFUNCS', True) or > > '').split(): > > + if d.getVar('BB_CURRENTTASK', True) in ['configure', > > 'clean']: > > + bb.build.exec_func(cleanfunc, d) > > + > > The hook needs to be generic so the BB_CURRENTTASK check needs to move > to userdel_sysroot_sstate itself. > > Otherwise looks good though, thanks. > > Cheers, > > Richard > > > sstate_clean[vardepsexclude] = "SSTATE_MANFILEPREFIX" > > > > CLEANFUNCS += "sstate_cleanall" > > diff --git a/meta/classes/useradd.bbclass > > b/meta/classes/useradd.bbclass > > index 0a6f2be..2b2bb96 100644 > > --- a/meta/classes/useradd.bbclass > > +++ b/meta/classes/useradd.bbclass > > @@ -127,6 +127,32 @@ useradd_sysroot_sstate () { > > fi > > } > > > > +userdel_sysroot_sstate () { > > +if test "x${STAGING_DIR_TARGET}" != "x"; then > > + export PSEUDO="${FAKEROOTENV} > > PSEUDO_LOCALSTATEDIR=${STAGING_DIR_TARGET}${localstatedir}/pseudo > > ${STAGING_DIR_NATIVE}${bindir}/pseudo" > > + OPT="--root ${STAGING_DIR_TARGET}" > > + > > + # Remove groups and users defined for package > > + GROUPADD_PARAM="${@get_all_cmd_params(d, 'groupadd')}" > > + USERADD_PARAM="${@get_all_cmd_params(d, 'useradd')}" > > + > > + if test "x`echo $USERADD_PARAM | tr -d '[:space:]'`" != "x"; > > then > > + user=`echo "$USERADD_PARAM" | cut -d ';' -f 1 | awk '{ print > > $NF }'` > > + perform_userdel "${STAGING_DIR_TARGET}" "$OPT $user" > > + fi > > + > > + if test "x`echo $GROUPADD_PARAM | tr -d '[:space:]'`" != "x"; > > then > > + group=`echo "$GROUPADD_PARAM" | cut -d ';' -f 1 | awk '{ > > print $NF }'` > > + perform_groupdel "${STAGING_DIR_TARGET}" "$OPT $group" > > + fi > > +fi > > +} > > + > > +SSTATECLEANFUNCS = "userdel_sysroot_sstate" > > +SSTATECLEANFUNCS_class-cross = "" > > +SSTATECLEANFUNCS_class-native = "" > > +SSTATECLEANFUNCS_class-nativesdk = "" > > + > > do_install[prefuncs] += "${SYSROOTFUNC}" > > SYSROOTFUNC = "useradd_sysroot" > > SYSROOTFUNC_class-cross = "" > > -- > > 2.4.0 Best Regards, Maxin -- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
