Handle the sysroots-components dir when restoring from the sstate cache
cover Handle the sysroots-components dir when restoring from the sstate cache
Similar to the problem with the hosttools directory and the state cache that was recently fixed, there is another problem with the sysroots-components directory. This only affects postinst-useradd scripts, so in this case the fix can be activated from useradd.bbclass rather than sstate.bbclass and thus affects a lot less recipes.
//Peter
The following changes since commit 381897c64069ea43d595380a3ae913bcc79cf7e1:
build-appliance-image: Update to master head revision (2017-05-01 08:56:47 +0100)
are available in the git repository at:
git://git.yoctoproject.org/poky-contrib pkj/components_dir
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=pkj/components_dir
Peter Kjellerstedt (2):
bitbake.conf: Add COMPONENTS_DIR for ${STAGING_DIR}-components useradd.bbclass: Handle COMPONENTS_DIR when restoring state
meta/classes/native.bbclass | 2 +- meta/classes/staging.bbclass | 8 ++++---- meta/classes/useradd.bbclass | 5 +++++ meta/conf/bitbake.conf | 3 ++- meta/lib/oeqa/selftest/devtool.py | 2 +- meta/recipes-core/glibc/glibc-locale.inc | 2 +- meta/recipes-core/glibc/glibc-mtrace.inc | 2 +- meta/recipes-core/glibc/glibc-package.inc | 4 ++-- meta/recipes-core/glibc/glibc-scripts.inc | 2 +- meta/recipes-devtools/gcc/gcc-common.inc | 2 +- meta/recipes-devtools/gcc/gcc-cross-initial.inc | 2 +- meta/recipes-devtools/gcc/gcc-cross.inc | 4 ++-- meta/recipes-devtools/guile/guile_2.0.14.bb | 4 ++-- 13 files changed, 24 insertions(+), 18 deletions(-)
Signature · 1 line
2.12.0
PATCH 1/2 bitbake.conf: Add COMPONENTS_DIR for ${STAGING_DIR}-components
The path to where to install and find the sysroot components is used in many places. This warrants it to get its own variable.
--- meta/classes/native.bbclass | 2 +- meta/classes/staging.bbclass | 6 +++--- meta/conf/bitbake.conf | 3 ++- meta/lib/oeqa/selftest/devtool.py | 2 +- meta/recipes-core/glibc/glibc-locale.inc | 2 +- meta/recipes-core/glibc/glibc-mtrace.inc | 2 +- meta/recipes-core/glibc/glibc-package.inc | 4 ++-- meta/recipes-core/glibc/glibc-scripts.inc | 2 +- meta/recipes-devtools/gcc/gcc-common.inc | 2 +- meta/recipes-devtools/gcc/gcc-cross-initial.inc | 2 +- meta/recipes-devtools/gcc/gcc-cross.inc | 4 ++-- meta/recipes-devtools/guile/guile_2.0.14.bb | 4 ++-- 12 files changed, 18 insertions(+), 17 deletions(-)
meta/classes/native.bbclass +1 -1
@@ -95,7 +95,7 @@ libdir .= "${NATIVE_PACKAGE_PATH_SUFFIX}" libexecdir .= "${NATIVE_PACKAGE_PATH_SUFFIX}" do_populate_sysroot[sstate-inputdirs] = "${SYSROOT_DESTDIR}/${STAGING_DIR_NATIVE}/" -do_populate_sysroot[sstate-outputdirs] = "${STAGING_DIR}-components/${PACKAGE_ARCH}/${PN}" +do_populate_sysroot[sstate-outputdirs] = "${COMPONENTS_DIR}/${PACKAGE_ARCH}/${PN}" # Since we actually install these into situ there is no staging prefix STAGING_DIR_HOST = ""
meta/classes/staging.bbclass +3 -3
@@ -201,8 +201,8 @@ do_populate_sysroot[depends] += "${POPULATESYSROOTDEPS}" SSTATETASKS += "do_populate_sysroot" do_populate_sysroot[cleandirs] = "${SYSROOT_DESTDIR}" do_populate_sysroot[sstate-inputdirs] = "${SYSROOT_DESTDIR}" -do_populate_sysroot[sstate-outputdirs] = "${STAGING_DIR}-components/${PACKAGE_ARCH}/${PN}" -do_populate_sysroot[sstate-fixmedir] = "${STAGING_DIR}-components/${PACKAGE_ARCH}/${PN}" +do_populate_sysroot[sstate-outputdirs] = "${COMPONENTS_DIR}/${PACKAGE_ARCH}/${PN}" +do_populate_sysroot[sstate-fixmedir] = "${COMPONENTS_DIR}/${PACKAGE_ARCH}/${PN}" python do_populate_sysroot_setscene () { sstate_setscene(d)
@@ -442,7 +442,7 @@ python extend_recipe_sysroot() { bb.note("\n".join(msgbuf)) stagingdir = d.getVar("STAGING_DIR") - sharedmanifests = stagingdir + "-components/manifests" + sharedmanifests = d.getVar("COMPONENTS_DIR") + "/manifests" recipesysroot = d.getVar("RECIPE_SYSROOT") recipesysrootnative = d.getVar("RECIPE_SYSROOT_NATIVE") current_variant = d.getVar("BBEXTENDVARIANT")
meta/conf/bitbake.conf +2 -1
@@ -351,6 +351,7 @@ S = "${WORKDIR}/${BP}" B = "${S}" STAGING_DIR = "${TMPDIR}/sysroots" +COMPONENTS_DIR = "${STAGING_DIR}-components" RECIPE_SYSROOT = "${WORKDIR}/recipe-sysroot" RECIPE_SYSROOT_NATIVE = "${WORKDIR}/recipe-sysroot-native"
@@ -655,7 +656,7 @@ SRC_URI = "" # Use pseudo as the fakeroot implementation PSEUDO_LOCALSTATEDIR ?= "${WORKDIR}/pseudo/" PSEUDO_PASSWD ?= "${STAGING_DIR_TARGET}:${PSEUDO_SYSROOT}" -PSEUDO_SYSROOT = "${STAGING_DIR}-components/${BUILD_ARCH}/pseudo-native" +PSEUDO_SYSROOT = "${COMPONENTS_DIR}/${BUILD_ARCH}/pseudo-native" export PSEUDO_DISABLED = "1" #export PSEUDO_PREFIX = "${STAGING_DIR_NATIVE}${prefix_native}" #export PSEUDO_BINDIR = "${STAGING_DIR_NATIVE}${bindir_native}"
meta/lib/oeqa/selftest/devtool.py +1 -1
@@ -294,7 +294,7 @@ class DevtoolTests(DevtoolBase): f.write('\nFILES_${PN}-dev += "${datadir}/cmake/Modules"\n') # We don't have the ability to pick up this dependency automatically yet... f.write('\nDEPENDS += "libusb1"\n') - f.write('\nTESTLIBOUTPUT = "${STAGING_DIR}-components/${TUNE_PKGARCH}/${PN}/${libdir}"\n') + f.write('\nTESTLIBOUTPUT = "${COMPONENTS_DIR}/${TUNE_PKGARCH}/${PN}/${libdir}"\n') # Test devtool build result = runCmd('devtool build libftdi') bb_vars = get_bb_vars(['TESTLIBOUTPUT', 'STAMP'], 'libftdi')
meta/recipes-core/glibc/glibc-locale.inc +1 -1
@@ -66,7 +66,7 @@ DESCRIPTION_localedef = "glibc: compile locale definition files" FILES_${MLPREFIX}glibc-gconv = "${libdir}/gconv/*" FILES_localedef = "${bindir}/localedef" -LOCALETREESRC = "${STAGING_DIR}-components/${PACKAGE_ARCH}/glibc-stash-locale" +LOCALETREESRC = "${COMPONENTS_DIR}/${PACKAGE_ARCH}/glibc-stash-locale" do_install () { mkdir -p ${D}${bindir} ${D}${datadir} ${D}${libdir}
meta/recipes-core/glibc/glibc-mtrace.inc +1 -1
@@ -5,7 +5,7 @@ DESCRIPTION = "mtrace utility provided by glibc" RDEPENDS_${PN} = "perl" RPROVIDES_${PN} = "libc-mtrace" -SRC = "${STAGING_DIR}-components/${PACKAGE_ARCH}/glibc-stash-locale/scripts" +SRC = "${COMPONENTS_DIR}/${PACKAGE_ARCH}/glibc-stash-locale/scripts" do_install() { install -d -m 0755 ${D}${bindir}
meta/recipes-core/glibc/glibc-package.inc +2 -2
@@ -198,8 +198,8 @@ do_stash_locale[dirs] = "${B}" do_stash_locale[cleandirs] = "${LOCALESTASH}" SSTATETASKS += "do_stash_locale" do_stash_locale[sstate-inputdirs] = "${LOCALESTASH}" -do_stash_locale[sstate-outputdirs] = "${STAGING_DIR}-components/${PACKAGE_ARCH}/glibc-stash-locale" -do_stash_locale[sstate-fixmedir] = "${STAGING_DIR}-components/${PACKAGE_ARCH}/glibc-stash-locale" +do_stash_locale[sstate-outputdirs] = "${COMPONENTS_DIR}/${PACKAGE_ARCH}/glibc-stash-locale" +do_stash_locale[sstate-fixmedir] = "${COMPONENTS_DIR}/${PACKAGE_ARCH}/glibc-stash-locale" python do_stash_locale_setscene () { sstate_setscene(d)
meta/recipes-core/glibc/glibc-scripts.inc +1 -1
@@ -4,7 +4,7 @@ SUMMARY = "utility scripts provided by glibc" DESCRIPTION = "utility scripts provided by glibc" RDEPENDS_${PN} = "bash glibc-mtrace" -SRC = "${STAGING_DIR}-components/${PACKAGE_ARCH}/glibc-stash-locale/scripts" +SRC = "${COMPONENTS_DIR}/${PACKAGE_ARCH}/glibc-stash-locale/scripts" bashscripts = "sotruss xtrace"
meta/recipes-devtools/gcc/gcc-common.inc +1 -1
@@ -13,7 +13,7 @@ COMPILERDEP = "virtual/${MLPREFIX}${TARGET_PREFIX}gcc${COMPILERINITIAL}:do_gcc_s COMPILERDEP_class-nativesdk = "virtual/${TARGET_PREFIX}gcc${COMPILERINITIAL}-crosssdk:do_gcc_stash_builddir" python extract_stashed_builddir () { - src = d.expand("${STAGING_DIR}-components/${BUILD_ARCH}/gcc-stashed-builddir${COMPILERINITIAL}-${TARGET_SYS}") + src = d.expand("${COMPONENTS_DIR}/${BUILD_ARCH}/gcc-stashed-builddir${COMPILERINITIAL}-${TARGET_SYS}") dest = d.getVar("B") oe.path.copyhardlinktree(src, dest) staging_processfixme([src + "/fixmepath"], dest, dest, dest, d)
meta/recipes-devtools/gcc/gcc-cross-initial.inc +1 -1
@@ -77,7 +77,7 @@ sysroot_stage_all() { } do_populate_sysroot[sstate-inputdirs] = "${SYSROOT_DESTDIR}/${STAGING_DIR_HOST}/" -do_populate_sysroot[sstate-outputdirs] = "${STAGING_DIR}-components/${PACKAGE_ARCH}/${PN}" +do_populate_sysroot[sstate-outputdirs] = "${COMPONENTS_DIR}/${PACKAGE_ARCH}/${PN}" inherit nopackages
meta/recipes-devtools/gcc/gcc-cross.inc +2 -2
@@ -206,8 +206,8 @@ do_gcc_stash_builddir () { addtask do_gcc_stash_builddir after do_compile before do_install SSTATETASKS += "do_gcc_stash_builddir" do_gcc_stash_builddir[sstate-inputdirs] = "${BUILDDIRSTASH}" -do_gcc_stash_builddir[sstate-outputdirs] = "${STAGING_DIR}-components/${BUILD_ARCH}/gcc-stashed-builddir${COMPILERINITIAL}-${TARGET_SYS}" -do_gcc_stash_builddir[sstate-fixmedir] = "${STAGING_DIR}-components/${BUILD_ARCH}/gcc-stashed-builddir${COMPILERINITIAL}-${TARGET_SYS}" +do_gcc_stash_builddir[sstate-outputdirs] = "${COMPONENTS_DIR}/${BUILD_ARCH}/gcc-stashed-builddir${COMPILERINITIAL}-${TARGET_SYS}" +do_gcc_stash_builddir[sstate-fixmedir] = "${COMPONENTS_DIR}/${BUILD_ARCH}/gcc-stashed-builddir${COMPILERINITIAL}-${TARGET_SYS}" python do_gcc_stash_builddir_setscene () { sstate_setscene(d)
meta/recipes-devtools/guile/guile_2.0.14.bb +2 -2
@@ -111,8 +111,8 @@ guile_cross_config() { # auto-compile into the prefix even if it can write there, so touch them here as # sysroot is managed. SSTATEPOSTINSTFUNCS += "guile_sstate_postinst" -GUILESSTATEDIR = "${STAGING_DIR}-components/${TUNE_PKGARCH}/${PN}/${libdir}/guile/2.0/ccache" -GUILESSTATEDIR_class-native = "${STAGING_DIR}-components/${BUILD_ARCH}/${PN}/${libdir_native}/guile/2.0/ccache" +GUILESSTATEDIR = "${COMPONENTS_DIR}/${TUNE_PKGARCH}/${PN}/${libdir}/guile/2.0/ccache" +GUILESSTATEDIR_class-native = "${COMPONENTS_DIR}/${BUILD_ARCH}/${PN}/${libdir_native}/guile/2.0/ccache" guile_sstate_postinst() { if [ "${BB_CURRENTTASK}" = "populate_sysroot" -o "${BB_CURRENTTASK}" = "populate_sysroot_setscene" ] then
Signature · 1 line
2.12.0
PATCH 2/2 useradd.bbclass: Handle COMPONENTS_DIR when restoring state
In reply to Peter KjellerstedtThe 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.
--- meta/classes/staging.bbclass | 2 +- meta/classes/useradd.bbclass | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-)
meta/classes/staging.bbclass +1 -1
@@ -249,7 +249,7 @@ def staging_processfixme(fixme, target, recipesysroot, recipesysrootnative, d): if not fixme: return cmd = "sed -e 's:^[^/]*/:%s/:g' %s | xargs sed -i -e 's:FIXMESTAGINGDIRTARGET:%s:g; s:FIXMESTAGINGDIRHOST:%s:g'" % (target, " ".join(fixme), recipesysroot, recipesysrootnative) - for fixmevar in ['HOSTTOOLS_DIR', 'PKGDATA_DIR']: + for fixmevar in ['COMPONENTS_DIR', 'HOSTTOOLS_DIR', 'PKGDATA_DIR']: fixme_path = d.getVar(fixmevar) cmd += " -e 's:FIXME_%s:%s:g'" % (fixmevar, fixme_path) bb.note(cmd)
meta/classes/useradd.bbclass +5 -0
@@ -132,6 +132,11 @@ useradd_sysroot () { useradd_preinst } +# The export of PSEUDO in useradd_sysroot() above contains references to +# ${COMPONENTS_DIR}. These need to be handled when restoring +# postinst-useradd-${PN} from the sstate cache. +EXTRA_STAGING_FIXMES += "COMPONENTS_DIR" + python useradd_sysroot_sstate () { task = d.getVar("BB_CURRENTTASK") if task == "package_setscene":
Signature · 1 line
2.12.0