From 7f55725b43800e3ae7ce48e998350778f7517c6f Mon Sep 17 00:00:00 2001 From: jkoan Date: Tue, 9 Jan 2018 19:37:28 +0100 Subject: fix:android:Use date of commit as version code instead of system time (#376) --- cmake/version.cmake | 66 +++++++++++++++++++++++++++++++++++++++++------------ 1 file 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) -- cgit v1.2.1