From patchwork Fri Jan 6 09:02:32 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [bitbake-devel,14/16] command.py: add a new API findCoreBaseFiles Date: Fri, 06 Jan 2012 09:02:32 -0000 From: Dongxiao Xu X-Patchwork-Id: 18629 Message-Id: To: bitbake-devel@lists.openembedded.org This new API is to find the available layers in server side. Signed-off-by: Dongxiao Xu --- lib/bb/command.py | 11 +++++++++++ lib/bb/cooker.py | 12 ++++++++++++ lib/bb/event.py | 8 ++++++++ 3 files changed, 31 insertions(+), 0 deletions(-) diff --git a/lib/bb/command.py b/lib/bb/command.py index e52041d..141b51e 100644 --- a/lib/bb/command.py +++ b/lib/bb/command.py @@ -245,6 +245,17 @@ class CommandsAsync: command.finishAsyncCommand() generateTargetsTree.needcache = True + def findCoreBaseFiles(self, command, params): + """ + Find certain files in COREBASE directory. i.e. Layers + """ + subdir = params[0] + filename = params[1] + + command.cooker.findCoreBaseFiles(subdir, filename) + command.finishAsyncCommand() + findCoreBaseFiles.needcache = False + def findConfigFiles(self, command, params): """ Find config files which provide appropriate values diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py index bfd61a9..b02fdd7 100644 --- a/lib/bb/cooker.py +++ b/lib/bb/cooker.py @@ -681,6 +681,18 @@ class BBCooker: if regex in unmatched: collectlog.warn("No bb files matched BBFILE_PATTERN_%s '%s'" % (collection, pattern)) + def findCoreBaseFiles(self, subdir, configfile): + corebase = self.configuration.data.getVar('COREBASE', True) or "" + paths = [] + for root, dirs, files in os.walk(corebase + '/' + subdir): + for d in dirs: + configfilepath = os.path.join(root, d, configfile) + if os.path.exists(configfilepath): + paths.append(os.path.join(root, d)) + + if paths: + bb.event.fire(bb.event.CoreBaseFilesFound(paths), self.configuration.data) + def findConfigFilePath(self, configfile): """ Find the location on disk of configfile and if it exists and was parsed by BitBake diff --git a/lib/bb/event.py b/lib/bb/event.py index d120ba5..ffd4213 100644 --- a/lib/bb/event.py +++ b/lib/bb/event.py @@ -439,6 +439,14 @@ class FilesMatchingFound(Event): self._pattern = pattern self._matches = matches +class CoreBaseFilesFound(Event): + """ + Event when a list of appropriate config files has been generated + """ + def __init__(self, paths): + Event.__init__(self) + self._paths = paths + class ConfigFilesFound(Event): """ Event when a list of appropriate config files has been generated