Merge pull request #347 from jedi2light/feature-show-git-commit-hash-short

Feature: Store and show git short ref on PineTime alongside other firmware information
main
JF002 2021-05-16 11:37:39 +07:00 committed by GitHub
commit 5b2472c4bc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 36 additions and 0 deletions

@ -55,10 +55,22 @@ if(BUILD_DFU)
set(BUILD_DFU true) set(BUILD_DFU true)
endif() endif()
set(PROJECT_GIT_COMMIT_HASH "")
execute_process(COMMAND git rev-parse --short HEAD
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE PROJECT_GIT_COMMIT_HASH
RESULT_VARIABLE PROJECT_GIT_COMMIT_HASH_SUCCESS)
string(STRIP ${PROJECT_GIT_COMMIT_HASH} PROJECT_GIT_COMMIT_HASH)
message("PROJECT_GIT_COMMIT_HASH_SUCCESS? " ${PROJECT_GIT_COMMIT_HASH_SUCCESS})
message("BUILD CONFIGURATION") message("BUILD CONFIGURATION")
message("-------------------") message("-------------------")
message(" * Version : " ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}) message(" * Version : " ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})
message(" * Toolchain : " ${ARM_NONE_EABI_TOOLCHAIN_PATH}) message(" * Toolchain : " ${ARM_NONE_EABI_TOOLCHAIN_PATH})
message(" * GitRef(S) : " ${PROJECT_GIT_COMMIT_HASH})
message(" * NRF52 SDK : " ${NRF5_SDK_PATH}) message(" * NRF52 SDK : " ${NRF5_SDK_PATH})
set(PROGRAMMER "???") set(PROGRAMMER "???")
if(USE_JLINK) if(USE_JLINK)

@ -19,8 +19,11 @@ RUN apt-get update -qq \
libffi-dev \ libffi-dev \
libssl-dev \ libssl-dev \
python3-dev \ python3-dev \
git \
&& rm -rf /var/cache/apt/* /var/lib/apt/lists/*; && rm -rf /var/cache/apt/* /var/lib/apt/lists/*;
# Git needed for PROJECT_GIT_COMMIT_HASH variable setting
# Needs to be installed as root # Needs to be installed as root
RUN pip3 install adafruit-nrfutil RUN pip3 install adafruit-nrfutil
RUN pip3 install -Iv cryptography==3.3 RUN pip3 install -Iv cryptography==3.3

@ -19,8 +19,11 @@ RUN apt-get update -qq \
libssl-dev \ libssl-dev \
python3-dev \ python3-dev \
python \ python \
git \
&& rm -rf /var/cache/apt/* /var/lib/apt/lists/*; && rm -rf /var/cache/apt/* /var/lib/apt/lists/*;
# Git needed for PROJECT_GIT_COMMIT_HASH variable setting
RUN pip3 install adafruit-nrfutil RUN pip3 install adafruit-nrfutil
RUN pip3 install -Iv cryptography==3.3 RUN pip3 install -Iv cryptography==3.3

@ -8,11 +8,13 @@ namespace Pinetime {
static constexpr uint32_t Major() {return major;} static constexpr uint32_t Major() {return major;}
static constexpr uint32_t Minor() {return minor;} static constexpr uint32_t Minor() {return minor;}
static constexpr uint32_t Patch() {return patch;} static constexpr uint32_t Patch() {return patch;}
static constexpr const char* GitCommitHash() {return commitHash;}
static constexpr const char* VersionString() {return versionString;} static constexpr const char* VersionString() {return versionString;}
private: private:
static constexpr uint32_t major = @PROJECT_VERSION_MAJOR@; static constexpr uint32_t major = @PROJECT_VERSION_MAJOR@;
static constexpr uint32_t minor = @PROJECT_VERSION_MINOR@; static constexpr uint32_t minor = @PROJECT_VERSION_MINOR@;
static constexpr uint32_t patch = @PROJECT_VERSION_PATCH@; static constexpr uint32_t patch = @PROJECT_VERSION_PATCH@;
static constexpr const char* commitHash = "@PROJECT_GIT_COMMIT_HASH@";
static constexpr const char* versionString = "@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@"; static constexpr const char* versionString = "@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@";
}; };
} }

@ -27,6 +27,17 @@ FirmwareValidation::FirmwareValidation(Pinetime::Applications::DisplayApp* app,
sprintf(version, "%ld.%ld.%ld", Version::Major(), Version::Minor(), Version::Patch()); sprintf(version, "%ld.%ld.%ld", Version::Major(), Version::Minor(), Version::Patch());
lv_label_set_text(labelVersionValue, version); lv_label_set_text(labelVersionValue, version);
labelShortRefInfo = lv_label_create(lv_scr_act(), nullptr);
lv_obj_align(labelShortRefInfo, nullptr, LV_ALIGN_IN_TOP_LEFT, 0, 25);
lv_label_set_text(labelShortRefInfo, "ShortRef : ");
lv_label_set_align(labelShortRefInfo, LV_LABEL_ALIGN_LEFT);
labelShortRefValue = lv_label_create(lv_scr_act(), nullptr);
lv_obj_align(labelShortRefValue, labelShortRefInfo, LV_ALIGN_OUT_RIGHT_MID, 0, 0);
lv_label_set_recolor(labelShortRefValue, true);
sprintf(shortref, "%s", Version::GitCommitHash());
lv_label_set_text(labelShortRefValue, shortref);
labelIsValidated = lv_label_create(lv_scr_act(), nullptr); labelIsValidated = lv_label_create(lv_scr_act(), nullptr);
lv_obj_align(labelIsValidated, nullptr, LV_ALIGN_IN_TOP_LEFT, 0, 50); lv_obj_align(labelIsValidated, nullptr, LV_ALIGN_IN_TOP_LEFT, 0, 50);
lv_label_set_recolor(labelIsValidated, true); lv_label_set_recolor(labelIsValidated, true);

@ -25,7 +25,10 @@ namespace Pinetime {
lv_obj_t* labelVersionInfo; lv_obj_t* labelVersionInfo;
lv_obj_t* labelVersionValue; lv_obj_t* labelVersionValue;
lv_obj_t* labelShortRefInfo;
lv_obj_t* labelShortRefValue;
char version[9]; char version[9];
char shortref[9];
lv_obj_t* labelIsValidated; lv_obj_t* labelIsValidated;
lv_obj_t* buttonValidate; lv_obj_t* buttonValidate;
lv_obj_t* labelButtonValidate; lv_obj_t* labelButtonValidate;

@ -69,12 +69,14 @@ std::unique_ptr<Screen> SystemInfo::CreateScreen1() {
lv_label_set_text_fmt(label, lv_label_set_text_fmt(label,
"#FFFF00 InfiniTime#\n\n" "#FFFF00 InfiniTime#\n\n"
"#444444 Version# %ld.%ld.%ld\n\n" "#444444 Version# %ld.%ld.%ld\n\n"
"#444444 Short Ref# %s\n\n"
"#444444 Build date#\n" "#444444 Build date#\n"
"%s\n" "%s\n"
"%s\n", "%s\n",
Version::Major(), Version::Major(),
Version::Minor(), Version::Minor(),
Version::Patch(), Version::Patch(),
Version::GitCommitHash(),
__DATE__, __DATE__,
__TIME__); __TIME__);
lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);