Fix disabled usermod presence validation

PlatformIO doesn't clean out the libdir when usermods are disabled, so
they still appear in the LibBuilders() set.  Ensure that we validate
only usermods that were actually deps for the build.
This commit is contained in:
Will Miles 2025-06-18 12:08:57 -04:00
parent d2d5c423b7
commit f9bfcce65d
2 changed files with 17 additions and 12 deletions

View File

@ -77,17 +77,18 @@ def wrapped_ConfigureProjectLibBuilder(xenv):
for dep in result.depbuilders: for dep in result.depbuilders:
cached_add_includes(dep, processed_deps, extra_include_dirs) cached_add_includes(dep, processed_deps, extra_include_dirs)
wled_deps = [dep for dep in result.depbuilders if is_wled_module(dep)]
broken_usermods = [] broken_usermods = []
for dep in result.depbuilders: for dep in wled_deps:
if is_wled_module(dep): # Add the wled folder to the include path
# Add the wled folder to the include path dep.env.PrependUnique(CPPPATH=str(wled_dir))
dep.env.PrependUnique(CPPPATH=str(wled_dir)) # Add WLED's own dependencies
# Add WLED's own dependencies for dir in extra_include_dirs:
for dir in extra_include_dirs: dep.env.PrependUnique(CPPPATH=str(dir))
dep.env.PrependUnique(CPPPATH=str(dir)) # Enforce that libArchive is not set; we must link them directly to the executable
# Enforce that libArchive is not set; we must link them directly to the executable if dep.lib_archive:
if dep.lib_archive: broken_usermods.append(dep)
broken_usermods.append(dep)
if broken_usermods: if broken_usermods:
broken_usermods = [usermod.name for usermod in broken_usermods] broken_usermods = [usermod.name for usermod in broken_usermods]
@ -97,6 +98,9 @@ def wrapped_ConfigureProjectLibBuilder(xenv):
err=True) err=True)
Exit(1) Exit(1)
# Save the depbuilders list for later validation
xenv.Replace(WLED_MODULES=wled_deps)
return result return result
# Apply the wrapper # Apply the wrapper

View File

@ -53,9 +53,10 @@ def validate_map_file(source, target, env):
secho(f"ERROR: Map file not found: {map_file_path}", fg="red", err=True) secho(f"ERROR: Map file not found: {map_file_path}", fg="red", err=True)
Exit(1) Exit(1)
# Identify the WLED module source directories # Identify the WLED module builders, set by load_usermods.py
module_lib_builders = [builder for builder in env.GetLibBuilders() if is_wled_module(env, builder)] module_lib_builders = env['WLED_MODULES']
# Filter/warn if an incompatible usermod was requested
if env.GetProjectOption("custom_usermods","") == "*": if env.GetProjectOption("custom_usermods","") == "*":
# All usermods build; filter non-platform-OK modules # All usermods build; filter non-platform-OK modules
module_lib_builders = [builder for builder in module_lib_builders if env.IsCompatibleLibBuilder(builder)] module_lib_builders = [builder for builder in module_lib_builders if env.IsCompatibleLibBuilder(builder)]