<feed xmlns='http://www.w3.org/2005/Atom'>
<title>Kconfiglib.git/tests/Klocation, branch v14.1.1a4</title>
<subtitle>Fork of https://github.com/zephyrproject-rtos/Kconfiglib.git</subtitle>
<id>https://git.mcdonnell.dev/Kconfiglib.git/atom?h=v14.1.1a4</id>
<link rel='self' href='https://git.mcdonnell.dev/Kconfiglib.git/atom?h=v14.1.1a4'/>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/'/>
<updated>2019-10-29T17:30:46Z</updated>
<entry>
<title>Add public helpers for generating "&lt;name&gt; (defined at ...)" strings</title>
<updated>2019-10-29T17:30:46Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2019-10-29T15:41:03Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=e1ccf19f9f5fc896dfeef15883d2cb455cbbb937'/>
<id>urn:sha1:e1ccf19f9f5fc896dfeef15883d2cb455cbbb937</id>
<content type='text'>
Have Symbol/Choice.name_and_loc return strings like

    "MY_SYM (defined at foo:1, bar:2)"
    "&lt;choice&gt; (defined at foo:4)"

I've added a function like that in at least four different scripts now,
so that's probably a sign that it's a worthwhile helper.

Clean up the tests/Klocation tests a bit while adding tests.
</content>
</entry>
<entry>
<title>Refactor parsing to get rid of _saved_line</title>
<updated>2018-09-29T16:08:52Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-09-29T14:27:21Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=c1dcaa3ccbb263f021157f2aebd185c6388c28a1'/>
<id>urn:sha1:c1dcaa3ccbb263f021157f2aebd185c6388c28a1</id>
<content type='text'>
Handle the line-after-help-text case specially, which allows _has_tokens
(renamed to _reuse_tokens) to be used as the unget mechanism for help
texts as well, leaving _saved_line unused. Move the _reuse_tokens check
into _next_line().

This makes _parse_block() as straightforward as _parse_properties(), and
simplifies _parse_properties() a tiny bit too by getting rid of the
'_tokens_i = -1' assignment.
</content>
</entry>
<entry>
<title>Switch to more sensible globbing statements (w/ backwards compatibility)</title>
<updated>2018-07-15T14:15:43Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-07-15T11:16:47Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=7a428aa415606820a44291f475248b08e3952c4b'/>
<id>urn:sha1:7a428aa415606820a44291f475248b08e3952c4b</id>
<content type='text'>
Instead of having 'source' and 'gsource', have 'source' always glob, but
require the pattern to match at least one file, throwing KconfigError
otherwise.

Have separate 'osource' and 'orsource' statements (the o is for
"optional") for cases where it's okay for the pattern to not match any
files.

This is analogous to 'include' and '-include' in Make.

The biggest flaw with 'gsource' was that there was no way to do a
globbing match while requiring something to match, possibly leading to
subtle failures.

Preserve backwards compatibility by having "gsource" and "grsource" be
aliases for "osource" and "orsource", respectively.

Also include some related changes:

 - Kconfig.srctree is now set to the empty string if $srctree is unset,
   rather than to None. This gives nice behavior with os.path.join() and
   os.path.relpath(), which treat the empty string as the current
   directory (without adding './', for os.path.join()).

 - When $srctree is set, Kconfig files in the current directory will no
   longer override Kconfig files in $srctree when the relative paths
   match. This was likely a bug all along in the C tools, and probably
   only makes sense for .config files.

   I've seen it cause breakage in Zephyr.

 - Clarify the behavior of $srctree in the Kconfig.__init__() docstring.

 - Make MenuNode.filename be relative to $srctree for the Kconfig file
   passed to Kconfig.__init__(). This makes it consistent.

The major version will be bumped later due to the small Kconfig.srctree
API change.
</content>
</entry>
<entry>
<title>Micro-optimize _parse_help() loop</title>
<updated>2018-05-26T13:04:35Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-05-26T12:53:28Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=ab2431ca36139c6d450adfe275d1e14088633eed'/>
<id>urn:sha1:ab2431ca36139c6d450adfe275d1e14088633eed</id>
<content type='text'>
Shaves ~6% off the _parse_help() runtime for the x86 Kconfigs in
cProfile.
</content>
</entry>
<entry>
<title>Expand environment variables in strings directly</title>
<updated>2018-05-16T17:42:56Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-05-14T16:00:40Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=cbf32e29a130d22bc734b7778e6304ac9df2a3e8'/>
<id>urn:sha1:cbf32e29a130d22bc734b7778e6304ac9df2a3e8</id>
<content type='text'>
Make "$FOO" directly reference the environment variable $FOO in e.g.
'source' statements, instead of the symbol FOO. Use os.path.expandvars()
to expand strings (which preserves "$FOO" as-is if no environment
variable FOO exists).

This gets rid of the 'option env' "bounce" symbols, which are mostly
just spam and are buggy in the C tools (dependencies aren't always
respected, due to parsing and evaluation getting mixed up). The same
change will probably appear soon in the C tools as well.

Keep accepting 'option env' to preserve some backwards compatibility,
but ignore it when expanding strings. For compatibility with the C
tools, bounce symbols will need to be named the same as the environment
variables they reference (which is the case for the Linux kernel).

This is a compatibility break, so the major version will be bumped to 6
at the next release.

The main motivation for adding this now is to allow recording properties
on each MenuNode in a clean way. 'option env' symbols interact badly
with delayed dependency propagation.

Side note: I have a feeling that recording environment variable values
might be redundant to trigger rebuilds if sync_deps() is run at each
compile. It should detect all changes to symbol values due to
environment variables changing value.
</content>
</entry>
<entry>
<title>Test grsource with nonexistent file</title>
<updated>2018-03-13T05:35:41Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-03-13T05:32:47Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=044310b6398b4e0e914deda00509ad86febc521b'/>
<id>urn:sha1:044310b6398b4e0e914deda00509ad86febc521b</id>
<content type='text'>
Just for completeness.
</content>
</entry>
<entry>
<title>Add a globbing source statement</title>
<updated>2018-03-13T04:04:44Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-03-13T02:24:41Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=daac69dc05217d024fbe021447629fa2b3d95b70'/>
<id>urn:sha1:daac69dc05217d024fbe021447629fa2b3d95b70</id>
<content type='text'>
'gsource' works like 'source', but takes a glob pattern and sources all
matching files. Works as a no-op if no files match, and hence doubles as
an include-if-exists function, similar to '-include' in 'make'.

Add a 'grsource' statement as well, mirroring 'rsource'.

Came up in https://github.com/ulfalizer/Kconfiglib/pull/40.
</content>
</entry>
<entry>
<title>Implement 'rsource' statement ('source' with relative path)</title>
<updated>2018-02-27T08:04:36Z</updated>
<author>
<name>Roman</name>
<email>ztcoils@gmail.com</email>
</author>
<published>2018-02-27T08:04:36Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=aea0232a56d9a9d2611b79ea9c67e0d9d49b183f'/>
<id>urn:sha1:aea0232a56d9a9d2611b79ea9c67e0d9d49b183f</id>
<content type='text'>
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.</content>
</entry>
<entry>
<title>Add some post-parsing warnings</title>
<updated>2018-01-28T09:56:57Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-01-28T09:02:20Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=9c309400fca07f15d8f4b116c12fa58f97d8043a'/>
<id>urn:sha1:9c309400fca07f15d8f4b116c12fa58f97d8043a</id>
<content type='text'>
These are easiest to check after parsing, since a symbol/choice can be
defined in multiple locations:

 - Warn if a symbol or choice defined without a type. Also warn for
   choice value symbols defined without a type, even if they
   automatically get their type from the choice. This feature isn't
   well-known and probably not used deliberately.

 - Warn if a choice is defined without a prompt

 - Warn of a choice default symbol is not contained in the choice

Also move _name_and_loc_str() from the symbol class to the global scope
and generalize it to be able to handle choices.
</content>
</entry>
<entry>
<title>Get rid of _next_help_line()</title>
<updated>2018-01-20T04:19:42Z</updated>
<author>
<name>Ulf Magnusson</name>
<email>ulfalizer@gmail.com</email>
</author>
<published>2018-01-20T04:05:49Z</published>
<link rel='alternate' type='text/html' href='https://git.mcdonnell.dev/Kconfiglib.git/commit/?id=707204ac4a5539c9b4d4875d12fec340ba95c1a2'/>
<id>urn:sha1:707204ac4a5539c9b4d4875d12fec340ba95c1a2</id>
<content type='text'>
Speeds things up a bit further.

Rework the unget handling to save the ungotten line directly instead of
using a flag.

Add some help texts to tests/Klocation to make sure the line number is
updated properly for those.
</content>
</entry>
</feed>
