X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=scripts%2Fjson_add_image_info.py;h=9aa2a19e45d585a5065981adf17d044770545599;hb=HEAD;hp=d394cf4d1fe433488ce57c061ef56476a5f691c1;hpb=bc0ffff36a0bd8043e958913f574cb8d2a79e93d;p=openwrt%2Fopenwrt.git diff --git a/scripts/json_add_image_info.py b/scripts/json_add_image_info.py index d394cf4d1f..915e5f6181 100755 --- a/scripts/json_add_image_info.py +++ b/scripts/json_add_image_info.py @@ -11,17 +11,16 @@ if len(argv) != 2: exit(1) json_path = Path(argv[1]) -bin_dir = Path(getenv("BIN_DIR")) -image_file = bin_dir / getenv("IMAGE_NAME") +file_path = Path(getenv("FILE_DIR")) / getenv("FILE_NAME") -if not image_file.is_file(): - print("Skip JSON creation for non existing image ", image_file) +if not file_path.is_file(): + print("Skip JSON creation for non existing file", file_path) exit(0) def get_titles(): titles = [] - for prefix in ["", "ALT0_", "ALT1_", "ALT2_"]: + for prefix in ["", "ALT0_", "ALT1_", "ALT2_", "ALT3_", "ALT4_", "ALT5_"]: title = {} for var in ["vendor", "model", "variant"]: if getenv("DEVICE_{}{}".format(prefix, var.upper())): @@ -37,23 +36,37 @@ def get_titles(): device_id = getenv("DEVICE_ID") -image_hash = hashlib.sha256(image_file.read_bytes()).hexdigest() -image_info = { +sha256_hash = hashlib.sha256() +with open(str(file_path),"rb") as f: + # Read and update hash string value in blocks of 4K + for byte_block in iter(lambda: f.read(4096),b""): + sha256_hash.update(byte_block) + +hash_file = sha256_hash.hexdigest() + +if file_path.with_suffix(file_path.suffix + ".sha256sum").exists(): + hash_unsigned = ( + file_path.with_suffix(file_path.suffix + ".sha256sum").read_text().strip() + ) +else: + hash_unsigned = hash_file + +file_info = { "metadata_version": 1, "target": "{}/{}".format(getenv("TARGET"), getenv("SUBTARGET")), "version_code": getenv("VERSION_CODE"), "version_number": getenv("VERSION_NUMBER"), - "source_date_epoch": getenv("SOURCE_DATE_EPOCH"), + "source_date_epoch": int(getenv("SOURCE_DATE_EPOCH")), "profiles": { device_id: { - "image_prefix": getenv("IMAGE_PREFIX"), + "image_prefix": getenv("DEVICE_IMG_PREFIX"), "images": [ { - "type": getenv("IMAGE_TYPE"), - "filesystem": getenv("IMAGE_FILESYSTEM"), - "name": getenv("IMAGE_NAME"), - "sha256": image_hash, + "type": getenv("FILE_TYPE"), + "name": getenv("FILE_NAME"), + "sha256": hash_file, + "sha256_unsigned": hash_unsigned, } ], "device_packages": getenv("DEVICE_PACKAGES").split(), @@ -63,4 +76,9 @@ image_info = { }, } -json_path.write_text(json.dumps(image_info, separators=(",", ":"))) +if getenv("FILE_FILESYSTEM"): + file_info["profiles"][device_id]["images"][0]["filesystem"] = getenv( + "FILE_FILESYSTEM" + ) + +json_path.write_text(json.dumps(file_info, separators=(",", ":")))