134 lines
4.5 KiB
Python
134 lines
4.5 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Disable All Source Build System
|
|
|
|
This script temporarily disables the all source build system by:
|
|
1. Removing wrapper logic from .cpp files
|
|
2. Restoring normal compilation behavior
|
|
3. Commenting out the FASTLED_ALL_SRC logic
|
|
|
|
This is a recovery tool to get the system back to a working state.
|
|
"""
|
|
|
|
import os
|
|
import glob
|
|
from pathlib import Path
|
|
|
|
def disable_wrapper_file(cpp_file: Path) -> bool:
|
|
"""Disable wrapper logic in a .cpp file by commenting out the conditional compilation."""
|
|
try:
|
|
with open(cpp_file, 'r') as f:
|
|
content = f.read()
|
|
|
|
# Check if it's a wrapper file (contains FASTLED_ALL_SRC logic)
|
|
if 'FASTLED_ALL_SRC' in content and 'compiler_control.h' in content:
|
|
print(f"Disabling wrapper: {cpp_file}")
|
|
|
|
# Comment out the wrapper logic but keep the structure
|
|
lines = content.split('\n')
|
|
new_lines = []
|
|
|
|
for line in lines:
|
|
if any(keyword in line for keyword in ['#include "fl/compiler_control.h"',
|
|
'#if !FASTLED_ALL_SRC',
|
|
'#include',
|
|
'#endif']):
|
|
new_lines.append(f"// DISABLED: {line}")
|
|
else:
|
|
new_lines.append(line)
|
|
|
|
# Add a simple placeholder implementation
|
|
new_content = '\n'.join(new_lines)
|
|
new_content += f'''
|
|
|
|
// TEMPORARY PLACEHOLDER - This file needs proper implementation
|
|
// All source build wrapper has been disabled to restore compilation
|
|
// TODO: Restore original {cpp_file.name} implementation
|
|
|
|
'''
|
|
|
|
with open(cpp_file, 'w') as f:
|
|
f.write(new_content)
|
|
|
|
return True
|
|
return False
|
|
|
|
except Exception as e:
|
|
print(f"Error processing {cpp_file}: {e}")
|
|
return False
|
|
|
|
def disable_compiler_control():
|
|
"""Disable FASTLED_ALL_SRC logic in compiler_control.h."""
|
|
control_file = Path("src/fl/compiler_control.h")
|
|
if not control_file.exists():
|
|
print(f"Warning: {control_file} not found")
|
|
return
|
|
|
|
with open(control_file, 'r') as f:
|
|
content = f.read()
|
|
|
|
if 'FASTLED_ALL_SRC' in content:
|
|
print(f"Disabling FASTLED_ALL_SRC logic in {control_file}")
|
|
|
|
# Comment out the entire FASTLED_ALL_SRC section
|
|
lines = content.split('\n')
|
|
new_lines = []
|
|
in_all_src_section = False
|
|
|
|
for line in lines:
|
|
if 'All Source Build Control' in line:
|
|
in_all_src_section = True
|
|
new_lines.append(f"// DISABLED: {line}")
|
|
elif in_all_src_section and line.strip() == '':
|
|
in_all_src_section = False
|
|
new_lines.append(line)
|
|
elif in_all_src_section:
|
|
new_lines.append(f"// DISABLED: {line}")
|
|
else:
|
|
new_lines.append(line)
|
|
|
|
# Add a simple disable definition
|
|
new_content = '\n'.join(new_lines)
|
|
new_content += '''
|
|
|
|
// TEMPORARY DISABLE - All source build system disabled for recovery
|
|
#ifndef FASTLED_ALL_SRC
|
|
#define FASTLED_ALL_SRC 0 // Always use individual compilation
|
|
#endif
|
|
|
|
'''
|
|
|
|
with open(control_file, 'w') as f:
|
|
f.write(new_content)
|
|
|
|
def main():
|
|
"""Main function to disable the all source build system."""
|
|
print("🛑 Disabling All Source Build System for Recovery")
|
|
|
|
# Find all .cpp files that might have wrapper code
|
|
cpp_patterns = [
|
|
"src/**/*.cpp",
|
|
]
|
|
|
|
disabled_count = 0
|
|
|
|
for pattern in cpp_patterns:
|
|
for filepath in glob.glob(pattern, recursive=True):
|
|
cpp_file = Path(filepath)
|
|
if cpp_file.name != "fastled_compile.cpp": # Don't modify the unified file
|
|
if disable_wrapper_file(cpp_file):
|
|
disabled_count += 1
|
|
|
|
# Disable compiler control logic
|
|
disable_compiler_control()
|
|
|
|
print(f"\n✅ All source build system disabled!")
|
|
print(f" - Disabled {disabled_count} wrapper files")
|
|
print(f" - Commented out FASTLED_ALL_SRC logic")
|
|
print(f"\n⚠️ This is a TEMPORARY recovery state")
|
|
print(f" - System should now compile with individual .cpp files")
|
|
print(f" - You can now implement proper all source build system")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|