diff options
author | jkoan <jkoan@users.noreply.github.com> | 2018-01-09 19:37:28 +0100 |
---|---|---|
committer | Pierre GRANDIN <pgrandin@users.noreply.github.com> | 2018-01-09 10:37:28 -0800 |
commit | 7f55725b43800e3ae7ce48e998350778f7517c6f (patch) | |
tree | 4671dd3806b10e90d8c4e4d37ff427cd458a5580 | |
parent | d9292650e6dc1d7869e0905f7e473e1fc0fec351 (diff) | |
download | navit-7f55725b43800e3ae7ce48e998350778f7517c6f.tar.gz |
fix:android:Use date of commit as version code instead of system time (#376)
-rwxr-xr-x | cmake/version.cmake | 66 |
1 files changed, 52 insertions, 14 deletions
diff --git a/cmake/version.cmake b/cmake/version.cmake index 8f82d9f61..41c654d33 100755 --- a/cmake/version.cmake +++ b/cmake/version.cmake @@ -1,29 +1,67 @@ FIND_PROGRAM(GIT_EXECUTABLE NAMES git git.exe DOC "git command line client") +FIND_PROGRAM(DATE_EXECUTABLE NAMES date DOC "unix date command") get_filename_component(SOURCE_DIR ${SRC} PATH) -string(TIMESTAMP VERSION "%y%m%d%H%M") +if (GIT_EXECUTABLE) + EXECUTE_PROCESS( + COMMAND ${GIT_EXECUTABLE} log "--format=%ct" # output as unix timestamp + WORKING_DIRECTORY "${SOURCE_DIR}" + OUTPUT_VARIABLE GIT_OUTPUT_DATE + ERROR_VARIABLE GIT_ERROR + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE + ) + if(NOT GIT_OUTPUT_DATE) + message(STATUS "Cannot determine current git commit - git error: '${GIT_ERROR}'") + set(GIT_OUTPUT_DATE "0000000000") + else() + EXECUTE_PROCESS( + COMMAND ${GIT_EXECUTABLE} log "--format='%h'" + WORKING_DIRECTORY "${SOURCE_DIR}" + OUTPUT_VARIABLE GIT_OUTPUT_HASH + ERROR_VARIABLE GIT_ERROR + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE + ) + if(NOT GIT_OUTPUT_HASH) + message(STATUS "Cannot determine current git commit - git error: '${GIT_ERROR}'") + set(GIT_OUTPUT_HASH "xdevxgitxnotxfound") + endif(NOT GIT_OUTPUT_HASH) + endif(NOT GIT_OUTPUT_DATE) +else() + message(STATUS "git not found, cannot record git commit") + set(GIT_OUTPUT_DATE "0000000000") # To match length of android versionCode + set(GIT_OUTPUT_HASH "xdevxgitxnotxfound") +endif(GIT_EXECUTABLE) -string(REGEX MATCH "[0-9]+" VERSION_NUM ${VERSION} ) -if(NOT VERSION_NUM) - message(STATUS "I can't find a release tag. This is probably not Navit's official tree") - message(STATUS "It's OK, I will default to 0000") - set(VERSION_NUM "0000") -endif() -string(REPLACE "R" "" VERSION_NUM ${VERSION_NUM} ) -if(NOT VERSION_NUM) - set(VERSION_NUM "0000") -endif() +string(REGEX MATCH "^[0-9]+" VERSION_NUM ${GIT_OUTPUT_DATE} ) -string(REGEX MATCH "^[a-z0-9]+" VERSION ${VERSION} ) +EXECUTE_PROCESS( + COMMAND ${DATE_EXECUTABLE} "+%y%m%d%H%M" "-d \@${VERSION_NUM}" # output as unix timestamp + WORKING_DIRECTORY "${SOURCE_DIR}" + OUTPUT_VARIABLE DATE_CONVERT_OUTPUT + ERROR_VARIABLE DATE_CONVERT_ERROR + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE +) +if(NOT DATE_CONVERT_ERROR) + string(REGEX MATCH "[0-9]+" VERSION_CODE ${DATE_CONVERT_OUTPUT}) +else(NOT DATE_CONVERT_ERROR) + message(FATAL_ERROR "Date convert not working\nError message:\n${DATE_CONVERT_ERROR}") +endif(NOT DATE_CONVERT_ERROR) + +string(REGEX MATCH "[a-z0-9]+" VERSION ${GIT_OUTPUT_HASH} ) if (STRIP_M) - set(VERSION ${VERSION_NUM}) + set(VERSION ${VERSION_CODE}) endif() set(NAVIT_VARIANT "-") +set(GIT_VERSION VERSION) set(${NAME} ${VERSION}) -message (STATUS "Git commit: ${${NAME}}") +message (STATUS "Git commit: ${VERSION}") +message (STATUS "Git date: ${VERSION_CODE}") CONFIGURE_FILE(${SRC} ${DST} @ONLY) |