From 432294856418fc40e749552106034b8e14fa5c81 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Thu, 29 Aug 2013 14:27:29 +0100 Subject: [PATCH] bitbake: 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. (Bitbake rev: e86336b3fe245bc97fe74c9b9d6a21d38a536fb7) Signed-off-by: Richard Purdie --- bitbake/lib/bb/cookerdata.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/bitbake/lib/bb/cookerdata.py b/bitbake/lib/bb/cookerdata.py index 8a0bc22247..0b278b178e 100644 --- a/bitbake/lib/bb/cookerdata.py +++ b/bitbake/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.