scripts: enforce module name uniqueness
Although CMake scripts already support duplicated module names, if two modules with the same name provide different Kconfig files, then both files will be loaded leading to potential conflicts. Modify zephyr_module.py to enforce that all modules are uniquely named so that it is possbile to override some of the built-in modules using ZEPHYR_EXTRA_MODULES variable. Signed-off-by: Damian Krolik <damian.krolik@nordicsemi.no>
This commit is contained in:
parent
7f365f46b8
commit
a505148d2f
2 changed files with 11 additions and 10 deletions
|
@ -146,7 +146,3 @@ else()
|
|||
)
|
||||
|
||||
endif()
|
||||
|
||||
if(DEFINED ZEPHYR_MODULE_NAMES)
|
||||
list(REMOVE_DUPLICATES ZEPHYR_MODULE_NAMES)
|
||||
endif()
|
||||
|
|
|
@ -396,6 +396,8 @@ def parse_modules(zephyr_base, modules=None, extra_modules=None):
|
|||
extra_modules = []
|
||||
|
||||
Module = namedtuple('Module', ['project', 'meta', 'depends'])
|
||||
|
||||
all_modules_by_name = {}
|
||||
# dep_modules is a list of all modules that has an unresolved dependency
|
||||
dep_modules = []
|
||||
# start_modules is a list modules with no depends left (no incoming edge)
|
||||
|
@ -410,16 +412,19 @@ def parse_modules(zephyr_base, modules=None, extra_modules=None):
|
|||
|
||||
meta = process_module(project)
|
||||
if meta:
|
||||
section = meta.get('build', dict())
|
||||
deps = section.get('depends', [])
|
||||
if not deps:
|
||||
start_modules.append(Module(project, meta, []))
|
||||
else:
|
||||
dep_modules.append(Module(project, meta, deps))
|
||||
depends = meta.get('build', {}).get('depends', [])
|
||||
all_modules_by_name[meta['name']] = Module(project, meta, depends)
|
||||
|
||||
elif project in extra_modules:
|
||||
sys.exit(f'{project}, given in ZEPHYR_EXTRA_MODULES, '
|
||||
'is not a valid zephyr module')
|
||||
|
||||
for module in all_modules_by_name.values():
|
||||
if not module.depends:
|
||||
start_modules.append(module)
|
||||
else:
|
||||
dep_modules.append(module)
|
||||
|
||||
# This will do a topological sort to ensure the modules are ordered
|
||||
# according to dependency settings.
|
||||
while start_modules:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue