diff --git a/pio-scripts/load_usermods.py b/pio-scripts/load_usermods.py index 146cb1f87..38a08401e 100644 --- a/pio-scripts/load_usermods.py +++ b/pio-scripts/load_usermods.py @@ -77,17 +77,18 @@ def wrapped_ConfigureProjectLibBuilder(xenv): for dep in result.depbuilders: cached_add_includes(dep, processed_deps, extra_include_dirs) + wled_deps = [dep for dep in result.depbuilders if is_wled_module(dep)] + broken_usermods = [] - for dep in result.depbuilders: - if is_wled_module(dep): - # Add the wled folder to the include path - dep.env.PrependUnique(CPPPATH=str(wled_dir)) - # Add WLED's own dependencies - for dir in extra_include_dirs: - dep.env.PrependUnique(CPPPATH=str(dir)) - # Enforce that libArchive is not set; we must link them directly to the executable - if dep.lib_archive: - broken_usermods.append(dep) + for dep in wled_deps: + # Add the wled folder to the include path + dep.env.PrependUnique(CPPPATH=str(wled_dir)) + # Add WLED's own dependencies + for dir in extra_include_dirs: + dep.env.PrependUnique(CPPPATH=str(dir)) + # Enforce that libArchive is not set; we must link them directly to the executable + if dep.lib_archive: + broken_usermods.append(dep) if broken_usermods: broken_usermods = [usermod.name for usermod in broken_usermods] @@ -97,6 +98,9 @@ def wrapped_ConfigureProjectLibBuilder(xenv): err=True) Exit(1) + # Save the depbuilders list for later validation + xenv.Replace(WLED_MODULES=wled_deps) + return result # Apply the wrapper diff --git a/pio-scripts/validate_modules.py b/pio-scripts/validate_modules.py index f8c9a599d..d63b609ac 100644 --- a/pio-scripts/validate_modules.py +++ b/pio-scripts/validate_modules.py @@ -53,20 +53,8 @@ def validate_map_file(source, target, env): secho(f"ERROR: Map file not found: {map_file_path}", fg="red", err=True) Exit(1) - # Identify the WLED module source directories - module_lib_builders = [builder for builder in env.GetLibBuilders() if is_wled_module(env, builder)] - - if env.GetProjectOption("custom_usermods","") == "*": - # All usermods build; filter non-platform-OK modules - module_lib_builders = [builder for builder in module_lib_builders if env.IsCompatibleLibBuilder(builder)] - else: - incompatible_builders = [builder for builder in module_lib_builders if not env.IsCompatibleLibBuilder(builder)] - if incompatible_builders: - secho( - f"ERROR: Modules {[b.name for b in incompatible_builders]} are not compatible with this platform!", - fg="red", - err=True) - Exit(1) + # Identify the WLED module builders, set by load_usermods.py + module_lib_builders = env['WLED_MODULES'] # Extract the values we care about modules = {Path(builder.build_dir).name: builder.name for builder in module_lib_builders}