Merge branch 'install_dir_change' into develop
Conflicts: CMakeLists.txt Documentation/Tutorials/Administration-Tutorial.md log_manager/CMakeLists.txt server/core/CMakeLists.txt server/core/gateway.c server/core/maxkeys.c server/core/maxpasswd.c server/modules/filter/test/CMakeLists.txt server/modules/routing/CMakeLists.txt
This commit is contained in:
12
cmake/install_layout.cmake
Normal file
12
cmake/install_layout.cmake
Normal file
@ -0,0 +1,12 @@
|
||||
# Set the install layout
|
||||
include(GNUInstallDirs)
|
||||
|
||||
set(MAXSCALE_LIBDIR ${CMAKE_INSTALL_LIBDIR}/maxscale CACHE PATH "Library installation path")
|
||||
set(MAXSCALE_BINDIR ${CMAKE_INSTALL_BINDIR} CACHE PATH "Executable installation path")
|
||||
set(MAXSCALE_SHAREDIR ${CMAKE_INSTALL_DATADIR}/maxscale CACHE PATH "Share file installation path, includes licence and readme files")
|
||||
set(MAXSCALE_DOCDIR ${CMAKE_INSTALL_DOCDIR}/maxscale CACHE PATH "Documentation installation path, text versions only")
|
||||
set(MAXSCALE_CONFDIR ${CMAKE_INSTALL_SYSCONFDIR} CACHE PATH "Configuration file installation path, this is not usually needed")
|
||||
|
||||
# This is the only hard-coded absolute path
|
||||
set(MAXSCALE_VARDIR /var CACHE PATH "Data file path (usually /var/)")
|
||||
|
244
cmake/macros.cmake
Normal file
244
cmake/macros.cmake
Normal file
@ -0,0 +1,244 @@
|
||||
|
||||
function(debugmsg MSG)
|
||||
if(DEBUG_OUTPUT)
|
||||
message(STATUS "DEBUG: ${MSG}")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
macro(set_maxscale_version)
|
||||
|
||||
# MaxScale version number
|
||||
set(MAXSCALE_VERSION_MAJOR "1")
|
||||
set(MAXSCALE_VERSION_MINOR "1")
|
||||
set(MAXSCALE_VERSION_PATCH "1")
|
||||
set(MAXSCALE_VERSION_NUMERIC "${MAXSCALE_VERSION_MAJOR}.${MAXSCALE_VERSION_MINOR}.${MAXSCALE_VERSION_PATCH}")
|
||||
set(MAXSCALE_VERSION "${MAXSCALE_VERSION_MAJOR}.${MAXSCALE_VERSION_MINOR}.${MAXSCALE_VERSION_PATCH}")
|
||||
|
||||
# This should be incremented each time a package is rebuilt
|
||||
set(MAXSCALE_BUILD_NUMBER 2)
|
||||
endmacro()
|
||||
|
||||
macro(set_variables)
|
||||
|
||||
# hostname or IP address of MaxScale's host
|
||||
set(TEST_HOST "127.0.0.1" CACHE STRING "hostname or IP address of MaxScale's host")
|
||||
|
||||
# port of read connection router module
|
||||
set(TEST_PORT "4008" CACHE STRING "port of read connection router module")
|
||||
|
||||
# port of read/write split router module
|
||||
set(TEST_PORT_RW "4006" CACHE STRING "port of read/write split router module")
|
||||
|
||||
# port of schemarouter router module
|
||||
set(TEST_PORT_DB "4010" CACHE STRING "port of schemarouter router module")
|
||||
|
||||
# port of read/write split router module with hints
|
||||
set(TEST_PORT_RW_HINT "4009" CACHE STRING "port of read/write split router module with hints")
|
||||
|
||||
# master test server server_id
|
||||
set(TEST_MASTER_ID "3000" CACHE STRING "master test server server_id")
|
||||
|
||||
# master test server port
|
||||
set(MASTER_PORT "3000" CACHE STRING "master test server port")
|
||||
|
||||
# username of MaxScale user
|
||||
set(TEST_USER "maxuser" CACHE STRING "username of MaxScale user")
|
||||
|
||||
# password of MaxScale user
|
||||
set(TEST_PASSWORD "maxpwd" CACHE STRING "password of MaxScale user")
|
||||
|
||||
# Use static version of libmysqld
|
||||
set(STATIC_EMBEDDED TRUE CACHE BOOL "Use static version of libmysqld")
|
||||
|
||||
# Build RabbitMQ components
|
||||
set(BUILD_RABBITMQ FALSE CACHE BOOL "Build RabbitMQ components")
|
||||
|
||||
# Build the binlog router
|
||||
set(BUILD_BINLOG TRUE CACHE BOOL "Build binlog router")
|
||||
|
||||
# Use gcov build flags
|
||||
set(GCOV FALSE CACHE BOOL "Use gcov build flags")
|
||||
|
||||
# Install init.d scripts and ldconf configuration files
|
||||
set(WITH_SCRIPTS TRUE CACHE BOOL "Install init.d scripts and ldconf configuration files")
|
||||
|
||||
# Use tcmalloc as the memory allocator
|
||||
set(WITH_TCMALLOC FALSE CACHE BOOL "Use tcmalloc as the memory allocator")
|
||||
|
||||
# Use jemalloc as the memory allocator
|
||||
set(WITH_JEMALLOC FALSE CACHE BOOL "Use jemalloc as the memory allocator")
|
||||
|
||||
# Build tests
|
||||
set(BUILD_TESTS FALSE CACHE BOOL "Build tests")
|
||||
|
||||
# Build packages
|
||||
set(PACKAGE FALSE CACHE BOOL "Enable package building (this disables local installation of system files)")
|
||||
|
||||
# Build extra tools
|
||||
set(BUILD_TOOLS FALSE CACHE BOOL "Build extra utility tools")
|
||||
|
||||
# Profiling
|
||||
set(PROFILE FALSE CACHE BOOL "Profiling (gprof)")
|
||||
|
||||
endmacro()
|
||||
|
||||
macro(check_deps)
|
||||
|
||||
|
||||
# Check for libraries MaxScale depends on
|
||||
find_library(HAVE_LIBAIO NAMES aio)
|
||||
if(NOT HAVE_LIBAIO)
|
||||
message(FATAL_ERROR "Could not find libaio")
|
||||
endif()
|
||||
|
||||
find_library(HAVE_LIBSSL NAMES ssl)
|
||||
if(NOT HAVE_LIBSSL)
|
||||
message(FATAL_ERROR "Could not find libssl")
|
||||
endif()
|
||||
|
||||
find_library(HAVE_LIBCRYPT NAMES crypt)
|
||||
if(NOT HAVE_LIBCRYPT)
|
||||
message(FATAL_ERROR "Could not find libcrypt")
|
||||
endif()
|
||||
|
||||
find_library(HAVE_LIBCRYPTO NAMES crypto)
|
||||
if(NOT HAVE_LIBCRYPTO)
|
||||
message(FATAL_ERROR "Could not find libcrypto")
|
||||
endif()
|
||||
|
||||
find_library(HAVE_LIBZ NAMES z)
|
||||
if(NOT HAVE_LIBZ)
|
||||
message(FATAL_ERROR "Could not find libz")
|
||||
endif()
|
||||
|
||||
find_library(HAVE_LIBM NAMES m)
|
||||
if(NOT HAVE_LIBM)
|
||||
message(FATAL_ERROR "Could not find libm")
|
||||
endif()
|
||||
|
||||
find_library(HAVE_LIBDL NAMES dl)
|
||||
if(NOT HAVE_LIBDL)
|
||||
message(FATAL_ERROR "Could not find libdl")
|
||||
endif()
|
||||
|
||||
find_library(HAVE_LIBRT NAMES rt)
|
||||
if(NOT HAVE_LIBRT)
|
||||
message(FATAL_ERROR "Could not find librt")
|
||||
endif()
|
||||
|
||||
find_library(HAVE_LIBPTHREAD NAMES pthread)
|
||||
if(NOT HAVE_LIBPTHREAD)
|
||||
message(FATAL_ERROR "Could not find libpthread")
|
||||
endif()
|
||||
|
||||
|
||||
# set(MAXSCALE_DEPS aio ssl crypt crypto z m dl rt pthread)
|
||||
# foreach(lib ${MAXSCALE_DEPS})
|
||||
# find_library(lib${lib} ${lib})
|
||||
# if((DEFINED lib${lib}) AND (${lib${lib}} MATCHES "NOTFOUND"))
|
||||
# set(DEPS_ERROR TRUE)
|
||||
# set(FAILED_DEPS "${FAILED_DEPS} lib${lib}")
|
||||
# elseif(DEBUG_OUTPUT)
|
||||
# message(STATUS "Library was found at: ${lib${lib}}")
|
||||
# endif()
|
||||
# endforeach()
|
||||
|
||||
# if(DEPS_ERROR)
|
||||
# set(DEPS_OK FALSE CACHE BOOL "If all the dependencies were found.")
|
||||
# message(FATAL_ERROR "Cannot find dependencies: ${FAILED_DEPS}")
|
||||
# endif()
|
||||
|
||||
endmacro()
|
||||
|
||||
macro(check_dirs)
|
||||
|
||||
# This variable is used to prevent redundant checking of dependencies
|
||||
set(DEPS_OK TRUE CACHE BOOL "If all the dependencies were found.")
|
||||
|
||||
# Find the MySQL headers if they were not defined
|
||||
|
||||
if(DEFINED MYSQL_DIR)
|
||||
debugmsg("Searching for MySQL headers at: ${MYSQL_DIR}")
|
||||
list(APPEND CMAKE_INCLUDE_PATH ${MYSQL_DIR})
|
||||
find_path(MYSQL_DIR_LOC mysql.h PATHS ${MYSQL_DIR} PATH_SUFFIXES mysql mariadb NO_DEFAULT_PATH)
|
||||
else()
|
||||
find_path(MYSQL_DIR_LOC mysql.h PATH_SUFFIXES mysql mariadb)
|
||||
endif()
|
||||
|
||||
debugmsg("Search returned: ${MYSQL_DIR_LOC}")
|
||||
|
||||
if(${MYSQL_DIR_LOC} MATCHES "NOTFOUND")
|
||||
set(DEPS_OK FALSE CACHE BOOL "If all the dependencies were found.")
|
||||
message(FATAL_ERROR "Fatal Error: MySQL headers were not found.")
|
||||
else()
|
||||
set(MYSQL_DIR ${MYSQL_DIR_LOC} CACHE PATH "Path to MySQL headers" FORCE)
|
||||
message(STATUS "Using MySQL headers found at: ${MYSQL_DIR}")
|
||||
endif()
|
||||
|
||||
unset(MYSQL_DIR_LOC)
|
||||
|
||||
# Find the errmsg.sys file if it was not defied
|
||||
if( DEFINED ERRMSG )
|
||||
debugmsg("Looking for errmsg.sys at: ${ERRMSG}")
|
||||
if(NOT(IS_DIRECTORY ${ERRMSG}))
|
||||
get_filename_component(ERRMSG ${ERRMSG} PATH)
|
||||
debugmsg("Path to file is: ${ERRMSG}")
|
||||
endif()
|
||||
find_file(ERRMSG_FILE errmsg.sys PATHS ${ERRMSG} NO_DEFAULT_PATH)
|
||||
if(${ERRMSG_FILE} MATCHES "NOTFOUND")
|
||||
message(FATAL_ERROR "Fatal Error: The errmsg.sys file was not found at ${ERRMSG}")
|
||||
else()
|
||||
message(STATUS "Using custom errmsg.sys found at: ${ERRMSG_FILE}")
|
||||
endif()
|
||||
else()
|
||||
find_file(ERRMSG_FILE errmsg.sys PATHS /usr/share /usr/share/mysql /usr/local/share/mysql PATH_SUFFIXES english mysql/english)
|
||||
if(${ERRMSG_FILE} MATCHES "NOTFOUND")
|
||||
set(DEPS_OK FALSE CACHE BOOL "If all the dependencies were found.")
|
||||
message(FATAL_ERROR "Fatal Error: The errmsg.sys file was not found, please define the path to it by using -DERRMSG=<path>")
|
||||
else()
|
||||
message(STATUS "Using errmsg.sys found at: ${ERRMSG_FILE}")
|
||||
endif()
|
||||
endif()
|
||||
set(ERRMSG ${ERRMSG_FILE} CACHE FILEPATH "Path to the errmsg.sys file." FORCE)
|
||||
unset(ERRMSG_FILE)
|
||||
|
||||
# Check which init.d script to install
|
||||
if(WITH_SCRIPTS)
|
||||
find_file(RPM_FNC functions PATHS /etc/rc.d/init.d)
|
||||
if(${RPM_FNC} MATCHES "RPM_FNC-NOTFOUND")
|
||||
find_file(DEB_FNC init-functions PATHS /lib/lsb)
|
||||
if(${DEB_FNC} MATCHES "DEB_FNC-NOTFOUND")
|
||||
set(DEPS_OK FALSE CACHE BOOL "If all the dependencies were found.")
|
||||
message(FATAL_ERROR "Cannot find required init-functions in /lib/lsb/ or /etc/rc.d/init.d/, please confirm that your system files are OK.")
|
||||
else()
|
||||
set(DEB_BASED TRUE CACHE BOOL "If init.d script uses /lib/lsb/init-functions instead of /etc/rc.d/init.d/functions.")
|
||||
endif()
|
||||
else()
|
||||
set(DEB_BASED FALSE CACHE BOOL "If init.d script uses /lib/lsb/init-functions instead of /etc/rc.d/init.d/functions.")
|
||||
endif()
|
||||
unset(DEB_FNC)
|
||||
unset(RPM_FNC)
|
||||
endif()
|
||||
|
||||
#Check RabbitMQ headers and libraries
|
||||
if(BUILD_RABBITMQ)
|
||||
find_package(RabbitMQ)
|
||||
endif()
|
||||
|
||||
endmacro()
|
||||
|
||||
function(subdirs VAR DIRPATH)
|
||||
|
||||
if(${CMAKE_VERSION} VERSION_LESS 2.8.12 )
|
||||
set(COMP_VAR PATH)
|
||||
else()
|
||||
set(COMP_VAR DIRECTORY)
|
||||
endif()
|
||||
file(GLOB_RECURSE SDIR ${DIRPATH}/*)
|
||||
foreach(LOOP ${SDIR})
|
||||
get_filename_component(LOOP ${LOOP} ${COMP_VAR})
|
||||
list(APPEND ALLDIRS ${LOOP})
|
||||
endforeach()
|
||||
list(REMOVE_DUPLICATES ALLDIRS)
|
||||
set(${VAR} "${ALLDIRS}" CACHE PATH " " FORCE)
|
||||
endfunction()
|
6
cmake/package_deb.cmake
Normal file
6
cmake/package_deb.cmake
Normal file
@ -0,0 +1,6 @@
|
||||
# DEB specific CPack configuration parameters
|
||||
set(CPACK_GENERATOR "${CPACK_GENERATOR};DEB")
|
||||
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_BINARY_DIR}/postinst;{CMAKE_BINARY_DIR}/postrm")
|
||||
execute_process(COMMAND dpgk --print-architecture OUTPUT_VARIABLE DEB_ARCHITECTURE)
|
||||
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${DEB_ARCHITECTURE})
|
||||
set (CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
|
23
cmake/package_rpm.cmake
Normal file
23
cmake/package_rpm.cmake
Normal file
@ -0,0 +1,23 @@
|
||||
# RPM specific CPack configuration parameters
|
||||
set(CPACK_GENERATOR "${CPACK_GENERATOR};RPM")
|
||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MaxScale")
|
||||
set(CPACK_PACKAGE_VERSION_MAJOR "${MAXSCALE_VERSION_MAJOR}")
|
||||
set(CPACK_PACKAGE_VERSION_MINOR "${MAXSCALE_VERSION_MINOR}")
|
||||
set(CPACK_PACKAGE_VERSION_PATCH "${MAXSCALE_VERSION_PATCH}")
|
||||
set(CPACK_PACKAGE_CONTACT "MariaDB Corporation Ab")
|
||||
set(CPACK_PACKAGE_FILE_NAME "maxscale-${MAXSCALE_VERSION}")
|
||||
set(CPACK_PACKAGE_NAME "maxscale")
|
||||
set(CPACK_PACKAGE_VENDOR "MariaDB Corporation Ab")
|
||||
set(CPACK_PACKAGE_DESCRIPTION_FILE ${CMAKE_SOURCE_DIR}/etc/DESCRIPTION)
|
||||
set(CPACK_PACKAGING_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
|
||||
set(CPACK_RPM_PACKAGE_RELEASE ${MAXSCALE_BUILD_NUMBER})
|
||||
set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE ${CMAKE_BINARY_DIR}/postinst)
|
||||
set(CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_BINARY_DIR}/postrm)
|
||||
set(CPACK_RPM_PACKAGE_NAME "maxscale")
|
||||
set(CPACK_RPM_PACKAGE_VENDOR "MariaDB Corporation Ab")
|
||||
set(CPACK_RPM_PACKAGE_LICENSE "GPLv2")
|
||||
set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "/etc /etc/ld.so.conf.d /etc/init.d /etc/rc.d/init.d")
|
||||
set(CPACK_RPM_SPEC_MORE_DEFINE "%define ignore \#")
|
||||
set(CPACK_RPM_USER_FILELIST "%ignore /etc/init.d")
|
||||
set(CPACK_RPM_USER_FILELIST "%ignore /etc/ld.so.conf.d")
|
||||
set(CPACK_RPM_USER_FILELIST "%ignore /etc")
|
@ -1,4 +1,5 @@
|
||||
execute_process(COMMAND /bin/sh -c "${CMAKE_BINARY_DIR}/bin/maxscale -c ${CMAKE_BINARY_DIR} &>/dev/null 2> /dev/null > /dev/null")
|
||||
execute_process(COMMAND /bin/sh -c "${CMAKE_BINARY_DIR}/bin/maxscale -f ${CMAKE_BINARY_DIR}/maxscale.cnf --logdir=${CMAKE_BINARY_DIR}/ --datadir=${CMAKE_BINARY_DIR}/ --cachedir=${CMAKE_BINARY_DIR}/ &> ${CMAKE_BINARY_DIR}/maxscale.output"
|
||||
OUTPUT_VARIABLE MAXSCALE_OUT)
|
||||
execute_process(COMMAND make test RESULT_VARIABLE RVAL)
|
||||
execute_process(COMMAND killall maxscale)
|
||||
if(NOT RVAL EQUAL 0)
|
||||
|
Reference in New Issue
Block a user