diff --git a/CMakeLists.txt b/CMakeLists.txt index ec9050b9189..ad10ca29174 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -805,11 +805,7 @@ set(LLVM_SRPM_DIR "${CMAKE_CURRENT_BINARY_DIR}/srpm") get_source_info(${CMAKE_CURRENT_SOURCE_DIR} revision repository) string(LENGTH "${revision}" revision_length) -if(revision MATCHES "^[0-9]+$" AND revision_length LESS 40) - set(LLVM_RPM_SPEC_REVISION "r${revision}") -else() - set(LLVM_RPM_SPEC_REVISION "${revision}") -endif() +set(LLVM_RPM_SPEC_REVISION "${revision}") configure_file( ${LLVM_SRPM_USER_BINARY_SPECFILE} diff --git a/cmake/modules/VersionFromVCS.cmake b/cmake/modules/VersionFromVCS.cmake index 56331a3a81f..1b6519b4b7c 100644 --- a/cmake/modules/VersionFromVCS.cmake +++ b/cmake/modules/VersionFromVCS.cmake @@ -3,27 +3,7 @@ # existence of certain subdirectories under SOURCE_DIR (if provided as an # extra argument, otherwise uses CMAKE_CURRENT_SOURCE_DIR). -function(get_source_info_svn path revision repository) - # If svn is a bat file, find_program(Subversion) doesn't find it. - # Explicitly search for that here; Subversion_SVN_EXECUTABLE will override - # the find_program call in FindSubversion.cmake. - find_program(Subversion_SVN_EXECUTABLE NAMES svn svn.bat) - find_package(Subversion) - - # Subversion module does not work with symlinks, see PR8437. - get_filename_component(realpath ${path} REALPATH) - if(Subversion_FOUND) - subversion_wc_info(${realpath} Project) - if(Project_WC_REVISION) - set(${revision} ${Project_WC_REVISION} PARENT_SCOPE) - endif() - if(Project_WC_URL) - set(${repository} ${Project_WC_URL} PARENT_SCOPE) - endif() - endif() -endfunction() - -function(get_source_info_git path revision repository) +function(get_source_info path revision repository) find_package(Git) if(GIT_FOUND) execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --git-dir @@ -34,61 +14,36 @@ function(get_source_info_git path revision repository) if(git_result EQUAL 0) string(STRIP "${git_output}" git_output) get_filename_component(git_dir ${git_output} ABSOLUTE BASE_DIR ${path}) - if(EXISTS "${git_dir}/svn/refs") - execute_process(COMMAND ${GIT_EXECUTABLE} svn info - WORKING_DIRECTORY ${path} - RESULT_VARIABLE git_result - OUTPUT_VARIABLE git_output) - if(git_result EQUAL 0) - string(REGEX REPLACE "^(.*\n)?Revision: ([^\n]+).*" - "\\2" git_svn_rev "${git_output}") - set(${revision} ${git_svn_rev} PARENT_SCOPE) - string(REGEX REPLACE "^(.*\n)?URL: ([^\n]+).*" - "\\2" git_url "${git_output}") - set(${repository} ${git_url} PARENT_SCOPE) - endif() + execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD + WORKING_DIRECTORY ${path} + RESULT_VARIABLE git_result + OUTPUT_VARIABLE git_output) + if(git_result EQUAL 0) + string(STRIP "${git_output}" git_output) + set(${revision} ${git_output} PARENT_SCOPE) + endif() + execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref --symbolic-full-name @{upstream} + WORKING_DIRECTORY ${path} + RESULT_VARIABLE git_result + OUTPUT_VARIABLE git_output + ERROR_QUIET) + if(git_result EQUAL 0) + string(REPLACE "/" ";" branch ${git_output}) + list(GET branch 0 remote) else() - execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD - WORKING_DIRECTORY ${path} - RESULT_VARIABLE git_result - OUTPUT_VARIABLE git_output) - if(git_result EQUAL 0) - string(STRIP "${git_output}" git_output) - set(${revision} ${git_output} PARENT_SCOPE) - endif() - execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref --symbolic-full-name @{upstream} - WORKING_DIRECTORY ${path} - RESULT_VARIABLE git_result - OUTPUT_VARIABLE git_output - ERROR_QUIET) - if(git_result EQUAL 0) - string(REPLACE "/" ";" branch ${git_output}) - list(GET branch 0 remote) - else() - set(remote "origin") - endif() - execute_process(COMMAND ${GIT_EXECUTABLE} remote get-url ${remote} - WORKING_DIRECTORY ${path} - RESULT_VARIABLE git_result - OUTPUT_VARIABLE git_output - ERROR_QUIET) - if(git_result EQUAL 0) - string(STRIP "${git_output}" git_output) - set(${repository} ${git_output} PARENT_SCOPE) - else() - set(${repository} ${path} PARENT_SCOPE) - endif() + set(remote "origin") + endif() + execute_process(COMMAND ${GIT_EXECUTABLE} remote get-url ${remote} + WORKING_DIRECTORY ${path} + RESULT_VARIABLE git_result + OUTPUT_VARIABLE git_output + ERROR_QUIET) + if(git_result EQUAL 0) + string(STRIP "${git_output}" git_output) + set(${repository} ${git_output} PARENT_SCOPE) + else() + set(${repository} ${path} PARENT_SCOPE) endif() endif() endif() endfunction() - -function(get_source_info path revision repository) - if(EXISTS "${path}/.svn") - get_source_info_svn("${path}" revision_info repository_info) - else() - get_source_info_git("${path}" revision_info repository_info) - endif() - set(${repository} "${repository_info}" PARENT_SCOPE) - set(${revision} "${revision_info}" PARENT_SCOPE) -endfunction()