From ddad99eab1a8cee7bed5216bf8d197efd562f182 Mon Sep 17 00:00:00 2001 From: Risto Date: Mon, 25 Apr 2022 03:42:19 +0200 Subject: [PATCH] feat: Add PR number to version string on PR builds (#1887) * Add PR number to version string * Testing another way * Decide according to GitHub ref type how to parse and where to output. Prioritize EDGETX_VERSION_TAG, if set, else resort to EDGETX_VERSION_SUFFIX, if set. Adjust also firmware_version and boot_version strings and adjist bootloader title. * Consider also B/W. * B&W: omit GIT SHA if tagged, otherwise own line Omit GIT SHA from version string if a tagged version. Otherwise, show on own line since is too long for 128x64 B&W displays. Co-authored-by: Peter Feerick --- CMakeLists.txt | 18 +++++-- radio/src/stamp.cpp | 47 +++++++++++++------ radio/src/stamp.h.in | 4 ++ .../common/arm/stm32/bootloader/boot.h | 12 ++++- tools/build-gh.sh | 18 ++++--- 5 files changed, 72 insertions(+), 27 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 470d9f820..9b626a8a7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,14 +7,18 @@ set(VERSION_MINOR "8") set(VERSION_REVISION "0") set(CODENAME "dev") -if(DEFINED ENV{EDGETX_VERSION_SUFFIX}) - set(VERSION_SUFFIX "-$ENV{EDGETX_VERSION_SUFFIX}") +if(DEFINED ENV{EDGETX_VERSION_TAG}) + set(VERSION_TAG "$ENV{EDGETX_VERSION_TAG}") else() - set(VERSION_SUFFIX "-selfbuild") # If not defined, set suffix to selfbuild + if(DEFINED ENV{EDGETX_VERSION_SUFFIX}) + set(VERSION_SUFFIX "$ENV{EDGETX_VERSION_SUFFIX}") + else() + set(VERSION_SUFFIX "selfbuild") # If not defined, set suffix to selfbuild + endif() endif() set(VERSION_FAMILY ${VERSION_MAJOR}.${VERSION_MINOR}) -set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}${VERSION_SUFFIX}) +set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}) option(EdgeTX_SUPERBUILD "Cross-compile EdgeTX for each toolchain" ON) include(ExternalProject) @@ -118,7 +122,11 @@ enable_language(ASM) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/cmake) include(GenericDefinitions) -message(STATUS "EdgeTX ${VERSION} @ ${GIT_STR}") +if (VERSION_TAG) + message(STATUS "EdgeTX ${VERSION_TAG} @ ${GIT_STR}") +else() + message(STATUS "EdgeTX ${VERSION}-${VERSION_SUFFIX} @ ${GIT_STR}") +endif() if(NATIVE_BUILD) include(NativeTargets) diff --git a/radio/src/stamp.cpp b/radio/src/stamp.cpp index bb273648a..357fdfa5c 100644 --- a/radio/src/stamp.cpp +++ b/radio/src/stamp.cpp @@ -44,23 +44,31 @@ #endif #if defined(COLORLCD) - const char fw_stamp[] = "FW" TAB ": edgetx-" FLAVOUR; -#if defined(RADIOMASTER_RELEASE) || defined(JUMPER_RELEASE) - const char vers_stamp[] = "VERS" TAB ": Factory firmware (" GIT_STR ")"; -#else - const char vers_stamp[] = "VERS" TAB ": " VERSION DISPLAY_VERSION " (" GIT_STR ")"; -#endif - const char date_stamp[] = "DATE" TAB ": " DATE; - const char time_stamp[] = "TIME" TAB ": " TIME; - const char cfgv_stamp[] = "CFGV" TAB ": " CFGV_STR; + const char fw_stamp[] = "FW" TAB ": edgetx-" FLAVOUR; + #if defined(RADIOMASTER_RELEASE) || defined(JUMPER_RELEASE) + const char vers_stamp[] = "VERS" TAB ": Factory firmware (" GIT_STR ")"; + #else + #if defined(VERSION_TAG) + const char vers_stamp[] = "VERS" TAB ": " VERSION_TAG DISPLAY_VERSION " (" GIT_STR ")"; + #else + const char vers_stamp[] = "VERS" TAB ": " VERSION "-" VERSION_SUFFIX DISPLAY_VERSION " (" GIT_STR ")"; + #endif + #endif + const char date_stamp[] = "DATE" TAB ": " DATE; + const char time_stamp[] = "TIME" TAB ": " TIME; + const char cfgv_stamp[] = "CFGV" TAB ": " CFGV_STR; #elif defined(BOARD_NAME) - const char vers_stamp[] = "FW" TAB ": edgetx-" BOARD_NAME "\036VERS" TAB ": " VERSION DISPLAY_VERSION " (" GIT_STR ")" "\036DATE" TAB ": " DATE " " TIME "\036CFGV" TAB ": " CFGV_STR; + const char vers_stamp[] = "FW" TAB ": edgetx-" BOARD_NAME "\036VERS" TAB ": " VERSION DISPLAY_VERSION " (" GIT_STR ")" "\036DATE" TAB ": " DATE " " TIME "\036CFGV" TAB ": " CFGV_STR; #elif defined(RADIOMASTER_RELEASE) - const char vers_stamp[] = "FW" TAB ": edgetx-" FLAVOUR "\036VERS" TAB ": RM Factory (" GIT_STR ")" "\036BUILT BY : EdgeTX" "\036DATE" TAB ": " DATE " " TIME "\036CFGV" TAB ": " CFGV_STR; + const char vers_stamp[] = "FW" TAB ": edgetx-" FLAVOUR "\036VERS" TAB ": RM Factory (" GIT_STR ")" "\036BUILT BY : EdgeTX" "\036DATE" TAB ": " DATE " " TIME "\036CFGV" TAB ": " CFGV_STR; #elif defined(JUMPER_RELEASE) - const char vers_stamp[] = "FW" TAB ": edgetx-" FLAVOUR "\036VERS" TAB ": Factory (" GIT_STR ")" "\036BUILT BY : EdgeTX" "\036DATE" TAB ": " DATE " " TIME "\036CFGV" TAB ": " CFGV_STR; + const char vers_stamp[] = "FW" TAB ": edgetx-" FLAVOUR "\036VERS" TAB ": Factory (" GIT_STR ")" "\036BUILT BY : EdgeTX" "\036DATE" TAB ": " DATE " " TIME "\036CFGV" TAB ": " CFGV_STR; #else - const char vers_stamp[] = "FW" TAB ": edgetx-" FLAVOUR "\036VERS" TAB ": " VERSION DISPLAY_VERSION " (" GIT_STR ")" "\036DATE" TAB ": " DATE " " TIME "\036CFGV" TAB ": " CFGV_STR; + #if defined(VERSION_TAG) + const char vers_stamp[] = "FW" TAB ": edgetx-" FLAVOUR "\036VERS" TAB ": " VERSION_TAG DISPLAY_VERSION "\036DATE" TAB ": " DATE " " TIME "\036CFGV" TAB ": " CFGV_STR; + #else + const char vers_stamp[] = "FW" TAB ": edgetx-" FLAVOUR "\036VERS" TAB ": " VERSION "-" VERSION_SUFFIX DISPLAY_VERSION "\036GIT#" TAB ": " GIT_STR "\036DATE" TAB ": " DATE " " TIME "\036CFGV" TAB ": " CFGV_STR; + #endif #endif /** @@ -68,11 +76,22 @@ * @return */ #if defined(STM32) && !defined(SIMU) + #if defined(COLORLCD) + #if defined(VERSION_TAG) +__SECTION_USED(".fwversiondata") const char firmware_version[] = "edgetx-" FLAVOUR "-" VERSION_TAG DISPLAY_VERSION " (" GIT_STR ")"; +__SECTION_USED(".bootversiondata") const char boot_version[] = "edgetx-" FLAVOUR "-" VERSION_TAG DISPLAY_VERSION " (" GIT_STR ")"; + #else +__SECTION_USED(".fwversiondata") const char firmware_version[] = "edgetx-" FLAVOUR "-" VERSION "-" VERSION_SUFFIX DISPLAY_VERSION " (" GIT_STR ")"; +__SECTION_USED(".bootversiondata") const char boot_version[] = "edgetx-" FLAVOUR "-" VERSION "-" VERSION_SUFFIX DISPLAY_VERSION " (" GIT_STR ")"; + #endif + #else + /* 128x64 does not have enough real estate to display more than basic VERSION */ __SECTION_USED(".fwversiondata") const char firmware_version[] = "edgetx-" FLAVOUR "-" VERSION DISPLAY_VERSION " (" GIT_STR ")"; __SECTION_USED(".bootversiondata") const char boot_version[] = "edgetx-" FLAVOUR "-" VERSION DISPLAY_VERSION " (" GIT_STR ")"; + #endif /** - * Tries to find opentx version in the first 1024 byte of either firmware/bootloader (the one not running) or the buffer + * Tries to find EdgeTX or OpenTX version in the first 1024 byte of either firmware/bootloader (the one not running) or the buffer * @param buffer If non-null find the firmware version in the buffer instead */ const char * getFirmwareVersion(const char * buffer) diff --git a/radio/src/stamp.h.in b/radio/src/stamp.h.in index 7511f30b0..637bbb2e8 100644 --- a/radio/src/stamp.h.in +++ b/radio/src/stamp.h.in @@ -1,6 +1,10 @@ #define DATE "@DATE@" #define TIME "@TIME@" #define VERSION "@VERSION@" +#define VERSION_SUFFIX "@VERSION_SUFFIX@" +#if defined(VERSION_TAG) + #define VERSION_TAG "@VERSION_TAG@" +#endif #define CODENAME "@CODENAME@" #define VERSION_MAJOR @VERSION_MAJOR@ diff --git a/radio/src/targets/common/arm/stm32/bootloader/boot.h b/radio/src/targets/common/arm/stm32/bootloader/boot.h index 553ca59fd..d07871942 100644 --- a/radio/src/targets/common/arm/stm32/bootloader/boot.h +++ b/radio/src/targets/common/arm/stm32/bootloader/boot.h @@ -25,9 +25,17 @@ #include "stamp.h" #if LCD_W < 212 - #define BOOTLOADER_TITLE " Bootloader - " VERSION + #if defined(VERSION_TAG) + #define BOOTLOADER_TITLE " Bootloader - " VERSION_TAG + #else + #define BOOTLOADER_TITLE " Bootloader " VERSION "-" VERSION_SUFFIX + #endif #else - #define BOOTLOADER_TITLE " EdgeTX Bootloader - " VERSION + #if defined(VERSION_TAG) + #define BOOTLOADER_TITLE " EdgeTX Bootloader - " VERSION_TAG + #else + #define BOOTLOADER_TITLE " EdgeTX Bootloader - " VERSION "-" VERSION_SUFFIX + #endif #endif #define DISPLAY_CHAR_WIDTH (LCD_COLS+4) diff --git a/tools/build-gh.sh b/tools/build-gh.sh index b6d5e7059..a6a2d3d07 100755 --- a/tools/build-gh.sh +++ b/tools/build-gh.sh @@ -48,14 +48,20 @@ fi : ${SRCDIR:=$(dirname "$(pwd)/$0")/..} -gh_tag=${GITHUB_REF##*/} -gh_branch=$(git rev-parse --abbrev-ref HEAD) +gh_type=$(echo "$GITHUB_REF" | awk -F / '{print $2}') #heads|tags|pull -if [[ -z $gh_tag ]]; -then - export EDGETX_VERSION_SUFFIX=$gh_branch +if [[ $gh_type = "tags" ]]; then + # tags: refs/tags/ + gh_tag=${GITHUB_REF##*/} + export EDGETX_VERSION_TAG=$gh_tag +elif [[ $gh_type = "pull" ]]; then + # pull: refs/pull//merge + gh_pull_number=PR$(echo "$GITHUB_REF" | awk -F / '{print $3}') + export EDGETX_VERSION_SUFFIX=$gh_pull_number else - export EDGETX_VERSION_SUFFIX=$gh_tag + # heads: refs/heads/ + gh_branch=${GITHUB_REF##*/} + export EDGETX_VERSION_SUFFIX=$gh_branch fi : ${BUILD_TYPE:=Release}