From e6dc9303222e22d63b4b789f3d0934a4066b974b Mon Sep 17 00:00:00 2001 From: Attie Grande Date: Mon, 22 Jan 2024 23:19:53 +0000 Subject: [PATCH] bindesc: Add support for the build version values This patch adds bindesc support for the build version values for the kernel and application - BUILD_VERSION and APP_BUILD_VERSION. The kernel's BUILD_VERSION can be overridden at build time. Signed-off-by: Attie Grande --- include/zephyr/bindesc.h | 14 ++++++++++++++ scripts/west_commands/bindesc.py | 2 ++ subsys/bindesc/Kconfig.version | 11 +++++++++++ subsys/bindesc/bindesc_version.c | 10 ++++++++++ 4 files changed, 37 insertions(+) diff --git a/include/zephyr/bindesc.h b/include/zephyr/bindesc.h index a4daaf667ffd9c..da8bcb48040e4f 100644 --- a/include/zephyr/bindesc.h +++ b/include/zephyr/bindesc.h @@ -51,6 +51,9 @@ extern "C" { /** The app version number such as 0x10203 */ #define BINDESC_ID_APP_VERSION_NUMBER 0x804 +/** The app git reference such as "v3.3.0-18-g2c85d9224fca" */ +#define BINDESC_ID_APP_BUILD_VERSION 0x805 + /** The kernel version string such as "3.4.0" */ #define BINDESC_ID_KERNEL_VERSION_STRING 0x900 @@ -66,6 +69,9 @@ extern "C" { /** The kernel version number such as 0x30400 */ #define BINDESC_ID_KERNEL_VERSION_NUMBER 0x904 +/** The kernel git reference such as "v3.3.0-18-g2c85d9224fca" */ +#define BINDESC_ID_KERNEL_BUILD_VERSION 0x905 + /** The year the image was compiled in */ #define BINDESC_ID_BUILD_TIME_YEAR 0xa00 @@ -308,6 +314,10 @@ extern const struct bindesc_entry BINDESC_NAME(kernel_version_patchlevel); extern const struct bindesc_entry BINDESC_NAME(kernel_version_number); #endif /* defined(CONFIG_BINDESC_KERNEL_VERSION_NUMBER) */ +#if defined(CONFIG_BINDESC_KERNEL_BUILD_VERSION) +extern const struct bindesc_entry BINDESC_NAME(kernel_build_version); +#endif /* defined(CONFIG_BINDESC_KERNEL_BUILD_VERSION) */ + #if defined(CONFIG_BINDESC_APP_VERSION_STRING) extern const struct bindesc_entry BINDESC_NAME(app_version_string); #endif /* defined(CONFIG_BINDESC_APP_VERSION_STRING) */ @@ -328,6 +338,10 @@ extern const struct bindesc_entry BINDESC_NAME(app_version_patchlevel); extern const struct bindesc_entry BINDESC_NAME(app_version_number); #endif /* defined(CONFIG_BINDESC_APP_VERSION_NUMBER) */ +#if defined(CONFIG_BINDESC_APP_BUILD_VERSION) +extern const struct bindesc_entry BINDESC_NAME(app_build_version); +#endif /* defined(CONFIG_BINDESC_APP_BUILD_VERSION) */ + #if defined(CONFIG_BINDESC_BUILD_TIME_YEAR) extern const struct bindesc_entry BINDESC_NAME(build_time_year); #endif /* defined(CONFIG_BINDESC_BUILD_TIME_YEAR) */ diff --git a/scripts/west_commands/bindesc.py b/scripts/west_commands/bindesc.py index c56555484e6698..d5e4b0843b795c 100644 --- a/scripts/west_commands/bindesc.py +++ b/scripts/west_commands/bindesc.py @@ -75,11 +75,13 @@ def __init__(self): self.bindesc_gen_tag(self.TYPE_UINT, 0x802): 'APP_VERSION_MINOR', self.bindesc_gen_tag(self.TYPE_UINT, 0x803): 'APP_VERSION_PATCHLEVEL', self.bindesc_gen_tag(self.TYPE_UINT, 0x804): 'APP_VERSION_NUMBER', + self.bindesc_gen_tag(self.TYPE_STR, 0x805): 'APP_BUILD_VERSION', self.bindesc_gen_tag(self.TYPE_STR, 0x900): 'KERNEL_VERSION_STRING', self.bindesc_gen_tag(self.TYPE_UINT, 0x901): 'KERNEL_VERSION_MAJOR', self.bindesc_gen_tag(self.TYPE_UINT, 0x902): 'KERNEL_VERSION_MINOR', self.bindesc_gen_tag(self.TYPE_UINT, 0x903): 'KERNEL_VERSION_PATCHLEVEL', self.bindesc_gen_tag(self.TYPE_UINT, 0x904): 'KERNEL_VERSION_NUMBER', + self.bindesc_gen_tag(self.TYPE_STR, 0x905): 'KERNEL_BUILD_VERSION', self.bindesc_gen_tag(self.TYPE_UINT, 0xa00): 'BUILD_TIME_YEAR', self.bindesc_gen_tag(self.TYPE_UINT, 0xa01): 'BUILD_TIME_MONTH', self.bindesc_gen_tag(self.TYPE_UINT, 0xa02): 'BUILD_TIME_DAY', diff --git a/subsys/bindesc/Kconfig.version b/subsys/bindesc/Kconfig.version index ee7696e8064029..7f9fd22b9b441c 100644 --- a/subsys/bindesc/Kconfig.version +++ b/subsys/bindesc/Kconfig.version @@ -35,6 +35,12 @@ config BINDESC_KERNEL_VERSION_NUMBER (major << 16 | minor << 8 | patchlevel). For example, 3.4.0 would be represented as 0x30400 +config BINDESC_KERNEL_BUILD_VERSION + bool "Kernel git reference" + help + The kernel git reference, such as "v3.3.0-18-g2c85d9224fca", + or overridden at build time - see BUILD_VERSION + config BINDESC_APP_VERSION_STRING bool "App version string" help @@ -62,4 +68,9 @@ config BINDESC_APP_VERSION_NUMBER (major << 16 | minor << 8 | patchlevel). For example, 1.0.0 would be represented as 0x10000 +config BINDESC_APP_BUILD_VERSION + bool "App git reference" + help + The application git reference, such as "v3.3.0-18-g2c85d9224fca" + endif # BINDESC_DEFINE_VERSION diff --git a/subsys/bindesc/bindesc_version.c b/subsys/bindesc/bindesc_version.c index ff8030585c2996..dc31b299e6a4e7 100644 --- a/subsys/bindesc/bindesc_version.c +++ b/subsys/bindesc/bindesc_version.c @@ -33,6 +33,11 @@ BINDESC_UINT_DEFINE(kernel_version_number, BINDESC_ID_KERNEL_VERSION_NUMBER, KERNEL_VERSION_NUMBER); #endif /* defined(CONFIG_BINDESC_KERNEL_VERSION_NUMBER) */ +#if defined(CONFIG_BINDESC_KERNEL_BUILD_VERSION) +BINDESC_STR_DEFINE(kernel_build_version, BINDESC_ID_KERNEL_BUILD_VERSION, + STRINGIFY(BUILD_VERSION)); +#endif /* CONFIG_BINDESC_KERNEL_BUILD_VERSION */ + #if defined(HAS_APP_VERSION) #include @@ -61,4 +66,9 @@ BINDESC_UINT_DEFINE(app_version_number, BINDESC_ID_APP_VERSION_NUMBER, APP_VERSION_NUMBER); #endif /* defined(CONFIG_BINDESC_APP_VERSION_NUMBER) */ +#if defined(CONFIG_BINDESC_APP_BUILD_VERSION) +BINDESC_STR_DEFINE(app_build_version, BINDESC_ID_APP_BUILD_VERSION, + STRINGIFY(APP_BUILD_VERSION)); +#endif /* CONFIG_BINDESC_APP_BUILD_VERSION */ + #endif /* defined(HAS_APP_VERSION) */