| Age | Commit message (Collapse) | Author |
|
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.
|
|
This matches the C tools. Hadn't noticed they had the same feature.
|
|
Had missed sys.exit(msg).
|
|
Commit cbf32e2 ("Expand environment variables in strings directly")
added direct expansion of environment variables is strings, with commit
b9384a1 ("Restore compatibility with $UNAME_RELEASE") adding a hack to
restore compatibility with the predefined $UNAME_RELEASE symbol, used by
DEFCONFIG_LIST in the Linux kernel.
With the compatibility hack in place, there's no longer any need to
define UNAME_RELEASE as a proper symbol. Remove it.
|
|
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.
|
|
D'oh
|
|
Shaves ~6% off the _parse_help() runtime for the x86 Kconfigs in
cProfile.
|
|
|
|
This takes some heuristics, as it's indistinguishable from a reference
to an undefined symbol. Guess that the quotes are missing if the
'default' value isn't all-uppercase.
|
|
|
|
It's easy to miss at the top, especially as it's centered. Have a
generic 'Symbol information', 'Choice information', etc., title instead.
|
|
The name is always shown for items without prompts (which are always
promptless symbols). Only show-name mode needs the symbol/choice check.
|
|
Pressing 'c' toggles show-name mode, where names of symbols are
displayed before their prompt.
|
|
|
|
Only show "real" (non-indented) menus, like in the menu path at the top.
|
|
This is consistent with how they're shown in the info dialog. Looks less
confusing for empty strings too.
|
|
Makes it double as a quick way to check if something is enabled.
Suggested by Randy Dunlap.
|
|
This gets rid of some slight input jerkiness while inputting e.g.
'.*debug' on my machine (though the '.*' is redundant there), due to
faster matching. The '.*' probably has bad interactions with
re.search(), which matches anywhere in the string.
A plain "debug" matches about 70% faster, though it's fast enough to
feel instant anyway.
|
|
|
|
|
|
Instead of doing a single search of the '<symbol name> "<prompt>"'
string. This avoids gotchas like '_DEBUG$' not matching FOO_DEBUG if
FOO_DEBUG has a prompt.
|
|
|
|
re.error.msg was added in Python 3.5. Show a generic error message when
it isn't available.
|
|
This makes it clearer when an edit box is scrolled, especially when
backspacing. The cursor will now only go to the far left/right of the
edit box at the start/end of the string.
Reuse _SCROLL_OFFSET to specify the scroll offset.
|