Merge pull request #4738 from willmmiles/validate-usermods-after-removal

Fix validation after removing a usermod
This commit is contained in:
Will Miles 2025-06-20 10:04:56 -04:00 committed by GitHub
commit bbfe90d2ca
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 16 additions and 24 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,20 +53,8 @@ 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']
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)
# Extract the values we care about # Extract the values we care about
modules = {Path(builder.build_dir).name: builder.name for builder in module_lib_builders} modules = {Path(builder.build_dir).name: builder.name for builder in module_lib_builders}