summaryrefslogtreecommitdiff
path: root/kconfiglib.py
AgeCommit message (Collapse)Author
2018-01-18Fix 'source "missing"' error message for Python 3Ulf Magnusson
IOError() generates an OSError in Python 3.6. OSError does not have a 'message' attribute, which caused the following error when trying to add the hint re. environment variables (the rest of the message was still displayed): AttributeError: 'OSError' object has no attribute 'message' Use str(exception) instead, which seems to work for both Python 2 and Python 3.
2018-01-18Clarify when symbols get the default n valueUlf Magnusson
"Active user value" might have been a bit unclear. The symbol needs to be visible.
2018-01-18Rearrange _T_(MENU)CONFIG parsing codeUlf Magnusson
Bit neater.
2018-01-17Fix some typosUlf Magnusson
2018-01-17Detect recursive 'source' and print backtraceUlf Magnusson
Easier to debug than a RecursionError. Point out in the exception message that a common cause is environment variables not being set correctly.
2018-01-16Move _rec_invalidate_if_has_prompt() to after _rec_invalidate()Ulf Magnusson
2018-01-16Roll invalidation logic into _is_user_assignable()Ulf Magnusson
And rename it to _rec_invalidate_if_has_prompt(). Always used in this way in practice.
2018-01-16_tokenize() non-constant symbol parsing style nitUlf Magnusson
Saves a tiny bit of bytecode too.
2018-01-16Fix lying implementation commentsUlf Magnusson
Implicit submenus are created after parsing, in _finalize_tree(), so the parent can never be a symbol in _parse_block().
2018-01-16Reset _tokens_i just once in _tokenize()Ulf Magnusson
It's set to -1 in every return path, so we can just do it at the beginning instead.
2018-01-16Do not optimize promptless choice symbolsUlf Magnusson
Choice symbols without prompts are pointless and probably nonexistent in practice, so it's a bit silly to run the no-prompt optimization for them. Piggyback copyright year update.
2018-01-15Use a neater style when returning cached valuesUlf Magnusson
Saves a tiny bit of bytecode too.
2018-01-15Simplify non-bool/tristate return in tri_value()Ulf Magnusson
Already know the value.
2018-01-15Remove redundant backslashUlf Magnusson
2018-01-15Get rid of 'keyword' assignment in _tokenize()Ulf Magnusson
Also switch to a faster local lookup for the second _T_HELP. Micro-optimization -- shaves a % or two of the _tokenize() runtime. We expect a token for valid Kconfig files, so the naming is still fine.
2018-01-15Support disabling warnings for redundant assignmentsSebastian Bøe
The Linux Kernel's merge_config.sh defaults to disabling warnings for redundant assignments and has support for enabling them specifically. This patch reproduces this behaviour in kconfiglib except that we retaing kconfiglib's default behaviour of enabling the warnings. Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
2018-01-11Mention that $CONFIG_ is used for C headers tooUlf Magnusson
Piggyback some cleanup and redundant comment removal.
2018-01-05Iterate over defined_syms in write_autoconf()Ulf Magnusson
Simpler. I realized there's actually no need to follow the node pointers, since menus and comments never generate output.
2018-01-05Formatting and comment nitsUlf Magnusson
2018-01-05Don't write out 'option env' symbols to C headerUlf Magnusson
Oversight. SYMBOL_AUTO (env_var) being set indirectly clears SYMBOL_WRITE (_write_to_conf) in sym_calc_value(). The .config case was already fine due to an explicit env_var check. Even non-visible env. symbols ended up in the header, due to 'option env' internally adding a default. Disallow user values altogether on 'option env' symbols, even if specified manually. This matches the C implementation. Add a warning too.
2018-01-05Implement autoconf.h generationCarles Cufi
Implement the generation of the C header file that mirrors the .config files, commonly named autoconf.h. Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2017-12-15Make it clear that makefile.patch needs -p1Ulf Magnusson
Not passing -p1 causes the root Makefile to be patched instead of scripts/kconfig/Makefile, as discovered in https://github.com/ulfalizer/Kconfiglib/issues/32.
2017-11-27Fix typo in comment: s/T_IF/_T_IF/Ulf Magnusson
2017-11-26Fix _lookup_sym() docstring typoUlf Magnusson
s/_parsing_configs/_parsing_kconfigs/
2017-11-24Simplify _T_IF choice checkUlf Magnusson
Already have the parent in 'parent'.
2017-11-18Fix typo in commentUlf Magnusson
Rephrase it a bit too.
2017-11-18Tokenize in _next_line()Ulf Magnusson
Fetching the next line is always followed by tokenization in practice (outside of help texts), so things can be simplified a bit. Return True/False to indicate EOF instead of returning the line.
2017-11-17Check for type first when parsing propertiesUlf Magnusson
Most common case. Make it cheap by storing the list of type tokens separately instead of building the tuple each time through. Shaves a few % off the runtime for property parsing.
2017-11-17Simplify _parse_properties() loopUlf Magnusson
2017-11-13Micro-optimize Symbol.__init__() a bitUlf Magnusson
Chained assignments turn a bunch of LOAD_CONSTs into DUP_TOPs. Shaves ~10% off the runtime of _lookup_sym(). Do the same for Choice.__init__(), just for consistency. Remove an accidental duplicated assigment to 'defaults' too.
2017-11-13Add a Choice._get_selection() helperUlf Magnusson
Similar to _get_assignable(). Cleaner than setting the cached value at every 'return'.
2017-11-12Simplify licensingUlf Magnusson
IANAL, but hopefully this should be enough. Don't bundle the license file. Might be easier to work with if just kconfiglib.py is copied.
2017-11-12Make 'option env' parsing sanerUlf Magnusson
The previous version would accept stuff like 'option env defconfig_list', due to how the tests were laid out.
2017-11-11Remove more accidental RST formatting in docstringUlf Magnusson
2017-11-11Remove outdated choice invalidation commentUlf Magnusson
The invalidation is necessary now that no global invalidation is done before loading a .config.
2017-11-11Micro-optimize write_config() a bitUlf Magnusson
Shaves a few % in line_profiler with no loss in readability. Menus and comments are rare relatively speaking (~10% of all items written out for alldefconfig), so optimize for the symbol case.
2017-11-11Rename _already_written to _writtenUlf Magnusson
Bit less redundant.
2017-11-11Get rid of _get_config_strings()Ulf Magnusson
Not needed anymore. Just write the .config lines out directly. Saves creating the temporary list. No detectable performance difference, positive or negative.
2017-11-10Remove accidental RST formatting in docstringUlf Magnusson
2017-11-10Fix misleading invalidation commentUlf Magnusson
Avoiding global invalidation is much faster. There was just a lot of redundant invalidation for promptless symbols going on when the comment was first written.
2017-11-10Fix a few typosUlf Magnusson
Clean up some formatting a bit too.
2017-11-10Simplify m->y visibility promotionUlf Magnusson
Can use the magic .type attribute to check for modules being disabled. Also remove note about infinite recursion. Pretty sure anything that would cause infinite recursion here would be a proper circular dependency (like MODULES depending on m).
2017-11-09Reenable accidentally disabled no-prompt warningUlf Magnusson
Warnings for assignments to promptless symbols should be enabled directly after Kconfig parsing. Braino from inverting the meaning of the flag earlier. The flag got properly reset after loading a .config.
2017-11-09Remove left-over misleading property commentUlf Magnusson
Versions of properties without parent dependencies propagated aren't saved anymore (though it'd be easy to add back if needed).
2017-11-07Update documentation to sync. with updated READMEUlf Magnusson
2017-11-07s/overriden/overridden/Ulf Magnusson
Add test coverage for that Choice.__repr__() path too.
2017-11-07Polish Symbol, Choice, and MenuNode docsUlf Magnusson
2017-11-06Simplify n/m/y to constant symbol translationUlf Magnusson
Hit way too seldomly for it to make a performance difference, but a bit neater. We know n, m, and y already exist since they're precreated.
2017-11-06Get rid of Choice.default_selectionUlf Magnusson
Was only used by allyesconfig.py. Easy to add back if needed at any point.
2017-11-06Polish some Symbol and Choice docsUlf Magnusson