summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-09-21README formatting nitUlf Magnusson
2017-09-21Improve README formattingUlf Magnusson
2017-09-21Mention support for non-*nix platformsUlf Magnusson
Given recent issues, some people seem to run Kconfiglib on Windows.
2017-09-21Another README nitUlf Magnusson
2017-09-21README nitUlf Magnusson
2017-09-21Fix minor README nitsUlf Magnusson
2017-09-21Touch up the README a bitUlf Magnusson
- Reorder some things by relevance. - Kinda-sorta officially sanction digging into internals (for expressions anyway). - Be a bit less rambling. - Fix dead link to gen-manual-lists.py. It was removed after the listing was removed from the Buildroot manual.
2017-09-21Massively reduce test suite memory usageUlf Magnusson
Previously we would load all arches once in the beginning and reuse them throughout the test suite. With 36 arches with all symbols evaluated and cached, this used many gigabytes of memory (unless the test suite was run with pypy). Restructure things so that we only keep one arch loaded at a time. This adds some reparsing, but it's not a big deal. Do an ugly piggy-backing of some code cleanup in the test suite (mostly using un-numbered {} with format()).
2017-09-21Use non-numbered {} with format()Ulf Magnusson
Supported since Python 2.7, which is seven years old, plus it was already used in a few spots. Do some minor cleanup in the printing routines at the same time. Also remove dubious string append performance note, where it's more about wanting to pass something mutable anyway.
2017-09-20_parse_properties() nitUlf Magnusson
2017-09-20Simplify 'end_line' handlingUlf Magnusson
No need to set 'end_line_tokens' to None if we use 'end_line' as a flag. Also clarify the comments to make it clear that end_line* is only used for the first line after a block of properties. Also fix comment typo: s/nested functions/nested menus/
2017-09-20Merge T_DEF_BOOL and T_DEF_TRISTATE casesUlf Magnusson
Extend TOKEN_TO_TYPE to map T_DEF_BOOL and T_DEF_TRISTATE to BOOL and TRISTATE as a convenience.
2017-09-20Use tri_greater() where applicableUlf Magnusson
2017-09-20Add support for less/greater than comparisonsUlf Magnusson
Was added upstream in 31847b67 (kconfig: allow use of relations other than (in)equality). Completely unused (and undocumented) in the kernel except for in DEBUG_UART_8250_WORD in arch/arm/Kconfig.debug: depends on DEBUG_UART_8250_SHIFT >= 2 (That line was added before lt/gt support by the way, and assumed a feature that wasn't there.) This change (and the upstream one) also slightly changes how (in)equality comparisons work, making e.g. MY_HEX = 0x00037 evaluate to 'y' if MY_HEX is 0x37. Prior to this change, the strings needed to match exactly.
2017-09-19Add note on tokenization unhandled character hackUlf Magnusson
Isn't needed to be compatible with the latest upstream, but is kept around for compatibility.
2017-09-19File writing nitUlf Magnusson
2017-09-19Simplify dependency propagation for promptsUlf Magnusson
Old version was a bit roundabout.
2017-09-19Include 'if' deps. in _determine_actual_symbols()Ulf Magnusson
Previously, only WEIRD_1 and not WEIRD_2 would be considered not a choice symbol in the following fragment. This lead to a weird warning in U-Boot. choice config FOO config WEIRD_1 depends on FOO if FOO config WEIRD_2 endif endchoice Also add some testcases for weird choice symbols.
2017-09-19Clean up _parse_block() casesUlf Magnusson
Do the block.append() after parsing the complete item. More obvious.
2017-09-19Simplify block parsing logicUlf Magnusson
Require callers to always pass the list to append items to and remove the return values from _parse_file() and _parse_block(). Initialize menu.block and choice.block to [] rather than None.
2017-09-19testsuite: Use platform.uname() instead of os.uname()Ulf Magnusson
Portable to non-Unix platforms.
2017-09-18Try a manual approach for referencing the commitUlf Magnusson
2017-09-18Hopefully make commit link workUlf Magnusson
2017-09-18Add note on running tests with older kernlsUlf Magnusson
2017-09-18Update copyright dateUlf Magnusson
2017-09-18Add 'imply' supportUlf Magnusson
This is like a 'select' that only changes the default value of a symbol, not limiting what values the user can set it to (with one exception: A symbol implied to 'y' can't be set to 'm'). Symbol.get_implied_symbols() was added, corresponding to Symbol.get_selected_symbols(), and Symbol.__str__() was extended to print implied symbols and weak reverse dependencies. Weak reverse dependencies are the 'imply' version of 'select's reverse dependencies.
2017-09-18Force M visibility to N in choices with mode YUlf Magnusson
This mirrors the following kconfig commit. Triggered a few test suite failures for ARM and SH. commit fa64e5f6a35efd5e77d639125d973077ca506074 Author: Dirk Gouders <dirk@gouders.net> Date: Fri Apr 29 10:24:52 2016 +0200 kconfig/symbol.c: handle choice_values that depend on 'm' symbols If choices consist of choice_values of type tristate that depend on symbols set to 'm', those choice_values are not set to 'n' if the choice is changed from 'm' to 'y' (in which case only one active choice_value is allowed). Those values are also written to the config file causing modules to be built when they should not. The following config can be used to reproduce and examine the problem; with the frontend of your choice set "Choice 0" and "Choice 1" to 'm', then set "Tristate Choice" to 'y' and save the configuration: config modules boolean modules default y option modules config dependency tristate "Dependency" default m choice prompt "Tristate Choice" default choice0 config choice0 tristate "Choice 0" config choice1 tristate "Choice 1" depends on dependency endchoice This patch sets tristate choice_values' visibility that depend on symbols set to 'm' to 'n' if the corresponding choice is set to 'y'. This makes them disappear from the choice list and will also cause the choice_values' value set to 'n' in sym_calc_value() and as a result they are written as "not set" to the resulting .config file. Reported-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Dirk Gouders <dirk@gouders.net> Tested-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Tested-by: Roger Quadros <rogerq@ti.com> Signed-off-by: Michal Marek <mmarek@suse.com>
2017-09-08Use platform.uname() instead of os.uname()Ulf Magnusson
Portable to non-Unix platforms.
2017-02-14Add support for the CONFIG_ environment variableChris Dornsife
Makes the prefix used in .config files configurable. Also add pip installation note to README.
2016-08-07Micro-optimize conditional in get_value()Ulf Magnusson
Saves a few source lines as well as bytes of bytecode.
2016-08-06Micro-optimize parse_val_and_cond()Ulf Magnusson
Saves a source line as well as some bytecode. Tuple evaluation is guaranteed to be from left to right: https://docs.python.org/2/reference/expressions.html#evaluation-order
2016-08-06Update yearUlf Magnusson
2016-08-06Micro-optimize some conditionalsUlf Magnusson
Saves a few source lines as well as bytes of bytecode.
2015-12-30Mention the SConf configuration interfaceUlf Magnusson
2015-08-06Fix _parse_block() 'parent' documentation re. ifs.Ulf Magnusson
Ifs do not have an object representation, so 'parent' can never be an if.
2015-07-25Symbol.get_value() style nit.Ulf Magnusson
2015-07-23Add .config header continuation line test.Ulf Magnusson
Mostly to get coverage for _FileFeed.peek_next(), which is only used while reading the header. The tested behavior probably doesn't make much sense for .config files and stems from _FileFeed reuse. It's fairly obscure at least.
2015-07-23Simplify .config header reading tests.Ulf Magnusson
2015-07-23Fix _FileFeed.peek_next() continuation line handling.André Erdmann
Typo - 'res' should be 'line'. Only affected .config header reading.
2015-06-23load_config() only expands existing env. variables.Ulf Magnusson
2015-06-23Be safe against empty .config values.Ulf Magnusson
2015-06-23Ignore '-style quotes in .config files.Ulf Magnusson
This is what the C implementation does, and it simplifies the code a bit.
2015-06-23Add docstring to _expr_val_str().Ulf Magnusson
2015-06-23Remove unused _parse_block() default parameter value.Ulf Magnusson
2015-06-22Access _FileFeed's 'filename' and 'linenr' directly.Ulf Magnusson
Don't bother with the accessors internally as they're unlikely to do anything but return a variable. Direct access shaves a percent or two off parsing.
2015-06-20Make all examples Python 3-friendly.Ulf Magnusson
print -> print(). Skip 'from __future__ import print_function' by only having a single argument (to avoid interpretation as tuples in Python 2). Keeps the examples simple.
2015-06-20Make Config.get_symbols(True) return a list for Python 3.Ulf Magnusson
Was returning a dict_values.
2015-06-20Explain line_feeder in _parse_block()'s docstring.Ulf Magnusson
2015-06-20Rename is_choice_symbol_ to is_choice_sym.Ulf Magnusson
Consistent with other internal names and avoids the collision with the function in a neater way.
2015-06-20Simplify _get_dependent().Ulf Magnusson
- Inline _add_dependent_ignore_siblings(). - Copy the original 'dep' set and add the recursive dependencies to it instead of creating an initially empty set. No discernible performance improvement, but bit neater.