From 1f56db310d5c0ea74b8757997528cf5525f1a97e Mon Sep 17 00:00:00 2001 From: Markus Makela Date: Mon, 15 Sep 2014 14:12:55 +0300 Subject: [PATCH] Changed variable names to closer match their usage Changed the default values to the same as in makefiles Added configured versions of maxscale.conf and maxscale init.d script --- CMakeLists.txt | 8 +- client/CMakeLists.txt | 9 +- etc/init.d/maxscale.in | 157 ++++++++++++++++++ log_manager/CMakeLists.txt | 3 +- macros.cmake | 6 + maxscale.conf.in | 2 + query_classifier/CMakeLists.txt | 3 +- server/core/CMakeLists.txt | 3 - server/modules/filter/CMakeLists.txt | 6 - server/modules/monitor/CMakeLists.txt | 3 - server/modules/protocol/CMakeLists.txt | 5 - server/modules/routing/CMakeLists.txt | 4 - .../routing/readwritesplit/CMakeLists.txt | 1 - utils/CMakeLists.txt | 1 - 14 files changed, 177 insertions(+), 34 deletions(-) create mode 100644 etc/init.d/maxscale.in create mode 100644 maxscale.conf.in diff --git a/CMakeLists.txt b/CMakeLists.txt index a8d655a41..6b70545e0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,16 +2,20 @@ cmake_minimum_required(VERSION 2.6) include(macros.cmake) enable_testing() -set(INSTALL_DIR "/usr/local/skysql/" CACHE PATH "MaxScale installation directory.") + + set(CMAKE_INSTALL_PREFIX "${INSTALL_DIR}" CACHE INTERNAL "Prefix prepended to install directories." FORCE) -set(BUILD_TYPE "Release" CACHE STRING "Build type, possible values are: Debug Release.") set(CMAKE_BUILD_TYPE "${BUILD_TYPE}" CACHE INTERNAL "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel. " FORCE) + project(MaxScale) set_maxscale_version() set_variables() +set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/modules) configure_file(${CMAKE_SOURCE_DIR}/server/include/version.h.in ${CMAKE_SOURCE_DIR}/server/include/version.h) +configure_file(${CMAKE_SOURCE_DIR}/maxscale.conf.in ${CMAKE_SOURCE_DIR}/maxscale.conf) +configure_file(${CMAKE_SOURCE_DIR}/etc/init.d/maxscale.in ${CMAKE_SOURCE_DIR}/etc/init.d/maxscale) if(NOT MYSQL_DIR) find_path(MYSQL_DIR mysql.h PATH_SUFFIXES mysql mariadb) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 496c59127..c284931b2 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -1,8 +1,7 @@ add_executable(maxadmin maxadmin.c) find_library(HIST edit) -#if(HIST) -# add_definitions(-DHISTORY) -# set(LIBS ${LIBS} {HIST}) -#endif(HIST) -set_target_properties(maxadmin PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +if(HIST) + add_definitions(-DHISTORY) + target_link_libraries(maxadmin ${HIST}) +endif() install(TARGETS maxadmin DESTINATION bin) \ No newline at end of file diff --git a/etc/init.d/maxscale.in b/etc/init.d/maxscale.in new file mode 100644 index 000000000..bf96d6f32 --- /dev/null +++ b/etc/init.d/maxscale.in @@ -0,0 +1,157 @@ +#!/bin/sh +# +# maxscale: The SkySQL MaxScale database proxy +# +# description: MaxScale provides database specific proxy functionality +# +# processname: maxscale +# +### BEGIN INIT INFO +# Provides: maxscale +# Required-Start: $syslog $local_fs +# Required-Stop: $syslog $local_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: The maxscale database proxy +# Description: MaxScale is a database proxy server that can be used to front end +# database clusters offering different routing, filtering and protocol choices +### END INIT INFO + +############################################# +# MaxScale HOME, PIDFILE, LIB +############################################# + +export MAXSCALE_HOME=@INSTALL_DIR@ +export MAXSCALE_PIDFILE=$MAXSCALE_HOME/log/maxscale.pid +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MAXSCALE_HOME/lib + +############################### +# LSB Exit codes (non-Status) +############################### +_RETVAL_GENERIC=1 +_RETVAL_NOT_INSTALLED=5 +_RETVAL_NOT_RUNNING=7 + +############################### +# LSB Status action Exit codes +############################### +_RETVAL_STATUS_OK=0 +_RETVAL_STATUS_NOT_RUNNING=3 + +# Sanity checks. +[ -x $MAXSCALE_HOME/bin/maxscale ] || exit $_RETVAL_NOT_INSTALLED + +# Source function library. +. /etc/rc.d/init.d/functions + +# we can rearrange this easily +processname=maxscale +servicename=maxscale + +RETVAL=0 + +start() { + echo -n $"Starting MaxScale: " + my_check=`status -p $MAXSCALE_PIDFILE $MAXSCALE_HOME/bin/maxscale` + CHECK_RET=$? + [ $CHECK_RET -eq 0 ] && echo -n " found $my_check" && success && CHECK_RET=0 + + daemon --pidfile $MAXSCALE_PIDFILE $MAXSCALE_HOME/bin/maxscale >& /dev/null + + RETVAL=$? + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$servicename + + if [ $CHECK_RET -ne 0 ]; then + sleep 2 + my_check=`status -p $MAXSCALE_PIDFILE $MAXSCALE_HOME/bin/maxscale` + CHECK_RET=$? + [ $CHECK_RET -eq 0 ] && echo -n $my_check && success || failure + fi + + # Return rigth code + if [ $RETVAL -ne 0 ]; then + failure + RETVAL=$_RETVAL_NOT_RUNNING + fi + + echo + + return $RETVAL +} + +stop() { + echo -n $"Stopping MaxScale: " + killproc -p $MAXSCALE_PIDFILE -TERM + + RETVAL=$? + + echo + + [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$servicename + + # Return rigth code + if [ $RETVAL -ne 0 ]; then + RETVAL=$_RETVAL_NOT_RUNNING + fi + + return $RETVAL +} + +reload() { + echo -n $"Reloading MaxScale: " + + killproc -p $MAXSCALE_PIDFILE $MAXSCALE_HOME/bin/maxscale -HUP + RETVAL=$? + echo +} + +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + status) + # return 0 on success + # return 3 on any error + + echo -n $"Checking MaxScale status: " + status -p $MAXSCALE_PIDFILE 'MaxScale' + RETVAL=$? + + if [ $RETVAL -ne 0 ]; then + echo -ne "\033[1A" + [ $RETVAL -eq 1 ] && warning || failure + echo -ne "\033[1B" + + RETVAL=$_RETVAL_STATUS_NOT_RUNNING + else + echo -ne "\033[1A" + success + echo -ne "\033[1B" + RETVAL=$_RETVAL_STATUS_OK + fi + + exit $RETVAL + ;; + restart) + stop + start + ;; + condrestart) + if [ -f /var/lock/subsys/$servicename ]; then + stop + start + fi + ;; + reload) + reload + RETVAL=$? + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}" + ;; +esac +exit $RETVAL diff --git a/log_manager/CMakeLists.txt b/log_manager/CMakeLists.txt index b0b17bd24..2f6b44a80 100644 --- a/log_manager/CMakeLists.txt +++ b/log_manager/CMakeLists.txt @@ -1,7 +1,6 @@ -cmake_minimum_required(VERSION 2.6) add_library(log_manager SHARED log_manager.cc) target_link_libraries(log_manager utils) install(TARGETS log_manager DESTINATION lib) if(BUILD_TESTS) -add_subdirectory(test) + add_subdirectory(test) endif() \ No newline at end of file diff --git a/macros.cmake b/macros.cmake index a8c887641..ebfc14040 100644 --- a/macros.cmake +++ b/macros.cmake @@ -10,6 +10,12 @@ endmacro() macro(set_variables) + # Installation directory + set(INSTALL_DIR "/usr/local/skysql/" CACHE PATH "MaxScale installation directory.") + + # Build type + set(BUILD_TYPE "Release" CACHE STRING "Build type, possible values are:None (no optimization), Debug, Release.") + # 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") diff --git a/maxscale.conf.in b/maxscale.conf.in new file mode 100644 index 000000000..0283479f1 --- /dev/null +++ b/maxscale.conf.in @@ -0,0 +1,2 @@ +@INSTALL_DIR@/modules +@INSTALL_DIR@/lib diff --git a/query_classifier/CMakeLists.txt b/query_classifier/CMakeLists.txt index ee0912ae9..94a0eaccb 100644 --- a/query_classifier/CMakeLists.txt +++ b/query_classifier/CMakeLists.txt @@ -1,6 +1,5 @@ -set(QUERY_CLASSIFIER_HEADERS query_classifier.h) add_library(query_classifier SHARED query_classifier.cc ${MYSQL_HEADERS}) install(TARGETS query_classifier DESTINATION lib) if(BUILD_TESTS) -add_subdirectory(test) + add_subdirectory(test) endif() \ No newline at end of file diff --git a/server/core/CMakeLists.txt b/server/core/CMakeLists.txt index 12a30f8b5..de6d27414 100644 --- a/server/core/CMakeLists.txt +++ b/server/core/CMakeLists.txt @@ -6,17 +6,14 @@ add_executable(maxscale atomic.c buffer.c spinlock.c gateway.c gw_utils.c utils.c dcb.c load_utils.c session.c service.c server.c poll.c config.c users.c hashtable.c dbusers.c thread.c gwbitmask.c monitor.c adminusers.c secrets.c filter.c modutil.c hint.c housekeeper.c) -set_target_properties(maxscale PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) target_link_libraries(maxscale utils log_manager ssl aio pthread crypt dl ${EMBEDDED_LIB} crypto inih z rt m) install(TARGETS maxscale DESTINATION bin) add_executable(maxkeys maxkeys.c secrets.c utils.c) -set_target_properties(maxkeys PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) target_link_libraries(maxkeys utils log_manager ssl aio pthread crypt dl ${EMBEDDED_LIB} crypto inih z rt m) install(TARGETS maxkeys DESTINATION bin) add_executable(maxpasswd maxpasswd.c secrets.c utils.c) -set_target_properties(maxpasswd PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) target_link_libraries(maxpasswd utils log_manager ssl aio pthread crypt dl ${EMBEDDED_LIB} crypto inih z rt m) install(TARGETS maxpasswd DESTINATION bin) diff --git a/server/modules/filter/CMakeLists.txt b/server/modules/filter/CMakeLists.txt index 1655aec4f..8df69f41f 100644 --- a/server/modules/filter/CMakeLists.txt +++ b/server/modules/filter/CMakeLists.txt @@ -1,32 +1,26 @@ if(BUILD_RABBITMQ) add_library(mqfilter SHARED mqfilter.c) - set_target_properties(mqfilter PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) target_link_libraries(mqfilter utils query_classifier log_manager rabbitmq) install(TARGETS mqfilter DESTINATION modules) endif(BUILD_RABBITMQ) add_library(regexfilter SHARED regexfilter.c) -set_target_properties(regexfilter PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) target_link_libraries(regexfilter utils log_manager) install(TARGETS regexfilter DESTINATION modules) add_library(testfilter SHARED testfilter.c) -set_target_properties(testfilter PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) target_link_libraries(testfilter utils log_manager) install(TARGETS testfilter DESTINATION modules) add_library(qlafilter SHARED qlafilter.c) -set_target_properties(qlafilter PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) target_link_libraries(qlafilter utils log_manager) install(TARGETS qlafilter DESTINATION modules) add_library(tee SHARED tee.c) -set_target_properties(tee PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) target_link_libraries(tee utils log_manager) install(TARGETS tee DESTINATION modules) add_library(topfilter SHARED topfilter.c) -set_target_properties(topfilter PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) target_link_libraries(topfilter utils log_manager) install(TARGETS topfilter DESTINATION modules) diff --git a/server/modules/monitor/CMakeLists.txt b/server/modules/monitor/CMakeLists.txt index 947536b75..9f2322b75 100644 --- a/server/modules/monitor/CMakeLists.txt +++ b/server/modules/monitor/CMakeLists.txt @@ -1,14 +1,11 @@ add_library(mysqlmon SHARED mysql_mon.c) -set_target_properties(mysqlmon PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) target_link_libraries(mysqlmon utils log_manager mysqld) install(TARGETS mysqlmon DESTINATION modules) add_library(galeramon SHARED galera_mon.c) -set_target_properties(galeramon PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) target_link_libraries(galeramon utils log_manager mysqld) install(TARGETS galeramon DESTINATION modules) add_library(ndbclustermon SHARED ndbcluster_mon.c) -set_target_properties(ndbclustermon PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) target_link_libraries(ndbclustermon utils log_manager mysqld) install(TARGETS ndbclustermon DESTINATION modules) \ No newline at end of file diff --git a/server/modules/protocol/CMakeLists.txt b/server/modules/protocol/CMakeLists.txt index 074c6f748..0481a8907 100644 --- a/server/modules/protocol/CMakeLists.txt +++ b/server/modules/protocol/CMakeLists.txt @@ -1,25 +1,20 @@ add_library(MySQLClient SHARED mysql_client.c mysql_common.c) -set_target_properties(MySQLClient PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) target_link_libraries(MySQLClient utils log_manager) install(TARGETS MySQLClient DESTINATION modules) add_library(MySQLBackend SHARED mysql_backend.c mysql_common.c) -set_target_properties(MySQLBackend PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) target_link_libraries(MySQLBackend utils log_manager) install(TARGETS MySQLBackend DESTINATION modules) add_library(telnetd SHARED telnetd.c) -set_target_properties(telnetd PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) target_link_libraries(telnetd utils log_manager) install(TARGETS telnetd DESTINATION modules) add_library(HTTPD SHARED httpd.c) -set_target_properties(HTTPD PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) target_link_libraries(HTTPD utils log_manager) install(TARGETS HTTPD DESTINATION modules) add_library(maxscaled SHARED maxscaled.c) -set_target_properties(maxscaled PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) target_link_libraries(maxscaled utils log_manager) install(TARGETS maxscaled DESTINATION modules) diff --git a/server/modules/routing/CMakeLists.txt b/server/modules/routing/CMakeLists.txt index 7159471b1..d9cd5a6cc 100644 --- a/server/modules/routing/CMakeLists.txt +++ b/server/modules/routing/CMakeLists.txt @@ -1,20 +1,16 @@ add_library(testroute SHARED testroute.c) -set_target_properties(testroute PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) target_link_libraries(testroute utils log_manager) install(TARGETS testroute DESTINATION modules) add_library(readconnroute SHARED readconnroute.c) -set_target_properties(readconnroute PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) target_link_libraries(readconnroute utils log_manager) install(TARGETS readconnroute DESTINATION modules) add_library(debugcli SHARED debugcli.c debugcmd.c) -set_target_properties(debugcli PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) target_link_libraries(debugcli utils log_manager) install(TARGETS debugcli DESTINATION modules) add_library(cli SHARED cli.c debugcmd.c) -set_target_properties(cli PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) target_link_libraries(cli utils log_manager) install(TARGETS cli DESTINATION modules) diff --git a/server/modules/routing/readwritesplit/CMakeLists.txt b/server/modules/routing/readwritesplit/CMakeLists.txt index 141dcbe94..2d079fbd7 100644 --- a/server/modules/routing/readwritesplit/CMakeLists.txt +++ b/server/modules/routing/readwritesplit/CMakeLists.txt @@ -1,5 +1,4 @@ add_library(readwritesplit SHARED readwritesplit.c) -set_target_properties(readwritesplit PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) target_link_libraries(readwritesplit utils ssl pthread log_manager query_classifier mysqld) install(TARGETS readwritesplit DESTINATION modules) if(BUILD_TESTS) diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt index a0a932353..3a25678bc 100644 --- a/utils/CMakeLists.txt +++ b/utils/CMakeLists.txt @@ -1,3 +1,2 @@ -cmake_minimum_required(VERSION 2.6) set(UTILS_HEADERS skygw_debug.h skygw_types.h skygw_utils.h) add_library(utils skygw_utils.cc ${UTILS_HEADERS}) \ No newline at end of file