From 7f008edab67b3f263d98081baa72aef6572eca1f Mon Sep 17 00:00:00 2001 From: Mike Gelfand Date: Sun, 15 Jan 2017 00:54:56 +0300 Subject: [PATCH] Improve version.h file generation Store full revision hash in REVISION file. Write fixes 10 chars of revision hash to version.h. Use `#pragma once` in version.h. Support getting revision from TeamCity environment variable (similar to Jenkins). --- CMakeLists.txt | 17 ++++++++++------- libtransmission/version.h.in | 5 +---- update-version-h.sh | 16 +++++++++++----- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0b8cbd29e..262ddfe77 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,16 +58,16 @@ endif() set(TR_VCS_REVISION_FILE "${CMAKE_SOURCE_DIR}/REVISION") -if(NOT "$ENV{JENKINS_URL}" STREQUAL "" AND NOT "$ENV{VCS_REVISION}" STREQUAL "") - # Jenkins automated build, use the set environment variables to avoid - # version mismatches between java's svn and command line's svn - set(TR_VCS_REVISION "$ENV{VCS_REVISION}") +if(NOT "$ENV{JENKINS_URL}" STREQUAL "" AND NOT "$ENV{GIT_COMMIT}" STREQUAL "") + set(TR_VCS_REVISION "$ENV{GIT_COMMIT}") +elseif(NOT "$ENV{TEAMCITY_PROJECT_NAME}" STREQUAL "" AND NOT "$ENV{BUILD_VCS_NUMBER}" STREQUAL "") + set(TR_VCS_REVISION "$ENV{BUILD_VCS_NUMBER}") elseif(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/.git) find_package(Git) if(GIT_FOUND) execute_process( COMMAND - ${GIT_EXECUTABLE} rev-list --max-count=1 --abbrev-commit HEAD + ${GIT_EXECUTABLE} rev-list --max-count=1 HEAD WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE @@ -79,16 +79,19 @@ endif() if("${TR_VCS_REVISION}" STREQUAL "" AND EXISTS "${TR_VCS_REVISION_FILE}") file(READ "${TR_VCS_REVISION_FILE}" TR_VCS_REVISION) - string(STRIP "${TR_VCS_REVISION}" TR_VCS_REVISION) endif() +string(STRIP "${TR_VCS_REVISION}" TR_VCS_REVISION) + if(NOT "${TR_VCS_REVISION}" STREQUAL "") - file(WRITE "${TR_VCS_REVISION_FILE}" "${TR_VCS_REVISION}") + file(WRITE "${TR_VCS_REVISION_FILE}" "${TR_VCS_REVISION}\n") else() set(TR_VCS_REVISION 0) file(REMOVE "${TR_VCS_REVISION_FILE}") endif() +string(SUBSTRING "${TR_VCS_REVISION}" 0 10 TR_VCS_REVISION) + set_property(GLOBAL PROPERTY USE_FOLDERS ON) set(CURL_MINIMUM 7.15.4) diff --git a/libtransmission/version.h.in b/libtransmission/version.h.in index ce74a3d96..db4b5be23 100644 --- a/libtransmission/version.h.in +++ b/libtransmission/version.h.in @@ -1,5 +1,4 @@ -#ifndef TR_VERSION_H -#define TR_VERSION_H +#pragma once #define PEERID_PREFIX "${TR_PEER_ID_PREFIX}" #define USERAGENT_PREFIX "${TR_USER_AGENT_PREFIX}" @@ -14,5 +13,3 @@ #cmakedefine TR_BETA_RELEASE 1 #cmakedefine TR_NIGHTLY_RELEASE 1 #cmakedefine TR_STABLE_RELEASE 1 - -#endif /* TR_VERSION_H */ diff --git a/update-version-h.sh b/update-version-h.sh index 78c9071e6..80c06a4f6 100755 --- a/update-version-h.sh +++ b/update-version-h.sh @@ -23,16 +23,18 @@ minor_version=`echo ${user_agent_prefix} | awk -F . '{print $2 + 0}'` vcs_revision= vcs_revision_file=REVISION -if [ -n "$JENKINS_URL" -a -n "$VCS_REVISION" ]; then - # Jenkins automated build, use the set environment variables to avoid - # version mismatches between java's svn and command line's svn - vcs_revision=$VCS_REVISION +if [ -n "$JENKINS_URL" -a -n "$GIT_COMMIT" ]; then + vcs_revision=$GIT_COMMIT +elif [ -n "$TEAMCITY_PROJECT_NAME" -a -n "$BUILD_VCS_NUMBER" ]; then + vcs_revision=$BUILD_VCS_NUMBER elif [ -d ".git" ] && type git >/dev/null 2>&1; then - vcs_revision=`git rev-list --max-count=1 --abbrev-commit HEAD` + vcs_revision=`git rev-list --max-count=1 HEAD` elif [ -f "$vcs_revision_file" ]; then vcs_revision=`cat "$vcs_revision_file"` fi +vcs_revision=`echo $vcs_revision` + if [ -n "$vcs_revision" ]; then [ -f "$vcs_revision_file" ] && [ "`cat "$vcs_revision_file"`" = "$vcs_revision" ] || echo "$vcs_revision" > "$vcs_revision_file" else @@ -40,7 +42,11 @@ else rm -f "$vcs_revision_file" fi +vcs_revision=${vcs_revision:0:10} + cat > libtransmission/version.h.new << EOF +#pragma once + #define PEERID_PREFIX "${peer_id_prefix}" #define USERAGENT_PREFIX "${user_agent_prefix}" #define VCS_REVISION "${vcs_revision}"