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)`"
# 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

View File

@ -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
)

View File

@ -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()

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_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