Browse Source

Check and/or report the version of CE used in EE builds

Clean up the code for checking git tags match on a build, to allow other
editions to check it when building systems that are based on CE builds.

See also hpcc-systems/LN#407

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 13 years ago
parent
commit
4e73cdf223
3 changed files with 31 additions and 21 deletions
  1. 12 21
      CMakeLists.txt
  2. 4 0
      build-config.h.cmake
  3. 15 0
      cmake_modules/commonSetup.cmake

+ 12 - 21
CMakeLists.txt

@@ -213,32 +213,23 @@ set(CPACK_SOURCE_IGNORE_FILES
 ###
 set( BUILD_TAG "${CPACK_RPM_PACKAGE_VERSION}_${version}-${stagever}")
 if (USE_GIT_DESCRIBE OR CHECK_GIT_TAG)
-    execute_process(COMMAND "${GIT_COMMAND}" describe --exact --tags --dirty --match ${CPACK_RPM_PACKAGE_VERSION}* 
-        WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
-        OUTPUT_VARIABLE GIT_BUILD_TAG
-        ERROR_QUIET
-        OUTPUT_STRIP_TRAILING_WHITESPACE)
-    if (CHECK_GIT_TAG)
-        if(NOT "${GIT_BUILD_TAG}" STREQUAL "${BUILD_TAG}")
-            message(FATAL_ERROR "Git tag '${GIT_BUILD_TAG}' does not match source version '${BUILD_TAG}'" )
-        endif()
-    else()
-        if ("${GIT_BUILD_TAG}" STREQUAL "")
-            execute_process(COMMAND "${GIT_COMMAND}" describe --always --tags --all --abbrev=6 --dirty --long
-                WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
-                OUTPUT_VARIABLE GIT_BUILD_TAG
-                ERROR_QUIET
-                OUTPUT_STRIP_TRAILING_WHITESPACE)
-        endif()
-    endif()
+    FETCH_GIT_TAG (${CMAKE_SOURCE_DIR} ${CPACK_RPM_PACKAGE_VERSION} GIT_BUILD_TAG)
     message ("-- Git tag is '${GIT_BUILD_TAG}'")
-    if(NOT "${GIT_BUILD_TAG}" STREQUAL "${BUILD_TAG}")
-        if(NOT "${GIT_BUILD_TAG}" STREQUAL "") # probably means being built from a tarball...
-            set( BUILD_TAG "${BUILD_TAG}[${GIT_BUILD_TAG}]")
+    if (NOT "${GIT_BUILD_TAG}" STREQUAL "${BUILD_TAG}")
+        if (CHECK_GIT_TAG)
+            message(FATAL_ERROR "Git tag '${GIT_BUILD_TAG}' does not match source version '${BUILD_TAG}'" )
+        else()
+            if(NOT "${GIT_BUILD_TAG}" STREQUAL "") # probably means being built from a tarball...
+                set( BUILD_TAG "${BUILD_TAG}[${GIT_BUILD_TAG}]")
+            endif()
         endif()
     endif()
 endif()
 message ("-- Build tag is '${BUILD_TAG}'")
+if (NOT "${BASE_BUILD_TAG}" STREQUAL "")
+    set(BUILD_TAG "${BUILD_TAG}[)
+endif()
+message ("-- Base build tag is '${BASE_BUILD_TAG}'")
 configure_file(${HPCC_SOURCE_DIR}/build-config.h.cmake "build-config.h" )
 
 #set( CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON )

+ 4 - 0
build-config.h.cmake

@@ -82,6 +82,10 @@
     #cmakedefine BUILD_TAG "${BUILD_TAG}"
 #endif
 
+#ifndef BASE_BUILD_TAG
+    #cmakedefine BASE_BUILD_TAG "${BASE_BUILD_TAG}"
+#endif
+
 #ifndef BUILD_LEVEL
     #cmakedefine BUILD_LEVEL "${BUILD_LEVEL}"
 #endif

+ 15 - 0
cmake_modules/commonSetup.cmake

@@ -395,4 +395,19 @@ IF ("${COMMONSETUP_DONE}" STREQUAL "")
   SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${OSSDIR}/lib")
   SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
 
+  MACRO (FETCH_GIT_TAG workdir edition result)
+      execute_process(COMMAND "${GIT_COMMAND}" describe --tags --dirty --abbrev=6 --match ${edition}*
+        WORKING_DIRECTORY "${workdir}"
+        OUTPUT_VARIABLE ${result}
+        ERROR_QUIET
+        OUTPUT_STRIP_TRAILING_WHITESPACE)
+        if ("${${result}}" STREQUAL "")
+            execute_process(COMMAND "${GIT_COMMAND}" describe --always --tags --all --abbrev=6 --dirty --long
+                WORKING_DIRECTORY "${workdir}"
+                OUTPUT_VARIABLE ${result}
+                ERROR_QUIET
+                OUTPUT_STRIP_TRAILING_WHITESPACE)
+        endif()
+  ENDMACRO()
+
 endif ("${COMMONSETUP_DONE}" STREQUAL "")