#!/usr/bin/env python3 import os import shutil import subprocess from upstream_utils import ( get_repo_root, clone_repo, walk_cwd_and_copy_if, git_am, ) def main(): upstream_root = clone_repo("https://github.com/ludocode/mpack", "v1.1") wpilib_root = get_repo_root() wpiutil = os.path.join(wpilib_root, "wpiutil") # Delete old install for d in [ "src/main/native/thirdparty/mpack/src", "src/main/native/thirdparty/mpack/include", ]: shutil.rmtree(os.path.join(wpiutil, d), ignore_errors=True) # Apply patches to upstream Git repo os.chdir(upstream_root) for f in [ "0001-Don-t-emit-inline-defs.patch", "0002-Update-amalgamation-script.patch", "0003-Use-namespace-for-C.patch", "0004-Group-doxygen-into-MPack-module.patch", ]: git_am( os.path.join(wpilib_root, "upstream_utils/mpack_patches", f), ) # Run the amalgmation script subprocess.check_call(["bash", "tools/amalgamate.sh"]) # Copy the files amalgamation_source_dir = os.path.join( ".", ".build", "amalgamation", "src", "mpack" ) os.chdir(amalgamation_source_dir) walk_cwd_and_copy_if( lambda dp, f: f.endswith(".h"), os.path.join(wpiutil, "src/main/native/thirdparty/mpack/include/wpi"), ) walk_cwd_and_copy_if( lambda dp, f: f.endswith(".c"), os.path.join(wpiutil, "src/main/native/thirdparty/mpack/src"), ) if __name__ == "__main__": main()