代码拉取完成,页面将自动刷新
# this cmake file fully replaces all old things like svnxrev, hgxrev, etc scripts.
cmake_minimum_required ( VERSION 3.17 )
# guess version strings from current git repo
function ( guess_from_git )
if (NOT EXISTS "${MANTICORE_SOURCE_DIR}/.git")
return ()
endif ()
find_package ( Git QUIET )
if (NOT GIT_FOUND)
return ()
endif ()
# without this in some environments you can get error "detected dubious ownership in repository"
# `git config --global --add safe.directory '*'` in the docker image it runs in may not help. TODO: check why
execute_process ( COMMAND "${GIT_EXECUTABLE}" config --global --add safe.directory "${MANTICORE_SOURCE_DIR}")
# extract short has as SPH_GIT_COMMIT_ID
execute_process ( COMMAND "${GIT_EXECUTABLE}" log -1 --format=%h
WORKING_DIRECTORY "${MANTICORE_SOURCE_DIR}"
RESULT_VARIABLE res
OUTPUT_VARIABLE SPH_GIT_COMMIT_ID
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE )
set ( SPH_GIT_COMMIT_ID "${SPH_GIT_COMMIT_ID}" PARENT_SCOPE )
# extract timestamp and make number YYMMDDHH from it
execute_process ( COMMAND "${GIT_EXECUTABLE}" log -1 --date=format-local:"%y%m%d%H" --format=%cd
WORKING_DIRECTORY "${MANTICORE_SOURCE_DIR}"
RESULT_VARIABLE res
OUTPUT_VARIABLE GIT_TIMESTAMP_ID
OUTPUT_STRIP_TRAILING_WHITESPACE )
string ( SUBSTRING "${GIT_TIMESTAMP_ID}" 1 8 GIT_TIMESTAMP_ID )
set ( GIT_TIMESTAMP_ID ${GIT_TIMESTAMP_ID} PARENT_SCOPE )
# timestamp for reproducible packages
execute_process ( COMMAND "${GIT_EXECUTABLE}" log -1 --pretty=%ct
WORKING_DIRECTORY "${MANTICORE_SOURCE_DIR}"
RESULT_VARIABLE res
OUTPUT_VARIABLE GIT_EPOCH_ID
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE )
set ( SOURCE_DATE_EPOCH ${GIT_EPOCH_ID} PARENT_SCOPE )
# extract branch name (top of 'git status -s -b'), throw out leading '## '
execute_process ( COMMAND "${GIT_EXECUTABLE}" status -s -b
WORKING_DIRECTORY "${MANTICORE_SOURCE_DIR}"
RESULT_VARIABLE res
OUTPUT_VARIABLE GIT_BRANCH_ID
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE )
string ( REGEX REPLACE "\n.*$" "" GIT_BRANCH_ID "${GIT_BRANCH_ID}" )
string ( REPLACE "## " "" GIT_BRANCH_ID "${GIT_BRANCH_ID}" )
set ( GIT_BRANCH_ID "git branch ${GIT_BRANCH_ID}" PARENT_SCOPE )
endfunction ()
# guess version strings from template header file (git archive mark it there)
function ( extract_from_git_slug HEADER )
if (EXISTS "${HEADER}")
FILE ( STRINGS "${HEADER}" _CONTENT )
foreach (LINE ${_CONTENT})
# match definitions like - // GIT_*_ID VALUE
if ("${LINE}" MATCHES "^//[ \t]+(GIT_.*_ID)[ \t]\"(.*)\"")
set ( ${CMAKE_MATCH_1} "${CMAKE_MATCH_2}" )
endif ()
endforeach ()
if (GIT_COMMIT_ID STREQUAL "$Format:%h$")
return () # no slug
endif ()
# commit id
set ( SPH_GIT_COMMIT_ID "${GIT_COMMIT_ID}" PARENT_SCOPE )
# timestamp
string ( REPLACE "-" "" GIT_TIMESTAMP_ID "${GIT_TIMESTAMP_ID}" )
string ( SUBSTRING "${GIT_TIMESTAMP_ID}" 2 6 GIT_TIMESTAMP_ID )
set ( GIT_TIMESTAMP_ID "${GIT_TIMESTAMP_ID}" PARENT_SCOPE )
# epoch for packaging
set ( SOURCE_DATE_EPOCH ${GIT_EPOCH_ID} PARENT_SCOPE )
# branch id
set ( GIT_BRANCH_ID "from tarball" PARENT_SCOPE )
endif ()
endfunction ()
# function definitions finished, execution starts from here
##################################
# first try to use binary git
guess_from_git ()
# 2-nd try - if we build from git archive. Correct hash and date provided then, but no branch
if (NOT SPH_GIT_COMMIT_ID)
extract_from_git_slug ( "${MANTICORE_SOURCE_DIR}/src/sphinxversion.h.in" )
endif ()
# extract version number string from sphinxversion.h.in
if (NOT VERNUMBERS)
FILE ( STRINGS "${MANTICORE_SOURCE_DIR}/src/sphinxversion.h.in" _STRINGS LIMIT_COUNT 500
REGEX "^#define[ \t]+VERNUMBERS.*" )
STRING ( REGEX REPLACE ".*\"(.*)\"(.*)$" "\\1" VERNUMBERS "${_STRINGS}" )
endif ()
if (NOT SPH_GIT_COMMIT_ID)
# nothing found, fall back to fake 'developer' version. That is ok if sources mirrored to another host without .git
message ( STATUS "Dev mode, no guess, using predefined version" )
if (NOT VERNUMBERS)
set ( VERNUMBERS "0.0.1" )
endif ()
set ( GIT_TIMESTAMP_ID "220512" )
set ( SPH_GIT_COMMIT_ID "DEADBEEF" )
set ( BUILD_TAG "devmode" )
set ( GIT_BRANCH_ID "developer version" )
set ( SOURCE_DATE_EPOCH "1607089638" )
set ( DEV_BUILD ON )
endif ()
set ( GDB_SOURCE_DIR "${MANTICORE_SOURCE_DIR}" )
# All info collected (we need SPH_GIT_COMMIT_ID, GIT_TIMESTAMP_ID, GIT_BRANCH_ID and BUILD_TAG, if any)
set ( VERFILE "${MANTICORE_BINARY_DIR}/config/gen_sphinxversion.h" )
configure_file ( "${MANTICORE_SOURCE_DIR}/src/sphinxversion.h.in" "${VERFILE}" )
configure_file ( "${MANTICORE_SOURCE_DIR}/dist/CPackOptions.cmake.in" "${MANTICORE_BINARY_DIR}/config/CPackOptions.cmake" @ONLY )
# configure packaging
SET ( ENV{SOURCE_DATE_EPOCH} "${SOURCE_DATE_EPOCH}" ) # that makes builds reproducable
SET ( CPACK_PACKAGE_VERSION "${VERNUMBERS}-${GIT_TIMESTAMP_ID}-${SPH_GIT_COMMIT_ID}" )
string ( TOLOWER "${CPACK_PACKAGE_NAME}" CPACK_PACKAGE_NAME_LOWERCASE )
SET ( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME_LOWERCASE}-${CPACK_PACKAGE_VERSION}" )
SET ( CPACK_RPM_PACKAGE_VERSION "${VERNUMBERS}_${GIT_TIMESTAMP_ID}.${SPH_GIT_COMMIT_ID}" )
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。