mirror of
https://github.com/morgan9e/FreeRDP
synced 2026-04-14 00:14:11 +09:00
feat: add support for .source_version
When building packages, especially when source packages are used, git is not necessarily available or the source isn't provided in git. In those cases it wasn't possible to set the GIT_REVISION and --version shows "n/a" for the git revision. If the file .source_version is available now the content of it is used as GIT_REVISION. Packagers might want to add a .source_version file when they don't build the packages from git. Possible breaking change: The variable PRODUCT_VERSION isn't available anymore. Use GIT_REVISION instead.
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -136,6 +136,7 @@ TAGS
|
||||
packaging/deb/freerdp-nightly/freerdp-nightly
|
||||
packaging/deb/freerdp-nightly/freerdp-nightly-dev
|
||||
packaging/deb/freerdp-nightly/freerdp-nightly-dbg
|
||||
.source_version
|
||||
|
||||
#
|
||||
.idea
|
||||
|
||||
@@ -59,7 +59,6 @@ include(FindPkgConfig)
|
||||
include(TestBigEndian)
|
||||
|
||||
include(FindFeature)
|
||||
include(AutoVersioning)
|
||||
include(ConfigOptions)
|
||||
include(ComplexLibrary)
|
||||
include(FeatureSummary)
|
||||
@@ -102,7 +101,7 @@ if (FREERDP_EXTERNAL_PATH)
|
||||
get_filename_component (FREERDP_EXTERNAL_PATH "${FREERDP_EXTERNAL_PATH}" ABSOLUTE)
|
||||
endif()
|
||||
|
||||
# Allow to search the host machine for git
|
||||
# Allow to search the host machine for git/ccache
|
||||
if(CMAKE_CROSSCOMPILING)
|
||||
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH)
|
||||
endif(CMAKE_CROSSCOMPILING)
|
||||
@@ -113,15 +112,23 @@ if(CCACHE AND WITH_CCACHE)
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${CCACHE})
|
||||
endif(CCACHE AND WITH_CCACHE)
|
||||
|
||||
include(GetGitRevisionDescription)
|
||||
git_get_exact_tag(GIT_REVISION --tags --always)
|
||||
if(EXISTS "${CMAKE_SOURCE_DIR}/.source_version" )
|
||||
file(READ ${CMAKE_SOURCE_DIR}/.source_version GIT_REVISION)
|
||||
|
||||
if (${GIT_REVISION} STREQUAL "n/a")
|
||||
git_rev_parse (GIT_REVISION --short)
|
||||
string(STRIP ${GIT_REVISION} GIT_REVISION)
|
||||
else()
|
||||
include(GetGitRevisionDescription)
|
||||
git_get_exact_tag(GIT_REVISION --tags --always)
|
||||
|
||||
if (${GIT_REVISION} STREQUAL "n/a")
|
||||
git_rev_parse (GIT_REVISION --short)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CMAKE_CROSSCOMPILING)
|
||||
SET (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
|
||||
endif(CMAKE_CROSSCOMPILING)
|
||||
# /Allow to search the host machine for git/ccache
|
||||
|
||||
message(STATUS "Git Revision ${GIT_REVISION}")
|
||||
|
||||
|
||||
@@ -202,7 +202,7 @@ static COMMAND_LINE_ARGUMENT_A args[] =
|
||||
|
||||
BOOL freerdp_client_print_version()
|
||||
{
|
||||
printf("This is FreeRDP version %s (git %s)\n", FREERDP_VERSION_FULL,
|
||||
printf("This is FreeRDP version %s (%s)\n", FREERDP_VERSION_FULL,
|
||||
GIT_REVISION);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
# - AutoVersioning
|
||||
# Gather version from tarball or SCM
|
||||
#
|
||||
# This module defines the following variables:
|
||||
# PRODUCT_VERSION - Version of product
|
||||
#
|
||||
|
||||
#=============================================================================
|
||||
# Copyright 2011 O.S. Systems Software Ltda.
|
||||
# Copyright 2011 Otavio Salvador <otavio@ossystems.com.br>
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#=============================================================================
|
||||
|
||||
if(EXISTS "${CMAKE_SOURCE_DIR}/.version" )
|
||||
file(READ ${CMAKE_SOURCE_DIR}/.version PRODUCT_VERSION)
|
||||
|
||||
string(STRIP ${PRODUCT_VERSION} PRODUCT_VERSION)
|
||||
else()
|
||||
execute_process(COMMAND git describe --match "v[0-9]*" --abbrev=4
|
||||
OUTPUT_VARIABLE PRODUCT_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_QUIET)
|
||||
|
||||
if(PRODUCT_VERSION)
|
||||
string(REGEX REPLACE "^v(.*)" "\\1" PRODUCT_VERSION ${PRODUCT_VERSION})
|
||||
else()
|
||||
# GIT is the default version
|
||||
set(PRODUCT_VERSION GIT)
|
||||
endif()
|
||||
|
||||
# Check if has not commited changes
|
||||
execute_process(COMMAND git update-index -q --refresh
|
||||
ERROR_QUIET)
|
||||
execute_process(COMMAND git diff-index --name-only HEAD --
|
||||
OUTPUT_VARIABLE CHANGED_SOURCE
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_QUIET)
|
||||
|
||||
if(CHANGED_SOURCE)
|
||||
set(PRODUCT_VERSION ${PRODUCT_VERSION}-dirty)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
message(STATUS "${CMAKE_PROJECT_NAME} ${PRODUCT_VERSION}")
|
||||
@@ -34,7 +34,6 @@ set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/)
|
||||
# Check for cmake compatibility (enable/disable features)
|
||||
include(CheckCmakeCompat)
|
||||
include(FindFeature)
|
||||
include(AutoVersioning)
|
||||
include(ConfigOptions)
|
||||
include(CheckCCompilerFlag)
|
||||
include(GNUInstallDirsWrapper)
|
||||
|
||||
@@ -39,7 +39,6 @@ set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/)
|
||||
# Check for cmake compatibility (enable/disable features)
|
||||
include(CheckCmakeCompat)
|
||||
include(FindFeature)
|
||||
include(AutoVersioning)
|
||||
include(ConfigOptions)
|
||||
include(ComplexLibrary)
|
||||
include(FeatureSummary)
|
||||
|
||||
Reference in New Issue
Block a user