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

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)
Exit(1)
# Identify the WLED module source directories
module_lib_builders = [builder for builder in env.GetLibBuilders() if is_wled_module(env, builder)]
# Identify the WLED module builders, set by load_usermods.py
module_lib_builders = env['WLED_MODULES']
# Filter/warn if an incompatible usermod was requested
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)]