summaryrefslogtreecommitdiff
path: root/cleopatre/buildroot
diff options
context:
space:
mode:
Diffstat (limited to 'cleopatre/buildroot')
-rwxr-xr-xcleopatre/buildroot/target/device/Spidcom/desc.py56
1 files changed, 55 insertions, 1 deletions
diff --git a/cleopatre/buildroot/target/device/Spidcom/desc.py b/cleopatre/buildroot/target/device/Spidcom/desc.py
index 6bea840a6f..fb1c569271 100755
--- a/cleopatre/buildroot/target/device/Spidcom/desc.py
+++ b/cleopatre/buildroot/target/device/Spidcom/desc.py
@@ -40,6 +40,59 @@ class DirListGenerator(GeneratorBase):
print(line)
+class KconfigGenerator(GeneratorBase):
+
+ class ConfigLine(object):
+ def __init__(self, line):
+ self.line = line
+ self.symbol = None
+ self.overwritten = False
+
+ def _parse_config_line(self, line):
+ config_line = KconfigGenerator.ConfigLine(line)
+
+ m = re.match(r"(?P<symbol>\w+)=.*$", line)
+ if not m:
+ m = re.match(r"# (?P<symbol>\w+) is not set$", line)
+ if m:
+ config_line.symbol = m.group("symbol")
+
+ return config_line
+
+ def _add_symbol(self, new_config_line):
+ found = False
+ for (i, config_line) in enumerate(self.config):
+ if config_line.symbol == new_config_line.symbol:
+ found = True
+ break
+ if found:
+ if self.config[i].overwritten:
+ raise RuntimeError(
+ "Multiple overwrite of symbol {0}.".format(
+ self.config[i].symbol))
+ self.config[i] = new_config_line
+ self.config[i].overwritten = True
+ else:
+ self.config.append(new_config_line)
+
+ def _add_config_part(self, config_part):
+ for line in open(config_part).readlines():
+ config_line = self._parse_config_line(line)
+ if config_line.symbol:
+ self._add_symbol(config_line)
+ else:
+ self.config.append(config_line)
+
+ def __init__(self):
+ self.config = []
+
+ def _add(self, ingredient):
+ self._add_config_part(ingredient)
+
+ def _print_output(self):
+ for config_line in self.config:
+ print(config_line.line, end='')
+
def get_recipe(desc, gen):
recipe = []
found = False
@@ -79,7 +132,8 @@ def main(args):
help="list possible values for --gen")
(options, args) = parser.parse_args()
- generators = { "target_skeleton": DirListGenerator }
+ generators = { "linux26.config": KconfigGenerator,
+ "target_skeleton": DirListGenerator }
if options.list_gen:
for generator in sorted(generators.keys()):