Browse Source

Allow build script to handle arbitrary paths

pull/514/head
Andrew Belt 7 years ago
parent
commit
91ae28c8d4
1 changed files with 47 additions and 27 deletions
  1. +47
    -27
      scripts/build_updates.py

+ 47
- 27
scripts/build_updates.py View File

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

Loading…
Cancel
Save