Merge pull request #2180 from sommersoft/support_matrix_defaults
Docs: Support Matrix - Fix Dependent Modules; Add Minimal/Default Build
This commit is contained in:
commit
22b7050c4c
|
@ -87,7 +87,8 @@ def read_mpconfig():
|
||||||
def build_module_map():
|
def build_module_map():
|
||||||
""" Establish the base of the JSON file, based on the contents from
|
""" Establish the base of the JSON file, based on the contents from
|
||||||
`configs`. Base will contain module names, if they're part of
|
`configs`. Base will contain module names, if they're part of
|
||||||
the `FULL_BUILD`, or their default value (0 | 1).
|
the `FULL_BUILD`, or their default value (0, 1, or a list of
|
||||||
|
modules that determine default [see audiocore, audiomixer, etc.]).
|
||||||
|
|
||||||
"""
|
"""
|
||||||
base = dict()
|
base = dict()
|
||||||
|
@ -98,16 +99,17 @@ def build_module_map():
|
||||||
full_name = module
|
full_name = module
|
||||||
search_name = module.lstrip("_")
|
search_name = module.lstrip("_")
|
||||||
re_pattern = "CIRCUITPY_{}\s=\s(.+)".format(search_name.upper())
|
re_pattern = "CIRCUITPY_{}\s=\s(.+)".format(search_name.upper())
|
||||||
find_config = re.search(re_pattern, configs)
|
find_config = re.findall(re_pattern, configs)
|
||||||
#print(module, "|", find_config)
|
|
||||||
if not find_config:
|
if not find_config:
|
||||||
continue
|
continue
|
||||||
full_build = int("FULL_BUILD" in find_config.group(0))
|
find_config = ", ".join([x.strip("$()") for x in find_config])
|
||||||
#print(find_config[1])
|
|
||||||
|
full_build = int("CIRCUITPY_FULL_BUILD" in find_config)
|
||||||
if not full_build:
|
if not full_build:
|
||||||
default_val = find_config.group(1)
|
default_val = find_config
|
||||||
else:
|
else:
|
||||||
default_val = "None"
|
default_val = "None"
|
||||||
|
|
||||||
base[search_name] = {
|
base[search_name] = {
|
||||||
"name": full_name,
|
"name": full_name,
|
||||||
"full_build": str(full_build),
|
"full_build": str(full_build),
|
||||||
|
@ -115,6 +117,7 @@ def build_module_map():
|
||||||
"excluded": {}
|
"excluded": {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#print(base)
|
||||||
return base
|
return base
|
||||||
|
|
||||||
|
|
||||||
|
@ -166,6 +169,7 @@ def get_excluded_boards(base):
|
||||||
if board_chip in port_config:
|
if board_chip in port_config:
|
||||||
contents += "\n" + "\n".join(port_config[board_chip])
|
contents += "\n" + "\n".join(port_config[board_chip])
|
||||||
|
|
||||||
|
check_dependent_modules = dict()
|
||||||
for module in modules:
|
for module in modules:
|
||||||
board_is_excluded = False
|
board_is_excluded = False
|
||||||
# check if board uses `SMALL_BUILD`. if yes, and current
|
# check if board uses `SMALL_BUILD`. if yes, and current
|
||||||
|
@ -173,14 +177,32 @@ def get_excluded_boards(base):
|
||||||
small_build = re.search("CIRCUITPY_SMALL_BUILD = 1", contents)
|
small_build = re.search("CIRCUITPY_SMALL_BUILD = 1", contents)
|
||||||
if small_build and base[module]["full_build"] == "1":
|
if small_build and base[module]["full_build"] == "1":
|
||||||
board_is_excluded = True
|
board_is_excluded = True
|
||||||
|
|
||||||
|
# check if board uses `MINIMAL_BUILD`. if yes, and current
|
||||||
|
# module is marked as `DEFAULT_BUILD`, board is excluded
|
||||||
|
min_build = re.search("CIRCUITPY_MINIMAL_BUILD = 1", contents)
|
||||||
|
if min_build and base[module]["default_value"] == "CIRCUITPY_DEFAULT_BUILD":
|
||||||
|
board_is_excluded = True
|
||||||
|
|
||||||
# check if module is specifically disabled for this board
|
# check if module is specifically disabled for this board
|
||||||
re_pattern = "CIRCUITPY_{}\s=\s(\w)".format(module.upper())
|
re_pattern = "CIRCUITPY_{}\s=\s(\w)".format(module.upper())
|
||||||
find_module = re.search(re_pattern, contents)
|
find_module = re.search(re_pattern, contents)
|
||||||
if not find_module:
|
if not find_module:
|
||||||
# check if default inclusion is off ('0'). if the board doesn't
|
if base[module]["default_value"].isdigit():
|
||||||
# have it explicitly enabled, its excluded.
|
# check if default inclusion is off ('0'). if the board doesn't
|
||||||
if base[module]["default_value"] == "0":
|
# have it explicitly enabled, its excluded.
|
||||||
board_is_excluded = True
|
if base[module]["default_value"] == "0":
|
||||||
|
board_is_excluded = True
|
||||||
|
else:
|
||||||
|
# this module is dependent on another module. add it
|
||||||
|
# to the list to check after processing all other modules.
|
||||||
|
# only need to check exclusion if it isn't already excluded.
|
||||||
|
if (not board_is_excluded and
|
||||||
|
base[module]["default_value"] not in [
|
||||||
|
"None",
|
||||||
|
"CIRCUITPY_DEFAULT_BUILD"
|
||||||
|
]):
|
||||||
|
check_dependent_modules[module] = base[module]["default_value"]
|
||||||
else:
|
else:
|
||||||
if (find_module.group(1) == "0" and
|
if (find_module.group(1) == "0" and
|
||||||
find_module.group(1) != base[module]["default_value"]):
|
find_module.group(1) != base[module]["default_value"]):
|
||||||
|
@ -191,6 +213,29 @@ def get_excluded_boards(base):
|
||||||
base[module]["excluded"][board_chip].append(entry.name)
|
base[module]["excluded"][board_chip].append(entry.name)
|
||||||
else:
|
else:
|
||||||
base[module]["excluded"][board_chip] = [entry.name]
|
base[module]["excluded"][board_chip] = [entry.name]
|
||||||
|
|
||||||
|
for module in check_dependent_modules:
|
||||||
|
depend_results = set()
|
||||||
|
|
||||||
|
parents = check_dependent_modules[module].split("CIRCUITPY_")
|
||||||
|
parents = [item.strip(", ").lower() for item in parents if item]
|
||||||
|
|
||||||
|
for parent in parents:
|
||||||
|
if parent in base:
|
||||||
|
if (board_chip in base[parent]["excluded"] and
|
||||||
|
entry.name in base[parent]["excluded"][board_chip]):
|
||||||
|
depend_results.add(False)
|
||||||
|
else:
|
||||||
|
depend_results.add(True)
|
||||||
|
|
||||||
|
# only exclude the module if there were zero parents enabled
|
||||||
|
# as determined by the 'depend_results' set.
|
||||||
|
if not any(depend_results):
|
||||||
|
if board_chip in base[module]["excluded"]:
|
||||||
|
base[module]["excluded"][board_chip].append(entry.name)
|
||||||
|
else:
|
||||||
|
base[module]["excluded"][board_chip] = [entry.name]
|
||||||
|
|
||||||
#print(json.dumps(base, indent=2))
|
#print(json.dumps(base, indent=2))
|
||||||
return base
|
return base
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue