[mlpack-git] master: Refactor CMake to get version info from git. Instead of subversion. This has been a long time coming... (15c5546)
gitdub at big.cc.gt.atl.ga.us
gitdub at big.cc.gt.atl.ga.us
Tue Mar 24 22:35:25 EDT 2015
Repository : https://github.com/mlpack/mlpack
On branch : master
Link : https://github.com/mlpack/mlpack/compare/cbccdc78493a4db6cf6ebbf6442674bab8d9c22c...9724d6c63e878e4cbe98cd907c5e5f39175ef1bd
>---------------------------------------------------------------
commit 15c554665576d93e571f09efe580ca9ad391a75e
Author: Ryan Curtin <ryan at ratml.org>
Date: Tue Mar 24 22:31:31 2015 -0400
Refactor CMake to get version info from git.
Instead of subversion. This has been a long time coming...
>---------------------------------------------------------------
15c554665576d93e571f09efe580ca9ad391a75e
CMake/CreateGitVersionHeader.cmake | 29 +++++++++++++++++++++++
CMake/CreateSVNVersionHeader.cmake | 25 --------------------
CMakeLists.txt | 48 ++++++++++++++++++++------------------
3 files changed, 54 insertions(+), 48 deletions(-)
diff --git a/CMake/CreateGitVersionHeader.cmake b/CMake/CreateGitVersionHeader.cmake
new file mode 100644
index 0000000..7de9691
--- /dev/null
+++ b/CMake/CreateGitVersionHeader.cmake
@@ -0,0 +1,29 @@
+# Using the CMake subversion tools, create svnversion.hpp, which just contains
+# the implementation of GetVersion() assuming that we are working inside of a
+# subversion repository.
+find_package(Git)
+
+execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ OUTPUT_VARIABLE NEW_GIT_REVISION
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+# Get the current version, if it exists.
+if(EXISTS ${CMAKE_SOURCE_DIR}/src/mlpack/core/util/gitversion.hpp)
+ file(READ ${CMAKE_SOURCE_DIR}/src/mlpack/core/util/gitversion.hpp
+ _OLD_GITVERSION_CONTENTS)
+ string(REGEX REPLACE ".*return \"mlpack git-([0-9a-f]+)\".*" "\\1"
+ OLD_GIT_REVISION ${_OLD_GITVERSION_CONTENTS})
+else(EXISTS ${CMAKE_SOURCE_DIR}/src/mlpack/core/util/gitversion.hpp)
+ set(OLD_GIT_REVISION "notfound")
+endif(EXISTS ${CMAKE_SOURCE_DIR}/src/mlpack/core/util/gitversion.hpp)
+
+if("${OLD_GIT_REVISION}" STREQUAL "${NEW_GIT_REVISION}")
+ message(STATUS "gitversion.hpp is already up to date.")
+else("${OLD_GIT_REVISION}" STREQUAL "${NEW_GIT_REVISION}")
+ # Remove the old version.
+ file(REMOVE ${CMAKE_SOURCE_DIR}/src/mlpack/core/util/gitversion.hpp)
+ file(WRITE ${CMAKE_SOURCE_DIR}/src/mlpack/core/util/gitversion.hpp
+ "return \"mlpack git-${NEW_GIT_REVISION}\";\n")
+ message(STATUS "Updated gitversion.hpp.")
+endif("${OLD_GIT_REVISION}" STREQUAL "${NEW_GIT_REVISION}")
diff --git a/CMake/CreateSVNVersionHeader.cmake b/CMake/CreateSVNVersionHeader.cmake
deleted file mode 100644
index 4fc2067..0000000
--- a/CMake/CreateSVNVersionHeader.cmake
+++ /dev/null
@@ -1,25 +0,0 @@
-# Using the CMake subversion tools, create svnversion.hpp, which just contains
-# the implementation of GetVersion() assuming that we are working inside of a
-# subversion repository.
-include(FindSubversion)
-Subversion_WC_INFO(${CMAKE_SOURCE_DIR} MLPACK)
-
-# Get the current version, if it exists.
-if(EXISTS ${CMAKE_SOURCE_DIR}/src/mlpack/core/util/svnversion.hpp)
- file(READ ${CMAKE_SOURCE_DIR}/src/mlpack/core/util/svnversion.hpp
- _OLD_SVNVERSION_CONTENTS)
- string(REGEX REPLACE ".*return \"mlpack trunk-r([0-9]+)\".*" "\\1"
- OLD_SVN_REVISION ${_OLD_SVNVERSION_CONTENTS})
-else(EXISTS ${CMAKE_SOURCE_DIR}/src/mlpack/core/util/svnversion.hpp)
- set(OLD_SVN_REVISION "notfound")
-endif(EXISTS ${CMAKE_SOURCE_DIR}/src/mlpack/core/util/svnversion.hpp)
-
-if("${OLD_SVN_REVISION}" STREQUAL "${MLPACK_WC_REVISION}")
- message(STATUS "svnversion.hpp is already up to date.")
-else("${OLD_SVN_REVISION}" STREQUAL "${MLPACK_WC_REVISION}")
- # Remove the old version.
- file(REMOVE ${CMAKE_SOURCE_DIR}/src/mlpack/core/util/svnversion.hpp)
- file(WRITE ${CMAKE_SOURCE_DIR}/src/mlpack/core/util/svnversion.hpp
- "return \"mlpack trunk-r${MLPACK_WC_REVISION}\";\n")
- message(STATUS "Updated svnversion.hpp.")
-endif("${OLD_SVN_REVISION}" STREQUAL "${MLPACK_WC_REVISION}")
diff --git a/CMakeLists.txt b/CMakeLists.txt
index cf6e91f..1a51fbf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -253,42 +253,44 @@ else (WIN32)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/)
endif (WIN32)
-# Determine whether or not this is a subversion repository, so that we can set
-# the trunk revision if necessary for --version (#309).
-find_package(Subversion)
-set (USING_SVNVERSION "NO")
-if (Subversion_FOUND)
+# Determine whether or not this is a git repository, so that we can set the
+# version number if necessary.
+
+find_package(Git)
+set (USING_GIT "NO")
+if (GIT_FOUND)
# Run svn info to find out if this is a working copy. If the return code is
# not 0, then it isn't. The following line is taken from
# FindSubversion.cmake...
- execute_process(COMMAND ${Subversion_SVN_EXECUTABLE} info ${CMAKE_SOURCE_DIR}
- OUTPUT_VARIABLE MLPACK_TMP_WC_INFO
- ERROR_VARIABLE MLPACK_TMP_WC_INFO_ERROR
- RESULT_VARIABLE MLPACK_TMP_WC_INFO_RESULT
+ execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ OUTPUT_VARIABLE MLPACK_TMP_REV_INFO
+ ERROR_VARIABLE MLPACK_TMP_REV_INFO_ERROR
+ RESULT_VARIABLE MLPACK_TMP_REV_INFO_RESULT
OUTPUT_STRIP_TRAILING_WHITESPACE)
- if (${MLPACK_TMP_WC_INFO_RESULT} EQUAL 0)
- set (USING_SVNVERSION "YES")
- add_definitions(-D__MLPACK_SUBVERSION)
- include(CMake/CreateSVNVersionHeader.cmake)
+ if (${MLPACK_TMP_REV_INFO_RESULT} EQUAL 0)
+ set (USING_GIT "YES")
+ add_definitions(-D__MLPACK_GIT_VERSION)
+ include(CMake/CreateGitVersionHeader.cmake)
- add_custom_target(mlpack_svnversion ALL
- COMMAND ${CMAKE_COMMAND} -P CMake/CreateSVNVersionHeader.cmake
+ add_custom_target(mlpack_gitversion ALL
+ COMMAND ${CMAKE_COMMAND} -P CMake/CreateGitVersionHeader.cmake
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- COMMENT "Updating svnversion.hpp (if necessary)")
+ COMMENT "Updating gitnversion.hpp (if necessary)")
# Add svnversion.hpp to the list of sources.
set(MLPACK_SRCS ${MLPACK_SRCS}
- "${CMAKE_CURRENT_SOURCE_DIR}/src/mlpack/core/util/svnversion.hpp")
- endif (${MLPACK_TMP_WC_INFO_RESULT} EQUAL 0)
-endif (Subversion_FOUND)
+ "${CMAKE_CURRENT_SOURCE_DIR}/src/mlpack/core/util/gitversion.hpp")
+ endif (${MLPACK_TMP_REV_INFO_RESULT} EQUAL 0)
+endif (GIT_FOUND)
# Recurse into the rest of the project.
add_subdirectory(src/mlpack)
-if (USING_SVNVERSION STREQUAL "YES")
- add_dependencies(mlpack mlpack_svnversion)
-endif (USING_SVNVERSION STREQUAL "YES")
+if (USING_GIT STREQUAL "YES")
+ add_dependencies(mlpack mlpack_gitversion)
+endif (USING_GIT STREQUAL "YES")
-# If we need to keep svnversion.hpp up to date, then make sure the mlpack target
+# If we need to keep gitversion.hpp up to date, then make sure the mlpack target
# depends on it.
# Make a target to generate the documentation. If Doxygen isn't installed, then
More information about the mlpack-git
mailing list