[mapguide-commits] r9421 - in trunk/MgDev: . Oem cmake cmake/tools

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Mon Dec 10 06:54:00 PST 2018


Author: jng
Date: 2018-12-10 06:54:00 -0800 (Mon, 10 Dec 2018)
New Revision: 9421

Added:
   trunk/MgDev/cmake/tools/
   trunk/MgDev/cmake/tools/getdistro.sh
Modified:
   trunk/MgDev/CMakeLists.txt
   trunk/MgDev/Oem/CMakeLists.txt
   trunk/MgDev/cmake_build.sh
Log:
#2786: Fix up CMake build to better support packaging via CPack

Modified: trunk/MgDev/CMakeLists.txt
===================================================================
--- trunk/MgDev/CMakeLists.txt	2018-12-08 07:45:34 UTC (rev 9420)
+++ trunk/MgDev/CMakeLists.txt	2018-12-10 14:54:00 UTC (rev 9421)
@@ -41,9 +41,6 @@
     message (STATUS "MG_CPU is ${MG_CPU}")
 endif ((NOT MG_CPU EQUAL 32) AND (NOT MG_CPU EQUAL 64))
 
-# Make CPack available to easy generate binary packages
-include(CPack)
-
 include(CheckFunctionExists)
 include(CheckIncludeFile)
 include(CheckCXXSourceCompiles)
@@ -59,6 +56,47 @@
 set(MG_VERSION "${MG_VERSION_MAJOR}.${MG_VERSION_MINOR}.${MG_VERSION_RELEASE}")
 set(MG_VERSION_FULL "${MG_VERSION}.${MG_VERSION_REV}")
 
+# Set CPack vars
+set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MapGuide Open Source")
+set(CPACK_PACKAGE_VENDOR "OSGeo")
+set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/CMake_README.txt")
+set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/License.txt")
+set(CPACK_PACKAGE_VERSION_MAJOR "${MG_VERSION_MAJOR}")
+set(CPACK_PACKAGE_VERSION_MINOR "${MG_VERSION_MINOR}")
+set(CPACK_PACKAGE_VERSION_PATCH "${MG_VERSION_RELEASE}")
+set(CPACK_PACKAGE_VERSION "${MG_VERSION_FULL}")
+set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 0)
+
+# Collect distro name for so we know how to name these packages
+# NOTE: This uses lsb_release to detect the name, so this tool must already be installed first
+execute_process(COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/cmake/tools/getdistro.sh OUTPUT_VARIABLE DISTRO)
+message(STATUS "Detected Distro: ${DISTRO}")
+if(MG_CPU EQUAL 64)
+    set(CPACK_SYSTEM_NAME "${DISTRO}-amd64")
+else(MG_CPU EQUAL 64)
+    set(CPACK_SYSTEM_NAME "${DISTRO}-i386")
+endif(MG_CPU EQUAL 64)
+message(STATUS "CPack system name: ${CPACK_SYSTEM_NAME}")
+
+# Default to plain tarballs for packaging
+if (NOT CPACK_GENERATOR)
+    set(CPACK_GENERATOR "TGZ")
+endif (NOT CPACK_GENERATOR)
+message(STATUS "Using CPack generator: ${CPACK_GENERATOR}")
+
+# If making tarballs, force monolithic packaging
+if (CPACK_GENERATOR MATCHES "TGZ")
+    set(CPACK_MONOLITHIC_INSTALL 1)
+else (CPACK_GENERATOR MATCHES "TGZ")
+    set(CPACK_MONOLITHIC_INSTALL 0)
+endif (CPACK_GENERATOR MATCHES "TGZ")
+message(STATUS "CPack monolithic install: ${CPACK_MONOLITHIC_INSTALL}")
+
+# For monolithic packages, 
+if (CPACK_MONOLITHIC_INSTALL)
+    set (CPACK_PACKAGE_FILE_NAME "mapguideopensource-${MG_VERSION_FULL}-${CPACK_SYSTEM_NAME}")
+endif (CPACK_MONOLITHIC_INSTALL)
+
 set(MG_HTTPD_PORT 8008)
 set(MG_TOMCAT_PORT 8009)
 
@@ -88,16 +126,26 @@
 set(MG_COMPONENT_WEB "web")
 
 # Override install directory to match what the automake build does (/usr/local, rather than /usr/local/lib)
-set(MG_INSTALL_PREFIX "/usr/local/mapguideopensource-${MG_VERSION}")
-set(MG_INSTALL_WEB_PREFIX "${MG_INSTALL_PREFIX}/webserverextensions")
+if (NOT MG_INSTALL_PREFIX)
+    set(MG_INSTALL_PREFIX "/usr/local/mapguideopensource-${MG_VERSION}")
+endif (NOT MG_INSTALL_PREFIX)
+#set(MG_INSTALL_WEB_PREFIX "${MG_INSTALL_PREFIX}/webserverextensions")
+#set(MG_WWWROOT "${MG_INSTALL_WEB_PREFIX}/www")
+#set(MG_INSTALL_SERVER_PREFIX "${MG_INSTALL_PREFIX}/server")
+#set(MG_SERVER_BIN_DIR "${MG_INSTALL_SERVER_PREFIX}/bin")
+#set(MG_INSTALL_COORDSYS_PREFIX "${MG_INSTALL_PREFIX}/share/gis/coordsys")
+set(MG_INSTALL_WEB_PREFIX "webserverextensions")
 set(MG_WWWROOT "${MG_INSTALL_WEB_PREFIX}/www")
-set(MG_INSTALL_SERVER_PREFIX "${MG_INSTALL_PREFIX}/server")
+set(MG_INSTALL_SERVER_PREFIX "server")
 set(MG_SERVER_BIN_DIR "${MG_INSTALL_SERVER_PREFIX}/bin")
-set(MG_INSTALL_COORDSYS_PREFIX "${MG_INSTALL_PREFIX}/share/gis/coordsys")
+set(MG_INSTALL_COORDSYS_PREFIX "share/gis/coordsys")
 set(CMAKE_INSTALL_PREFIX "${MG_INSTALL_PREFIX}")
 
 set(MG_VERSION_SUFFIX "-${MG_VERSION}")
 
+# Make CPack available to easy generate binary packages
+include(CPack)
+
 macro(set_install_subdir relbase)
     # Global definitions ( used by all sources )
     # Check if is a 64 bits install and use user defined LIB_SUFFIX
@@ -118,7 +166,8 @@
 endmacro(make_install workdir)
 
 macro(install_empty_directory dirname root)
-    install(CODE "file(MAKE_DIRECTORY ${root}/${dirname})")
+    file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${dirname}")
+    install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${dirname} DESTINATION ${root} COMPONENT ${MG_COMPONENT})
 endmacro(install_empty_directory dirname root)
 
 if(UNIX)
@@ -212,4 +261,4 @@
     add_subdirectory(Desktop)
 else (WITH_DESKTOP)
     message(STATUS "Skipping optional mg-desktop support")
-endif (WITH_DESKTOP)
+endif (WITH_DESKTOP)
\ No newline at end of file

Modified: trunk/MgDev/Oem/CMakeLists.txt
===================================================================
--- trunk/MgDev/Oem/CMakeLists.txt	2018-12-08 07:45:34 UTC (rev 9420)
+++ trunk/MgDev/Oem/CMakeLists.txt	2018-12-10 14:54:00 UTC (rev 9421)
@@ -4,6 +4,8 @@
 set(FUSION_WORK_DIR ${CMAKE_CURRENT_BINARY_DIR}/fusion)
 install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E chdir ${FUSION_WORK_DIR} ant deploy -Ddeploy.home=${MG_WWWROOT}/fusion)")
 if (UNIX)
+    # Make the tcpdf cache dir
+    install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${MG_WWWROOT}/fusion/lib/tcpdf/cache)")
     # httpd's default config is to use user/group daemon/daemon, so make it own the tcpdf cache directory in order for QuickPlot to work
     install(CODE "execute_process(COMMAND chown daemon:daemon ${MG_WWWROOT}/fusion/lib/tcpdf/cache)")
 endif (UNIX)

Added: trunk/MgDev/cmake/tools/getdistro.sh
===================================================================
--- trunk/MgDev/cmake/tools/getdistro.sh	                        (rev 0)
+++ trunk/MgDev/cmake/tools/getdistro.sh	2018-12-10 14:54:00 UTC (rev 9421)
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# getdistro.sh
+#
+# Uses lsb_release to get a suitable distro string for CPack
+OS=$(lsb_release -si)
+VER=$(lsb_release -sr | cut -d. -f1)
+echo -n "${OS}${VER}"
\ No newline at end of file


Property changes on: trunk/MgDev/cmake/tools/getdistro.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Modified: trunk/MgDev/cmake_build.sh
===================================================================
--- trunk/MgDev/cmake_build.sh	2018-12-08 07:45:34 UTC (rev 9420)
+++ trunk/MgDev/cmake_build.sh	2018-12-10 14:54:00 UTC (rev 9421)
@@ -91,12 +91,12 @@
 echo "Setting up CMake in: $CMAKE_BUILD_DIR"
 cd "$CMAKE_BUILD_DIR" || exit
 if test $USE_NINJA -eq 1; then
-    cmake -G Ninja "$SOURCE_DIR" -DMG_CPU="$BUILD_CPU" -DWITH_JAVA=TRUE -DUSE_LD_GOLD="$USE_LD_GOLD" -DINTERNAL_XERCES=$INTERNAL_XERCES -DSANITIZE_ADDRESS=$USE_ASAN -DPHP_VER="$PHP_VER" -DHTTPD_VER="$HTTPD_VER" -DCMAKE_BUILD_TYPE="$BUILD_CONFIG" -DMG_OEM_WORK_DIR="$OEM_WORK_DIR"
+    cmake -G Ninja "$SOURCE_DIR" -DMG_INSTALL_PREFIX="$MG_INST_PREFIX" -DMG_CPU="$BUILD_CPU" -DWITH_JAVA=TRUE -DUSE_LD_GOLD="$USE_LD_GOLD" -DINTERNAL_XERCES=$INTERNAL_XERCES -DSANITIZE_ADDRESS=$USE_ASAN -DPHP_VER="$PHP_VER" -DHTTPD_VER="$HTTPD_VER" -DCMAKE_BUILD_TYPE="$BUILD_CONFIG" -DMG_OEM_WORK_DIR="$OEM_WORK_DIR"
     check_build
     ninja
     check_build
 else
-    cmake "$SOURCE_DIR" -DMG_CPU="$BUILD_CPU" -DWITH_JAVA=TRUE -DUSE_LD_GOLD="$USE_LD_GOLD" -DINTERNAL_XERCES=$INTERNAL_XERCES -DSANITIZE_ADDRESS=$USE_ASAN -DPHP_VER="$PHP_VER" -DHTTPD_VER="$HTTPD_VER" -DCMAKE_BUILD_TYPE="$BUILD_CONFIG" -DMG_OEM_WORK_DIR="$OEM_WORK_DIR"
+    cmake "$SOURCE_DIR" -DMG_INSTALL_PREFIX="$MG_INST_PREFIX" -DMG_CPU="$BUILD_CPU" -DWITH_JAVA=TRUE -DUSE_LD_GOLD="$USE_LD_GOLD" -DINTERNAL_XERCES=$INTERNAL_XERCES -DSANITIZE_ADDRESS=$USE_ASAN -DPHP_VER="$PHP_VER" -DHTTPD_VER="$HTTPD_VER" -DCMAKE_BUILD_TYPE="$BUILD_CONFIG" -DMG_OEM_WORK_DIR="$OEM_WORK_DIR"
     check_build
     make
     check_build



More information about the mapguide-commits mailing list