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): """