summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-01-28Error out for malformed hex/int/string defaultsUlf Magnusson
Instead of failing in more cryptic ways later. Also use 'orig_type' instead of 'type' for the UNKNOWN check. Oversight.
2018-01-28Add some post-parsing warningsUlf Magnusson
These are easiest to check after parsing, since a symbol/choice can be defined in multiple locations: - Warn if a symbol or choice defined without a type. Also warn for choice value symbols defined without a type, even if they automatically get their type from the choice. This feature isn't well-known and probably not used deliberately. - Warn if a choice is defined without a prompt - Warn of a choice default symbol is not contained in the choice Also move _name_and_loc_str() from the symbol class to the global scope and generalize it to be able to handle choices.
2018-01-28Give symbol definition location(s) in warningsUlf Magnusson
Helpful
2018-01-28Flag constant symbols where they're not allowedUlf Magnusson
Might break U-Boot if they ever upgrade Kconfiglib, because they have a 'select y' in there (which the C tools don't flag since they only look for quotes), but it's a one-line fix.
2018-01-28Only check for implicit submenus for symbolsUlf Magnusson
Implicit submenus are only ever created with a symbol as the base. _has_auto_menu_dep() would indirectly reject anything that wasn't a symbol anyway, but it led to redundant work. Also get rid of _check_auto_menu() and inline it into _finalize_tree(). It's easier to read without the recursive call being hidden inside _check_auto_menu(). Tweak the comments a bit too.
2018-01-27Generate a parse error for extra tokens at EOLUlf Magnusson
Extra unconsumed tokens at the end of lines were previously ignored. Better to flag it. Also inline _next_token() and _peek_token() into the syntax checking variants of _next_token(). This code is pretty hot, and it saves a few % of parsing time.
2018-01-27Parse error consistency nitUlf Magnusson
2018-01-27Simplify help text parsing and _next_line()Ulf Magnusson
- _saved_line already handles EOF automagically, so no need to special-case it at the end of help text parsing. - Check for EOF earlier in _next_line(). Bit silly to do it after line joining.
2018-01-27Tighten up syntax checkingUlf Magnusson
Now points out the error for stuff like 'config' with no symbol name following it instead of randomly failing later. 1-2% parsing performance hit tops it seems.
2018-01-26Remove long overview from kconfiglib.pyUlf Magnusson
No need to repeat what's already in the README. Just refer to the GitHub page. Include some other minor tweaks to the introductory sections.
2018-01-26Add project_urls to setup.pyUlf Magnusson
Shows up as a nice sidebar on PyPI.
2018-01-26Clean up setup.py a bitUlf Magnusson
Can test the python_requires now too.
2018-01-26Remove BOOL and TRISTATE from _TYPE_TO_BASEUlf Magnusson
No longer needed after 955ea4 ("Support <, > relational operators with tristates").
2018-01-25Add note re. custom output formatsUlf Magnusson
2018-01-25direct_dep documentation nitUlf Magnusson
It's also used for the warning added in 0087b40 ("Warn if a symbol with unsatisfied deps is selected") now.
2018-01-25Formatting nitUlf Magnusson
2018-01-25Mention that Windows support has been triedUlf Magnusson
2018-01-25Make 2.5.0 releasev2.5.0Ulf Magnusson
- 955ea4 ("Support <, > relational operators with tristates") adds a small recent feature from upstream. Haven't even seen any relational operators besides = and != being used yet I think. - 8d7235 ("Tighten up regexes") cleans up and optimizes the regexes used during parsing and .config reading a bit.
2018-01-25Comment nitUlf Magnusson
2018-01-25Tighten up regexesUlf Magnusson
- Match the simpler strchr()y .config parsing done by the C implementation - Spell out \w as [a-zA-Z0-9_]. Easier to verify. - Use ASCII mode for Python 3 to be consistent with Python 2, where it's already the default. \s no longer matches obscure Unicode stuff. This also speeds up regex matching during parsing by about 15% on Python 3, increasing parsing performance by a few %. Looks like there's a tiny improvement for Python 2 as well.
2018-01-25Support <, > relational operators with tristatesUlf Magnusson
Mirrors 9059a3493ef ("kconfig: fix relational operators for bool and tristate symbols") in the C implementation.
2018-01-24Mention the reltest scriptUlf Magnusson
2018-01-24Make 2.4.0 releasev2.4.0Ulf Magnusson
Just has b82ea0a ("Enable universal newlines mode for Python 2").
2018-01-24Enable universal newlines mode for Python 2Ulf Magnusson
Use the "U" flag to open() rather than io.open() to avoid a ~14% parsing performance hit. See comment.
2018-01-24Make 2.3.0 releasev2.3.0Ulf Magnusson
Just adds a new warning: 0087b40 ("Warn if a symbol with unsatisfied deps is selected")
2018-01-24Warn if a symbol with unsatisfied deps is selectedUlf Magnusson
Mirrors a warning in the C implementation. Make it a bit more informative and simpler to decode for people who aren't super familiar with Kconfig. The warning is printed when/if the symbol is evaluated, e.g. when writing a .config or C header or accessing Symbol.str/tri_value. It is not printed if the symbol value has already been calculated and is cached and up-to-date, which avoids warning spam. Example: config Y_SYMBOL_1 def_bool y config Y_SYMBOL_2 def_bool y config SELECTED bool depends on !Y_SYMBOL_1 config SELECTING_1 def_bool y select SELECTED # Skipped in warning, because n config SELECTING_2 def_bool n select SELECTED config SELECTING_3 def_bool y select SELECTED if Y_SYMBOL_1 depends on Y_SYMBOL_2 # Defined in multiple locations config SELECTING_3 Generated warning: warning: SELECTED (defined at Kconfig:7) has unsatisfied direct dependencies (!Y_SYMBOL_1), but is currently being selected by the following symbols: SELECTING_3 (value: y, defined at Kconfig:20, Kconfig:26), with direct dependencies "y" (value: y) and select condition Y_SYMBOL_1 && Y_SYMBOL_2 (value: y) SELECTING_1 (value: y, defined at Kconfig:11), with direct dependencies "y" (value: y) Real-world example from test suite: warning: NOT_COHERENT_CACHE (defined at arch/powerpc/platforms/Kconfig.cputype:381) has unsatisfied direct dependencies (4xx || PPC_8xx || E200 || PPC_MPC512x || GAMECUBE_COMMON), but is currently being selected by the following symbols: AMIGAONE (value: y, defined at arch/powerpc/platforms/amigaone/Kconfig:2), with direct dependencies 6xx && BROKEN_ON_SMP (value: y) and select condition 6xx && BROKEN_ON_SMP (value: y)
2018-01-23Mention loading of multiple .config filesUlf Magnusson
2018-01-22Make 2.2.4 releasev2.2.4Ulf Magnusson
Small docstring improvements: - 1c37079 ("Add more detail to the write_config() docstring") - 121d4a7 ("Add more detail to the write_autoconf() docstring") - 27fbded ("Fix outdated comments referencing user_str/tri_value") - e01cb49 ("Mention user_value in the load_config() docstring") - ed32010 ("Add some more detail to the module docstring") Code nit: - 532b561 ("Simplify escape()")
2018-01-22Add some more detail to the module docstringUlf Magnusson
Clarify how to fetch help texts and prompts, mention the no-prompt warning.
2018-01-22Simplify escape()Ulf Magnusson
The fancy regex isn't really justified. Much faster with replace() too, though this is an unlikely hotspot. Could have used a \g<0> backreference to refer to the entire match instead of using a capturing group too. Hadn't discovered that. Add some selftests for escape() and unescape() too.
2018-01-22Mention user_value in the load_config() docstringUlf Magnusson
Can be handy to check which symbols got set, like merge_config.py does.
2018-01-22Fix outdated comments referencing user_str/tri_valueUlf Magnusson
Ended up with just user_value in the end before releasing Kconfiglib 2.
2018-01-22Add more detail to the write_autoconf() docstringUlf Magnusson
Same order as for .config files.
2018-01-22Add more detail to the write_config() docstringUlf Magnusson
Can be handy to know that the order of the assignments matches the Kconfig files.
2018-01-21Whitespace nitsUlf Magnusson
2018-01-21Linkify test suiteUlf Magnusson
2018-01-20Make 2.2.3 releasev2.2.3Ulf Magnusson
Parsing performance improvements related to help texts: - c800f70 ("Simplify _deindent()") - 707204a ("Get rid of _next_help_line()") - f0a87cc ("Micro-optimize _T_HELP parsing") Also includes various code nits. Brings 'make scriptconfig' with allyesconfig.py down to 1.3 seconds, including the 'make' overhead.
2018-01-20Getting fasterUlf Magnusson
2018-01-20Micro-optimize _T_HELP parsingUlf Magnusson
Shaves a few % more from _parse_properties().
2018-01-20Get rid of _next_help_line()Ulf Magnusson
Speeds things up a bit further. Rework the unget handling to save the ungotten line directly instead of using a flag. Add some help texts to tests/Klocation to make sure the line number is updated properly for those.
2018-01-19Simplify loop in _T_HELPUlf Magnusson
Bit easier to read.
2018-01-19Always rstrip() when dedentingUlf Magnusson
Factors out some code and makes the logic a bit more transparent. It's only used for help text lines.
2018-01-19Rearrange _T_HELP codeUlf Magnusson
Bit clearer.
2018-01-19Simplify _deindent()Ulf Magnusson
Old code. Can't remember why it kept lines shorter than the indent as-is instead of clearing them, but it's pointless for help texts, which is the only place where _deindent() is used. s[n:] is safe even if n >= len(s). Help text parsing is pretty hot code too, so every bit helps.
2018-01-18Mention how invalidation is avoided for constant symbolsUlf Magnusson
2018-01-18Make 2.2.2 releasev2.2.2Ulf Magnusson
- 97c7501 ("Fix 'source "missing"' error message for Python 3") makes the hint re. environment variables display properly for Python 3 when a sourced file can't be opened. - 8574dc5 ("Make PyPI's README formatter happy") makes PyPI format the README properly.
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-18Make PyPI's README formatter happyUlf Magnusson
No longer displayed as an unformatted blob of text.
2018-01-18Make 2.2.1 releasev2.2.1Ulf Magnusson
- 7dc5b74 ("Detect recursive 'source' and print backtrace") makes debugging recursive 'source's a bit easier. - Various minor code nits.
2018-01-18Use absolute link for kconfiglib-2-changes.txtUlf Magnusson
Try to unbreak PyPI display.