<feed xmlns='http://www.w3.org/2005/Atom'>
<title>Kconfiglib.git/README.rst, branch v4.0.0</title>
<subtitle>Fork of https://github.com/zephyrproject-rtos/Kconfiglib.git</subtitle>
<id>https://git.mcdonnell.dev/Kconfiglib.git/atom?h=v4.0.0</id>
<link rel='self' href='https://git.mcdonnell.dev/Kconfiglib.git/atom?h=v4.0.0'/>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/'/>
<updated>2018-03-11T07:11:56Z</updated>
<entry>
<title>Make 4.0.0 release</title>
<updated>2018-03-11T07:11:56Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-03-11T07:11:56Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=44f782723b71e4eb4661e61cc6f887aefe00898e'/>
<id>urn:sha1:44f782723b71e4eb4661e61cc6f887aefe00898e</id>
<content type='text'>
Includes a small API behavior change, hence the major version bump:

 - db63301 ("Return "" for unwritten symbols in Symbol.config_string")

New features:

 - Support for incremental builds using the same scheme as the
   include/config/ directory in the C tools. See the new
   Kconfig.sync_deps() function and commit 378dedc ("Add support for
   incremental builds").

 - Minimal configuration (defconfig) writing, generating identical files
   to the C implementation. See commit 652f11b ("Add minimal
   configuration file generation support").

   The C 'make savedefconfig' implementation is currently broken in
   obscure cases involving tristate choices (due to broken invalidation
   code), so the tests are disabled for now. I have a patch for the C
   implementation that I will submit.

Fixes:

 - user_value wasn't set for choice symbols set to y via load_config()
   with replace=True. Fixed by commit 0bd841d ("Properly remember y user
   values for choice symbols"). Didn't affect correctness, only the API.

Other changes:

 - 778ec47 ("Only write '# CONFIG_FOO is not set' for visible symbols")
   mirrors a change I made to the C tools.

 - bbe3ae9 ("Do not write the defconfig_list symbol to .config") mirrors
   another change made to the C tools.

 - Misc. refactoring and cleanup.
</content>
</entry>
<entry>
<title>Add minimal configuration file generation support</title>
<updated>2018-03-11T06:29:19Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-03-05T19:10:01Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=652f11b60f7b738440fe0e919d4de0c188e80395'/>
<id>urn:sha1:652f11b60f7b738440fe0e919d4de0c188e80395</id>
<content type='text'>
Works like 'make savedefconfig' in the C tools. Call it
write_min_config() rather than write_defconfig() to be a bit more
explicit.

Add a test similar to test_defconfig that compares Kconfiglib minimal
configuration output against the C implementation, for all defconfig
files.

Disable the tests for now. The C tools have a bug that causes an
incorrect configuration to be generated for tristate choices in some
cases. They will be re-enabled once those are fixed.
</content>
</entry>
<entry>
<title>Only write '# CONFIG_FOO is not set' for visible symbols</title>
<updated>2018-03-01T07:23:52Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-03-01T06:22:50Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=778ec47def04cb4812a5f594c7fa41d71f4b6124'/>
<id>urn:sha1:778ec47def04cb4812a5f594c7fa41d71f4b6124</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Add support for incremental builds</title>
<updated>2018-02-28T14:32:58Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-02-28T06:24:16Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=378dedcb38b85056991fecab24567414567724ec'/>
<id>urn:sha1:378dedcb38b85056991fecab24567414567724ec</id>
<content type='text'>
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().
</content>
</entry>
<entry>
<title>Make 3.2.0 release</title>
<updated>2018-02-27T08:24:29Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-02-27T08:24:29Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=7a1f632774c01adf4382c2d8d80859a92f78f33d'/>
<id>urn:sha1:7a1f632774c01adf4382c2d8d80859a92f78f33d</id>
<content type='text'>
Adds a Kconfig extension contributed by RomaVis: aea0232 ("Implement
'rsource' statement ('source' with relative path)").
</content>
</entry>
<entry>
<title>Make 3.1.0 release</title>
<updated>2018-02-16T09:15:50Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-02-16T09:15:50Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=ce43e322b57c9c62999d8941f677e5ba2f455047'/>
<id>urn:sha1:ce43e322b57c9c62999d8941f677e5ba2f455047</id>
<content type='text'>
Only includes 2a88c0c ("Include direct deps. in
Symbol/Choice.__str__()").
</content>
</entry>
<entry>
<title>README nit</title>
<updated>2018-02-08T11:52:19Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-02-08T11:52:19Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=6c7c7d00b157dbb2bb77d1e1f36cef1ac93ddfea'/>
<id>urn:sha1:6c7c7d00b157dbb2bb77d1e1f36cef1ac93ddfea</id>
<content type='text'>
Might've sounded a bit snarky -- wasn't meant to.
</content>
</entry>
<entry>
<title>Make 3.0.0 release</title>
<updated>2018-02-08T09:18:18Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-02-08T09:18:18Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=f54c6b6d453361948a9169081d9140ee5935b9f7'/>
<id>urn:sha1:f54c6b6d453361948a9169081d9140ee5935b9f7</id>
<content type='text'>
 - 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.
</content>
</entry>
<entry>
<title>Make 2.7.0 release</title>
<updated>2018-02-07T03:30:19Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-02-07T02:58:50Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=4b31adf8efbb5341c369b32022401df65f419362'/>
<id>urn:sha1:4b31adf8efbb5341c369b32022401df65f419362</id>
<content type='text'>
Just adds f66cd71 ("Allow "n"/"m"/"y" as aliases for 0/1/2 in
set_value()").
</content>
</entry>
<entry>
<title>Add oldconfig.py example script</title>
<updated>2018-02-06T01:47:43Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-02-06T01:44:14Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=c1d2c10ad95827e3a04c9f432b32fbcf175f5a5e'/>
<id>urn:sha1:c1d2c10ad95827e3a04c9f432b32fbcf175f5a5e</id>
<content type='text'>
Implements the standard 'make oldconfig' functionality, prompting the
user for the values of new symbols to update an old .config file.

This came up in
https://github.com/zephyrproject-rtos/zephyr/issues/5426.
</content>
</entry>
</feed>
