From 5ec9a463de4d178a00bb166a89b478476d1f23cc Mon Sep 17 00:00:00 2001 From: Andrew Belt Date: Tue, 3 Apr 2018 07:39:42 -0400 Subject: [PATCH] Add WIP build script --- scripts/build_updates.py | 70 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 scripts/build_updates.py diff --git a/scripts/build_updates.py b/scripts/build_updates.py new file mode 100644 index 00000000..4a44d20f --- /dev/null +++ b/scripts/build_updates.py @@ -0,0 +1,70 @@ +import glob +import json +import time +import os + + +def build_mac(slug): + env = f'CC=x86_64-apple-darwin15-clang CXX=x86_64-apple-darwin15-clang++-libc++ STRIP=x86_64-apple-darwin15-strip RACK_DIR=../../Rack-SDK' + make = f'{env} make -j$(nproc) -C repos/{slug}' + if os.system(f'{make} clean'): + raise Exception(f"Could not clean Mac build of {slug}") + if os.system(f'{make} dist'): + raise Exception(f"Could not make Mac build of {slug}") + + +def build_win(slug): + env = f'CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ STRIP=x86_64-w64-mingw32-strip RACK_DIR=../../Rack-SDK' + make = f'{env} make -j$(nproc) -C repos/{slug}' + if os.system(f'{make} clean'): + raise Exception(f"Could not clean Windows build of {slug}") + if os.system(f'{make} dist'): + raise Exception(f"Could not make Windows build of {slug}") + + +def build_lin(slug): + env = f'-e RACK_DIR=../../Rack-SDK' + make = f'make -j$(nproc) -C repos/{slug}' + if os.system(f'docker run --rm -v $(pwd):/mnt -u vortico {env} a0b9c87ec456 {make} clean'): + raise Exception(f"Could not clean Linux build of {slug}") + if os.system(f'docker run --rm -v $(pwd):/mnt -u vortico {env} a0b9c87ec456 {make} dist'): + raise Exception(f"Could not make Linux build of {slug}") + + +def move_package(slug): + os.system('mkdir -p downloads') + if os.system(f'mv repos/{slug}/dist/{slug}-*.zip downloads/'): + raise Exception(f"No package found for {slug}") + + +for filename in glob.glob("manifests/*"): + slug = os.path.splitext(os.path.basename(filename))[0] + with open(filename, "r") as f: + manifest = json.load(f) + + # Skip if update is not needed + if 'repoVersion' not in manifest: + continue + if 'latestVersion' in manifest and manifest['latestVersion'] == manifest['repoVersion']: + continue + if not os.path.exists('repos/' + slug): + continue + + try: + build_mac(slug) + move_package(slug) + build_win(slug) + move_package(slug) + build_lin(slug) + move_package(slug) + except Exception as e: + print(e) + break + + # Update build information + manifest['latestVersion'] = manifest['repoVersion'] + manifest['buildTimestamp'] = round(time.time()) + manifest['status'] = "available" + + with open(filename, "w") as f: + json.dump(manifest, f, indent=" ")