aboutsummaryrefslogtreecommitdiffstats
path: root/lib/bb/cache.py
diff options
context:
space:
mode:
authorMark Hatle <Mark.Hatle@windriver.com>2011-03-17 19:10:18 -0400
committerChris Larson <chris_larson@mentor.com>2011-03-18 09:08:57 -0700
commite736fa456dee04cb0d177272c1e1c611b1e119d7 (patch)
treef17c00bd0a7cf979ea57397494331944e4e45110 /lib/bb/cache.py
parentf229824dc9c453adf6067500e2bf6761536e4f2f (diff)
downloadbitbake-e736fa456dee04cb0d177272c1e1c611b1e119d7.tar.gz
runqueue.py: Enable PSEUDO (fakeroot) before the fork
PSEUDO when used as the fakeroot program is usually preloaded into memory, but disabled by default. The trigger for enabling it is a set of environment variables and a fork() or exec*() operation. We need to setup the environment, specifically PSEUDO_DISABLED=0, prior to the fork() so that python tasks can be run under PSEUDO control. This patch is based on the work in Poky primarily from Richard Purdie. See the following Poky commits for detailed history on this change: commit 1f3e313fd5cc5ae8ea838bf8fcdedace3cb72584 Author: Richard Purdie <rpurdie@linux.intel.com> Date: Wed Dec 8 00:08:04 2010 +0000 bitbake Revert bitbake exec() and go back to fork() for performace wins (first draft) Signed-off-by: Richard Purdie <rpurdie@linux.intel.com> commit 52aada2eaf08d57d5f715f155f2d878831dbaab0 Author: Richard Purdie <rpurdie@linux.intel.com> Date: Tue Dec 21 00:51:24 2010 +0000 bitbake/runqueue.py: Somehow the python environment mapping is failing so do it manually Signed-off-by: Richard Purdie <rpurdie@linux.intel.com> commit 1b08a7eb8b708f4d0fc119cf89deb450fa62fea1 Author: Richard Purdie <richard.purdie@linuxfoundation.org> Date: Mon Feb 28 15:31:20 2011 +0000 bitbake/cache/runqueue.py: Move workload for recipe parsing to the child process Parsing the recipe in the parent before forking off the child worker can mean the parent doesn't hit the idle loop and becomes a bottleneck when lauching many short lived processes. The reason we need this in the parent is to figure out the fakeroot environmental options. To address this, add the fakeroot variables to the cache and move recipe loadData into the child task. For a poky-image-sato build this results in about a 2 minute speedup (1.8%). Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Integrated and merged into bitbake upstream Signed-off-by: Mark Hatle <Mark.Hatle@windriver.com> Signed-off-by: Chris Larson <chris_larson@mentor.com>
Diffstat (limited to 'lib/bb/cache.py')
-rw-r--r--lib/bb/cache.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/bb/cache.py b/lib/bb/cache.py
index 421bd7918..2d04ee77c 100644
--- a/lib/bb/cache.py
+++ b/lib/bb/cache.py
@@ -43,7 +43,7 @@ except ImportError:
logger.info("Importing cPickle failed. "
"Falling back to a very slow implementation.")
-__cache_version__ = "137"
+__cache_version__ = "138"
recipe_fields = (
'pn',
@@ -78,6 +78,8 @@ recipe_fields = (
'summary',
'license',
'section',
+ 'fakerootenv',
+ 'fakerootdirs',
)
@@ -172,6 +174,8 @@ class RecipeInfo(namedtuple('RecipeInfo', recipe_fields)):
summary = cls.getvar('SUMMARY', metadata),
license = cls.getvar('LICENSE', metadata),
section = cls.getvar('SECTION', metadata),
+ fakerootenv = cls.getvar('FAKEROOTENV', metadata),
+ fakerootdirs = cls.getvar('FAKEROOTDIRS', metadata),
)
@@ -584,6 +588,8 @@ class CacheData(object):
self.summary = {}
self.license = {}
self.section = {}
+ self.fakerootenv = {}
+ self.fakerootdirs = {}
# Indirect Cache variables (set elsewhere)
self.ignored_dependencies = []
@@ -647,3 +653,5 @@ class CacheData(object):
self.summary[fn] = info.summary
self.license[fn] = info.license
self.section[fn] = info.section
+ self.fakerootenv[fn] = info.fakerootenv
+ self.fakerootdirs[fn] = info.fakerootdirs