parent
22aa9a436d
commit
b331e4a15b
4 changed files with 70 additions and 2 deletions
@ -0,0 +1,65 @@ |
||||
import argparse |
||||
import dataclasses |
||||
import json |
||||
import pathlib |
||||
|
||||
from openpilot.common.run import run_cmd |
||||
from openpilot.system.hardware.tici.agnos import AGNOS_MANIFEST_FILE |
||||
from openpilot.system.version import get_build_metadata |
||||
|
||||
|
||||
BASE_URL = "https://commadist.blob.core.windows.net" |
||||
|
||||
CHANNEL_DATA = pathlib.Path(__file__).parent / "channel_data" / "agnos" |
||||
|
||||
OPENPILOT_RELEASES = f"{BASE_URL}/openpilot-releases" |
||||
AGNOS_RELEASES = f"{BASE_URL}/agnos-releases" |
||||
|
||||
|
||||
def create_partition_manifest(agnos_version, partition): |
||||
return { |
||||
"type": "partition", |
||||
"casync": { |
||||
"caibx": f"{AGNOS_RELEASES}/agnos-{agnos_version}-{partition['name']}.caibx" |
||||
}, |
||||
"name": partition["name"], |
||||
"size": partition["size"], |
||||
"full_check": partition["full_check"], |
||||
"hash_raw": partition["hash_raw"] |
||||
} |
||||
|
||||
|
||||
def create_openpilot_manifest(build_metadata): |
||||
return { |
||||
"type": "path_tarred", |
||||
"path": "/data/openpilot", |
||||
"casync": { |
||||
"caibx": f"{OPENPILOT_RELEASES}/{build_metadata.canonical}.caibx" |
||||
} |
||||
} |
||||
|
||||
|
||||
if __name__ == "__main__": |
||||
parser = argparse.ArgumentParser(description="creates a casync release") |
||||
parser.add_argument("target_dir", type=str, help="directory of the channel to create manifest from") |
||||
parser.add_argument("output_file", type=str, help="output file to put the manifest") |
||||
args = parser.parse_args() |
||||
|
||||
with open(pathlib.Path(args.target_dir) / AGNOS_MANIFEST_FILE) as f: |
||||
agnos_manifest = json.load(f) |
||||
|
||||
agnos_version = run_cmd(["bash", "-c", r"unset AGNOS_VERSION && source launch_env.sh && \ |
||||
echo -n $AGNOS_VERSION"], args.target_dir).strip() |
||||
|
||||
build_metadata = get_build_metadata(args.target_dir) |
||||
|
||||
ret = { |
||||
"build_metadata": dataclasses.asdict(build_metadata), |
||||
"manifest": [ |
||||
*[create_partition_manifest(agnos_version, entry) for entry in agnos_manifest], |
||||
create_openpilot_manifest(build_metadata) |
||||
] |
||||
} |
||||
|
||||
with open(args.output_file, "w") as f: |
||||
f.write(json.dumps(ret, indent=2)) |
Loading…
Reference in new issue