| Age | Commit message (Collapse) | Author |
|
The property lists weren't created for Kconfig.top_node, making
referenced() crash.
Add a MenuNode constructor and create the property lists there instead
of in _parse_properties().
|
|
_propagate_deps() visits menu nodes roughly breadth-first, meaning
properties on symbols and choices defined in multiple locations could
end up in the wrong order when copied from the menu node for some
unlucky if/menu nestings.
Fix it by moving the menu-node-to-symbol/choice property copying in
_finalize_tree() so that it's guaranteed to happen in definition order.
This bug was introduced by commit 63a4418 ("Record which MenuNode has
each property").
|
|
MenuNode.referenced() returns all symbols (and choices, for choice
symbols) referenced in the properties (prompt, defaults, selects,
ranges, etc.) and property conditions of the menu node.
Handy e.g. when generating cross-references.
|
|
|
|
Same cleanup as for _make_depend_on().
Rename 'deps' to 'res' as well. The result can be used for other stuff
besides figuring out dependencies.
|
|
Rearrange and break out common stuff.
Already rename the 'sym' parameter to 'sc', as it could be a choice as
well.
|
|
Relations have the same format as AND/OR expressions and can be handled
with the same code.
This gives an extra recursion for relational expressions (because they
can only have symbols as operands), but they're much rarer than other
expression types.
|
|
Oversight
|
|
The docstrings make the body non-empty already.
|
|
This commit fixes an issue when user searches for a nonexistent object
(e.g. adsdsaasda) and presses enter.
Having all the key checks in one continuous if statement makes sure that
the very last 'else' statement does not get executed when enter is
pressed.
Note - backported from:
https://github.com/zephyrproject-rtos/zephyr/pull/8332
|
|
We can rely on set_value() being a no-op when setting non-bool/tristate
symbols to 0/1/2 (due to those values being invalid for other types).
Remove some long duplicated comments too.
|
|
Handy e.g. when searching.
|
|
Ctrl-F (Ctrl-H clashes with backspace) brings up the information dialog
for the selected item in the jump-to dialog.
Since it's now possible to jump directly from the information dialog to
the jump-to dialog and vice versa, recursive invocation becomes
possible. Work around it with a flag to _info_dialog() that makes '/'
return if the information dialog was launched from within the jump-to
dialog. (Recursive invocations work code-wise, but act in a confusing
way.)
|
|
It's annoying to have to leave the information dialog just to do a
search related to something you saw in the information dialog.
Stay in the information dialog if the search is canceled.
|
|
This environment variable was inherited from the C tools.
kconfiglib.standard_config_filename() looks at it.
|
|
|
|
Also move the description of the Kconfig extensions out of 'Other features' and into
a separate section under 'Library features'.
|
|
|
|
|
|
|
|
Just to fix the rendering of the README on PyPI with commit b727f4d
("Fix link to allyesconfig.py in README").
|
|
No longer just an example either.
This also makes the README render properly on PyPI.
|
|
|
|
Changed behavior (giving the major version bump):
- cbf32e2 ("Expand environment variables in strings directly") makes
'option env' "bounce" symbols redundant, though they are still
supported for backwards compatibility (with the caveat that they
must have the same name as the environment variables they
reference to preserve behavior).
A warning is printed if 'option env="FOO"' appears on a symbol
that's not named FOO.
This change will likely appear in the C tools soon as well.
Other new features:
- The menuconfig implementation is now bundled in the PyPI package,
along with implementations of the Kconfig oldconfig and
all{def,no,yes,mod}config tools.
A genconfig script is provided for generating a C header from the
configuration, as well as (optionally) the sync_deps() directory
structure for implementing incremental builds.
- 63a4418 ("Record which MenuNode has each property") makes it
possible to generate documentation for symbols defined in multiple
locations with each property shown on the right definition. See
genrest.py in Zephyr.
This change also cleans up the parsing code a bit. Dependency
propagation is now done after parsing, in _finalize_tree().
- 94020be ("Make Kconfig._choices public") and fc73c46 ("Provide lists
with all menus and comments") gives easier access to Kconfig items
of a specific type, without having to walk the menu tree. This turns
out to be handy e.g. when generating documentation and implementing
search.
Improvements and new warnings:
- da40c01 ("Force encoding to UTF-8 by default on Python 3")
- 7427079 ("Get rid of the predefined UNAME_RELEASE symbol")
- f64591c ("Warn if prompt contains leading or trailing whitespace")
- c14e411 ("Warn if quotes are omitted around string defaults")
Misc. minor refactoring and cleanup has been done as well.
|
|
Everything's ISC.
|
|
|
|
|
|
|
|
Explain the soon-to-be-bundled tools.
Also rearrange and clean up some sections.
|
|
There should be a script available that generates the output header for
the build. It usually makes sense to generate both the header and any
incremental build information at the same time (automatically during
build), so roll them both into the same script.
|
|
These currently include menuconfig, oldconfig, syncconfig, alldefconfig,
and all{no,mod,yes}config, which probably cover what 90% of people will
need to use. More scripts could be added later.
Use the entry_points mechanism
(http://setuptools.readthedocs.io/en/latest/setuptools.html#automatic-script-creation),
which gives something that works out-of-the-box on Windows. It also
removes the .py suffix for the installed scripts.
|
|
This script calls through to Kconfiglib.sync_deps() and can be used to
implement incremental builds.
Having additional dependency mechanisms for changes to Kconfig files and
environment variables is redundant, because those changes indirectly
influence symbol values and will be caught as well.
|
|
cached_search_strings was renamed to cached_search_nodes.
|
|
The defconfig tests tend to find any issue quickly, so keep those first.
Go alldefconfig -> allnoconfig -> allmodconfig -> allyesconfig after
that, and do the sanity checks at the end.
|
|
Setting all tristate choice symbols to 'm' is enough to always do the
right thing in practice. It has no effect for bool choice symbols (since
'm' will be ignored), but forces symbols in m-mode choices to 'm'.
'm' will also be ignored for tristate choice symbols in choices in 'y'
mode, because tristate is automagically converted to bool there.
|
|
Verified to produce identical output to 'make allmodconfig', for all
arches.
Will be packaged.
|
|
To-be-packaged scripts now live in the root.
|
|
Will be packaged.
Piggyback test suite cleanups to make test names match the name of the
script being tested.
|
|
No longer used after the tool helpers were added.
|
|
Removes repeated KCONFIG_CONFIG boilerplate.
Also make allyesconfig use KCONFIG_CONFIG when writing (oversight), and
document the sys.exit() behavior for standard_kconfig().
|
|
standard_kconfig() gets the top-level Kconfig file from the first
command-line argument, defaulting to "Kconfig". This removes some
boilerplate from tools.
|
|
Move to the root, simplify a bit, provide an entry point function (for
setuptools's entry_points).
|
|
Could do something similar to allnoconfig.py for the packaged version.
|
|
Handy e.g. when implementing advanced search features.
|
|
Useful in various places outside the library, e.g. in the upcoming
packaged allyesconfig implementation, and when generating documentation.
|
|
Oops.
|
|
Put to-be-packaged stuff in the root.
Use allnoconfig_simpler.py, and rename allnoconfig.py to
allnoconfig_walk.py and keep it as an example.
|
|
All the packaged code will appear in the root.
|
|
setuptools' 'entry_points' gives nice behavior on Windows. It requires
that the module has an entry point function. Create one and move the
command line argument handling to it.
Piggyback KCONFIG_CONFIG support, and make the script executable
(oversight).
|
|
An output file should still be generated if you're happy with the
default settings.
|