From 91ae28c8d44d0dc011209602edd322113abe3ddb Mon Sep 17 00:00:00 2001 From: Andrew Belt Date: Sun, 27 May 2018 18:06:02 -0400 Subject: [PATCH] Allow build script to handle arbitrary paths --- scripts/build_updates.py | 74 +++++++++++++++++++++++++--------------- 1 file changed, 47 insertions(+), 27 deletions(-) diff --git a/scripts/build_updates.py b/scripts/build_updates.py index 7546cb99..0d0dc229 100644 --- a/scripts/build_updates.py +++ b/scripts/build_updates.py @@ -2,6 +2,10 @@ import glob import json import time import os +import sys + + +RACK_SDK = os.path.abspath("Rack-SDK") def system(cmd): @@ -9,66 +13,82 @@ def system(cmd): raise Exception(f"Failed command: {cmd}") -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}' +def build_mac(repo): + 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 {repo}' system(f'{make} clean') system(f'{make} dist') -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}' +def build_win(repo): + 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 {repo}' system(f'{make} clean') system(f'{make} dist') -def build_lin(slug): - env = f'-e RACK_DIR=../../Rack-SDK' - make = f'make -j$(nproc) -C repos/{slug}' - system(f'docker run --rm -v $(pwd):/mnt -u vortico {env} a0b9c87ec456 {make} clean') - system(f'docker run --rm -v $(pwd):/mnt -u vortico {env} a0b9c87ec456 {make} dist') +def build_lin(repo): + env = f'-e RACK_DIR=/Rack-SDK' + make = f'make -j$(nproc)' + repo_abs = os.path.abspath(repo) + system(f'docker run --rm -v {RACK_SDK}:/Rack-SDK -v {repo_abs}:/workdir -w /workdir -u vortico {env} a0b9c87ec456 {make} clean') + system(f'docker run --rm -v {RACK_SDK}:/Rack-SDK -v {repo_abs}:/workdir -w /workdir -u vortico {env} a0b9c87ec456 {make} dist') -def move_package(slug): +def move_package(repo, slug): system('mkdir -p downloads') - system(f'mv repos/{slug}/dist/{slug}-*.zip downloads/') + system(f'mv {repo}/dist/{slug}-*.zip downloads/') def delete_package(slug): system(f'rm -f downloads/{slug}-*.zip') -for filename in glob.glob("manifests/*"): - slug = os.path.splitext(os.path.basename(filename))[0] - with open(filename, "r") as f: + +repos = sys.argv[1:] +if not repos: + repos = glob.glob("repos/*") + +built_repos = [] + +for repo in repos: + slug = os.path.basename(repo) + manifest_filename = "manifests/" + slug + ".json" + with open(manifest_filename, "r") as f: manifest = json.load(f) + print(manifest) - # Skip if update is not needed + # We need a repoVersion to build if 'repoVersion' not in manifest: continue - if 'latestVersion' in manifest and manifest['latestVersion'] == manifest['repoVersion']: - continue - if not os.path.exists('repos/' + slug): + # Skip if update is not needed + if 'repoVersion' in manifest and 'latestVersion' in manifest and manifest['latestVersion'] == manifest['repoVersion']: continue + # Build repo try: - build_mac(slug) - move_package(slug) - build_win(slug) - move_package(slug) - build_lin(slug) - move_package(slug) + build_lin(repo) + move_package(repo, slug) + build_win(repo) + move_package(repo, slug) + build_mac(repo) + move_package(repo, slug) except Exception as e: print(e) input("Enter to proceed") delete_package(slug) continue + built_repos.append(slug) + # Update build information manifest['latestVersion'] = manifest['repoVersion'] manifest['buildTimestamp'] = round(time.time()) manifest['status'] = "available" - with open(filename, "w") as f: + with open(manifest_filename, "w") as f: json.dump(manifest, f, indent=" ") + + +print() +print("Built " + ",".join(built_repos))