summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2010-10-22 13:00:40 +0100
committerRichard Purdie <rpurdie@linux.intel.com>2010-10-22 13:00:40 +0100
commit36f1ae42fe13dae174b7fb5eb85dc49d7d7b516b (patch)
tree0bf129fbd24cc21652ffa387400b4925c24218f9
parent00a96a20995cefacc52e10559029de32941ecf6e (diff)
downloadast2050-yocto-poky-36f1ae42fe13dae174b7fb5eb85dc49d7d7b516b.zip
ast2050-yocto-poky-36f1ae42fe13dae174b7fb5eb85dc49d7d7b516b.tar.gz
pseudo/fakeroot: Move the pseudo directory creation into bitbake
If sstate was used to accelerate a build, the pseudo directory might not have been created leading to subsequent task failures. Also, sstate packages were not being installed under pseudo context meaning file permissions could have been lost. Fix these problems by creating a FAKEROOTDIRS variable which bitbake ensures exists before running tasks and running the appropriate setscene tasks under fakeroot context. Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
-rw-r--r--bitbake/lib/bb/runqueue.py4
-rw-r--r--meta/classes/base.bbclass1
-rw-r--r--meta/classes/package.bbclass2
-rw-r--r--meta/classes/package_deb.bbclass1
-rw-r--r--meta/classes/package_ipk.bbclass1
-rw-r--r--meta/classes/package_rpm.bbclass1
-rw-r--r--meta/conf/bitbake.conf1
7 files changed, 10 insertions, 1 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index 0d80a69..0a319d2 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -1066,6 +1066,10 @@ class RunQueueExecute:
for var in envvars:
comps = var.split("=")
env[comps[0]] = comps[1]
+ fakedirs = (the_data.getVar("FAKEROOTDIRS", True) or "").split()
+ for p in fakedirs:
+ bb.mkdirhier(p)
+ bb.msg.debug(2, bb.msg.domain.RunQueue, "Running %s:%s under fakeroot, state dir is %s" % (fn, taskname, fakedirs))
env['BB_TASKHASH'] = self.rqdata.runq_hash[task]
env['PATH'] = self.cooker.configuration.initial_path
diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
index f540b58..feee524 100644
--- a/meta/classes/base.bbclass
+++ b/meta/classes/base.bbclass
@@ -135,7 +135,6 @@ python base_do_setscene () {
bb.build.make_stamp("do_setscene", d)
}
do_setscene[selfstamp] = "1"
-do_setscene[dirs] = "${PSEUDO_LOCALSTATEDIR}"
addtask setscene before do_fetch
addtask fetch
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index b64ff5d..a35fbb2 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -1096,6 +1096,8 @@ python do_package_setscene () {
sstate_setscene(d)
}
addtask do_package_setscene
+do_package_setscene[fakeroot] = "1"
+
# Dummy task to mark when all packaging is complete
do_package_write () {
diff --git a/meta/classes/package_deb.bbclass b/meta/classes/package_deb.bbclass
index 0efef67..2f0d78d 100644
--- a/meta/classes/package_deb.bbclass
+++ b/meta/classes/package_deb.bbclass
@@ -273,6 +273,7 @@ python do_package_write_deb_setscene () {
sstate_setscene(d)
}
addtask do_package_write_deb_setscene
+do_package_write_deb_setscene[fakeroot] = "1"
python () {
if bb.data.getVar('PACKAGES', d, True) != '':
diff --git a/meta/classes/package_ipk.bbclass b/meta/classes/package_ipk.bbclass
index cac0453..e93d7e2 100644
--- a/meta/classes/package_ipk.bbclass
+++ b/meta/classes/package_ipk.bbclass
@@ -317,6 +317,7 @@ python do_package_write_ipk_setscene () {
sstate_setscene(d)
}
addtask do_package_write_ipk_setscene
+do_package_write_ipk_setscene[fakeroot] = "1"
python () {
if bb.data.getVar('PACKAGES', d, True) != '':
diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass
index 0af93e7..4ad97c3 100644
--- a/meta/classes/package_rpm.bbclass
+++ b/meta/classes/package_rpm.bbclass
@@ -556,6 +556,7 @@ python do_package_write_rpm_setscene () {
sstate_setscene(d)
}
addtask do_package_write_rpm_setscene
+do_package_write_rpm_setscene[fakeroot] = "1"
python do_package_write_rpm () {
bb.build.exec_func("read_subpackage_metadata", d)
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index 33a6fad..13c8f86 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -546,6 +546,7 @@ SRC_URI = "file://${FILE}"
PSEUDO_LOCALSTATEDIR ?= "${WORKDIR}/pseudo/"
FAKEROOT = "PSEUDO_PREFIX=${STAGING_DIR_NATIVE}${prefix_native} PSEUDO_LOCALSTATEDIR=${PSEUDO_LOCALSTATEDIR} PSEUDO_NOSYMLINKEXP=1 pseudo"
FAKEROOTENV = "PSEUDO_PREFIX=${STAGING_DIR_NATIVE}${prefix_native} PSEUDO_LOCALSTATEDIR=${PSEUDO_LOCALSTATEDIR} PSEUDO_NOSYMLINKEXP=1 LD_PRELOAD=libpseudo.so LD_LIBRARY_PATH=${STAGING_LIBDIR_NATIVE}/pseudo/lib64:${STAGING_LIBDIR_NATIVE}/pseudo/lib"
+FAKEROOTDIRS = "${PSEUDO_LOCALSTATEDIR}"
PREFERRED_PROVIDER_virtual/fakeroot-native ?= "pseudo-native"
OpenPOWER on IntegriCloud