1
0
Fork 0

Work on mac packages

- don't create shellscripts with multiple slashes by using one cmake variable to substitute paths
 - install runtime data in the users home directory, so it remains available across reinstalls / updates
This commit is contained in:
Wilfried Goesgens 2017-01-17 10:29:10 +01:00
parent 4ffd809c41
commit 19b7418e3a
4 changed files with 50 additions and 18 deletions

View File

@ -2,7 +2,11 @@
ROOTDIR="`(cd \`dirname $0\` && pwd)`" ROOTDIR="`(cd \`dirname $0\` && pwd)`"
# create start script # 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 for script in $SCRIPTS; do
base="`basename $script`" base="`basename $script`"
@ -10,10 +14,10 @@ for script in $SCRIPTS; do
( (
echo "#!/bin/bash" echo "#!/bin/bash"
echo echo
echo "export ROOTDIR=\"${ROOTDIR}/@CMAKE_INSTALL_PREFIX@\"" echo "export ROOTDIR=\"${ROOTDIR}@CMAKE_INSTALL_PREFIX@\""
echo 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.$$ ) > ${ROOTDIR}/$base.$$
chmod 755 ${ROOTDIR}/$base.$$ chmod 755 ${ROOTDIR}/$base.$$
@ -22,7 +26,7 @@ done
# start the server # 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 if [ -f "${PIDFILE}" ]; then
result=` result=`
@ -39,7 +43,8 @@ EOF
fi fi
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}" ${ROOTDIR}/arangod --daemon --pid-file "${PIDFILE}"
# create some information for the user # create some information for the user
@ -51,10 +56,10 @@ INFOFILE="/tmp/ArangoDB-CLI.info.$$"
echo "ArangoDB server has been started" echo "ArangoDB server has been started"
echo "" echo ""
echo "The database directory is located at" 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 ""
echo "The log file is located at" 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 ""
echo "You can access the server using a browser at 'http://127.0.0.1:8529/'" echo "You can access the server using a browser at 'http://127.0.0.1:8529/'"
echo "or start the ArangoDB shell" echo "or start the ArangoDB shell"
@ -69,7 +74,7 @@ INFOFILE="/tmp/ArangoDB-CLI.info.$$"
/usr/bin/osascript <<-EOF /usr/bin/osascript <<-EOF
tell application "Terminal" 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 activate
end tell end tell
EOF EOF

View File

@ -32,13 +32,15 @@ set(ARANGODB_DB_DIRECTORY "${PROJECT_BINARY_DIR}/var/lib/${CMAKE_PROJECT_NAME}")
FILE(MAKE_DIRECTORY ${ARANGODB_DB_DIRECTORY}) FILE(MAKE_DIRECTORY ${ARANGODB_DB_DIRECTORY})
# apps # apps
set(ARANGODB_APPS_DIRECTORY "${PROJECT_BINARY_DIR}/var/lib/${CMAKE_PROJECT_NAME}-apps") set(ARANGODB_APPS_DIRECTORY "/var/lib/${CMAKE_PROJECT_NAME}-apps")
FILE(MAKE_DIRECTORY "${ARANGODB_APPS_DIRECTORY}") set(ARANGODB_FULL_APPS_DIRECTORY "${PROJECT_BINARY_DIR}${ARANGODB_APPS_DIRECTORY}")
FILE(MAKE_DIRECTORY "${ARANGODB_FULL_APPS_DIRECTORY}")
# logs # logs
FILE(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/var/log/${CMAKE_PROJECT_NAME}") FILE(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/var/log/${CMAKE_PROJECT_NAME}")
set(INSTALL_ICU_DT_DEST "${CMAKE_INSTALL_DATAROOTDIR}/${CMAKE_PROJECT_NAME}") set(INSTALL_ICU_DT_DEST "${CMAKE_INSTALL_DATAROOTDIR}/${CMAKE_PROJECT_NAME}")
include(InstallMacros) include(InstallMacros)
# install ---------------------------------------------------------------------- # install ----------------------------------------------------------------------
install(DIRECTORY ${PROJECT_SOURCE_DIR}/Documentation/man/ install(DIRECTORY ${PROJECT_SOURCE_DIR}/Documentation/man/
@ -122,7 +124,7 @@ install(
install( install(
DIRECTORY DIRECTORY
${ARANGODB_APPS_DIRECTORY} ${ARANGODB_FULL_APPS_DIRECTORY}
DESTINATION DESTINATION
${CMAKE_INSTALL_LOCALSTATEDIR}/lib ${CMAKE_INSTALL_LOCALSTATEDIR}/lib
) )

View File

@ -12,13 +12,21 @@ endif()
# Global macros ---------------------------------------------------------------- # Global macros ----------------------------------------------------------------
macro (generate_root_config name) macro (generate_root_config name)
FILE(READ ${PROJECT_SOURCE_DIR}/etc/arangodb3/${name}.conf.in FileContent) FILE(READ ${PROJECT_SOURCE_DIR}/etc/arangodb3/${name}.conf.in FileContent)
STRING(REPLACE "@PKGDATADIR@" "@ROOTDIR@/${CMAKE_INSTALL_DATAROOTDIR_ARANGO}" STRING(REPLACE "@PKGDATADIR@" "@ROOTDIR@/${CMAKE_INSTALL_DATAROOTDIR_ARANGO}"
FileContent "${FileContent}") FileContent "${FileContent}")
STRING(REPLACE "@LOCALSTATEDIR@" "@ROOTDIR@/var" 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}") FileContent "${FileContent}")
STRING(REPLACE "@SBINDIR@" "@ROOTDIR@/bin" STRING(REPLACE "@LIBEXECDIR@/arangodb3" "@ROOTDIR@/${CMAKE_INSTALL_BINDIR}"
FileContent "${FileContent}")
STRING(REPLACE "@LIBEXECDIR@/arangodb3" "@ROOTDIR@/bin"
FileContent "${FileContent}") FileContent "${FileContent}")
STRING(REPLACE "@SYSCONFDIR@" "@ROOTDIR@/${CMAKE_INSTALL_SYSCONFDIR_ARANGO}" STRING(REPLACE "@SYSCONFDIR@" "@ROOTDIR@/${CMAKE_INSTALL_SYSCONFDIR_ARANGO}"
FileContent "${FileContent}") FileContent "${FileContent}")
@ -35,6 +43,7 @@ macro (generate_root_config name)
STRING(REGEX REPLACE "[\r\n]file =" "\n# file =" STRING(REGEX REPLACE "[\r\n]file =" "\n# file ="
FileContent "${FileContent}") FileContent "${FileContent}")
endif () endif ()
FILE(WRITE ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_SYSCONFDIR_ARANGO}/${name}.conf "${FileContent}") FILE(WRITE ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_SYSCONFDIR_ARANGO}/${name}.conf "${FileContent}")
endmacro () endmacro ()
@ -144,8 +153,7 @@ macro(to_native_path sourceVarName)
if (MSVC) if (MSVC)
string(REGEX REPLACE "/" "\\\\\\\\" "myVar" "${${sourceVarName}}" ) string(REGEX REPLACE "/" "\\\\\\\\" "myVar" "${${sourceVarName}}" )
else() else()
set(myVar "${${sourceVarName}}") string(REGEX REPLACE "//*" "/" "myVar" "${${sourceVarName}}" )
endif() endif()
set("INC_${sourceVarName}" ${myVar}) set("INC_${sourceVarName}" ${myVar})
endmacro() endmacro()

View File

@ -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_PLIST "${CMAKE_CURRENT_BINARY_DIR}/Info.plist")
set(CPACK_BUNDLE_PREFIX "Contents/MacOS") 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" configure_file("${PROJECT_SOURCE_DIR}/Installation/MacOSX/Bundle/arangodb-cli.sh.in"
"${CMAKE_CURRENT_BINARY_DIR}/arangodb-cli.sh" "${CMAKE_CURRENT_BINARY_DIR}/arangodb-cli.sh"
@ONLY) @ONLY)
set(CPACK_BUNDLE_STARTUP_COMMAND "${CMAKE_CURRENT_BINARY_DIR}/arangodb-cli.sh") set(CPACK_BUNDLE_STARTUP_COMMAND "${CMAKE_CURRENT_BINARY_DIR}/arangodb-cli.sh")
add_custom_target(package-arongodb-server-bundle add_custom_target(package-arongodb-server-bundle