mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 12:59:02 +02:00
useradd: Fix issues with useradd dependencies
If recipe A requires the useradd actions of recipe B we need to ensure that recipe B is part of the recipe A dependancy chain. In order to do that, we introduce USERADD_DEPENDS. This makes sure that the do_populate_sysroot_setscene of recipe B exists for recipe A in case of a missing TMPDIR. This requires changes made in runqueue.py by RP. This commit along with the runqueue fixes effects: Bug 13419 - recipes that add users to groups cannot rely on other recipes creating those groups (when population from sstate happens) Bug 13904 - do_prepare_recipe_sysroot: postinst-useradd-* does not run in order of dependency and sometimes fails Bug 13279 - Make sure users/groups exist for package_write_* tasks Bug 15084 - For some reason using of same user in two recipes does not work properly I've included the start of self-testing for useradd by adding tests for 13419 (which ends up testing 13904, 13279, 15084 by virtue of them all having the same root cause) (From OE-Core rev: b47f2352376bd16b7e7087b4dab143403e67e094) Signed-off-by: Eilís 'pidge' Ní Fhlannagáin <pidge@baylibre.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
d14eb12deb
commit
ecef665062
32
meta-selftest/recipes-test/selftest-users/creategroup1.bb
Normal file
32
meta-selftest/recipes-test/selftest-users/creategroup1.bb
Normal file
|
@ -0,0 +1,32 @@
|
|||
SUMMARY = "creategroup pt 1"
|
||||
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
|
||||
|
||||
LICENSE = "MIT"
|
||||
|
||||
DEPENDS = "coreutils-native"
|
||||
|
||||
S = "${WORKDIR}"
|
||||
|
||||
inherit useradd allarch
|
||||
|
||||
USERADD_PACKAGES = "${PN}"
|
||||
USERADD_PARAM:${PN} = "-u 5555 --gid grouptest gt1"
|
||||
GROUPADD_PARAM:${PN} = "-r grouptest"
|
||||
|
||||
TESTDIR = "${D}${sysconfdir}/creategroup"
|
||||
|
||||
do_install() {
|
||||
install -d ${TESTDIR}
|
||||
install -d ${TESTDIR}/dir
|
||||
touch ${TESTDIR}/file
|
||||
ln -s ./file ${TESTDIR}/symlink
|
||||
install -d ${TESTDIR}/fifotest
|
||||
mkfifo ${TESTDIR}/fifotest/fifo
|
||||
|
||||
chown gt1:grouptest ${TESTDIR}/file
|
||||
chown -R gt1:grouptest ${TESTDIR}/dir
|
||||
chown -h gt1:grouptest ${TESTDIR}/symlink
|
||||
chown -R gt1:grouptest ${TESTDIR}/fifotest
|
||||
}
|
||||
|
||||
FILES:${PN} = "${sysconfdir}/creategroup/*"
|
33
meta-selftest/recipes-test/selftest-users/creategroup2.bb
Normal file
33
meta-selftest/recipes-test/selftest-users/creategroup2.bb
Normal file
|
@ -0,0 +1,33 @@
|
|||
SUMMARY = "creategroup pt 2"
|
||||
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
|
||||
|
||||
LICENSE = "MIT"
|
||||
|
||||
DEPENDS = "coreutils-native"
|
||||
USERADD_DEPENDS = "creategroup1"
|
||||
|
||||
S = "${WORKDIR}"
|
||||
|
||||
inherit useradd allarch
|
||||
|
||||
USERADD_PACKAGES = "${PN}"
|
||||
USERADD_PARAM:${PN} = "-u 5556 --gid grouptest gt2"
|
||||
|
||||
TESTDIR = "${D}${sysconfdir}/creategroup"
|
||||
|
||||
do_install() {
|
||||
install -d ${TESTDIR}
|
||||
install -d ${TESTDIR}/dir
|
||||
touch ${TESTDIR}/file
|
||||
ln -s ./file ${TESTDIR}/symlink
|
||||
install -d ${TESTDIR}/fifotest
|
||||
mkfifo ${TESTDIR}/fifotest/fifo
|
||||
|
||||
chown gt2:grouptest ${TESTDIR}/file
|
||||
chown -R gt2:grouptest ${TESTDIR}/dir
|
||||
chown -h gt2:grouptest ${TESTDIR}/symlink
|
||||
chown -R gt2:grouptest ${TESTDIR}/fifotest
|
||||
}
|
||||
|
||||
FILES:${PN} = "${sysconfdir}/creategroup/*"
|
||||
|
|
@ -177,9 +177,11 @@ SYSROOT_PREPROCESS_FUNCS += "${SYSROOTFUNC}"
|
|||
|
||||
SSTATEPREINSTFUNCS:append:class-target = " useradd_sysroot_sstate"
|
||||
|
||||
USERADD_DEPENDS ??= ""
|
||||
DEPENDS += "${USERADD_DEPENDS}"
|
||||
do_package_setscene[depends] += "${USERADDSETSCENEDEPS}"
|
||||
do_populate_sysroot_setscene[depends] += "${USERADDSETSCENEDEPS}"
|
||||
USERADDSETSCENEDEPS:class-target = "${MLPREFIX}base-passwd:do_populate_sysroot_setscene pseudo-native:do_populate_sysroot_setscene shadow-native:do_populate_sysroot_setscene ${MLPREFIX}shadow-sysroot:do_populate_sysroot_setscene"
|
||||
USERADDSETSCENEDEPS:class-target = "${MLPREFIX}base-passwd:do_populate_sysroot_setscene pseudo-native:do_populate_sysroot_setscene shadow-native:do_populate_sysroot_setscene ${MLPREFIX}shadow-sysroot:do_populate_sysroot_setscene ${@' '.join(['%s:do_populate_sysroot_setscene' % pkg for pkg in d.getVar("USERADD_DEPENDS").split()])}"
|
||||
USERADDSETSCENEDEPS = ""
|
||||
|
||||
# Recipe parse-time sanity checks
|
||||
|
|
17
meta/lib/oeqa/selftest/cases/usergrouptests.py
Normal file
17
meta/lib/oeqa/selftest/cases/usergrouptests.py
Normal file
|
@ -0,0 +1,17 @@
|
|||
#
|
||||
# Copyright OpenEmbedded Contributors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
from oeqa.selftest.case import OESelftestTestCase
|
||||
from oeqa.utils.commands import bitbake
|
||||
|
||||
class UserGroupTests(OESelftestTestCase):
|
||||
def test_group_from_dep_package(self):
|
||||
self.logger.info("Building creategroup2")
|
||||
bitbake(' creategroup2 creategroup1')
|
||||
bitbake(' creategroup2 creategroup1 -c clean')
|
||||
self.logger.info("Packaging creategroup2")
|
||||
self.assertTrue(bitbake(' creategroup2 -c package'))
|
||||
|
Loading…
Reference in New Issue
Block a user