<feed xmlns='http://www.w3.org/2005/Atom'>
<title>Kconfiglib.git, branch v7.0.0</title>
<subtitle>Fork of https://github.com/zephyrproject-rtos/Kconfiglib.git</subtitle>
<id>https://git.mcdonnell.dev/Kconfiglib.git/atom?h=v7.0.0</id>
<link rel='self' href='https://git.mcdonnell.dev/Kconfiglib.git/atom?h=v7.0.0'/>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/'/>
<updated>2018-06-22T04:09:35Z</updated>
<entry>
<title>Make 7.0.0 release</title>
<updated>2018-06-22T04:09:35Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-06-22T04:09:35Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=da06752545e35ea8bffeec07065679dcc4502013'/>
<id>urn:sha1:da06752545e35ea8bffeec07065679dcc4502013</id>
<content type='text'>
New features:

  - db92bb7 ("Add dependency loop detection") adds long-overdue
    dependency loop detection.

    Previously, dependency loops would trigger hard-to-debug Python
    RecursionError exceptions during evaluation. They now generate a
    KconfigError instead, with a helpful message that shows the items in
    the loop.

Backwards-incompatible changes (major version bumped to 7):

  - eb6c21a ("Turn MenuNode/Symbol/Choice.referenced() into a
    @property") fixes some inconsistency in the recently-added
    referenced-symbols APIs. Oversight.

Other changes:

  - f6eb4f4 ("Add Symbol/Choice.referenced() convenience methods")
    makes it easier to get all the symbols/choices referenced by a
    symbol or choice. Previously, you'd have to loop through all the
    menu nodes (definition locations) yourself, which might not be
    obvious.

  - ca89ca0 ("Rename KconfigSyntaxError to KconfigError") changes to
    a better exception name, as KconfigSyntaxError was raised for some
    things that aren't syntax errors.

    The old name is kept as an alias for now for backwards
    compatibility.
</content>
</entry>
<entry>
<title>Turn MenuNode/Symbol/Choice.referenced() into a @property</title>
<updated>2018-06-22T04:02:47Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-06-22T03:29:59Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=eb6c21a9b33a2d6e2bed9882d4f930d0cab2f03b'/>
<id>urn:sha1:eb6c21a9b33a2d6e2bed9882d4f930d0cab2f03b</id>
<content type='text'>
Having it as a function is inconsistent, since all other read-only
fields use properties. Oversight.

Major version will be bumped to 7, though the function version wasn't in
for long.
</content>
</entry>
<entry>
<title>Add Symbol/Choice.referenced() convenience methods</title>
<updated>2018-06-22T04:02:47Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-06-22T03:15:46Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=f6eb4f435bc594aa58b8f8c066a9e2243c5c8330'/>
<id>urn:sha1:f6eb4f435bc594aa58b8f8c066a9e2243c5c8330</id>
<content type='text'>
Returns the union of the MenuNode.referenced() sets for all the menu
nodes of the symbol/choice.
</content>
</entry>
<entry>
<title>Simplify MenuNode.referenced() a bit</title>
<updated>2018-06-20T07:42:18Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-06-20T07:42:18Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=94e6db54b8c8411cead8cc4186aa9199a23d617e'/>
<id>urn:sha1:94e6db54b8c8411cead8cc4186aa9199a23d617e</id>
<content type='text'>
Can get the initial set from expr_items(self.dep), since it's always
included and always returns a new set().
</content>
</entry>
<entry>
<title>Rename KconfigSyntaxError to KconfigError</title>
<updated>2018-06-19T22:16:16Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-06-19T22:16:16Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=ca89ca0c0c4207590d7ac6a38383d097e4b7c23f'/>
<id>urn:sha1:ca89ca0c0c4207590d7ac6a38383d097e4b7c23f</id>
<content type='text'>
This exception is generated for semantic errors and e.g. when dependency
loops are detected as well, so the name is bad.

Keep the old name as an alias for now for backwards compatibility.
</content>
</entry>
<entry>
<title>Add dependency loop detection</title>
<updated>2018-06-19T20:14:09Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-06-18T16:50:37Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=db92bb76fb9f2bb3f565d13a6213d30cb0fc31d7'/>
<id>urn:sha1:db92bb76fb9f2bb3f565d13a6213d30cb0fc31d7</id>
<content type='text'>
Pretty long overdue.

Until now, dependency loops have raised a hard-to-debug Python
RecursionError during evaluation. A Kconfiglib exception is raised now
instead, with a message that lists all the items in the loop.

See the comment at the start of _check_dep_loop_sym() for an overview of
the algorithm. At a high level, it's loop detection in a directed graph
by keeping track of unvisited/visited nodes during depth-first search.
(A third "visited, known to not be in a dependency loop" state is used
as well.)

Choices complicate things, as they're inherently loopy: The choice
depends on the choice symbols and vice versa, and the choice symbols in
a sense all depend on each other.

Add the choice-to-choice-symbol dependencies separately after dependency
loop detection, so that there's just the choice-symbol-to-choice
dependencies to deal with. It simplifies things, as it makes it possible
to tell dependencies from 'prompt' and 'default' conditions on the
choice from choice symbol dependencies.

Do some flag shenanigans to prevent the choice from being "re-entered"
while looping through the choice symbols. Maybe this could be cleaned up
a bit somehow...

Example exception message:

Dependency loop
===============

A (defined at tests/Kdeploop10:1), with definition...

config A
	bool
	depends on B

...depends on B (defined at tests/Kdeploop10:5), with definition...

config B
	bool
	depends on C = 7

...depends on C (defined at tests/Kdeploop10:9), with definition...

config C
	int
	range D 8

...depends on D (defined at tests/Kdeploop10:13), with definition...

config D
	int
	default 3 if E
	default 8

...depends on E (defined at tests/Kdeploop10:18), with definition...

config E
	bool

(select-related dependencies: F &amp;&amp; G)

...depends on G (defined at tests/Kdeploop10:25), with definition...

config G
	bool
	depends on H

...depends on the choice symbol H (defined at tests/Kdeploop10:32), with definition...

config H
	bool
	prompt "H" if I &amp;&amp; &lt;choice&gt;
	depends on I &amp;&amp; &lt;choice&gt;

...depends on the choice symbol I (defined at tests/Kdeploop10:41), with definition...

config I
	bool
	prompt "I" if &lt;choice&gt;
	depends on &lt;choice&gt;

...depends on &lt;choice&gt; (defined at tests/Kdeploop10:38), with definition...

choice
	bool
	prompt "choice" if J

...depends on J (defined at tests/Kdeploop10:46), with definition...

config J
	bool
	depends on A

...depends again on A (defined at tests/Kdeploop10:1)
</content>
</entry>
<entry>
<title>allnoconfig: Remove leftover comment</title>
<updated>2018-06-19T20:14:09Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-06-19T20:13:36Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=2a8873d941c8b2dff792af5a3c44e1b40a1e3ada'/>
<id>urn:sha1:2a8873d941c8b2dff792af5a3c44e1b40a1e3ada</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add Nordic Semiconductor ASA as shared menuconfig copyright holder</title>
<updated>2018-06-18T17:46:16Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-06-18T17:38:00Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=255969e85ca6bb452a685aa64b4741822b6f4bbb'/>
<id>urn:sha1:255969e85ca6bb452a685aa64b4741822b6f4bbb</id>
<content type='text'>
Largely paid work, and it's copied into Zephyr, so it was a request.

All other source files are still copyright me.

Nothing changes in practice. I went for shared copyright to make sure
the ISC license can never be changed.
</content>
</entry>
<entry>
<title>Link to ACRN utilities</title>
<updated>2018-06-15T21:28:06Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-06-15T21:28:06Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=4758823c1690180a2dc3d2bdb81bd44d75ed23db'/>
<id>urn:sha1:4758823c1690180a2dc3d2bdb81bd44d75ed23db</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Rename _copy_props_to_sc() to _add_props_to_sc()</title>
<updated>2018-06-15T00:43:48Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-06-15T00:43:48Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=fa9a2f3e9e60522dea7c37bdbef0bee359a3c7aa'/>
<id>urn:sha1:fa9a2f3e9e60522dea7c37bdbef0bee359a3c7aa</id>
<content type='text'>
The properties themselves aren't really copied, just added to the
Symbol/Choice property lists.
</content>
</entry>
</feed>
