scripts: west_commands: Remove no longer needed load_dot_config(path)
The functionality of the function is now covered by BuildConfiguration class. Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
This commit is contained in:
parent
09980d6a50
commit
0dfd191e04
|
@ -10,7 +10,6 @@ commands which specifically execute runners.'''
|
|||
|
||||
import os
|
||||
from pathlib import Path
|
||||
import re
|
||||
|
||||
from west import log
|
||||
from west.commands import WestCommand
|
||||
|
@ -46,65 +45,3 @@ class Forceable(WestCommand):
|
|||
if not (cond or self.args.force):
|
||||
log.err(msg)
|
||||
log.die('refusing to proceed without --force due to above error')
|
||||
|
||||
|
||||
def load_dot_config(path):
|
||||
'''Load a Kconfig .config output file in 'path' and return a dict
|
||||
from symbols set in that file to their values.
|
||||
|
||||
This parser:
|
||||
|
||||
- respects the usual "# CONFIG_FOO is not set" --> CONFIG_FOO=n
|
||||
semantics
|
||||
- converts decimal or hexadecimal integer literals to ints
|
||||
- strips quotes around strings
|
||||
'''
|
||||
|
||||
# You might think it would be easier to create a new
|
||||
# kconfiglib.Kconfig object and use its load_config() method to
|
||||
# parse the file instead.
|
||||
#
|
||||
# Beware, traveler: that way lies madness.
|
||||
#
|
||||
# Zephyr's Kconfig files rely heavily on environment variables to
|
||||
# manage user-configurable directory locations, and recreating
|
||||
# that state turns out to be a surprisingly fragile process. It's
|
||||
# not just 'srctree'; there are various others and they change
|
||||
# randomly as features get merged.
|
||||
#
|
||||
# Nor will pickling the Kconfig object come to your aid. It's a
|
||||
# deeply recursive data structure which requires a very high
|
||||
# system recursion limit (100K frames seems to do it) and contains
|
||||
# references to un-pickle-able values in its attributes.
|
||||
#
|
||||
# It's easier and in fact more robust to rely on the fact that the
|
||||
# .config file contents are just a strictly formatted Makefile
|
||||
# fragment with some extra "is not set" semantics.
|
||||
|
||||
opt_value = re.compile('^(?P<option>CONFIG_[A-Za-z0-9_]+)=(?P<value>.*)$')
|
||||
not_set = re.compile('^# (?P<option>CONFIG_[A-Za-z0-9_]+) is not set$')
|
||||
|
||||
with open(path, 'r') as f:
|
||||
lines = f.readlines()
|
||||
|
||||
ret = {}
|
||||
for line in lines:
|
||||
match = opt_value.match(line)
|
||||
if match:
|
||||
value = match.group('value')
|
||||
if value.startswith('"') and value.endswith('"'):
|
||||
value = value[1:-1]
|
||||
else:
|
||||
try:
|
||||
base = 16 if value.startswith('0x') else 10
|
||||
value = int(value, base=base)
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
ret[match.group('option')] = value
|
||||
|
||||
match = not_set.match(line)
|
||||
if match:
|
||||
ret[match.group('option')] = 'n'
|
||||
|
||||
return ret
|
||||
|
|
Loading…
Reference in a new issue