From b7a1ea66d273a4594ee3644be52718310ee100f6 Mon Sep 17 00:00:00 2001 From: Ulf Magnusson Date: Wed, 20 Mar 2019 18:14:01 +0100 Subject: 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. --- README.rst | 5 ++++- savedefconfig.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ setup.py | 2 ++ 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100755 savedefconfig.py 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 `_ @@ -62,6 +63,8 @@ executables. All but two mirror functionality available in the C tools. - `olddefconfig `_ +- `savedefconfig `_ + - `alldefconfig `_ - `allnoconfig `_ 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", -- cgit v1.2.3