summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/cooker.py
diff options
context:
space:
mode:
authorJoshua Lock <josh@linux.intel.com>2011-06-30 23:02:52 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-07-01 17:17:35 +0100
commit6c36f4a6aa76dbbca4f8c0623955058db34bd1e5 (patch)
tree66aba473c08e3d195fc0cf8c2e86b9d06e805608 /bitbake/lib/bb/cooker.py
parent9fe29fd7db125d8f1295086b003d925c255303f4 (diff)
downloadpoky-6c36f4a6aa76dbbca4f8c0623955058db34bd1e5.tar.gz
cooker|command|event: add new command findFilesMatchingInDir
This command can be used to search each BBPATH for files in the passed directory which have a filename matching the supplied pattern. This is implemented for use from the GUI (to determine the available PACKAGE_CLASSES) but has been written so as to be generically useful and reusable. (Bitbake rev: 2a599812a57cb0b964880a6a2b7548423497ea92) Signed-off-by: Joshua Lock <josh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/cooker.py')
-rw-r--r--bitbake/lib/bb/cooker.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index e537634df8..9874f664b5 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -520,6 +520,29 @@ class BBCooker:
520 path = self._findConfigFile(configfile) 520 path = self._findConfigFile(configfile)
521 bb.event.fire(bb.event.ConfigFilePathFound(path), self.configuration.data) 521 bb.event.fire(bb.event.ConfigFilePathFound(path), self.configuration.data)
522 522
523 def findFilesMatchingInDir(self, filepattern, directory):
524 """
525 Searches for files matching the regex 'pattern' which are children of
526 'directory' in each BBPATH. i.e. to find all rootfs package classes available
527 to BitBake one could call findFilesMatchingInDir(self, 'rootfs_', 'classes')
528 or to find all machine configuration files on could call
529 findFilesMatchingInDir(self, 'conf/machines', 'conf')
530 """
531 import re
532
533 matches = []
534 p = re.compile(re.escape(filepattern))
535 bbpaths = bb.data.getVar('BBPATH', self.configuration.data, True).split(':')
536 for path in bbpaths:
537 dirpath = os.path.join(path, directory)
538 if os.path.exists(dirpath):
539 for root, dirs, files in os.walk(dirpath):
540 for f in files:
541 if p.search(f):
542 matches.append(f)
543
544 bb.event.fire(bb.event.FilesMatchingFound(filepattern, matches), self.configuration.data)
545
523 def findConfigFiles(self, varname): 546 def findConfigFiles(self, varname):
524 """ 547 """
525 Find config files which are appropriate values for varname. 548 Find config files which are appropriate values for varname.