Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 14 additions & 10 deletions pio-scripts/load_usermods.py
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand All @@ -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
Expand Down
16 changes: 2 additions & 14 deletions pio-scripts/validate_modules.py
Original file line number Diff line number Diff line change
Expand Up @@ -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}
Expand Down