| Age | Commit message (Collapse) | Author |
|
defconfig_files() yields all the defconfig files for a particular arch/
subdirectory. This will allow reuse when savedefconfig is tested.
Also simplify the code a bit.
|
|
Not that important of a stat, plus there might be more tests that
process defconfig files soon, making it kinda meaningless.
|
|
No great need to log timestamps anymore.
|
|
The 'for' overrode 'srcarch', which is currently harmless, but ugly.
|
|
Makes sense as SRCARCH holds the arch/ subdirectory and _arch might be
confused for ARCH.
|
|
Get rid of the compare_configs flag and just do the comparison from the
test functions themselves with a helper.
Also get rid of the test_load() test. That's indirectly tested through
the other tests, and test_alldefconfig() runs first and is speedy.
|
|
The original idea was that it might be handy to look up docstrings for
internal functions from the Python prompt (or an IDE) while figuring out
the code.
Not sure it's that useful in practice though. Comments shorten the code
a bit, and might make it clearer at a glance that the function is
internal.
|
|
Makes it harder to miss.
|
|
The _get_* prefixes don't improve readability and are inconsistent: All
other getters are simply named after the thing they fetch.
Leftover from Kconfiglib 1.
|
|
s/the defconfig_list/the defconfig_list symbol/
|
|
Mirrors the following change to the C tools, now in linux-next:
commit c21a6e352766005d42c1ccae32b31e0438903eb9
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date: Sat Feb 17 03:38:32 2018 +0900
kconfig: set SYMBOL_AUTO to the symbol marked with defconfig_list
The 'defconfig_list' is a weird attribute. If the '.config' is
missing, conf_read_simple() iterates over all visible defaults,
then it uses the first one for which fopen() succeeds.
config DEFCONFIG_LIST
string
depends on !UML
option defconfig_list
default "/lib/modules/$UNAME_RELEASE/.config"
default "/etc/kernel-config"
default "/boot/config-$UNAME_RELEASE"
default "$ARCH_DEFCONFIG"
default "arch/$ARCH/defconfig"
However, like other symbols, the first visible default is always
written out to the .config file. This might be different from what
has been actually used.
For example, on my machine, the third one "/boot/config-$UNAME_RELEASE"
is opened, like follows:
$ rm .config
$ make oldconfig 2>/dev/null
scripts/kconfig/conf --oldconfig Kconfig
#
# using defaults found in /boot/config-4.4.0-112-generic
#
*
* Restart config...
*
*
* IRQ subsystem
*
Expose irq internals in debugfs (GENERIC_IRQ_DEBUGFS) [N/y/?] (NEW)
However, the resulted .config file contains the first one since it is
visible:
$ grep CONFIG_DEFCONFIG_LIST .config
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
In order to stop confusing people, prevent this CONFIG option from
being written to the .config file.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
|
|
Use the result from the initial str_value call in more places.
Also add a comment to make it clear how _write_to_conf is calculated,
mirroring the ones in write_config() and write_autoconf().
|
|
|
|
Instead of creating an empty initial auto.conf and immediately loading
it, look for a missing auto.conf in _load_old_vals() and treat that the
same as an empty auto.conf (by returning after clearing the old values).
The initial auto.conf will then be written as normal by
_write_old_vals().
Also flesh out the sync_deps() docstring a bit:
- Make it clear that sync_deps() should be run at each build
- Be more explicit about what it means for a symbol to have changed
(different output in autoconf.h)
|
|
An initial empty auto.conf will be created, just as when sync_deps()
creates the directory.
This is more flexible. There's no good reason to require the directory
to be created by sync_deps().
|
|
"malformed expression" should be clear enough for a missing end
parenthesis too. Expressions are generally short.
|
|
Oversight
|
|
This gets rid of _TOKEN_TO_REL and removes the conversion in
_parse_factor(). It's pretty easy to understand too.
Having e.g. just EQUAL and no _T_EQUAL would be too confusing, so keep
the separate names still.
Piggyback small _REL_TO_STR and _T_OPEN_PAREN code nits.
|
|
This mirrors a change I made to the C tools, which is now in linux-next:
https://www.spinics.net/lists/linux-kbuild/msg17074.html.
Add a note to the README to make it clear that the test suite now needs
to be run against recent kernels in order to pass.
Copy-pasted commit message from the C tools commit below:
=== Background ===
- Visible n-valued bool/tristate symbols generate a
'# CONFIG_FOO is not set' line in the .config file. The idea is to
remember the user selection without having to set a Makefile
variable. Having n correspond to the variable being undefined in the
Makefiles makes for easy CONFIG_* tests.
- Invisible n-valued bool/tristate symbols normally do not generate a
'# CONFIG_FOO is not set' line, because user values from .config
files have no effect on invisible symbols anyway.
Currently, there is one exception to this rule: Any bool/tristate symbol
that gets the value n through a 'default' property generates a
'# CONFIG_FOO is not set' line, even if the symbol is invisible.
Note that this only applies to explicitly given defaults, and not when
the symbol implicitly defaults to n (like bool/tristate symbols without
'default' properties do).
This is inconsistent, and seems redundant:
- As mentioned, the '# CONFIG_FOO is not set' won't affect the symbol
once the .config is read back in.
- Even if the symbol is invisible at first but becomes visible later,
there shouldn't be any harm in recalculating the default value
rather than viewing the '# CONFIG_FOO is not set' as a previous
user value of n.
=== Changes ===
Change sym_calc_value() to only set SYMBOL_WRITE (write to .config) for
non-n-valued 'default' properties.
Note that SYMBOL_WRITE is always set for visible symbols regardless of whether
they have 'default' properties or not, so this change only affects invisible
symbols.
This reduces the size of the x86 .config on my system by about 1% (due
to removed '# CONFIG_FOO is not set' entries).
One side effect of (and the main motivation for) this change is making
the following two definitions behave exactly the same:
config FOO
bool
config FOO
bool
default n
With this change, neither of these will generate a
'# CONFIG_FOO is not set' line (assuming FOO isn't selected/implied).
That might make it clearer to people that a bare 'default n' is
redundant.
This change only affects generated .config files and not autoconf.h:
autoconf.h only includes #defines for non-n bool/tristate symbols.
=== Testing ===
The following testing was done with the x86 Kconfigs:
- .config files generated before and after the change were compared to
verify that the only difference is some '# CONFIG_FOO is not set'
entries disappearing. A couple of these were inspected manually, and
most turned out to be from redundant 'default n/def_bool n'
properties.
- The generated include/generated/autoconf.h was compared before and
after the change and verified to be identical.
- As a sanity check, the same modification was done to Kconfiglib.
The Kconfiglib test suite was then run to check for any mismatches
against the output of the C implementation.
|
|
|
|
|
|
Forgot to rename the helper as well after renaming sync_sym_files() to
sync_deps().
|
|
Implement a scheme from the C tools where symbols get corresponding
files that are touch'ed whenever the symbol's value changes. This can be
used to add e.g. Makefile dependencies between source files and
particular symbols.
See the docstring of the new sync_deps() function for more information.
Piggyback a small sanity check for write_autoconf().
|
|
They're really minor, and copying them around when new output functions
are added gets a bit silly.
These functions are used as a reference too, so maximum readability
helps.
|
|
The previous return value was None.
Returning "" makes write_config() neater and feels a bit more Pythonic.
It might simplify the implementation of some planned features as well.
This is a small API break, so the major version will be bumped to 4 in
the next release.
Only code that explicitly tests Symbol.config_string against None will
be affected: 'if sym.config_string is None:' will break, but not
'if not sym.config_string:'.
|
|
Makes the logic a bit clearer, and might save some branching.
|
|
Unused leftover from Kconfiglib 1.
|
|
Adds a Kconfig extension contributed by RomaVis: aea0232 ("Implement
'rsource' statement ('source' with relative path)").
|
|
The 'rsource' statement works like 'source', but looks relative to the
Kconfig file that has the 'rsource' rather than relative to the base
Kconfig file. Using 'rsource' makes it possible to move subtrees with
Kconfig files around without breaking references to other Kconfig files.
So far, this is a Kconfiglib-exclusive feature.
|
|
The main purpose of _STRING_LEX is being able to tell strings from
constant symbol references during tokenization. The old comment was
implying that its only purpose is handling the "missing quotes" in e.g.
source foo/Kconfig
Update the comment to make _STRING_LEX clearer.
|
|
- Use generator expression rather than list comprehension
- Fix dubious English
|
|
|
|
Piggyback a small note to clarify that symbols defined without a type
are pretty obscure.
|
|
Only includes 2a88c0c ("Include direct deps. in
Symbol/Choice.__str__()").
|
|
Direct dependencies are significant for 'imply' even if the symbol has
no properties, so they need to be included to get semantically
equivalent output.
Making the direct dependencies clear is helpful in general too, even if
you can usually infer them from the properties they get propagated to.
|
|
|
|
|
|
The visibility of a symbol in an y-mode choice can only be n or y, so
it's sufficient to check that it's not n (0).
|
|
|
|
|
|
Might've sounded a bit snarky -- wasn't meant to.
|
|
It's the top-level Kconfig file that source's depending on $SRCARCH, not
the top-level Makefile.
|
|
|
|
- Only includes e8b4ecb ("Don't special-case user_value for choice
symbols set to y").
Since that's a tiny change to the behavior of the API, the major version
is bumped.
|
|
Previously, setting a choice symbol to y would only update
user_selection on the parent choice and not the symbol's own user_value.
Now both are updated.
The point of the old behavior was to remember the m mode selections of a
choice when it was switched back and forth between m and y mode, which
was a feature I thought the C implementation had. On closer inspection,
the C implementation never had that feature, though it might appear like
it if you only make "lucky" changes (if you never select any symbols in
y mode that were n in m mode).
The new behavior is simpler and easier to understand: Symbol.user_value
now always matches the value assigned in a .config file or via
set_value(), provided the value was well-formed. This might avoid some
special-casing in scripts too.
The loss in usability is pretty minimal.
|
|
|
|
It makes sense to prompt for a choice during oldconfig if it contains
new visible symbols, even if there is already an old visible user
selection.
|
|
Oversight during refactoring. defconfig files should be searched for in
in arch/$SRCARCH/ rather than arch/$ARCH/, to account for
$ARCH != $SRCARCH.
Adds a few tests to test_defconfig(). Some of the ARCH/defconfig
combinations might be nonsensical, but that's fine.
Make all test functions take $SRCARCH as well as $ARCH, which makes the
implementation straightforward.
|
|
Helpful for debugging.
Piggyback some small fixes:
- Don't imply that merge_config.py is an executable file or that it
only runs under Python 3. Remove the hashbang line and fix the
example in the overview.
- Add some #'s to the overview .config files that had accidentally been
left out.
- Fix a questionable sentence in oldconfig.py's name_and_loc_str()
docstring.
|
|
Just adds f66cd71 ("Allow "n"/"m"/"y" as aliases for 0/1/2 in
set_value()").
|