summaryrefslogtreecommitdiff
path: root/meta/classes/useradd.bbclass
AgeCommit message (Collapse)AuthorFiles
2016-10-03useradd.bbclass: Use bb.fatal() instead of raising FuncFailedUlf Magnusson1
This sets a good example and avoids unnecessarily contributing to perceived complexity and cargo culting. Motivating quote below: < kergoth> the *original* intent was for the function/task to error via whatever appropriate means, bb.fatal, whatever, and funcfailed was what you'd catch if you were calling exec_func/exec_task. that is, it's what those functions raise, not what metadata functions should be raising < kergoth> it didn't end up being used that way < kergoth> but there's really never a reason to raise it yourself FuncFailed.__init__ takes a 'name' argument rather than a 'msg' argument, which also shows that the original purpose got lost. Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2016-09-13useradd: do not delete users and groups during configureJoe Slater1
If two recipes both create the same users and groups, the second recipe can delete items created by the first causing things like "chown" to fail for the first recipe. Signed-off-by: Joe Slater <jslater@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com>
2016-08-25useradd.bblass: Simplify target overridesUlf Magnusson1
The current style might be a leftover from when _class-target did not exist. Also change the assignment to SSTATECLEANFUNCS to an append, which makes more sense. useradd.bbclass is the only user of SSTATECLEANFUNCS as of writing, so it won't make any functional difference. Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com> Signed-off-by: Ross Burton <ross.burton@intel.com>
2016-07-28useradd.bbclass: Fix delete user/group when more than one itemMariano Lopez1
Currently when a recipe adds more than one user/group, the cleansstate task will delete only the first user/group. This will solve this behavior and delete all users/groups. [YOCTO #9943] Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com>
2016-05-23useradd: Fix infinite build loopRichard Purdie1
http://git.openembedded.org/openembedded-core-contrib/commit/?id=642c6cf0b6a0371de476513162bd0cefa9c438b3 introduces a problem if the USERADD_PARAM variable has trailing whitespace as the code infinitely loops causing build hangs. Add a similar sed expression to $remaining to avoid this. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2016-05-19useradd.bbclass: Strip trailing ';' in cmd paramsKhem Raj1
When there are more than 1 packages in a recipe requiring useradd services, they are concatnated and a ';' is inserted just after each of the users being added by the packages. A situation arises in cases where this is controlled by PACKAGECONFIG then we add a ';' separator in the USERADD_PARAM value itself for each packagecofig since we do not know which one will be picked, we end up in situation where the final string returned from get_all_cmd_params() appears to be a; ; b; c; and then the logic which uses these cmds triggers with ';' as separator but in this case it will fail after executing useradd 'a' because the next cmd it will call will be just a whitespace This is highlighted by the systemd patch to add more users as needed by systemd 229 components. Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2016-05-19useradd: use bindir_native for pseudo PATHMartin Jansa1
* useradd/userdel functions will fail for recipes which override their target prefix (e.g. to /opt/foo), because it will try to use pseudo from native-sysroot/opt/foo/bin/pseudo Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2016-04-06useradd.bbclass: remove user/group created by the package in clean* taskMaxin B. John1
At present, if a recipe is built which creates users/groups via useradd.bbclass, those users/groups are not removed from sysroot when the recipe/package is cleaned using clean/cleansstate/cleanall or when a recipe is rebuild and 'unstaged' from the the sysroot. The "userdel_sysroot_sstate()" provides that functionality. [YOCTO #9262] Signed-off-by: Maxin B. John <maxin.john@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2016-03-20useradd_base.bbclass: replace retry logic with flockKai Kang1
When perform useradd during populate sysroot, it locks files passwd.lock and group.lock at same time. And then it meets a dead lock issue randomly. Use flock to reslove it by using an universal lock directory for all the user and group related operations. [YOCTO #9022] Signed-off-by: Kai Kang <kai.kang@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com>
2016-02-11classes/useradd: handle whitespace only USERADD/GROUPADD/GROUPMEMSMaciej Borzecki1
Useradd attempts to add users/groups even when {USERADD,GROUPADD,GROUPMEMS}_PARAM is whitespace only. This scenario is possible when variables and modified using one of +=, =+ operator, yet the content being added is conditional (i.e. may depend on PACKAGECONFIG flags). Signed-off-by: Maciej Borzecki <maciej.borzecki@open-rnd.pl> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-07-16classes/useradd: don't read bbnote/bbwarn/bbfatal valuesPaul Eggleton1
Since these functions now log through BitBake's message logging system we must have standalone implementations here. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2015-06-23meta: Add explict getVar param for (non) expansionRichard Purdie1
Rather than just use d.getVar(X), use the more explict d.getVar(X, False) since at some point in the future, having the default of expansion would be nice. This is the first step towards that. This patch was mostly made using the command: sed -e 's:\(getVar([^,()]*\)\s*):\1, False):g' -i `grep -ril getVar *` Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-15useradd.bbclass: Remove base-passwd dependencyLeonardo Sandoval1
shadow-sysroot (another useradd dependency) recipe already includes base-passwd dependency, so removing it from useradd class. This fixes the compilation issue observed when a recipe depends on another where the latter inherits from useradd as in the following scenario: https://bugzilla.yoctoproject.org/show_bug.cgi?id=7724#c0 [Yocto #7724] Signed-off-by: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com>
2015-02-17useradd.bbclass: avoid do_rootfs error for debian package backendChen Qi1
If /etc/login.defs is treated as a configuration file, then we would meet errors at do_rootfs time telling us that useradd/groupadd cannot execute correctly. This is because the dpkg handles config file specially, the login.defs is temporarily renamed as login.defs.dpkg-new. How ubuntu deals the user/group adding problem? They do it at postinst of the package. And, the postinst script of a package would possibly do `chown' of its files or directories. The above strategy is not suitable for OE. Because we do chown in do_install and add user/group in preinst scripts of the packages. That's why we need this patch so that do_rootfs don't fail. Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-11-25useradd.bbclass: set PSEUDO_PASSWD consistent with root directoryPeter A. Bigot1
When installing into a sysroot this class examines $D/etc/passwd for content, then invokes useradd to make changes. Under pseudo useradd attempts to look up user information in directories specified by $PSEUDO_PASSWD. For opkg multilib installs $D is not always the same as $IMAGE_ROOT, and the user might already be in the IMAGE_ROOT files, causing a failure during rootfs population. Fix this by ensuring the files pseudo looks at when doing useradd stuff are the same ones that useradd.bbclass will be manipulating. Signed-off-by: Peter A. Bigot <pab@pabigot.com>
2014-08-29useradd: Add setscene dep on pseudo-nativeJate Sujjavanich1
A recipe will sometimes be rebuilt unnecessarily if it adds users via useradd and the pseudo-native task has not been populated. This patch adds the correct dependency. Signed-off-by: Jate Sujjavanich <jatedev@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-06-06update-rc.d/useradd: Add additional dependeciesSaul Wold1
These dependcies are needed to ensure that thier packages are created correctly since these classes have runtime dependiences in their packages but they are not actually created yet at rootfs time. [YOCTO #6072] Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-03-20useradd{-static}: Ignore useradds on nativesdkMark Hatle1
The code was supposed to ignore both native and nativesdk operations when using the useradd and useradd-static code. However, somewhere along the way the code was dropped. This didn't cause any issues until someone enabled the enforcing mode in the new useradd-static and various nativesdk packages started to fail. Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-02-12meta/recipes: Remove virtclass referencesRichard Purdie1
The virtclass overrides will go away at some point (apart from the multilib one). Change them all to class-xxx instead since people enjoy copy and pasting them. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-02-08useradd.bbclass: Add ability to select a static uid/gid automaticallyMark Hatle1
[YOCTO #5436] Automatic selection of static uid/gid is needed for a dynamically generated passwd and group file to have a deterministic outcome. When a package is installed and instructs the system to add a new user or group, unless it selects a static uid/gid value, the next available uid/gid will be used. The order in which packages are installed is dynamically computed, and may change from one installation to the next. This results in a non-deterministic set of uid/gid values. Enabling this code by adding USERADDEXTENSION = "useradd-staticids", and adding a preconfigured passwd/group file will allow the continued dynamic generation of the rootfs passwd/group files, but will ensure a deterministic outcome. (Dynamic generation is desired so that users and groups that have no corresponding functionality are not present within the final system image.) The rewrite params function will override each of the fields in the useradd and groupadd calls with the values specified. Note, the password field is ignored as is the member groups field in the group file. If the field is empty, the value will not be overridden. (Note, there is no way to 'blank' a field, as this would only generally affect the 'comment' field and there really is no reason to blank it.) Enabling USERADD_ERROR_DYNAMIC will cause packages without static uid/gid to generate an error and be skipped for the purpose of building. This is used to prevent non-deterministic behavior. USERADD_UID_TABLES and USERADD_GID_TABLES may be used to specify the name of the passwd and group files. By default they are assumed to be 'files/passwd' and 'files/group'. Layers are searched in BBPATH order. Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-02-08useradd.bbclass: Fix build time install issuesMark Hatle1
When the system attempts to populate the sysroot's passwd/group files, it does so in a single block. However, with the way it was previously implemented, the system would always run through the code necessary to populate the sysroot, even in the case of target packages. This had the side effect that a cross-installed filesystem may not match a target installed filesystem. The code was slightly reorganized to ensure that the cross/target installed pre-install script behavior is the same. It also moves the block that configures the sysroot parameters to the sysroot specific section of the code. Also some minor validation was occuring even on nativesdk packages. Nativesdk packages should be skipped when processing useradd ops. Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-12-18useradd.bbclass: add dependency on base-filesRoss Burton1
Packages that use useradd.bbclass should have a dependency on base-files so that the /etc/skel directory is populated. Without this dependency base-files may or may not be installed when the postinst runs, and the skel content may or may not be copied. Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-09-06useradd: Handle users from a package being used in othersThomas Fitzsimmons1
If there is a package A (TUNE_PKGARCH) which is depended upon by B which is MACHINE_ARCH and you build B for machine X, then Y, the user isn't present in the sysroot for machine Y since the useradd code is never triggered. The change ensures the code does get triggered and the user is present. [YOCTO 4739] Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-08-20useradd.bbclass: add missing functions to preinstChen Qi1
The preinst scripts are calling bbnote, bbwarn and bbfatal functions, but these functions are not written to the preinst scripts. This patch writes these missing functions to the preinst scripts to avoid the 'not found' errors. Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
2013-07-26useradd.bbclass: fix traceback when inheriting useradd but not setting ↵Ionut Radu1
USERADD_PARAM or GROUPADD_PARAM Replaced bb.build.FuncFailed with bb.fatal [YOCTO #4486] Signed-off-by: Ionut Radu <ionutx.radu@intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
2013-07-22useradd.bbclass: add a new base class and code refactorChen Qi1
Add a new base class, useradd_base.bbclass, which is mainly a collection of basic functions for user/group settings. The useradd_base.bbclass is intended to be inherited by useradd.bbclass and the extrausers.bbclass to avoid code cuplication. [YOCTO #4074] Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
2013-06-27useradd.bbclass: Add members to a groupMikhail Durnev1
useradd.bbclass supports adding new users and new groups. But it does not support adding existing users to existing groups. There is a need of adding users to some groups (e.g. audio). The class was extended to call groupmems utility with arguments passed via GROUPMEMS_PARAM. Signed-off-by: Mikhail Durnev <mikhail_durnev@mentor.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
2013-06-07base/useradd/sstate: Ensure do_package setscene has correct fakeroot ↵Richard Purdie1
dependencies The do_package_setscene task needs to depend on fakeroot in order to correctly install its files. We can whitelist the dependency in the sstate handling code for some performance improvements since we only need this if we're installing the package from sstate. Also use an append operator in base.bbclass for clarity. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-05-09useradd: Use modern join syntaxRichard Purdie1
string.join() is deprecated syntax and doesn't work under python3 so use the modern sytax instead. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-05-09classes: Use modern exception raising syntaxRichard Purdie1
Modern expection rasing syntax is function call format, convert to this to keep python 3 happy and model correct coding style in the core. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-11-02classes: replace virtclass-native(sdk) with class-native(sdk)Robert Yang1
The overrides virtclass-native and virtclass-nativesdk are deprecated, which should be replaced by class-native and class-nativesdk. [YOCTO #3297] Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
2012-07-19Convert tab indentation in python functions into four-spaceRichard Purdie1
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-07-17useradd.bbclass: Fix for multilib buildsRichard Purdie1
The class adds a setscene dependency on base-passwd as well as adds this to DEPENDS. The DEPENDS version will be auso-converted to include MLPREFIX whilst the setscene dependency will not. This result in errors about non-existent tasks. This patch ensures MLPREFIX is added when it is needed and fixes various build failures. Whether we should have two base-passwd recipes in a multilib system is a question which would need to be addressed by future changes. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-04-16Multilib: Fix RDEPENDS in libc-package.bbclass, useradd.bbclass...Zhai Edwin1
MLPREFIX is needed in RDEPENDS for multilib build Signed-off-by: Zhai Edwin <edwin.zhai@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-03-23useradd.bbclass: retry useradd/groupadd commands to avoid lock race issuesScott Garman1
A race condition can occur when adding users and groups to the passwd and group files, causing errors like the following: ERROR: Function 'useradd_sysroot' failed Tried to access "/etc/group" but this was locked. This fix will cause the useradd code to retry the useradd and groupadd commands up to 10 times (with a 1s sleep in between attempts) before failing. This fixes [YOCTO #1794] Signed-off-by: Scott Garman <scott.a.garman@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-03-08shadow-sysroot: Fix for multilibZhai Edwin1
Fix following error in multilib build: "ERROR: Task do_package_setscene depends upon nonexistant task poky/meta/recipes-extended/shadow/shadow-sysroot_4.1.4.3.bb:do_populate_sysroot_setscene" >From richard.purdie@linuxfoundation.org Signed-off-by: Zhai Edwin <edwin.zhai@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-02-24useradd.bbclass: override USERADDSETSCENEDEPS to empty when building cross ↵Otavio Salvador1
packages Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-02-10useradd.bbclass: skip processing on virtclass-cross extended packagesOtavio Salvador1
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
2012-01-27useradd.bbclass: Fix missing quoteRichard Purdie1
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-01-27useradd: Ensure dependencies are only added for target recipes, not native ↵Richard Purdie1
or nativesdk Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-01-27useradd.bbclass: Add explict setscene dependencies to ensure correct ↵Richard Purdie1
ordering of setscene tasks Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-01-27useradd.bbclass: Ensure pseudo can load in the pseudo unloaded caseRichard Purdie1
In the do_populate_sysroot_setscene case, pseudo has been unloaded and we need to reload it. This code change ensures all the pseudo options are specified so pseudo loads correctly. It also improves some of the comments so all the different contexts are listed. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-01-27useradd.bbclass: Execute user addition code before do_package_setscene, not ↵Richard Purdie1
after do_populate_sysroot_setscene The user addition needs to happen before the do_package files are extracted by do_package_setscene since those are the ones we need to preserve the file ownership information for. This patch ensures this happens. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-11-21useradd: Ensure -native recipes don't depend on target recipesRichard Purdie1
Without this change, dbus-native can end up depending upon base-passwd for example. This change mirrors the existing nativesdk code. Based on a patch from Henning Heinold <heinold@inf.fu-berlin.de> but with some additions from me. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-11-10Convert to use direct access to the data store (instead of bb.data.*Var*())Richard Purdie1
This is the result of running the following over the metadata: sed \ -e 's:bb.data.\(setVar([^,()]*,[^,()]*\), *\([^ )]*\) *):\2.\1):g' \ -e 's:bb.data.\(setVarFlag([^,()]*,[^,()]*,[^,()]*\), *\([^) ]*\) *):\2.\1):g' \ -e 's:bb.data.\(getVar([^,()]*\), *\([^(), ]*\) *,\([^)]*\)):\2.\1,\3):g' \ -e 's:bb.data.\(getVarFlag([^,()]*,[^,()]*\), *\([^(), ]*\) *,\([^)]*\)):\2.\1,\3):g' \ -e 's:bb.data.\(getVarFlag([^,()]*,[^,()]*\), *\([^() ]*\) *):\2.\1):g' \ -e 's:bb.data.\(getVar([^,()]*\), *\([^) ]*\) *):\2.\1):g' \ -i `grep -ril bb.data *` Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-11-10useradd: Add missing DEPEND on shadowRichard Purdie1
Without this rootfs generation fails as an RDEPENDS is added but the package might not have bneen built. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-11-10useradd.bbclass: do not modify -nativesdk packagesScott Garman1
Exclude the addition of user/group code and RDEPENDS changes for -nativesdk packages. Signed-off-by: Scott Garman <scott.a.garman@intel.com>
2011-11-10useradd.bbclass: only modify packages in USERADD_PACKAGESScott Garman1
Previously we injected the user/group preinstall script into all output packages. This fixes that so that only packages listed in USERADD_PACKAGES get modified. It also removes the USERADDPN variable, which is no longer needed. Signed-off-by: Scott Garman <scott.a.garman@intel.com>
2011-11-08useradd.bbclass: handle nativesdk caseEric Bénard1
* without this patch, building dbus-nativesdk leads to a missing dependency on 'base-passwd-nativesdk' This was added by commit 46e6c3fa8034b12d178d605f3f5d7efe69671a13 * this patch handle the nativesdk case in the class useradd * close bug 1702 http://bugzilla.pokylinux.org/show_bug.cgi?id=1702 * v2 from Scott Garman with Richard Purdie's tricks Signed-off-by: Eric Bénard <eric@eukrea.com> Signed-off-by: Scott Garman <scott.a.garman@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-11-08useradd.bbclass: fix how RDEPENDS is setupScott Garman1
Fix bug where only packages named PN included base-passwd in RDEPENDS. This fixes [YOCTO #1727] Signed-off-by: Scott Garman <scott.a.garman@intel.com>