Skip to contentSkip to conversation

Only return parsed configuration files

PATCH Applied Joshua Lock 2 participants 3 messages Aug 9, 2011 – Aug 10, 2011

lore
Share & tools
lore
#0 lore raw

cover Only return parsed configuration files

This is an updated change to findConfigFilePath which includes review feedback.

The following changes since commit c3827690b9ba3625d1df32d9517efbe13d7d9a1e:

bb/ui/hob: Restore toolchain relevant preference settings for build (2011-08-09 15:19:51 +0100)

are available in the git repository at:
git://github.com/incandescant/bitbake hob
https://github.com/incandescant/bitbake/tree/hob

Joshua Lock (1):
bb/cooker: only emit ConfigFilePathFound for files which were parsed

 lib/bb/cooker.py |   28 ++++++++++++++++++++++++++--
 1 files changed, 26 insertions(+), 2 deletions(-)
Signature · 1 line
1.7.6
#1 lore raw

PATCH 1/1 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]

---
 lib/bb/cooker.py |   28 ++++++++++++++++++++++++++--
 1 files changed, 26 insertions(+), 2 deletions(-)
lib/bb/cooker.py +26 -2
index 6022192..a8edfe7 100644
@@ -609,9 +609,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):
         """
Signature · 1 line
1.7.6
#2 lore raw

Re: [PATCH 1/1] bb/cooker: only emit ConfigFilePathFound for files which were parsed

Quoted 11 lines · Joshua Lock

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]

---
 lib/bb/cooker.py |   28 ++++++++++++++++++++++++++--
 1 files changed, 26 insertions(+), 2 deletions(-)

Merged to master, thanks.

Richard