#!/usr/bin/env python3 """See this page for more details: http://dev.chromium.org/chromium-os/how-tos-and-troubleshooting/kernel-configuration """ from __future__ import print_function import os import re import sys allconfigs = {} # Parse config files for config in os.listdir("."): # Only config.* if not config.endswith(".config"): continue allconfigs[config] = set() for line in open(config): m = re.match("#*\s*CONFIG_(\w+)[\s=](.*)$", line) if not m: continue option, value = m.groups() allconfigs[config].add((option, value)) # Split out common config options common = None for config in allconfigs: if common is None: common = allconfigs[config].copy() else: common &= allconfigs[config] for config in allconfigs: allconfigs[config] -= common allconfigs["common.config"] = common # Generate new splitconfigs for config in allconfigs: f = open(config, "w") command = os.path.basename(sys.argv[0]) print("#\n# Config options generated by %s\n#" % command, file=f) for option, value in sorted(list(allconfigs[config])): if value == "is not set": print("# CONFIG_%s %s" % (option, value), file=f) else: print("CONFIG_%s=%s" % (option, value), file=f) f.close()