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).
This commit is contained in:
parent
f6b23c02f0
commit
7f008edab6
|
@ -58,16 +58,16 @@ endif()
|
||||||
|
|
||||||
set(TR_VCS_REVISION_FILE "${CMAKE_SOURCE_DIR}/REVISION")
|
set(TR_VCS_REVISION_FILE "${CMAKE_SOURCE_DIR}/REVISION")
|
||||||
|
|
||||||
if(NOT "$ENV{JENKINS_URL}" STREQUAL "" AND NOT "$ENV{VCS_REVISION}" STREQUAL "")
|
if(NOT "$ENV{JENKINS_URL}" STREQUAL "" AND NOT "$ENV{GIT_COMMIT}" STREQUAL "")
|
||||||
# Jenkins automated build, use the set environment variables to avoid
|
set(TR_VCS_REVISION "$ENV{GIT_COMMIT}")
|
||||||
# version mismatches between java's svn and command line's svn
|
elseif(NOT "$ENV{TEAMCITY_PROJECT_NAME}" STREQUAL "" AND NOT "$ENV{BUILD_VCS_NUMBER}" STREQUAL "")
|
||||||
set(TR_VCS_REVISION "$ENV{VCS_REVISION}")
|
set(TR_VCS_REVISION "$ENV{BUILD_VCS_NUMBER}")
|
||||||
elseif(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/.git)
|
elseif(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/.git)
|
||||||
find_package(Git)
|
find_package(Git)
|
||||||
if(GIT_FOUND)
|
if(GIT_FOUND)
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND
|
COMMAND
|
||||||
${GIT_EXECUTABLE} rev-list --max-count=1 --abbrev-commit HEAD
|
${GIT_EXECUTABLE} rev-list --max-count=1 HEAD
|
||||||
WORKING_DIRECTORY
|
WORKING_DIRECTORY
|
||||||
${CMAKE_SOURCE_DIR}
|
${CMAKE_SOURCE_DIR}
|
||||||
OUTPUT_VARIABLE
|
OUTPUT_VARIABLE
|
||||||
|
@ -79,16 +79,19 @@ endif()
|
||||||
|
|
||||||
if("${TR_VCS_REVISION}" STREQUAL "" AND EXISTS "${TR_VCS_REVISION_FILE}")
|
if("${TR_VCS_REVISION}" STREQUAL "" AND EXISTS "${TR_VCS_REVISION_FILE}")
|
||||||
file(READ "${TR_VCS_REVISION_FILE}" TR_VCS_REVISION)
|
file(READ "${TR_VCS_REVISION_FILE}" TR_VCS_REVISION)
|
||||||
string(STRIP "${TR_VCS_REVISION}" TR_VCS_REVISION)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
string(STRIP "${TR_VCS_REVISION}" TR_VCS_REVISION)
|
||||||
|
|
||||||
if(NOT "${TR_VCS_REVISION}" STREQUAL "")
|
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()
|
else()
|
||||||
set(TR_VCS_REVISION 0)
|
set(TR_VCS_REVISION 0)
|
||||||
file(REMOVE "${TR_VCS_REVISION_FILE}")
|
file(REMOVE "${TR_VCS_REVISION_FILE}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
string(SUBSTRING "${TR_VCS_REVISION}" 0 10 TR_VCS_REVISION)
|
||||||
|
|
||||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||||
|
|
||||||
set(CURL_MINIMUM 7.15.4)
|
set(CURL_MINIMUM 7.15.4)
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
#ifndef TR_VERSION_H
|
#pragma once
|
||||||
#define TR_VERSION_H
|
|
||||||
|
|
||||||
#define PEERID_PREFIX "${TR_PEER_ID_PREFIX}"
|
#define PEERID_PREFIX "${TR_PEER_ID_PREFIX}"
|
||||||
#define USERAGENT_PREFIX "${TR_USER_AGENT_PREFIX}"
|
#define USERAGENT_PREFIX "${TR_USER_AGENT_PREFIX}"
|
||||||
|
@ -14,5 +13,3 @@
|
||||||
#cmakedefine TR_BETA_RELEASE 1
|
#cmakedefine TR_BETA_RELEASE 1
|
||||||
#cmakedefine TR_NIGHTLY_RELEASE 1
|
#cmakedefine TR_NIGHTLY_RELEASE 1
|
||||||
#cmakedefine TR_STABLE_RELEASE 1
|
#cmakedefine TR_STABLE_RELEASE 1
|
||||||
|
|
||||||
#endif /* TR_VERSION_H */
|
|
||||||
|
|
|
@ -23,16 +23,18 @@ minor_version=`echo ${user_agent_prefix} | awk -F . '{print $2 + 0}'`
|
||||||
vcs_revision=
|
vcs_revision=
|
||||||
vcs_revision_file=REVISION
|
vcs_revision_file=REVISION
|
||||||
|
|
||||||
if [ -n "$JENKINS_URL" -a -n "$VCS_REVISION" ]; then
|
if [ -n "$JENKINS_URL" -a -n "$GIT_COMMIT" ]; then
|
||||||
# Jenkins automated build, use the set environment variables to avoid
|
vcs_revision=$GIT_COMMIT
|
||||||
# version mismatches between java's svn and command line's svn
|
elif [ -n "$TEAMCITY_PROJECT_NAME" -a -n "$BUILD_VCS_NUMBER" ]; then
|
||||||
vcs_revision=$VCS_REVISION
|
vcs_revision=$BUILD_VCS_NUMBER
|
||||||
elif [ -d ".git" ] && type git >/dev/null 2>&1; then
|
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
|
elif [ -f "$vcs_revision_file" ]; then
|
||||||
vcs_revision=`cat "$vcs_revision_file"`
|
vcs_revision=`cat "$vcs_revision_file"`
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
vcs_revision=`echo $vcs_revision`
|
||||||
|
|
||||||
if [ -n "$vcs_revision" ]; then
|
if [ -n "$vcs_revision" ]; then
|
||||||
[ -f "$vcs_revision_file" ] && [ "`cat "$vcs_revision_file"`" = "$vcs_revision" ] || echo "$vcs_revision" > "$vcs_revision_file"
|
[ -f "$vcs_revision_file" ] && [ "`cat "$vcs_revision_file"`" = "$vcs_revision" ] || echo "$vcs_revision" > "$vcs_revision_file"
|
||||||
else
|
else
|
||||||
|
@ -40,7 +42,11 @@ else
|
||||||
rm -f "$vcs_revision_file"
|
rm -f "$vcs_revision_file"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
vcs_revision=${vcs_revision:0:10}
|
||||||
|
|
||||||
cat > libtransmission/version.h.new << EOF
|
cat > libtransmission/version.h.new << EOF
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#define PEERID_PREFIX "${peer_id_prefix}"
|
#define PEERID_PREFIX "${peer_id_prefix}"
|
||||||
#define USERAGENT_PREFIX "${user_agent_prefix}"
|
#define USERAGENT_PREFIX "${user_agent_prefix}"
|
||||||
#define VCS_REVISION "${vcs_revision}"
|
#define VCS_REVISION "${vcs_revision}"
|
||||||
|
|
Loading…
Reference in New Issue