summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlf Magnusson <ulfalizer@gmail.com>2019-03-20 18:14:01 +0100
committerUlf Magnusson <ulfalizer@gmail.com>2019-03-20 18:29:18 +0100
commitb7a1ea66d273a4594ee3644be52718310ee100f6 (patch)
tree5a0de537c83c27e7ac18067f23841d12dd63cbb9
parent9eda760c3dda5dd4ee48d448cc6aae5cd431284b (diff)
savedefconfig: Add script
Minimal configuration files can already be generated from within the menuconfig too, but having a script available can be handy for scripting.
-rw-r--r--README.rst5
-rwxr-xr-xsavedefconfig.py47
-rw-r--r--setup.py2
3 files changed, 53 insertions, 1 deletions
diff --git a/README.rst b/README.rst
index 5ecae68..2063610 100644
--- a/README.rst
+++ b/README.rst
@@ -54,7 +54,8 @@ installed with e.g.
Microsoft Windows is supported.
The ``pip`` installation will give you both the base library and the following
-executables. All but two mirror functionality available in the C tools.
+executables. All but two (``genconfig`` and ``setconfig``) mirror functionality
+available in the C tools.
- `menuconfig <https://github.com/ulfalizer/Kconfiglib/blob/master/menuconfig.py>`_
@@ -62,6 +63,8 @@ executables. All but two mirror functionality available in the C tools.
- `olddefconfig <https://github.com/ulfalizer/Kconfiglib/blob/master/olddefconfig.py>`_
+- `savedefconfig <https://github.com/ulfalizer/Kconfiglib/blob/master/savedefconfig.py>`_
+
- `alldefconfig <https://github.com/ulfalizer/Kconfiglib/blob/master/alldefconfig.py>`_
- `allnoconfig <https://github.com/ulfalizer/Kconfiglib/blob/master/allnoconfig.py>`_
diff --git a/savedefconfig.py b/savedefconfig.py
new file mode 100755
index 0000000..19a403b
--- /dev/null
+++ b/savedefconfig.py
@@ -0,0 +1,47 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2019, Ulf Magnusson
+# SPDX-License-Identifier: ISC
+
+import argparse
+
+import kconfiglib
+
+
+def main():
+ parser = argparse.ArgumentParser(
+ formatter_class=argparse.RawDescriptionHelpFormatter,
+ description="""
+Saves a minimal configuration file that only lists symbols that differ in value
+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.
+""")
+
+ parser.add_argument(
+ "--kconfig",
+ default="Kconfig",
+ help="Base Kconfig file (default: Kconfig)")
+
+ parser.add_argument(
+ "--out",
+ default="defconfig",
+ help="Output filename for minimal configuration (default: defconfig)")
+
+ args = parser.parse_args()
+
+ kconf = kconfiglib.Kconfig(args.kconfig)
+ kconf.load_config()
+ kconf.write_min_config(args.out)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/setup.py b/setup.py
index fd85c50..8400256 100644
--- a/setup.py
+++ b/setup.py
@@ -29,6 +29,7 @@ setuptools.setup(
"genconfig",
"oldconfig",
"olddefconfig",
+ "savedefconfig",
"alldefconfig",
"allnoconfig",
"allmodconfig",
@@ -45,6 +46,7 @@ setuptools.setup(
"genconfig = genconfig:main",
"oldconfig = oldconfig:_main",
"olddefconfig = olddefconfig:main",
+ "savedefconfig = savedefconfig:main",
"alldefconfig = alldefconfig:main",
"allnoconfig = allnoconfig:main",
"allmodconfig = allmodconfig:main",