xref: /optee_os/scripts/kconfig/kconfiglib/savedefconfig.py (revision c689edbb2550c76ae81dcecab717d82a564b2d7b)
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