# Kconfiglib # A Python library for doing stuff with Kconfig-based configuration systems. Can extract information, query and set symbol values, and read and write .config files. Highly compatible with the scripts/kconfig/\*conf utilities in the kernel, usually invoked via make targets such as menuconfig and defconfig. ## Installation ## Installation instructions for the Linux kernel (in the kernel root): > $ git clone git://github.com/ulfalizer/Kconfiglib.git > $ git am Kconfiglib/makefile.patch (Note: The directory name Kconfiglib/ is significant.) In addition to creating a handy interface, the make targets are needed to pick up environment variables set in the kernel makefiles which are referenced in the Kconfig files (ARCH, SRCARCH, and KERNELVERSION as of Linux 3.7.0). Please tell me if the patch does not apply. It should be trivial to apply manually. ## Documentation ## The (extensive) documentation is generated by running > $ pydoc kconfiglib in the Kconfiglib/ directory. For HTML output, use > $ pydoc -w kconfiglib ## Examples ## The examples/ directory contains simple example programs that make use of Kconfiglib. See the documentation for how to run them. ## Test suite ## The test suite is run with > $ python Kconfiglib/testsuite.py It comprises a set of selftests and a set of compatibility tests that compare configurations generated by Kconfiglib with configurations generated by scripts/kconfig/conf for a number of cases. You might want to use the "speedy" option; see testsuite.py. ## Misc. notes ## Please tell me if you miss some API instead of digging into internals. The internal data structures and APIs, and dependency stuff in particular, are unlikely to be exactly what you want as a user (hence why they're internal :). Patches are welcome too of course. ;) Note: To make the API more consistent and intuitive, some methods have been renamed as follows:
| From | To |
|---|---|
| Symbol.calc_value() | Symbol.get_value() |
| Choice.calc_mode() | Choice.get_mode() |
| Symbol.set_value() | Symbol.set_user_value() |
| Choice.get_actual_items() | Choice.get_symbols() |
| Symbol.is_choice_item() | Symbol.is_choice_symbol() |
| Symbol.reset() | Symbol.unset_user_value() |
| Config.reset() | Config.unset_user_values() |
| Menu.get_depends_on_visibility() | Menu.get_visibility() |