summaryrefslogtreecommitdiffstats
path: root/meta/classes/useradd.bbclass
Commit message (Collapse)AuthorAgeFilesLines
* useradd: Ensure do_populate_sysroot has dependency on useradd variablesRichard Purdie2019-06-011-0/+1
| | | | | | | | | | | | | | | The do_populate_sysroot task doesn't rerun if you change any of the USERADD_PARAM or GROUPADD_PARAM variables, only do_package will. If another task depends on the recipe, this means it won't see any updated changes. This patch adds in the missing vardeps ensuring the code is deterministic. [YOCTO #13232] (From OE-Core rev: 37d0382a3c67f47f8cfdd977a041069bf912b8c3) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd: Fix build architecture corruption of sstate artefactsRichard Purdie2019-05-311-2/+4
| | | | | | | | | | | | | | | | | | | | When mixing aarch64 and x86_64 host builds with common sstate, useradd failures were found. This was due to references to: /home/pokybuild/yocto-worker/qemuarm/build/build/tmp/sysroots-components/aarch64/pseudo-native/usr/bin/pseudo or /home/pokybuild/yocto-worker/qemuarm/build/build/tmp/sysroots-components/x86_64/pseudo-native/usr/bin/pseudo on the wrong architecture within the useradd postinst files. Instead of using COMPONENTS_DIR as the FIXME, use PSEUDO_SYSROOT which contains the arch component as well to avoid this. Add extra comments to cause the relavent sstate to be rebuilt. (From OE-Core rev: 0384622f72a6c0bd8225cf06f692340fdef67d4a) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd.bbclass: print a warn when useradd not foundRobert Yang2017-11-071-0/+1
| | | | | | | | | | | Exit quietly makes it very hard for debugging when user is not added as expected, print a warning helps a lot. (From OE-Core rev: 057885ed6f22781960bce4e082e3aa96e126764c) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* staging.bbclass: handle postinst-useradd-* fixmesMikko Ylinen2017-10-071-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | After 02457ef7f600ce954874e2d11e74b1c6daaa3bfc, PSEUDO for postinst-useradd-* scripts get to use only one PSEUDO_LOCALSTATEDIR which is set under recipes ${WORKDIR}. When the those scripts are run in a clean build environment that is built from the sstate (populate_sysroot_setscene run for postinst-useradd-* providers), pseudo fails to run because it cannot access the PSEUDO_LOCALSTATEDIR (recipe ${WORKDIR}s do not exist). This triggers a sysroot staging error. Previously, the PSEUDO_LOCALSTATEDIR setting in useradd.bbclass worked because the RSS sstate/staging logic automagically processed ${STAGING_DIR_TARGET} in postinst-useradd-* scripts to point under the sysroot being built. The fix uses the same fixme processing by adding PSEUDO_LOCALSTATEDIR variable to it. Furthermore, LOGFIFO is added to be able to use the logging fifo of the recipe that actually runs postinst-useradd-*. (From OE-Core rev: b28374cfad37db161b5ac5953b4a4638912f3f27) Signed-off-by: Mikko Ylinen <mikko.ylinen@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd.bbclass: Unify writing of script file in useradd_sysroot_sstate()Peter Kjellerstedt2017-09-181-6/+3
| | | | | | | | | | | There were two identical code blocks for writing the postinst-useradd-${PN} scripts. This combines them into one. (From OE-Core rev: 0c4259dd3c74d81f20b87417cecb1e636365ce10) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd: don't override pseudo environmentRoss Burton2017-09-181-1/+1
| | | | | | | | | | | | | | | | Back in the dark days before recipe-specific-sysroots the paths being passed in this manual construction of the pseudo environment made sense, but now they're incorrect and result in pseudo writing to two different databases during a single build. The result is that pseudo doesn't follow changes to /etc/passwd in the sysroot, and warns in the logs. Remove the PSEUDO_LOCALSTATEDIR assignment and inherit the correct assignment in FAKEROOTENV. (From OE-Core rev: 02457ef7f600ce954874e2d11e74b1c6daaa3bfc) Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd: remove preinst script referring to recipe sysrootMaxin B. John2017-05-111-1/+1
| | | | | | | | | | | | | | | | Remove recipe-specific-sysroot details from the preinst scripts generated by useradd.bbclass. This was added to match the default from bitbake.conf. Unlike the default case, the dependencies used by useradd mean that a default passwd/group file is always present. This means we don't need the native sysroot fallback. Fixes [YOCTO #11460] (From OE-Core rev: dfc9323c1cd7814989766be5bd1861fbaa739d2d) Signed-off-by: Maxin B. John <maxin.john@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd.bbclass: Handle COMPONENTS_DIR when restoring statePeter Kjellerstedt2017-05-111-0/+5
| | | | | | | | | | | The export of PSEUDO in useradd_sysroot() contains references to ${COMPONENTS_DIR}. These need to be handled when restoring postinst-useradd-${PN} from the sstate cache. (From OE-Core rev: 097875bc9ab9d60a452b01ac6825775983684d68) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* base-passwd/useradd: Various improvements to useradd with RSSRichard Purdie2017-04-141-0/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently there are multiple issues with useradd: * If base-passwd rebuilds, it wipes out recipe specific user/group additions to sysroots and causes errors * If recipe A adds a user and recipe B depends on A, it can't see any of the users/groups A adds. This patch changes base-passwd so it always works as a postinst script within the sysroot and copies in the master files, then runs any postinst-useradd-* scripts afterwards to add additional user/groups. The postinst-useradd-* scripts are tweaked so that if /etc/passwd doesn't exist they just exit, knowning they'll be executed later. We also add a dummy entry to the dummy passwd file from pseudo so we can avoid this too. There is a problem where if recipe A adds a user and recipe B depends on A but doesn't care about users, it may not have a dependency on the useradd/groupadd tools which would therefore not be available in B's sysroot. We therefore also tweak postinst-useradd-* scripts so that if the tools aren't present we simply don't add users. If you need the users, you add a dependency on the tools in the recipe and they'll be added. We add postinst-* to SSTATE_SCAN_FILES since almost any postinst script of this kind is going to need relocation help. We also ensure that the postinst-useradd script is written into the sstate object as the current script was only being added in a recipe local way. Thanks to Peter Kjellerstedt <pkj@axis.com> and Patrick Ohly for some pieces of this patch. [Yocto #11124] (From OE-Core rev: 1b5afaf437f7a1107d4edca8eeb668b9618a5488) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd.bbclass: drop obsolete codeMaxin B. John2017-03-081-32/+0
| | | | | | | | | | | Cleanup useradd class by removing the code made obsolete by the introduction of Recipe Specific Sysroot. (From OE-Core rev: 2c126e704ebb58afc0d79fe220dc370e09d6bfd5) Signed-off-by: Maxin B. John <maxin.john@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* Switch to Recipe Specific SysrootsRichard Purdie2017-01-231-13/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch is comparatively large and invasive. It does only do one thing, switching the system to build using recipe specific sysroots and where changes could be isolated from it, that has been done. With the current single sysroot approach, its possible for software to find things which aren't in their dependencies. This leads to a determinism problem and is a growing issue in several of the market segments where OE makes sense. The way to solve this problem for OE is to have seperate sysroots for each recipe and these will only contain the dependencies for that recipe. Its worth noting that this is not task specific sysroots and that OE's dependencies do vary enormously by task. This did result in some implementation challenges. There is nothing stopping the implementation of task specific sysroots at some later point based on this work but that as deemed a bridge too far right now. Implementation details: * Rather than installing the sysroot artefacts into a combined sysroots, they are now placed in TMPDIR/sysroot-components/PACKAGE_ARCH/PN. * WORKDIR/recipe-sysroot and WORKDIR/recipe-sysroot-native are built by hardlinking in files from the sysroot-component trees. These new directories are known as RECIPE_SYSROOT and RECIPE_SYSROOT_NATIVE. * This construction is primarily done by a new do_prepare_recipe_sysroot task which runs before do_configure and consists of a call to the extend_recipe_sysroot function. * Other tasks need things in the sysroot before/after this, e.g. do_patch needs quilt-native and do_package_write_deb needs dpkg-native. The code therefore inspects the dependencies for each task and adds extend_recipe_sysroot as a prefunc if it has populate_sysroot dependencies. * We have to do a search/replace 'fixme' operation on the files installed into the sysroot to change hardcoded paths into the correct ones. We create a fixmepath file in the component directory which lists the files which need this operation. * Some files have "postinstall" commands which need to run against them, e.g. gdk-pixbuf each time a new loader is added. These are handled by adding files in bindir with the name prefixed by "postinst-" and are run in each sysroot as its created if they're present. This did mean most sstate postinstalls have to be rewritten but there shouldn't be many of them. * Since a recipe can have multiple tasks and these tasks can run against each other at the same time we have to have a lock when we perform write operations against the sysroot. We also have to maintain manifests of what we install against a task checksum of the dependency. If the checksum changes, we remove its files and then add the new ones. * The autotools logic for filtering the view of m4 files is no longer needed (and was the model for the way extend_recipe_sysroot works). * For autotools, we used to build a combined m4 macros directory which had both the native and target m4 files. We can no longer do this so we use the target sysroot as the default and add the native sysroot as an extra backup include path. If we don't do this, we'd have to build target pkg-config before we could built anything using pkg-config for example (ditto gettext). Such dependencies would be painful so we haven't required that. * PKDDATA_DIR was moved out the sysroot and works as before using sstate to build a hybrid copy for each machine. The paths therefore changed, the behaviour did not. * The ccache class had to be reworked to function with rss. * The TCBOOTSTRAP sysroot for compiler bootstrap is no longer needed but the -initial data does have to be filtered out from the main recipe sysroots. Putting "-initial" in a normal recipe name therefore remains a bad idea. * The logic in insane needed tweaks to deal with the new path layout, as did the debug source file extraction code in package.bbclass. * The logic in sstate.bbclass had to be rewritten since it previously only performed search and replace on extracted sstate and we now need this to happen even if the compiled path was "correct". This in theory could cause a mild performance issue but since the sysroot data was the main data that needed this and we'd have to do it there regardless with rss, I've opted just to change the way the class for everything. The built output used to build the sstate output is now retained and installed rather than deleted. * The search and replace logic used in sstate objects also seemed weak/incorrect and didn't hold up against testing. This has been rewritten too. There are some assumptions made about paths, we save the 'proper' search and replace operations to fixmepath.cmd but then ignore this. What is here works but is a little hardcoded and an area for future improvement. * In order to work with eSDK we need a way to build something that looks like the old style sysroot. "bitbake build-sysroots" will construct such a sysroot based on everything in the components directory that matches the current MACHINE. It will allow transition of external tools and can built target or native variants or both. It also supports a clean task. I'd suggest not relying on this for anything other than transitional purposes though. To see XXX in that sysroot, you'd have to have built that in a previous bitbake invocation. * pseudo is run out of its components directory. This is fine as its statically linked. * The hacks for wayland to see allarch dependencies in the multilib case are no longer needed and can be dropped. * wic needed more extensive changes to work with rss and the fixes are in a separate commit series * Various oe-selftest tweaks were needed since tests did assume the location to binaries and the combined sysroot in several cases. * Most missing dependencies this work found have been sent out as separate patches as they were found but a few tweaks are still included here. * A late addition is that extend_recipe_sysroot became multilib aware and able to populate multilib sysroots. I had hoped not to have to add that complexity but the meta-environment recipe forced my hand. That implementation can probably be neater but this is on the list of things to cleanup later at this point. In summary, the impact people will likely see after this change: * Recipes may fail with missing dependencies, particularly native tools like gettext-native, glib-2.0-native and libxml2.0-native. Some hosts have these installed and will mask these errors * Any recipe/class using SSTATEPOSTINSTFUNCS will need that code rewriting into a postinst * There was a separate patch series dealing with roots postinst native dependency issues. Any postinst which expects native tools at rootfs time will need to mark that dependency with PACKAGE_WRITE_DEPS. There could well be other issues. This has been tested repeatedly against our autobuilders and oe-selftest and issues found have been fixed. We believe at least OE-Core is in good shape but that doesn't mean we've found all the issues. Also, the logging is a bit chatty at the moment. It does help if something goes wrong and goes to the task logfiles, not the console so I've intentionally left this like that for now. We can turn it down easily enough in due course. (From OE-Core rev: 809746f56df4b91af014bf6a3f28997d6698ac78) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd: Add PACKAGE_WRITE_DEPS for postinstRichard Purdie2017-01-201-0/+1
| | | | | | | | The postinstall needs shadow-native, mark the dependency (From OE-Core rev: f3140f9c9cb8ff7ea29d0b77a9bfac419a216cf4) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* meta: remove True option to getVar callsJoshua Lock2016-12-161-11/+11
| | | | | | | | | | | | | getVar() now defaults to expanding by default, thus remove the True option from getVar() calls with a regex search and replace. Search made with the following regex: getVar ?\(( ?[^,()]*), True\) (From OE-Core rev: 7c552996597faaee2fbee185b250c0ee30ea3b5f) Signed-off-by: Joshua Lock <joshua.g.lock@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd.bbclass: Use bb.fatal() instead of raising FuncFailedUlf Magnusson2016-10-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | 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. (From OE-Core rev: 21969c3d1397e0a11a8cb9dad8ce3469ee655f57) Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd: do not delete users and groups during configureJoe Slater2016-09-141-1/+1
| | | | | | | | | | | | 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. (From OE-Core rev: 936150306cb13022edcadf862947c357932e80ee) Signed-off-by: Joe Slater <jslater@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd.bblass: Simplify target overridesUlf Magnusson2016-08-251-23/+9
| | | | | | | | | | | | | | | 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. (From OE-Core rev: 79dd6be736211a722538a1234337ca16fefd5540) Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd.bbclass: Fix delete user/group when more than one itemMariano Lopez2016-08-011-8/+14
| | | | | | | | | | | | | | 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] (From OE-Core rev: da191d5c139a6b400d1b8fe246912b081dd18176) Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd: Fix infinite build loopRichard Purdie2016-05-231-6/+6
| | | | | | | | | | | | 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. (From OE-Core rev: d6241e4c94a0a72acfc57e96a59918c0b2146d65) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd.bbclass: Strip trailing ';' in cmd paramsKhem Raj2016-05-191-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | 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. (From OE-Core rev: e8d4356c38e3c2aacd6dc49231c73bcb7d597308) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd: use bindir_native for pseudo PATHMartin Jansa2016-05-191-2/+2
| | | | | | | | | | * 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 (From OE-Core rev: 96189e71a86c0f4833e8e51d678208fd908bfe30) Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd.bbclass: remove user/group created by the package in clean* taskMaxin B. John2016-04-061-0/+29
| | | | | | | | | | | | | | | | 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] (From OE-Core rev: b5304ce438666a7418746f4ddd32703ae3188089) Signed-off-by: Maxin B. John <maxin.john@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd_base.bbclass: replace retry logic with flockKai Kang2016-03-201-3/+3
| | | | | | | | | | | | | | | | | 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] (From OE-Core rev: 2ebf697b46c42cee8bfa6d2e6087397f8cce385c) Signed-off-by: Kai Kang <kai.kang@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/useradd: handle whitespace only USERADD/GROUPADD/GROUPMEMSMaciej Borzecki2016-02-111-3/+3
| | | | | | | | | | | | | 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). (From OE-Core rev: 466288d528cce5f9887d765a757af64c9cc6be03) Signed-off-by: Maciej Borzecki <maciej.borzecki@open-rnd.pl> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/useradd: don't read bbnote/bbwarn/bbfatal valuesPaul Eggleton2015-07-161-3/+3
| | | | | | | | | | Since these functions now log through BitBake's message logging system we must have standalone implementations here. (From OE-Core rev: dd7449114a33c92a2877b1a6f875d812b10856ff) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* meta: Add explict getVar param for (non) expansionRichard Purdie2015-06-231-5/+5
| | | | | | | | | | | | | | 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 *` (From OE-Core rev: ab7c1d239b122c8e549e8112c88fd46c9e2b061b) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd.bbclass: Remove base-passwd dependencyLeonardo Sandoval2015-05-161-1/+1
| | | | | | | | | | | | | | | | | | | 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] (From OE-Core rev: a68a797c7aec607a0720ec5421baf6be821803b8) Signed-off-by: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd.bbclass: avoid do_rootfs error for debian package backendChen Qi2015-02-171-0/+10
| | | | | | | | | | | | | | | | | | | | | | | 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. (From OE-Core rev: d98e5ec575f542b3afaabd96b07ae9a21e1c22f4) Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd.bbclass: set PSEUDO_PASSWD consistent with root directoryPeter A. Bigot2014-11-251-0/+2
| | | | | | | | | | | | | | | | | 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. (From OE-Core rev: ec3417ad825c52f5137d38b91d8fcb4637a50f4c) Signed-off-by: Peter A. Bigot <pab@pabigot.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd: Add setscene dep on pseudo-nativeJate Sujjavanich2014-08-291-1/+1
| | | | | | | | | | | | 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. (From OE-Core rev: 2bb244e9e18124b3b86195e0e10b2ebd40cd4f81) Signed-off-by: Jate Sujjavanich <jatedev@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* update-rc.d/useradd: Add additional dependeciesSaul Wold2014-06-061-1/+1
| | | | | | | | | | | | | 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] (From OE-Core rev: bba835fed88c3bd5bb5bd58962034aef57c408d8) Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd{-static}: Ignore useradds on nativesdkMark Hatle2014-03-211-2/+4
| | | | | | | | | | | | | 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. (From OE-Core rev: 6b9705892400a1da1fcd973c64d1911c7c4463f6) Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* meta/recipes: Remove virtclass referencesRichard Purdie2014-02-131-4/+4
| | | | | | | | | 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. (From OE-Core rev: d1c073d2813bd913617990cd047507353ea0c09e) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd.bbclass: Add ability to select a static uid/gid automaticallyMark Hatle2014-02-091-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [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. (From OE-Core rev: 18c99dac52b746b88cd084eb4c2a2ef0329a6ff3) Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd.bbclass: Fix build time install issuesMark Hatle2014-02-091-6/+15
| | | | | | | | | | | | | | | | | | | | | | 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. (From OE-Core rev: 99fd0f14fd774c9194f62795e6023880e3aa5612) Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd.bbclass: add dependency on base-filesRoss Burton2013-12-181-0/+2
| | | | | | | | | | | | 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. (From OE-Core rev: 556368ba8a1f933a86b69be024bd0711d4bfe0a3) Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd: Handle users from a package being used in othersThomas Fitzsimmons2013-09-061-1/+2
| | | | | | | | | | | | | | | 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] (From OE-Core rev: 5871337da49f8cd1eaf53f7cd0aacc026dc7bcdb) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd.bbclass: add missing functions to preinstChen Qi2013-08-201-0/+3
| | | | | | | | | | | | | | 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. (From OE-Core rev: ed45f00ef76d189611cda2cb922fa7eb8f86d9cc) Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd.bbclass: fix traceback when inheriting useradd but not setting ↵Ionut Radu2013-07-291-1/+1
| | | | | | | | | | | | | | USERADD_PARAM or GROUPADD_PARAM Replaced bb.build.FuncFailed with bb.fatal [YOCTO #4486] (From OE-Core rev: be6d0f398404e4566d4fac145c745899909117f1) Signed-off-by: Ionut Radu <ionutx.radu@intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd.bbclass: add a new base class and code refactorChen Qi2013-07-241-91/+8
| | | | | | | | | | | | | | | | 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] (From OE-Core rev: 2a57bb7e9a7e154578aa7cb9aeebdf398a54ec00) Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd.bbclass: Add members to a groupMikhail Durnev2013-06-281-5/+63
| | | | | | | | | | | | | | 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. (From OE-Core rev: 6b3bd34bf8c5e511bccfbb64bdd1236e1e7576e3) Signed-off-by: Mikhail Durnev <mikhail_durnev@mentor.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* base/useradd/sstate: Ensure do_package setscene has correct fakeroot ↵Richard Purdie2013-06-071-1/+1
| | | | | | | | | | | | | | | | | 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. (From OE-Core rev: 0810ea2a72bdea67a3d8002c4e12fb20f45cf1d5) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd: Use modern join syntaxRichard Purdie2013-05-091-1/+1
| | | | | | | | | string.join() is deprecated syntax and doesn't work under python3 so use the modern sytax instead. (From OE-Core rev: 402d652edf79bcfe1eaf1a3b55ad1177d1e3ee85) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes: Use modern exception raising syntaxRichard Purdie2013-05-091-2/+2
| | | | | | | | | Modern expection rasing syntax is function call format, convert to this to keep python 3 happy and model correct coding style in the core. (From OE-Core rev: f4b382754603d3f1caa13824bcc8d06b568bbc59) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes: replace virtclass-native(sdk) with class-native(sdk)Robert Yang2012-11-021-8/+8
| | | | | | | | | | | | | The overrides virtclass-native and virtclass-nativesdk are deprecated, which should be replaced by class-native and class-nativesdk. [YOCTO #3297] (From OE-Core rev: 9fbeab63315fef0dbcc91c5e7051665764758a6e) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* Convert tab indentation in python functions into four-spaceRichard Purdie2012-07-191-43/+43
| | | | | | (From OE-Core rev: 604d46c686d06d62d5a07b9c7f4fa170f99307d8) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd.bbclass: Fix for multilib buildsRichard Purdie2012-07-171-1/+1
| | | | | | | | | | | | | | 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. (From OE-Core rev: 22dff7f36e985f9f7275b47e874147bc7bdc9473) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* Multilib: Fix RDEPENDS in libc-package.bbclass, useradd.bbclass...Zhai Edwin2012-04-161-1/+2
| | | | | | | | | MLPREFIX is needed in RDEPENDS for multilib build (From OE-Core rev: 380efadd5640e5b57e710549b1ae761d0d3b3792) Signed-off-by: Zhai Edwin <edwin.zhai@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd.bbclass: retry useradd/groupadd commands to avoid lock race issuesScott Garman2012-03-231-2/+34
| | | | | | | | | | | | | | | | | | | 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] (From OE-Core rev: 68c589f1b5ee36f0aff151b728447ffdae14622c) Signed-off-by: Scott Garman <scott.a.garman@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* shadow-sysroot: Fix for multilibZhai Edwin2012-03-081-1/+1
| | | | | | | | | | | | | 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 (From OE-Core rev: 5de2c22fb42c12783abc090a81f10db9eb39732f) Signed-off-by: Zhai Edwin <edwin.zhai@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* useradd.bbclass: override USERADDSETSCENEDEPS to empty when building cross ↵Otavio Salvador2012-02-241-0/+1
| | | | | | | | | packages (From OE-Core rev: 5650eb44ea28c87f2f87ea3c5a557b9f08d58775) Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>