[kernel-team] 01/01: kconfigeditor2: Read menus and config for every enabled featureset

debian-kernel at lists.debian.org debian-kernel at lists.debian.org
Fri May 5 03:27:01 UTC 2017


This is an automated email from the git hooks/post-receive script.

benh pushed a commit to branch master
in repository kernel-team.

commit fde911831ea68e57f9b2579460bc358845656483
Author: Ben Hutchings <ben at decadent.org.uk>
Date:   Fri May 5 04:24:32 2017 +0100

    kconfigeditor2: Read menus and config for every enabled featureset
---
 utils/kconfigeditor2/kconfigeditor/package.py | 35 +++++++++++++++------------
 utils/kconfigeditor2/process.py               |  9 ++++++-
 2 files changed, 27 insertions(+), 17 deletions(-)

diff --git a/utils/kconfigeditor2/kconfigeditor/package.py b/utils/kconfigeditor2/kconfigeditor/package.py
index cc0419f..f1f1548 100644
--- a/utils/kconfigeditor2/kconfigeditor/package.py
+++ b/utils/kconfigeditor2/kconfigeditor/package.py
@@ -5,20 +5,27 @@ from .kconfig.config import File
 
 
 class PackageFile(object):
-    def __init__(self, key, kernelarch, file):
+    def __init__(self, key, kernelarch, featureset, file):
         self.keys = set(key)
         self.kernelarches = kernelarch and set((kernelarch,)) or set()
+        self.featuresets = featureset and set((featureset,)) or set()
         self.file = file
 
-    def add(self, key, kernelarch):
+    def add(self, key, kernelarch, featureset):
         self.keys.add(key)
         self.kernelarches.add(kernelarch)
+        self.featuresets.add(featureset)
 
     @property
     def kernelarch(self):
         if len(self.kernelarches) == 1:
             return list(self.kernelarches)[0]
 
+    @property
+    def featureset(self):
+        if len(self.featuresets) == 1:
+            return list(self.featuresets)[0]
+
 
 class Package(dict):
     def __init__(self, root):
@@ -36,17 +43,17 @@ class Package(dict):
         self.config_root = os.path.join(root, "debian/config")
         self.config = module.ConfigCoreHierarchy(config_schema, (self.config_root, ))
 
-        for filename, key, kernelarch in self._collect():
+        for filename, key, kernelarch, featureset in self._collect():
             if filename in self:
                 data = self[filename]
-                data.add(key, kernelarch)
+                data.add(key, kernelarch, featureset)
             else:
                 file = File(name=os.path.join(self.config_root, filename))
-                self[filename] = PackageFile(key, kernelarch, file)
+                self[filename] = PackageFile(key, kernelarch, featureset, file)
 
     def _collect(self):
         for filename in self._check_config('config'):
-            yield filename, (), None
+            yield filename, (), None, None
 
         for arch in self.config['base',]['arches']:
             for data in self._collect_arch(arch):
@@ -62,20 +69,16 @@ class Package(dict):
         kernelarch = config_entry.get('kernel-arch')
 
         for filename in self._check_config("%s/config" % arch, arch):
-            yield filename, key, kernelarch
+            yield filename, key, kernelarch, None
 
         for filename in self._check_config("kernelarch-%s/config" % kernelarch, arch):
-            yield filename, key, kernelarch
+            yield filename, key, kernelarch, None
 
         for featureset in self.config['base', arch].get('featuresets', ()):
             for data in self._collect_featureset(arch, featureset):
                 yield data
 
     def _collect_featureset(self, arch, featureset):
-        # TODO
-        if featureset != 'none':
-            return
-
         config_entry = self.config.merge('base', arch, featureset)
 
         if not config_entry.get('enabled', True):
@@ -85,9 +88,9 @@ class Package(dict):
         kernelarch = config_entry.get('kernel-arch')
 
         for filename in self._check_config("featureset-%s/config" % featureset, None, featureset):
-            yield filename, key, kernelarch
+            yield filename, key, kernelarch, featureset
         for filename in self._check_config("%s/%s/config" % (arch, featureset), arch, featureset):
-            yield filename, key, kernelarch
+            yield filename, key, kernelarch, featureset
 
         for flavour in self.config['base', arch, featureset]['flavours']:
             for data in self._collect_flavour(arch, featureset, flavour):
@@ -103,9 +106,9 @@ class Package(dict):
         kernelarch = config_entry.get('kernel-arch')
 
         for filename in self._check_config("%s/config.%s" % (arch, flavour), arch, None, flavour):
-            yield filename, key, kernelarch
+            yield filename, key, kernelarch, featureset
         for filename in self._check_config("%s/%s/config.%s" % (arch, featureset, flavour), arch, featureset, flavour):
-            yield filename, key, kernelarch
+            yield filename, key, kernelarch, featureset
 
     def _check_config_default(self, f):
         if os.path.exists(os.path.join(self.config_root, f)):
diff --git a/utils/kconfigeditor2/process.py b/utils/kconfigeditor2/process.py
index c4675da..b7dbdce 100755
--- a/utils/kconfigeditor2/process.py
+++ b/utils/kconfigeditor2/process.py
@@ -11,9 +11,16 @@ class Main(object):
         from kconfigeditor.package import Package
 
         package = Package(package)
-        menu = All(source, package.kernelarches)
+        fs_menu = {'none': All(source, package.kernelarches)}
 
         for filename, data in package.items():
+            featureset = data.featureset
+            try:
+                menu = fs_menu[featureset or 'none']
+            except KeyError:
+                menu = fs_menu[featureset] = All('%s/debian/build/source_%s' %
+                                                 (source, featureset),
+                                                 package.kernelarches)
             kernelarch = data.kernelarch
             if kernelarch:
                 menufiles = menu.arch(kernelarch)

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/kernel/kernel-team.git



More information about the Kernel-svn-changes mailing list