41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
import os
|
|
import subprocess
|
|
from git import Repo
|
|
|
|
rootdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
pongodir = rootdir + "/.cached/pongoOS"
|
|
|
|
if not os.path.exists(pongodir):
|
|
url = "https://github.com/xOS-Project/pongoOS.git"
|
|
print("Cloning pongoOS to ", pongodir)
|
|
Repo.clone_from(url, pongodir)
|
|
|
|
|
|
def run_command(cmd, cwd="."):
|
|
result = subprocess.run(
|
|
cmd, stdout=subprocess.PIPE, shell=True, cwd=cwd, env=os.environ.copy())
|
|
return (result.stdout.decode("ascii"), result.returncode)
|
|
|
|
|
|
print("Rebuilding pongoOS")
|
|
run_command("make -j16", pongodir)
|
|
|
|
print("Ready: pongoOS")
|
|
checkrain_exec = os.environ.get('CHECKRAIN')
|
|
if checkrain_exec is None:
|
|
print("Error: No provided $CHECKRAIN env variable.")
|
|
print("Please get a checkrain binary at http://checkra.in/ and set $CHECKRAIN to the binary path.")
|
|
print("")
|
|
print("E.g on macOS after getting binary and installing it to /Application, run:")
|
|
print("\texport CHECKRAIN=/Applications/checkra1n.app/Contents/MacOS/checkra1n")
|
|
exit(1)
|
|
|
|
print("Checkrain is found. Connect your device and switch it to DFU mode.")
|
|
run_command("$CHECKRAIN -k " + pongodir +
|
|
"/build/PongoConsolidated.bin -cpE", pongodir)
|
|
|
|
xos_outdir = os.path.dirname(rootdir) + "/out/"
|
|
pathrun = "python3 scripts/load_xos.py -k {0}/rawImage.bin -r {0}/one.img".format(
|
|
xos_outdir)
|
|
run_command(pathrun, pongodir)
|