From 786033f53cad2a196ae6f3a05574148578ea3894 Mon Sep 17 00:00:00 2001 From: Joshua Lock Date: Tue, 9 Aug 2011 09:23:36 -0700 Subject: bb/cooker: only emit ConfigFilePathFound for files which were parsed When the requested configuration file is found on disk check the against the configuration files in __depends/__base_depends to ensure the file was parsed before emitting the ConfigFilePathFound event. If the requested file wasn't parsed just return (and don't emit). Fixes [YOCTO #1246] (Bitbake rev: 705d14d1e1108e0544c7eab827f1242f0839add9) Signed-off-by: Joshua Lock Signed-off-by: Richard Purdie --- bitbake/lib/bb/cooker.py | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) (limited to 'bitbake/lib') diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index 4c13d32b47..46b42e6a69 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py @@ -615,9 +615,33 @@ class BBCooker: collectlog.warn("No bb files matched BBFILE_PATTERN_%s '%s'" % (collection, pattern)) def findConfigFilePath(self, configfile): + """ + Find the location on disk of configfile and if it exists and was parsed by BitBake + emit the ConfigFilePathFound event with the path to the file. + """ path = self._findConfigFile(configfile) - if path: - bb.event.fire(bb.event.ConfigFilePathFound(path), self.configuration.data) + if not path: + return + + # Generate a list of parsed configuration files by searching the files + # listed in the __depends and __base_depends variables with a .conf suffix. + conffiles = [] + dep_files = bb.data.getVar('__depends', self.configuration.data) or set() + dep_files.union(bb.data.getVar('__base_depends', self.configuration.data) or set()) + + for f in dep_files: + if f[0].endswith(".conf"): + conffiles.append(f[0]) + + _, conf, conffile = path.rpartition("conf/") + match = os.path.join(conf, conffile) + # Try and find matches for conf/conffilename.conf as we don't always + # have the full path to the file. + for cfg in conffiles: + if cfg.endswith(match): + bb.event.fire(bb.event.ConfigFilePathFound(path), + self.configuration.data) + break def findFilesMatchingInDir(self, filepattern, directory): """ -- cgit v1.2.3-54-g00ecf