From c85f1c4f4aac72624d7417416edb357b75220d1f Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Thu, 21 Mar 2024 00:48:22 +0000 Subject: [PATCH] use build_metadata --- common/utils.py | 13 +++++++++++++ release/copy_build_files.sh | 14 ++++++++------ release/create_casync_release.py | 3 ++- system/updated/casync/common.py | 24 ++++++------------------ 4 files changed, 29 insertions(+), 25 deletions(-) diff --git a/common/utils.py b/common/utils.py index e37f2448c5..057930197b 100644 --- a/common/utils.py +++ b/common/utils.py @@ -1,5 +1,7 @@ from collections.abc import Callable +import dataclasses from functools import lru_cache +import json from typing import TypeVar @@ -21,3 +23,14 @@ class Freezable: def cache(user_function: Callable[..., _RT], /) -> Callable[..., _RT]: return lru_cache(maxsize=None)(user_function) + + +class DataClassJSONEncoder(json.JSONEncoder): + def default(self, o): + if dataclasses.is_dataclass(o): + return dataclasses.asdict(o) + return super().default(o) + + +def json_dump_dataclass(foo): + return json.dumps(foo, cls=DataClassJSONEncoder) diff --git a/release/copy_build_files.sh b/release/copy_build_files.sh index 171041c795..1dee1c9014 100755 --- a/release/copy_build_files.sh +++ b/release/copy_build_files.sh @@ -3,12 +3,14 @@ SOURCE_DIR=$1 TARGET_DIR=$2 -if [ -f /TICI ]; then - FILES_SRC="release/files_tici" -else - echo "no release files set" - exit 1 -fi +FILES_SRC="release/files_pc" + +# if [ -f /TICI ]; then +# FILES_SRC="release/files_tici" +# else +# echo "no release files set" +# exit 1 +# fi cd $SOURCE_DIR cp -pR --parents $(cat release/files_*) $TARGET_DIR/ diff --git a/release/create_casync_release.py b/release/create_casync_release.py index f9cf526bf7..28b2a40f84 100755 --- a/release/create_casync_release.py +++ b/release/create_casync_release.py @@ -4,6 +4,7 @@ import argparse import pathlib from openpilot.system.updated.casync.common import create_caexclude_file, create_casync_release, create_version_metadata_file +from openpilot.system.version import get_build_metadata if __name__ == "__main__": @@ -16,7 +17,7 @@ if __name__ == "__main__": target_dir = pathlib.Path(args.target_dir) output_dir = pathlib.Path(args.output_dir) - create_version_metadata_file(target_dir, args.channel) + create_version_metadata_file(target_dir, get_build_metadata()) create_caexclude_file(target_dir) digest, caidx = create_casync_release(target_dir, output_dir, args.channel) diff --git a/system/updated/casync/common.py b/system/updated/casync/common.py index 8e5c2215ec..1cb2c066c6 100644 --- a/system/updated/casync/common.py +++ b/system/updated/casync/common.py @@ -1,13 +1,12 @@ -import json import pathlib import subprocess -from openpilot.system.version import get_release_notes, get_version +from openpilot.common.utils import json_dump_dataclass +from openpilot.system.version import BUILD_METADATA_FILENAME, BuildMetadata CASYNC_ARGS = ["--with=symlinks", "--with=permissions"] -VERSION_METADATA_FILE = "version.json" # file that contains details of the current release -CASYNC_FILES = [VERSION_METADATA_FILE, ".caexclude"] +CASYNC_FILES = [BUILD_METADATA_FILENAME, ".caexclude"] def run(cmd): @@ -38,20 +37,9 @@ def create_caexclude_file(path: pathlib.Path): f.write(f"!{file}\n") -def create_version_metadata(channel, version, release_notes): - return { - "name": channel, - "openpilot": { - "version": version, - "release_notes": release_notes - } - } - -def create_version_metadata_file(path: pathlib.Path, channel: str): - version = get_version(str(path)) - release_notes = get_release_notes(str(path)) - with open(path / VERSION_METADATA_FILE, "w") as f: - f.write(json.dumps(create_version_metadata(channel, version, release_notes))) +def create_version_metadata_file(path: pathlib.Path, build_metadata: BuildMetadata): + with open(path / BUILD_METADATA_FILENAME, "w") as f: + f.write(json_dump_dataclass(build_metadata)) def create_casync_release(target_dir: pathlib.Path, output_dir: pathlib.Path, channel: str):