aboutsummaryrefslogtreecommitdiff
path: root/scripts/Kconfiglib/savedefconfig.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/Kconfiglib/savedefconfig.py')
-rwxr-xr-xscripts/Kconfiglib/savedefconfig.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/scripts/Kconfiglib/savedefconfig.py b/scripts/Kconfiglib/savedefconfig.py
new file mode 100755
index 0000000..0f36bde
--- /dev/null
+++ b/scripts/Kconfiglib/savedefconfig.py
@@ -0,0 +1,49 @@
+#!/usr/bin/env python3
+
+# Copyright (c) 2019, Ulf Magnusson
+# SPDX-License-Identifier: ISC
+
+"""
+Saves a minimal configuration file that only lists symbols that differ in value
+from their defaults. Loading such a configuration file is equivalent to loading
+the "full" configuration file.
+
+Minimal configuration files are handy to start from when editing configuration
+files by hand.
+
+The default input configuration file is '.config'. A different input filename
+can be passed in the KCONFIG_CONFIG environment variable.
+
+Note: Minimal configurations can also be generated from within the menuconfig
+interface.
+"""
+import argparse
+
+import kconfiglib
+
+
+def main():
+ parser = argparse.ArgumentParser(
+ formatter_class=argparse.RawDescriptionHelpFormatter,
+ description=__doc__)
+
+ parser.add_argument(
+ "--kconfig",
+ default="Kconfig",
+ help="Top-level Kconfig file (default: Kconfig)")
+
+ parser.add_argument(
+ "--out",
+ metavar="MINIMAL_CONFIGURATION",
+ default="defconfig",
+ help="Output filename for minimal configuration (default: defconfig)")
+
+ args = parser.parse_args()
+
+ kconf = kconfiglib.Kconfig(args.kconfig, suppress_traceback=True)
+ print(kconf.load_config())
+ print(kconf.write_min_config(args.out))
+
+
+if __name__ == "__main__":
+ main()