initial commit
This commit is contained in:
74
libraries/FastLED/ci/symbol_analysis_runner.py
Normal file
74
libraries/FastLED/ci/symbol_analysis_runner.py
Normal file
@@ -0,0 +1,74 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Generic Symbol Analysis Runner for GitHub Actions
|
||||
Wrapper script to run symbol analysis with proper error handling for any platform
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
from ci.util.symbol_analysis import main as symbol_analysis
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Run symbol analysis for any platform with GitHub Actions support"
|
||||
)
|
||||
parser.add_argument("--board", required=True, help="Board name being analyzed")
|
||||
parser.add_argument("--example", default="Blink", help="Example that was compiled")
|
||||
parser.add_argument(
|
||||
"--skip-on-failure",
|
||||
action="store_true",
|
||||
help="Don't fail the build if symbol analysis fails",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
print(f"Symbol Analysis Runner - Board: {args.board}, Example: {args.example}")
|
||||
|
||||
# Check if build_info.json exists
|
||||
build_info_path = Path(".build") / args.board / "build_info.json"
|
||||
if not build_info_path.exists():
|
||||
# Fall back to nested pio structure
|
||||
build_info_path = Path(".build") / "pio" / args.board / "build_info.json"
|
||||
|
||||
if not build_info_path.exists():
|
||||
message = (
|
||||
f"Build info not found at {build_info_path}. Skipping symbol analysis."
|
||||
)
|
||||
if args.skip_on_failure:
|
||||
print(f"Warning: {message}")
|
||||
return 0
|
||||
else:
|
||||
print(f"Error: {message}")
|
||||
return 1
|
||||
|
||||
try:
|
||||
# Import and run the generic symbol analysis
|
||||
print("Running symbol analysis...")
|
||||
|
||||
# Override sys.argv to pass the board argument to the symbol analysis script
|
||||
original_argv = sys.argv
|
||||
sys.argv = ["symbol_analysis.py", "--board", args.board]
|
||||
|
||||
try:
|
||||
symbol_analysis()
|
||||
print("Symbol analysis completed successfully!")
|
||||
return 0
|
||||
finally:
|
||||
sys.argv = original_argv
|
||||
|
||||
except ImportError as e:
|
||||
print(f"Failed to import symbol_analysis module: {e}")
|
||||
if args.skip_on_failure:
|
||||
return 0
|
||||
return 1
|
||||
except Exception as e:
|
||||
print(f"Symbol analysis failed: {e}")
|
||||
if args.skip_on_failure:
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user