From 87962dae6b2b2f1a0ad6840fbdbfdae05cb6f214 Mon Sep 17 00:00:00 2001 From: David Bauer Date: Mon, 11 Dec 2023 14:46:12 +0100 Subject: [PATCH] build: include size-limits to device-metadata Include the image and kernel size limitations defined for each device to the device metadata JSON. These informations are only added if defined. Signed-off-by: David Bauer --- include/image.mk | 6 ++++++ scripts/json_add_image_info.py | 27 ++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/include/image.mk b/include/image.mk index 096ccb5f18..7f61dd07f3 100644 --- a/include/image.mk +++ b/include/image.mk @@ -566,6 +566,8 @@ define Device/Build/initramfs VERSION_NUMBER="$(VERSION_NUMBER)" \ VERSION_CODE="$(VERSION_CODE)" \ SUPPORTED_DEVICES="$$(SUPPORTED_DEVICES)" \ + KERNEL_SIZE="$$(KERNEL_SIZE)" \ + IMAGE_SIZE="$$(IMAGE_SIZE)" \ $(TOPDIR)/scripts/json_add_image_info.py $$@ endef endif @@ -700,6 +702,8 @@ define Device/Build/image VERSION_NUMBER="$(VERSION_NUMBER)" \ VERSION_CODE="$(VERSION_CODE)" \ SUPPORTED_DEVICES="$(SUPPORTED_DEVICES)" \ + KERNEL_SIZE="$(KERNEL_SIZE)" \ + IMAGE_SIZE="$(IMAGE_SIZE)" \ $(TOPDIR)/scripts/json_add_image_info.py $$@ endef @@ -754,6 +758,8 @@ define Device/Build/artifact VERSION_NUMBER="$(VERSION_NUMBER)" \ VERSION_CODE="$(VERSION_CODE)" \ SUPPORTED_DEVICES="$(SUPPORTED_DEVICES)" \ + KERNEL_SIZE="$(KERNEL_SIZE)" \ + IMAGE_SIZE="$(IMAGE_SIZE)" \ $(TOPDIR)/scripts/json_add_image_info.py $$@ endef diff --git a/scripts/json_add_image_info.py b/scripts/json_add_image_info.py index 915e5f6181..f4b3336e32 100755 --- a/scripts/json_add_image_info.py +++ b/scripts/json_add_image_info.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -from os import getenv +from os import getenv, path from pathlib import Path from sys import argv import hashlib @@ -35,6 +35,17 @@ def get_titles(): return titles +def get_numerical_size(image_size): + if image_size.endswith("g"): + return int(image_size[:-1]) * 1024 * 1024 * 1024 + elif image_size.endswith("m"): + return int(image_size[:-1]) * 1024 * 1024 + elif image_size.endswith("k"): + return int(image_size[:-1]) * 1024 + else: + return int(image_size) + + device_id = getenv("DEVICE_ID") sha256_hash = hashlib.sha256() @@ -52,6 +63,8 @@ if file_path.with_suffix(file_path.suffix + ".sha256sum").exists(): else: hash_unsigned = hash_file +file_size = path.getsize(file_path) + file_info = { "metadata_version": 1, "target": "{}/{}".format(getenv("TARGET"), getenv("SUBTARGET")), @@ -67,6 +80,7 @@ file_info = { "name": getenv("FILE_NAME"), "sha256": hash_file, "sha256_unsigned": hash_unsigned, + "size": file_size, } ], "device_packages": getenv("DEVICE_PACKAGES").split(), @@ -76,6 +90,17 @@ file_info = { }, } +if getenv("IMAGE_SIZE") or getenv("KERNEL_SIZE"): + file_info["profiles"][device_id]["limits"] = {} + if getenv("IMAGE_SIZE"): + file_info["profiles"][device_id]["limits"]["image_size"] = get_numerical_size( + getenv("IMAGE_SIZE") + ) + if getenv("KERNEL_SIZE"): + file_info["profiles"][device_id]["limits"]["kernel_size"] = get_numerical_size( + getenv("KERNEL_SIZE") + ) + if getenv("FILE_FILESYSTEM"): file_info["profiles"][device_id]["images"][0]["filesystem"] = getenv( "FILE_FILESYSTEM" -- 2.30.2