* [PATCH] Add FAKEROOTNOENV variable
@ 2011-11-08 22:19 Richard Purdie
0 siblings, 0 replies; only message in thread
From: Richard Purdie @ 2011-11-08 22:19 UTC (permalink / raw)
To: bitbake-devel
Add a FAKEROOTNOENV which does the opposite of the FAKEROOTENV variable
and is data loaded into the environment for tasks without the fakeroot
flag.
The intent here is to provide a way to control the environment when we
aren't needing fakeroot context which allows us to unload the preload
from memory entirely and gain a valuable speedup.
I'm not 100% happy with needing this at the bitbake level, particularly
with the cache hit but it does give a valuable speedup.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
diff --git a/lib/bb/cache.py b/lib/bb/cache.py
index d495f9e..fe35e13 100644
--- a/lib/bb/cache.py
+++ b/lib/bb/cache.py
@@ -143,6 +143,7 @@ class CoreRecipeInfo(RecipeInfoCommon):
self.section = self.getvar('SECTION', metadata)
self.fakerootenv = self.getvar('FAKEROOTENV', metadata)
self.fakerootdirs = self.getvar('FAKEROOTDIRS', metadata)
+ self.fakerootnoenv = self.getvar('FAKEROOTNOENV', metadata)
@classmethod
def init_cacheData(cls, cachedata):
@@ -178,6 +179,7 @@ class CoreRecipeInfo(RecipeInfoCommon):
cachedata.license = {}
cachedata.section = {}
cachedata.fakerootenv = {}
+ cachedata.fakerootnoenv = {}
cachedata.fakerootdirs = {}
def add_cacheData(self, cachedata, fn):
@@ -243,6 +245,7 @@ class CoreRecipeInfo(RecipeInfoCommon):
cachedata.license[fn] = self.license
cachedata.section[fn] = self.section
cachedata.fakerootenv[fn] = self.fakerootenv
+ cachedata.fakerootnoenv[fn] = self.fakerootnoenv
cachedata.fakerootdirs[fn] = self.fakerootdirs
diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py
index 9a1bad7..7a39d89 100644
--- a/lib/bb/runqueue.py
+++ b/lib/bb/runqueue.py
@@ -1096,6 +1096,12 @@ class RunQueueExecute:
logger.debug(2, 'Running %s:%s under fakeroot, fakedirs: %s' %
(fn, taskname, ', '.join(fakedirs)))
+ else:
+ envvars = (self.rqdata.dataCache.fakerootnoenv[fn] or "").split()
+ for key, value in (var.split('=') for var in envvars):
+ envbackup[key] = os.environ.get(key)
+ os.environ[key] = value
+ fakeenv[key] = value
sys.stdout.flush()
sys.stderr.flush()
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2011-11-08 22:25 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-08 22:19 [PATCH] Add FAKEROOTNOENV variable Richard Purdie
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.