aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/json_add_image_info.py
diff options
context:
space:
mode:
authorPaul Spooren <mail@aparcar.org>2019-08-18 09:56:45 -1000
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>2020-06-30 22:12:39 +0200
commit8a0362c6992d2a432ecb79905531a6c7324fa6a8 (patch)
tree122442c6d1fb600cfd85429411fe815428d0cd1f /scripts/json_add_image_info.py
parent8293c8ed468e2d7c976e44a1343e52d35bdf1425 (diff)
downloadupstream-8a0362c6992d2a432ecb79905531a6c7324fa6a8.tar.gz
upstream-8a0362c6992d2a432ecb79905531a6c7324fa6a8.tar.bz2
upstream-8a0362c6992d2a432ecb79905531a6c7324fa6a8.zip
build: create JSON files containing image info
The JSON info files contain details about the created firmware images per device and are stored next to the created images. The JSON files are stored as "$(IMAGE_PREFIX).json" and contain some device/image meta data as well as a list of created firmware images. An example of openwrt-ramips-rt305x-aztech_hw550-3g.json { "id": "aztech_hw550-3g", "image_prefix": "openwrt-ramips-rt305x-aztech_hw550-3g", "images": [ { "name": "openwrt-ramips-rt305x-aztech_hw550-3g-squashfs-sysupgrade.bin", "sha256": "db2b34b0ec4a83d9bf612cf66fab0dc3722b191cb9bedf111e5627a4298baf20", "type": "sysupgrade" } ], "metadata_version": 1, "supported_devices": [ "aztech,hw550-3g", "hw550-3g" ], "target": "ramips/rt305x", "titles": [ { "model": "HW550-3G", "vendor": "Aztech" }, { "model": "ALL0239-3G", "vendor": "Allnet" } ], "version_commit": "r10920+123-0cc87b3bac", "version_number": "SNAPSHOT" } Signed-off-by: Paul Spooren <mail@aparcar.org> (backported from commit 881ed09ee6e23f6c224184bb7493253c4624fb9f) Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Diffstat (limited to 'scripts/json_add_image_info.py')
-rwxr-xr-xscripts/json_add_image_info.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/scripts/json_add_image_info.py b/scripts/json_add_image_info.py
new file mode 100755
index 0000000000..4a90eb95cf
--- /dev/null
+++ b/scripts/json_add_image_info.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env python3
+
+import json
+import os
+import hashlib
+
+
+def e(variable, default=None):
+ return os.environ.get(variable, default)
+
+
+json_path = "{}{}{}.json".format(e("BIN_DIR"), os.sep, e("IMAGE_PREFIX"))
+
+with open(os.path.join(e("BIN_DIR"), e("IMAGE_NAME")), "rb") as image_file:
+ image_hash = hashlib.sha256(image_file.read()).hexdigest()
+
+
+def get_titles():
+ return [{"title": e("DEVICE_TITLE")}]
+
+
+if not os.path.exists(json_path):
+ device_info = {
+ "id": e("DEVICE_ID"),
+ "image_prefix": e("IMAGE_PREFIX"),
+ "images": [],
+ "metadata_version": 1,
+ "supported_devices": e("SUPPORTED_DEVICES").split(),
+ "target": "{}/{}".format(e("TARGET"), e("SUBTARGET", "generic")),
+ "titles": get_titles(),
+ "version_commit": e("VERSION_CODE"),
+ "version_number": e("VERSION_NUMBER"),
+ }
+else:
+ with open(json_path, "r") as json_file:
+ device_info = json.load(json_file)
+
+image_info = {"type": e("IMAGE_TYPE"), "name": e("IMAGE_NAME"), "sha256": image_hash}
+device_info["images"].append(image_info)
+
+with open(json_path, "w") as json_file:
+ json.dump(device_info, json_file, sort_keys=True, indent=" ")