1*c689edbbSJens Wiklander#!/usr/bin/env python3 2*c689edbbSJens Wiklander 3*c689edbbSJens Wiklander# Copyright (c) 2019, Ulf Magnusson 4*c689edbbSJens Wiklander# SPDX-License-Identifier: ISC 5*c689edbbSJens Wiklander 6*c689edbbSJens Wiklander""" 7*c689edbbSJens WiklanderSaves a minimal configuration file that only lists symbols that differ in value 8*c689edbbSJens Wiklanderfrom their defaults. Loading such a configuration file is equivalent to loading 9*c689edbbSJens Wiklanderthe "full" configuration file. 10*c689edbbSJens Wiklander 11*c689edbbSJens WiklanderMinimal configuration files are handy to start from when editing configuration 12*c689edbbSJens Wiklanderfiles by hand. 13*c689edbbSJens Wiklander 14*c689edbbSJens WiklanderThe default input configuration file is '.config'. A different input filename 15*c689edbbSJens Wiklandercan be passed in the KCONFIG_CONFIG environment variable. 16*c689edbbSJens Wiklander 17*c689edbbSJens WiklanderNote: Minimal configurations can also be generated from within the menuconfig 18*c689edbbSJens Wiklanderinterface. 19*c689edbbSJens Wiklander""" 20*c689edbbSJens Wiklanderimport argparse 21*c689edbbSJens Wiklander 22*c689edbbSJens Wiklanderimport kconfiglib 23*c689edbbSJens Wiklander 24*c689edbbSJens Wiklander 25*c689edbbSJens Wiklanderdef main(): 26*c689edbbSJens Wiklander parser = argparse.ArgumentParser( 27*c689edbbSJens Wiklander formatter_class=argparse.RawDescriptionHelpFormatter, 28*c689edbbSJens Wiklander description=__doc__) 29*c689edbbSJens Wiklander 30*c689edbbSJens Wiklander parser.add_argument( 31*c689edbbSJens Wiklander "--kconfig", 32*c689edbbSJens Wiklander default="Kconfig", 33*c689edbbSJens Wiklander help="Top-level Kconfig file (default: Kconfig)") 34*c689edbbSJens Wiklander 35*c689edbbSJens Wiklander parser.add_argument( 36*c689edbbSJens Wiklander "--out", 37*c689edbbSJens Wiklander metavar="MINIMAL_CONFIGURATION", 38*c689edbbSJens Wiklander default="defconfig", 39*c689edbbSJens Wiklander help="Output filename for minimal configuration (default: defconfig)") 40*c689edbbSJens Wiklander 41*c689edbbSJens Wiklander args = parser.parse_args() 42*c689edbbSJens Wiklander 43*c689edbbSJens Wiklander kconf = kconfiglib.Kconfig(args.kconfig, suppress_traceback=True) 44*c689edbbSJens Wiklander print(kconf.load_config()) 45*c689edbbSJens Wiklander print(kconf.write_min_config(args.out)) 46*c689edbbSJens Wiklander 47*c689edbbSJens Wiklander 48*c689edbbSJens Wiklanderif __name__ == "__main__": 49*c689edbbSJens Wiklander main() 50