|
|
@@ -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)) |