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:
Dominik Ermel 2021-01-19 18:19:48 +00:00 committed by Carles Cufí
parent 09980d6a50
commit 0dfd191e04

View file

@ -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