diff --git a/Installation/MacOSX/Bundle/arangodb-cli.sh.in b/Installation/MacOSX/Bundle/arangodb-cli.sh.in index 76fcf84d9a..59d2b3b921 100755 --- a/Installation/MacOSX/Bundle/arangodb-cli.sh.in +++ b/Installation/MacOSX/Bundle/arangodb-cli.sh.in @@ -2,7 +2,11 @@ ROOTDIR="`(cd \`dirname $0\` && pwd)`" # create start script -SCRIPTS="`( cd ${ROOTDIR}/@CMAKE_INSTALL_PREFIX@ && ls -1 {@CMAKE_INSTALL_BINDIR@,@CMAKE_INSTALL_SBINDIR@}/* )`" +mkdir -p ${HOME}@INC_CPACK_ARANGO_DATA_DIR@ +mkdir -p ${HOME}@INC_CPACK_ARANGO_LOG_DIR@ +mkdir -p ${HOME}@INC_CPACK_ARANGODB_APPS_DIRECTORY@ + +SCRIPTS="`( cd ${ROOTDIR}@CMAKE_INSTALL_PREFIX@ && ls -1 {@CMAKE_INSTALL_BINDIR@,@CMAKE_INSTALL_SBINDIR@}/* )`" for script in $SCRIPTS; do base="`basename $script`" @@ -10,10 +14,10 @@ for script in $SCRIPTS; do ( echo "#!/bin/bash" echo - echo "export ROOTDIR=\"${ROOTDIR}/@CMAKE_INSTALL_PREFIX@\"" + echo "export ROOTDIR=\"${ROOTDIR}@CMAKE_INSTALL_PREFIX@\"" echo - echo "exec \"\${ROOTDIR}/$script\" -c \"\${ROOTDIR}/@CMAKE_INSTALL_SYSCONFDIR_ARANGO@/${base}.conf\" \$*" + echo "exec \"\${ROOTDIR}/$script\" -c \"\${ROOTDIR}@CMAKE_INSTALL_SYSCONFDIR_ARANGO@/${base}.conf\" \$*" ) > ${ROOTDIR}/$base.$$ chmod 755 ${ROOTDIR}/$base.$$ @@ -22,7 +26,7 @@ done # start the server -PIDFILE="${ROOTDIR}/@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LOCALSTATEDIR@/run/arangod.pid" +PIDFILE="${ROOTDIR}@INC_CPACK_ARANGO_PID_DIR@/arangod.pid" if [ -f "${PIDFILE}" ]; then result=` @@ -39,7 +43,8 @@ EOF fi fi -test -d "${ROOTDIR}/@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LOCALSTATEDIR@/run" || mkdir "${ROOTDIR}/@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LOCALSTATEDIR@/run" + +test -d "${ROOTDIR}@INC_CPACK_ARANGO_PID_DIR@" || mkdir "${ROOTDIR}@INC_CPACK_ARANGO_PID_DIR@" ${ROOTDIR}/arangod --daemon --pid-file "${PIDFILE}" # create some information for the user @@ -51,10 +56,10 @@ INFOFILE="/tmp/ArangoDB-CLI.info.$$" echo "ArangoDB server has been started" echo "" echo "The database directory is located at" - echo " '${ROOTDIR}/@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LOCALSTATEDIR@/lib/arangodb3'" + echo " '${ROOTDIR}@INC_CPACK_ARANGO_DATA_DIR@'" echo "" echo "The log file is located at" - echo " '${ROOTDIR}/@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LOCALSTATEDIR@/log/arangodb3/arangod.log'" + echo " '${ROOTDIR}@INC_CPACK_ARANGO_LOG_DIR@/arangod.log'" echo "" echo "You can access the server using a browser at 'http://127.0.0.1:8529/'" echo "or start the ArangoDB shell" @@ -69,7 +74,7 @@ INFOFILE="/tmp/ArangoDB-CLI.info.$$" /usr/bin/osascript <<-EOF tell application "Terminal" - do script "clear && cat $INFOFILE && rm $INFOFILE && sleep 20 && exec tail -1 -f ${ROOTDIR}/@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LOCALSTATEDIR@/log/arangodb3/arangod.log" + do script "clear && cat $INFOFILE && rm $INFOFILE && sleep 20 && exec tail -1 -f ${HOME}@INC_CPACK_ARANGO_LOG_DIR@/arangod.log" activate end tell EOF diff --git a/cmake/ArangoDBInstall.cmake b/cmake/ArangoDBInstall.cmake index 4d9696c979..75f9eee60e 100644 --- a/cmake/ArangoDBInstall.cmake +++ b/cmake/ArangoDBInstall.cmake @@ -32,13 +32,15 @@ set(ARANGODB_DB_DIRECTORY "${PROJECT_BINARY_DIR}/var/lib/${CMAKE_PROJECT_NAME}") FILE(MAKE_DIRECTORY ${ARANGODB_DB_DIRECTORY}) # apps -set(ARANGODB_APPS_DIRECTORY "${PROJECT_BINARY_DIR}/var/lib/${CMAKE_PROJECT_NAME}-apps") -FILE(MAKE_DIRECTORY "${ARANGODB_APPS_DIRECTORY}") +set(ARANGODB_APPS_DIRECTORY "/var/lib/${CMAKE_PROJECT_NAME}-apps") +set(ARANGODB_FULL_APPS_DIRECTORY "${PROJECT_BINARY_DIR}${ARANGODB_APPS_DIRECTORY}") +FILE(MAKE_DIRECTORY "${ARANGODB_FULL_APPS_DIRECTORY}") # logs FILE(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/var/log/${CMAKE_PROJECT_NAME}") set(INSTALL_ICU_DT_DEST "${CMAKE_INSTALL_DATAROOTDIR}/${CMAKE_PROJECT_NAME}") + include(InstallMacros) # install ---------------------------------------------------------------------- install(DIRECTORY ${PROJECT_SOURCE_DIR}/Documentation/man/ @@ -122,7 +124,7 @@ install( install( DIRECTORY - ${ARANGODB_APPS_DIRECTORY} + ${ARANGODB_FULL_APPS_DIRECTORY} DESTINATION ${CMAKE_INSTALL_LOCALSTATEDIR}/lib ) diff --git a/cmake/InstallMacros.cmake b/cmake/InstallMacros.cmake index ccaefc5c3b..baaa892bb0 100644 --- a/cmake/InstallMacros.cmake +++ b/cmake/InstallMacros.cmake @@ -12,13 +12,21 @@ endif() # Global macros ---------------------------------------------------------------- macro (generate_root_config name) FILE(READ ${PROJECT_SOURCE_DIR}/etc/arangodb3/${name}.conf.in FileContent) + STRING(REPLACE "@PKGDATADIR@" "@ROOTDIR@/${CMAKE_INSTALL_DATAROOTDIR_ARANGO}" - FileContent "${FileContent}") - STRING(REPLACE "@LOCALSTATEDIR@" "@ROOTDIR@/var" FileContent "${FileContent}") - STRING(REPLACE "@SBINDIR@" "@ROOTDIR@/bin" + if (DARWIN) + # var will be redirected to ~ for the macos bundle + STRING(REPLACE "@LOCALSTATEDIR@/" "@HOME@${INC_CPACK_ARANGO_STATE_DIR}/" + FileContent "${FileContent}") + else () + STRING(REPLACE "@LOCALSTATEDIR@/" "@ROOTDIR@${CPACK_LOCALSTATEDIR}/" + FileContent "${FileContent}") + endif () + + STRING(REPLACE "@SBINDIR@" "@ROOTDIR@/${CMAKE_INSTALL_SBINDIR}" FileContent "${FileContent}") - STRING(REPLACE "@LIBEXECDIR@/arangodb3" "@ROOTDIR@/bin" + STRING(REPLACE "@LIBEXECDIR@/arangodb3" "@ROOTDIR@/${CMAKE_INSTALL_BINDIR}" FileContent "${FileContent}") STRING(REPLACE "@SYSCONFDIR@" "@ROOTDIR@/${CMAKE_INSTALL_SYSCONFDIR_ARANGO}" FileContent "${FileContent}") @@ -35,6 +43,7 @@ macro (generate_root_config name) STRING(REGEX REPLACE "[\r\n]file =" "\n# file =" FileContent "${FileContent}") endif () + FILE(WRITE ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_SYSCONFDIR_ARANGO}/${name}.conf "${FileContent}") endmacro () @@ -144,8 +153,7 @@ macro(to_native_path sourceVarName) if (MSVC) string(REGEX REPLACE "/" "\\\\\\\\" "myVar" "${${sourceVarName}}" ) else() - set(myVar "${${sourceVarName}}") + string(REGEX REPLACE "//*" "/" "myVar" "${${sourceVarName}}" ) endif() - set("INC_${sourceVarName}" ${myVar}) endmacro() diff --git a/cmake/packages/bundle.cmake b/cmake/packages/bundle.cmake index 2e52fbaba5..439ceb44ce 100644 --- a/cmake/packages/bundle.cmake +++ b/cmake/packages/bundle.cmake @@ -12,11 +12,28 @@ configure_file("${PROJECT_SOURCE_DIR}/Installation/MacOSX/Bundle/Info.plist.in" set(CPACK_BUNDLE_PLIST "${CMAKE_CURRENT_BINARY_DIR}/Info.plist") set(CPACK_BUNDLE_PREFIX "Contents/MacOS") -set(CPACK_INSTALL_PREFIX "${CPACK_PACKAGE_NAME}.app/${CPACK_BUNDLE_PREFIX}/${CMAKE_INSTALL_PREFIX}") +set(CPACK_INSTALL_PREFIX "${CPACK_PACKAGE_NAME}.app/${CPACK_BUNDLE_PREFIX}${CMAKE_INSTALL_PREFIX}") + +set(INST_USR_LIBDIR "/Library/ArangoDB") +set(CPACK_ARANGO_PID_DIR "/${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LOCALSTATEDIR}/run") +set(CPACK_ARANGO_DATA_DIR "${INST_USR_LIBDIR}${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LOCALSTATEDIR}/lib/arangodb3") +set(CPACK_ARANGO_LOG_DIR "${INST_USR_LIBDIR}${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LOCALSTATEDIR}/log/arangodb3") +set(CPACK_ARANGO_STATE_DIR "${INST_USR_LIBDIR}${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LOCALSTATEDIR}") + +set(CPACK_ARANGODB_APPS_DIRECTORY "${INST_USR_LIBDIR}${ARANGODB_APPS_DIRECTORY}") + +to_native_path("CPACK_ARANGODB_APPS_DIRECTORY") +message("CPACK_ARANGODB_APPS_DIRECTORY: ${CPACK_ARANGODB_APPS_DIRECTORY} INC_CPACK_ARANGODB_APPS_DIRECTORY: ${INC_CPACK_ARANGODB_APPS_DIRECTORY} ARANGODB_APPS_DIRECTORY ${ARANGODB_APPS_DIRECTORY}") +to_native_path("CMAKE_INSTALL_DATAROOTDIR_ARANGO") +to_native_path("CPACK_ARANGO_PID_DIR") +to_native_path("CPACK_ARANGO_DATA_DIR") +to_native_path("CPACK_ARANGO_STATE_DIR") +to_native_path("CPACK_ARANGO_LOG_DIR") configure_file("${PROJECT_SOURCE_DIR}/Installation/MacOSX/Bundle/arangodb-cli.sh.in" "${CMAKE_CURRENT_BINARY_DIR}/arangodb-cli.sh" @ONLY) + set(CPACK_BUNDLE_STARTUP_COMMAND "${CMAKE_CURRENT_BINARY_DIR}/arangodb-cli.sh") add_custom_target(package-arongodb-server-bundle