summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2013-08-29 14:27:29 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-08-30 17:38:27 +0100
commite86336b3fe245bc97fe74c9b9d6a21d38a536fb7 (patch)
treeb491aa95fb8c394e54ff7c8c2e5bf38961270c81
parentb266db27de0bba19a418e4d42e870649136b116b (diff)
downloadbitbake-e86336b3fe245bc97fe74c9b9d6a21d38a536fb7.tar.gz
cookerdata: Allow bblayers.conf to be found using BBPATH
It should be possible to run a build anywhere on the filesystem and have bitbake find the correct build directory if its set somehow. The BBPATH variable makes perfect sense for this usage. Therefore use any available value of BBPATH to search for conf/bblayers.conf before walking the parent directory structure. This restores the option of being able to run bitbake from anywhere if the user has set things up to operate in that environment. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/cookerdata.py23
1 files changed, 15 insertions, 8 deletions
diff --git a/lib/bb/cookerdata.py b/lib/bb/cookerdata.py
index 8a0bc2224..0b278b178 100644
--- a/lib/bb/cookerdata.py
+++ b/lib/bb/cookerdata.py
@@ -177,14 +177,21 @@ def _inherit(bbclass, data):
bb.parse.BBHandler.inherit(bbclass, "configuration INHERITs", 0, data)
return data
-def findConfigFile(configfile):
+def findConfigFile(configfile, data):
+ search = []
+ bbpath = data.getVar("BBPATH", True)
+ if bbpath:
+ for i in bbpath.split(":"):
+ search.append(os.path.join(i, "conf", configfile))
path = os.getcwd()
while path != "/":
- confpath = os.path.join(path, "conf", configfile)
- if os.path.exists(confpath):
- return confpath
-
+ search.append(os.path.join(path, "conf", configfile))
path, _ = os.path.split(path)
+
+ for i in search:
+ if os.path.exists(i):
+ return i
+
return None
class CookerDataBuilder(object):
@@ -225,8 +232,8 @@ class CookerDataBuilder(object):
logger.exception("Error parsing configuration files")
sys.exit(1)
- def _findLayerConf(self):
- return findConfigFile("bblayers.conf")
+ def _findLayerConf(self, data):
+ return findConfigFile("bblayers.conf", data)
def parseConfigurationFiles(self, prefiles, postfiles):
data = self.data
@@ -236,7 +243,7 @@ class CookerDataBuilder(object):
for f in prefiles:
data = parse_config_file(f, data)
- layerconf = self._findLayerConf()
+ layerconf = self._findLayerConf(data)
if layerconf:
parselog.debug(2, "Found bblayers.conf (%s)", layerconf)
# By definition bblayers.conf is in conf/ of TOPDIR.