From 0ee1ede25a9f8278a8e0bc0820e4c55d2023adf9 Mon Sep 17 00:00:00 2001 From: David Bauer <mail@david-bauer.net> 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 <mail@david-bauer.net> --- 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 fd6f76b277..69fdd371b0 100644 --- a/include/image.mk +++ b/include/image.mk @@ -647,6 +647,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 @@ -781,6 +783,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 @@ -835,6 +839,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..3478cdbf22 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]["file_size_limits"] = {} + if getenv("IMAGE_SIZE"): + file_info["profiles"][device_id]["file_size_limits"]["image"] = get_numerical_size( + getenv("IMAGE_SIZE") + ) + if getenv("KERNEL_SIZE"): + file_info["profiles"][device_id]["file_size_limits"]["kernel"] = get_numerical_size( + getenv("KERNEL_SIZE") + ) + if getenv("FILE_FILESYSTEM"): file_info["profiles"][device_id]["images"][0]["filesystem"] = getenv( "FILE_FILESYSTEM" -- 2.30.2