~aleteoryx/muditaos

d1d34e558bafdfab9325619693e5f40e83dfb3a6 — Adam Dobrowolski 4 years ago cafc2f8
[CP-688] Changed cmake so that it would accept version as parameter

We are guessing verion in scripts, when we should take it as parameter
M CMakeLists.txt => CMakeLists.txt +5 -0
@@ 31,6 31,7 @@ message("Selected product: ${PRODUCT}")
message("Selected board:   ${BOARD}")
message("Board revision:   ${BOARD_REVISION}")
message("PROJECT_TARGET:   ${PROJECT_TARGET}")
message("Version:          ${OS_VERSION_MAJOR}.${OS_VERSION_MINOR}.${OS_VERSION_PATCH}-${OS_VERSION_LABEL}")

string(REPLACE "TARGET_" "" PROJECT_TARGET_NAME ${PROJECT_TARGET})
string(TOLOWER "${PROJECT_TARGET_NAME}" PROJECT_TARGET_NAME)


@@ 151,6 152,10 @@ add_custom_target(
    COMMAND ${CMAKE_COMMAND}
    -DSRC_DIR=${CMAKE_SOURCE_DIR}
    -B ${CMAKE_BINARY_DIR}
    -DOS_VERSION_MAJOR=${OS_VERSION_MAJOR}
    -DOS_VERSION_MINOR=${OS_VERSION_MINOR}
    -DOS_VERSION_PATCH=${OS_VERSION_PATCH}
    -DOS_VERSION_LABEL=${OS_VERSION_LABEL}
    -P ${CMAKE_SOURCE_DIR}/cmake/modules/GenVersionHpp.cmake
    COMMENT
        "Generating version info"

M cmake/modules/AddVersionJson.cmake => cmake/modules/AddVersionJson.cmake +5 -1
@@ 9,10 9,14 @@ function(add_version_json SOURCE_TARGET)
            -DBOOTLOADER_VERSION_FILE=${CMAKE_BINARY_DIR}/ecoboot.version
            -DBOOT_FILENAME=boot.bin
            -DBOOT_FILE=$<TARGET_PROPERTY:${SOURCE_TARGET},BIN_FILE>
            -DBOOT_VERSION=${CMAKE_PROJECT_VERSION}
            -DBOOT_VERSION=${PROJECT_VERSION}
            -DUPDATER_FILENAME=updater.bin
            -DUPDATER_FILE=${CMAKE_BINARY_DIR}/updater.bin
            -DUPDATER_VERSION_FILE=${CMAKE_BINARY_DIR}/PureUpdater.version
            -DOS_VERSION_MAJOR=${OS_VERSION_MAJOR}
            -DOS_VERSION_MINOR=${OS_VERSION_MINOR}
            -DOS_VERSION_PATCH=${OS_VERSION_PATCH}
            -DOS_VERSION_LABEL=${OS_VERSION_LABEL}
            -B ${CMAKE_BINARY_DIR}
            -P ${CMAKE_SOURCE_DIR}/cmake/modules/ConfigureVersionJson.cmake
        DEPENDS ecoboot.bin-target

M cmake/modules/GenVersionHpp.cmake => cmake/modules/GenVersionHpp.cmake +0 -4
@@ 7,7 7,3 @@ configure_file(
    ${SRC_DIR}/source/version.hpp.template
    ${CMAKE_BINARY_DIR}/source/include/product/version.hpp
    )

message("GIT_REV: ${GIT_REV}")
message("GIT_TAG: ${GIT_TAG}")
message("Version: ${CMAKE_PROJECT_VERSION}")

M cmake/modules/Version.cmake => cmake/modules/Version.cmake +20 -81
@@ 1,92 1,31 @@
# from: https://www.mattkeeter.com/blog/2018-01-06-versioning/ (modified)
# Version cmake sets whole build version
# it has to be:
# 1. a parameter to the build, cmake shoudln't guess version - we should provide it explicitly
# 2. conformant with: https://appnroll.atlassian.net/wiki/spaces/MFP/pages/1168015551/Release+version+and+branch+management

execute_process(COMMAND git rev-parse --short HEAD
                OUTPUT_VARIABLE GIT_REV
                OUTPUT_STRIP_TRAILING_WHITESPACE
                ERROR_QUIET)
                )
execute_process(
                COMMAND git rev-parse --abbrev-ref HEAD
                OUTPUT_VARIABLE GIT_BRANCH
                OUTPUT_STRIP_TRAILING_WHITESPACE
                )

if ( NOT SRC_DIR )
    set(SRC_DIR ${CMAKE_SOURCE_DIR})
endif()
# Check whether we got any revision (which isn't
# always the case, e.g. when someone downloaded a zip
# file from Github instead of a checkout)
if ("${GIT_REV}" STREQUAL "")
    set(GIT_REV "N/A")
    set(GIT_DIFF "")
    set(GIT_TAG "N/A")
    set(GIT_BRANCH "N/A")
    set(GIT_DAILY_TAG "N/A")
if ( (NOT OS_VERSION_MAJOR MATCHES [0-9]+) OR (NOT OS_VERSION_MINOR MATCHES [0-9]+) OR (NOT OS_VERSION_PATCH MATCHES [0-9]+) )
    message( WARNING "Version not set properly! Setting version to 0.0.0! Requires MAJOR.MINOR.PATCH as parameters was: ${OS_VERSION_MAJOR}.${OS_VERSION_MINOR}.${OS_VERSION_PATCH}")
    set(OS_VERSION_MAJOR "0")
    set(OS_VERSION_MINOR "0")
    set(OS_VERSION_PATCH "0")
else()
    execute_process(
        COMMAND bash -c "git diff --quiet --exit-code || echo +"
        OUTPUT_VARIABLE GIT_DIFF
        OUTPUT_STRIP_TRAILING_WHITESPACE
        WORKING_DIRECTORY ${SRC_DIR}
        )
    execute_process(
        COMMAND git describe --tags --match "release*" HEAD
        RESULT_VARIABLE ret
        OUTPUT_VARIABLE GIT_TAG
        OUTPUT_STRIP_TRAILING_WHITESPACE
        WORKING_DIRECTORY ${SRC_DIR}
        ERROR_QUIET
        )
        if(NOT ret EQUAL "0")
            set(GIT_TAG "none")
        endif()
    execute_process(
        COMMAND git tag --points-at HEAD 
        RESULT_VARIABLE ret
        OUTPUT_VARIABLE GIT_DAILY_TAG
        OUTPUT_STRIP_TRAILING_WHITESPACE
        WORKING_DIRECTORY ${SRC_DIR}
        ERROR_QUIET
        )
    execute_process(
        COMMAND git rev-parse --abbrev-ref HEAD
        OUTPUT_VARIABLE GIT_BRANCH
        OUTPUT_STRIP_TRAILING_WHITESPACE
        )
    execute_process(
        COMMAND uname -r
        OUTPUT_VARIABLE BUILD_HOST
        OUTPUT_STRIP_TRAILING_WHITESPACE
        )
    execute_process(
        COMMAND git config user.name
        OUTPUT_VARIABLE BUILD_USER
        OUTPUT_STRIP_TRAILING_WHITESPACE
        )
    execute_process(
        COMMAND date +%F-%T
        OUTPUT_VARIABLE BUILD_DATE
        OUTPUT_STRIP_TRAILING_WHITESPACE
        )
    execute_process(
        COMMAND grep tskKERNEL_VERSION_NUMBER ${SRC_DIR}/module-os/FreeRTOS/include/task.h
        COMMAND awk "{print $3}"
        COMMAND tr -d "\""
        OUTPUT_VARIABLE KERNEL_VERSION
        OUTPUT_STRIP_TRAILING_WHITESPACE
        )
    message(STATUS "Version major: ${OS_VERSION_MAJOR} minor: ${OS_VERSION_MINOR} path: ${OS_VERSION_PATCH} label: ${OS_VERSION_LABEL}")
endif()

if (GIT_DAILY_TAG)
    string(REPLACE "\n" ";" GIT_DAILY_TAG_LIST ${GIT_DAILY_TAG})
    list(LENGTH GIT_DAILY_TAG_LIST DAILY_LEN)
    foreach(TAG_ITEM IN LISTS GIT_DAILY_TAG_LIST)
        if(${TAG_ITEM} MATCHES "release-([0-9]+).([0-9]+).([0-9]+)")
            break()
        elseif(${TAG_ITEM} MATCHES "daily-([0-9]+).([0-9]+).([0-9]+)")
            continue()
        endif()
    endforeach()
if ( (NOT DEFINED OS_VERSION_LABEL) OR (OS_VERSION_LABEL STREQUAL "") )
    set(OS_VERSION_LABEL "")
    set(PROJECT_VERSION ${OS_VERSION_MAJOR}.${OS_VERSION_MINOR}.${OS_VERSION_PATCH})
else()
    string(REGEX MATCH "release-([0-9]+).([0-9]+).([0-9]+)" VERSION_RAW ${GIT_TAG})
    set(PROJECT_VERSION ${OS_VERSION_MAJOR}.${OS_VERSION_MINOR}.${OS_VERSION_PATCH}-${OS_VERSION_LABEL})
endif()

set(CMAKE_PROJECT_VERSION_MAJOR "${CMAKE_MATCH_1}")
set(CMAKE_PROJECT_VERSION_MINOR "${CMAKE_MATCH_2}")
set(CMAKE_PROJECT_VERSION_PATCH "${CMAKE_MATCH_3}")
set(CMAKE_PROJECT_VERSION "${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}.${CMAKE_PROJECT_VERSION_PATCH}")

M config/common.sh => config/common.sh +1 -26
@@ 1,22 1,7 @@
#!/bin/bash -e
# Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
# Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
# For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

MUDITAOS_PARTITION_PRIMARY="MUDITAOS"
MUDITAOS_PARTITION_RECOVERY="RECOVER"
MUDITAOS_CURRENT="current"
MUDITAOS_PREVIOUS="previous"
MUDITAOS_FACTORY="factory"
MUDITAOS_UPDATES="updates"
MUDITAOS_VERSION_MAJOR=""
MUDITAOS_VERSION_MINOR=""
MUDITAOS_VERSION_PATCH=""
MUDITAOS_GIT_TAG=""
MUDITAUS_GIT_REV=""
MUDITAOS_GIT_BRANCH=""

IMAGE_FILES="data assets country-codes.db Luts.bin user .boot.json .boot.json.crc32"
IMAGE_MOVE_TO_ROOT="user .boot.json .boot.json.crc32"
check_any_arch() {
    local path="${1}"
    local product="${2}"


@@ 28,13 13,3 @@ check_any_arch() {
check_target_rt1051() {
    check_any_arch "${@}" 'ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked'
}

MUDITAOS_GIT_TAG=`git describe --tags | awk -F'-' '{print $2}'`
MUDITAOS_GIT_REV=`git log --pretty=format:'%h' -n 1`
MUDITAOS_GIT_BRANCH=`git rev-parse --abbrev-ref HEAD`

version=( ${MUDITAOS_GIT_TAG//./ } )
MUDITAOS_VERSION_STRING=$MUDITAOS_GIT_TAG
MUDITAOS_VERSION_MAJOR=${version[0]}
MUDITAOS_VERSION_MINOR=${version[1]}
MUDITAOS_VERSION_PATCH=${version[2]}

M config/version.json.cmake_template => config/version.json.cmake_template +8 -20
@@ 2,40 2,28 @@
    "git":
    {
        "git_branch": "@GIT_BRANCH@",
        "git_commit": "@GIT_REV@",
        "git_tag": "@GIT_TAG@"
    },
    "misc":
    {
        "codename": "@VERSION_CODENAME@",
        "kernel": "@KERNEL_VERSION@",
        "buildon": "@BUILD_HOST@",
        "builddate": "@BUILD_DATE@",
        "builduser": "@BUILD_USER@"
        "git_commit": "@GIT_REV@"
    },
    "version":
    {
        "major": "@CMAKE_PROJECT_VERSION_MAJOR@",
        "minor": "@CMAKE_PROJECT_VERSION_MINOR@",
        "patch": "@CMAKE_PROJECT_VERSION_PATCH@",
        "string": "@CMAKE_PROJECT_VERSION@"
        "version": "@PROJECT_VERSION@"
    },
    "bootloader":
    {
        "version": "@BOOTLOADER_VERSION@",
        "version":  "@BOOTLOADER_VERSION@",
        "filename": "@BOOTLOADER_FILENAME@",
        "md5sum": "@BOOTLOADER_MD5SUM@"
        "md5sum":   "@BOOTLOADER_MD5SUM@"
    },
    "boot":
    {
        "version": "@BOOT_VERSION@",
        "version":  "@OS_VERSION_MAJOR@.@OS_VERSION_MINOR@.@OS_VERSION_PATCH@",
        "filename": "@BOOT_FILENAME@",
        "md5sum": "@BOOT_MD5SUM@"
        "md5sum":   "@BOOT_MD5SUM@"
    },
    "updater":
    {
        "version": "@UPDATER_VERSION@",
        "version":  "@UPDATER_VERSION@",
        "filename": "@UPDATER_FILENAME@",
        "md5sum": "@UPDATER_MD5SUM@"
        "md5sum":   "@UPDATER_MD5SUM@"
    }
}

D config/version.json.template => config/version.json.template +0 -29
@@ 1,29 0,0 @@
{
	"git":
	{
		"git_branch":   "__GIT_BRANCH__",
		"git_commit": "__GIT_REVISION__",
		"git_tag":      "__GIT_TAG__"
	},
	"misc":
	{
		"codename":  "__MISC_CODENAME__",
		"kernel":    "__MISC_KERNEL__",
		"buildon":   "__MISC_BUILD_HOST__",
		"builddate": "__MISC_BUILD_DATE__",
		"builduser": "__MISC_BUILD_USER__"
	},
	"version":
	{
		"major": "__VERSION_MAJOR__",
		"minor": "__VERSION_MINOR__",
		"patch": "__VERSION_PATCH__",
		"string": "__VERSION_STRING__"
	},
	"bootloader":
	{
		"included": "__BOOTLOADER_INCLUDED__",
		"version": "__BOOTLOADER_INCLUDED_VERSION__",
		"fiename": "__BOOTLOADER_INCLUDED_FILENAME__"
	}
}

M module-apps/application-settings/windows/advanced/InformationWindow.cpp => module-apps/application-settings/windows/advanced/InformationWindow.cpp +0 -1
@@ 28,7 28,6 @@ namespace gui
        box->setPenWidth(style::window::default_border_no_focus_w);

        addAlignedLabelWithValue(box, "GIT revision:", std::string(GIT_REV));
        addAlignedLabelWithValue(box, "GIT tag:", std::string(GIT_TAG));
        addAlignedLabelWithValue(box, "GIT branch:", std::string(GIT_BRANCH));
        addAlignedLabelWithValue(box, "Version:", std::string(VERSION));
        {

M module-utils/bootconfig/include/boot/bootconfig.hpp => module-utils/bootconfig/include/boot/bootconfig.hpp +0 -6
@@ 14,15 14,9 @@ namespace boot
        inline constexpr auto os_type         = "ostype";
        inline constexpr auto os_image        = "imagename";
        inline constexpr auto os_version      = "version";
        inline constexpr auto version_major   = "major";
        inline constexpr auto version_minor   = "minor";
        inline constexpr auto version_patch   = "patch";
        inline constexpr auto version_string  = "string";
        inline constexpr auto timestamp       = "timestamp";
        inline constexpr auto misc            = "misc";
        inline constexpr auto builddate       = "builddate";
        inline constexpr auto git_info        = "git";
        inline constexpr auto os_git_tag      = "git_tag";
        inline constexpr auto os_git_revision = "git_commit";
        inline constexpr auto os_git_branch   = "git_branch";
        inline constexpr auto bootloader      = "bootloader";

M module-utils/bootconfig/src/bootconfig.cpp => module-utils/bootconfig/src/bootconfig.cpp +1 -2
@@ 90,8 90,7 @@ namespace boot
                                  {boot::json::timestamp, m_timestamp}}},

            {boot::json::git_info,
             json11::Json::object{{boot::json::os_git_tag, std::string(GIT_TAG)},
                                  {boot::json::os_git_revision, std::string(GIT_REV)},
             json11::Json::object{{boot::json::os_git_revision, std::string(GIT_REV)},
                                  {boot::json::os_git_branch, std::string(GIT_BRANCH)}}},
            {boot::json::bootloader, json11::Json::object{{boot::json::os_version, m_bootloader_version}}}};
    }

M products/BellHybrid/BellHybridMain.cpp => products/BellHybrid/BellHybridMain.cpp +2 -2
@@ 83,7 83,7 @@ int main()
                abort();
            }

            Log::Logger::get().init(Log::Application{ApplicationName, GIT_REV, GIT_TAG, GIT_BRANCH});
            Log::Logger::get().init(Log::Application{ApplicationName, GIT_REV, VERSION, GIT_BRANCH});
            /// force initialization of PhonenumberUtil because of its stack usage
            /// otherwise we would end up with an init race and PhonenumberUtil could
            /// be initiated in a task with stack not big enough to handle it


@@ 110,7 110,7 @@ int main()
        });

    LOG_PRINTF("Launching %s \n", ApplicationName);
    LOG_PRINTF("commit: %s tag: %s branch: %s\n", GIT_REV, GIT_TAG, GIT_BRANCH);
    LOG_PRINTF("commit: %s tag: %s branch: %s\n", GIT_REV, VERSION, GIT_BRANCH);
    cpp_freertos::Thread::StartScheduler();

    return 0;

M products/BellHybrid/services/desktop/endpoints/deviceInfo/DeviceInfoEndpoint.cpp => products/BellHybrid/services/desktop/endpoints/deviceInfo/DeviceInfoEndpoint.cpp +0 -1
@@ 58,7 58,6 @@ namespace sdesktop::endpoints
                                  {json::fsFree, std::to_string(freeMbytes)},
                                  {json::fsFreePercent, std::to_string(freePercent)},
                                  {json::gitRevision, (std::string)(GIT_REV)},
                                  {json::gitTag, (std::string)GIT_TAG},
                                  {json::gitBranch, (std::string)GIT_BRANCH},
                                  {json::currentRTCTime, std::to_string(static_cast<uint32_t>(std::time(nullptr)))},
                                  {json::version, std::string(VERSION)},

M products/PurePhone/PurePhoneMain.cpp => products/PurePhone/PurePhoneMain.cpp +2 -2
@@ 122,7 122,7 @@ int main()
                abort();
            }

            Log::Logger::get().init(Log::Application{ApplicationName, GIT_REV, GIT_TAG, GIT_BRANCH});
            Log::Logger::get().init(Log::Application{ApplicationName, GIT_REV, VERSION, GIT_BRANCH});
            /// force initialization of PhonenumberUtil because of its stack usage
            /// otherwise we would end up with an init race and PhonenumberUtil could
            /// be initiated in a task with stack not big enough to handle it


@@ 187,7 187,7 @@ int main()
        });

    LOG_PRINTF("Launching %s \n", ApplicationName);
    LOG_PRINTF("commit: %s tag: %s branch: %s\n", GIT_REV, GIT_TAG, GIT_BRANCH);
    LOG_PRINTF("commit: %s version: %s branch: %s\n", GIT_REV, VERSION, GIT_BRANCH);
    cpp_freertos::Thread::StartScheduler();

    return 0;

M products/PurePhone/services/desktop/endpoints/deviceInfo/DeviceInfoEndpoint.cpp => products/PurePhone/services/desktop/endpoints/deviceInfo/DeviceInfoEndpoint.cpp +0 -1
@@ 156,7 156,6 @@ namespace sdesktop::endpoints
             {json::fsFree, std::to_string(freeMbytes)},
             {json::fsFreePercent, std::to_string(freePercent)},
             {json::gitRevision, (std::string)(GIT_REV)},
             {json::gitTag, (std::string)GIT_TAG},
             {json::gitBranch, (std::string)GIT_BRANCH},
             {json::currentRTCTime, std::to_string(static_cast<uint32_t>(std::time(nullptr)))},
             {json::version, std::string(VERSION)},

M source/version.hpp.template => source/version.hpp.template +1 -2
@@ 1,4 1,3 @@
inline const char* GIT_REV="${GIT_REV}";
inline const char* GIT_TAG="${GIT_TAG}";
inline const char* GIT_BRANCH="${GIT_BRANCH}";
inline const char* VERSION="${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}.${CMAKE_PROJECT_VERSION_PATCH}";
inline const char* VERSION="${PROJECT_VERSION}";