Skip to content

Commit

Permalink
feat: Add PR number to version string on PR builds (#1887)
Browse files Browse the repository at this point in the history
* 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 <[email protected]>
  • Loading branch information
rotorman and pfeerick authored Apr 25, 2022
1 parent 2a3fc74 commit ddad99e
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 28 deletions.
18 changes: 13 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down
47 changes: 33 additions & 14 deletions radio/src/stamp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,35 +44,54 @@
#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

/**
* Retrieves the version of the bootloader or firmware
* @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)
Expand Down
4 changes: 4 additions & 0 deletions radio/src/stamp.h.in
Original file line number Diff line number Diff line change
@@ -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@
Expand Down
12 changes: 10 additions & 2 deletions radio/src/targets/common/arm/stm32/bootloader/boot.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
20 changes: 13 additions & 7 deletions tools/build-gh.sh
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,20 @@ fi

: ${SRCDIR:=$(dirname "$(pwd)/$0")/..}

gh_tag=${GITHUB_REF##*/}
gh_branch=$(git rev-parse --abbrev-ref HEAD)

if [[ -z $gh_tag ]];
then
export EDGETX_VERSION_SUFFIX=$gh_branch
gh_type=$(echo "$GITHUB_REF" | awk -F / '{print $2}') #heads|tags|pull

if [[ $gh_type = "tags" ]]; then
# tags: refs/tags/<tag_name>
gh_tag=${GITHUB_REF##*/}
export EDGETX_VERSION_TAG=$gh_tag
elif [[ $gh_type = "pull" ]]; then
# pull: refs/pull/<pr_number>/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/<branch_name>
gh_branch=${GITHUB_REF##*/}
export EDGETX_VERSION_SUFFIX=$gh_branch
fi

: ${BUILD_TYPE:=Release}
Expand Down

0 comments on commit ddad99e

Please sign in to comment.