76 lines
1.8 KiB
Python
76 lines
1.8 KiB
Python
# Prints the menu tree of the configuration. Dependencies between symbols can
|
|
# sometimes implicitly alter the menu structure (see kconfig-language.txt), and
|
|
# that's implemented too.
|
|
#
|
|
# Note: See the Kconfig.node_iter() function as well, which provides a simpler
|
|
# interface for walking the menu tree.
|
|
#
|
|
# Usage:
|
|
#
|
|
# $ make [ARCH=<arch>] scriptconfig SCRIPT=Kconfiglib/examples/print_tree.py
|
|
#
|
|
# Example output:
|
|
#
|
|
# ...
|
|
# config HAVE_KERNEL_LZO
|
|
# config HAVE_KERNEL_LZ4
|
|
# choice
|
|
# config KERNEL_GZIP
|
|
# config KERNEL_BZIP2
|
|
# config KERNEL_LZMA
|
|
# config KERNEL_XZ
|
|
# config KERNEL_LZO
|
|
# config KERNEL_LZ4
|
|
# config DEFAULT_HOSTNAME
|
|
# config SWAP
|
|
# config SYSVIPC
|
|
# config SYSVIPC_SYSCTL
|
|
# config POSIX_MQUEUE
|
|
# config POSIX_MQUEUE_SYSCTL
|
|
# config CROSS_MEMORY_ATTACH
|
|
# config FHANDLE
|
|
# config USELIB
|
|
# config AUDIT
|
|
# config HAVE_ARCH_AUDITSYSCALL
|
|
# config AUDITSYSCALL
|
|
# config AUDIT_WATCH
|
|
# config AUDIT_TREE
|
|
# menu "IRQ subsystem"
|
|
# config MAY_HAVE_SPARSE_IRQ
|
|
# config GENERIC_IRQ_LEGACY
|
|
# config GENERIC_IRQ_PROBE
|
|
# ...
|
|
|
|
import sys
|
|
|
|
from kconfiglib import Kconfig, Symbol, Choice, MENU, COMMENT
|
|
|
|
|
|
def indent_print(s, indent):
|
|
print(indent*" " + s)
|
|
|
|
|
|
def print_items(node, indent):
|
|
while node:
|
|
if isinstance(node.item, Symbol):
|
|
indent_print("config " + node.item.name, indent)
|
|
|
|
elif isinstance(node.item, Choice):
|
|
indent_print("choice", indent)
|
|
|
|
elif node.item == MENU:
|
|
indent_print('menu "{}"'.format(node.prompt[0]), indent)
|
|
|
|
elif node.item == COMMENT:
|
|
indent_print('comment "{}"'.format(node.prompt[0]), indent)
|
|
|
|
|
|
if node.list:
|
|
print_items(node.list, indent + 2)
|
|
|
|
node = node.next
|
|
|
|
|
|
kconf = Kconfig(sys.argv[1])
|
|
print_items(kconf.top_node, 0)
|