Skip to content

Commit

Permalink
tool to create casync manifest (commaai#32131)
Browse files Browse the repository at this point in the history
* manifest tool

* newline

* add to jenkins
  • Loading branch information
jnewb1 authored Apr 8, 2024
1 parent 22aa9a4 commit b331e4a
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 2 deletions.
1 change: 1 addition & 0 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ def build_release(String channel_name) {
"${channel_name} (casync)": {
deviceStage("build casync", "tici-needs-can", [], [
["build ${channel_name}", "RELEASE=1 OPENPILOT_CHANNEL=${channel_name} BUILD_DIR=/data/openpilot CASYNC_DIR=/data/casync $SOURCE_DIR/release/create_casync_build.sh"],
["create manifest", "$SOURCE_DIR/release/create_release_manifest.py /data/manifest.json && cat /data/manifest.json"],
//["upload ${channel_name}", "OPENPILOT_CHANNEL=${channel_name} $SOURCE_DIR/release/upload_casync_release.sh"],
])
}
Expand Down
4 changes: 2 additions & 2 deletions release/create_casync_agnos_release.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import pathlib
import tempfile
from openpilot.common.basedir import BASEDIR
from openpilot.system.hardware.tici.agnos import StreamingDecompressor, unsparsify, noop
from openpilot.system.hardware.tici.agnos import StreamingDecompressor, unsparsify, noop, AGNOS_MANIFEST_FILE
from openpilot.system.updated.casync.common import create_casync_from_file


Expand All @@ -13,7 +13,7 @@
parser.add_argument("output_dir", type=str, help="output directory for the channel")
parser.add_argument("version", type=str, help="version of agnos this is")
parser.add_argument("--manifest", type=str, help="json manifest to create agnos release from", \
default=str(pathlib.Path(BASEDIR) / "system/hardware/tici/agnos.json"))
default=str(pathlib.Path(BASEDIR) / AGNOS_MANIFEST_FILE))
args = parser.parse_args()

output_dir = pathlib.Path(args.output_dir)
Expand Down
65 changes: 65 additions & 0 deletions release/create_release_manifest.py
Original file line number Diff line number Diff line change
@@ -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))
2 changes: 2 additions & 0 deletions system/hardware/tici/agnos.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
SPARSE_CHUNK_FMT = struct.Struct('H2xI4x')
CAIBX_URL = "https://commadist.azureedge.net/agnosupdate/"

AGNOS_MANIFEST_FILE = "system/hardware/tici/agnos.json"


class StreamingDecompressor:
def __init__(self, url: str) -> None:
Expand Down

0 comments on commit b331e4a

Please sign in to comment.