| #!/usr/bin/env python3 |
| |
| import os |
| import shutil |
| import subprocess |
| |
| from upstream_utils import ( |
| get_repo_root, |
| clone_repo, |
| comment_out_invalid_includes, |
| walk_cwd_and_copy_if, |
| git_am, |
| ) |
| |
| |
| def crlf_to_lf(stackwalker_dir): |
| for root, _, files in os.walk(stackwalker_dir): |
| if ".git" in root: |
| continue |
| |
| for fname in files: |
| filename = os.path.join(root, fname) |
| print(f"Converting CRLF -> LF for {filename}") |
| with open(filename, "rb") as f: |
| content = f.read() |
| content = content.replace(b"\r\n", b"\n") |
| |
| with open(filename, "wb") as f: |
| f.write(content) |
| |
| cwd = os.getcwd() |
| os.chdir(stackwalker_dir) |
| subprocess.check_call(["git", "add", "-A"]) |
| subprocess.check_call(["git", "commit", "-m", "Fix line endings"]) |
| os.chdir(cwd) |
| |
| |
| def main(): |
| upstream_root = clone_repo( |
| "https://github.com/JochenKalmbach/StackWalker", |
| "42e7a6e056a9e7aca911a7e9e54e2e4f90bc2652", |
| shallow=False, |
| ) |
| wpilib_root = get_repo_root() |
| wpiutil = os.path.join(wpilib_root, "wpiutil") |
| |
| # Run CRLF -> LF before trying any patches |
| crlf_to_lf(upstream_root) |
| |
| # Apply patches to upstream Git repo |
| os.chdir(upstream_root) |
| for f in [ |
| "0001-Apply-PR-35.patch", |
| "0002-Remove-_M_IX86-checks.patch", |
| "0003-Add-advapi-pragma.patch", |
| ]: |
| git_am( |
| os.path.join(wpilib_root, "upstream_utils/stack_walker_patches", f), |
| ignore_whitespace=True, |
| ) |
| |
| shutil.copy( |
| os.path.join("Main", "StackWalker", "StackWalker.h"), |
| os.path.join(wpiutil, "src/main/native/windows/StackWalker.h"), |
| ) |
| |
| shutil.copy( |
| os.path.join("Main", "StackWalker", "StackWalker.cpp"), |
| os.path.join(wpiutil, "src/main/native/windows/StackWalker.cpp"), |
| ) |
| |
| |
| if __name__ == "__main__": |
| main() |