1
0
Fork 0

Cleanup buildsystem

- add RPM support
  - move macros in own file
  - cleanup sequence
  - add CMAKE switch "-DPACKAGING=[DEB|RPM|DARWIN]" that prepares package building
This commit is contained in:
Wilfried Goesgens 2016-07-26 16:13:34 +02:00
parent 10dc8a66bf
commit c6a1bcc226
10 changed files with 1021 additions and 495 deletions

View File

@ -29,9 +29,9 @@ endif ()
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "deployment target for MacOSX")
if (WIN32)
project(ArangoDB CXX C)
project(arangodb3 CXX C)
else ()
project(ArangoDB CXX C ASM)
project(arangodb3 CXX C ASM)
endif ()
# where to find CMAKE modules
@ -713,10 +713,6 @@ if (USE_OPENSSL_NO_SSL2)
add_definitions(-DOPENSSL_NO_SSL2)
endif ()
if(WIN32)
option(BUNDLE_OPENSSL "Bundle OpenSSL library" ON)
endif()
################################################################################
## V8
################################################################################

View File

@ -61,8 +61,13 @@ MAKE=make
CFLAGS="-g"
CXXFLAGS="-g"
LDFLAGS="-g"
V8_CFLAGS=""
V8_CXXFLAGS=""
V8_LDFLAGS=""
LIBS=""
BUILD_DIR="build"
MAKE_PARAMS=""
MAKE_CMD_PREFIX=""
@ -122,8 +127,9 @@ while [ $# -gt 0 ]; do
shift
;;
--cpack)
CPACK=1
--builddir)
shift
BUILD_DIR=$1
shift
;;
@ -134,11 +140,39 @@ while [ $# -gt 0 ]; do
PATH=/opt/csw/bin/:${PATH}
shift
;;
--package)
shift
CPACK="$1"
CONFIGURE_OPTIONS="${CONFIGURE_OPTIONS} -DPACKAGING=$1"
shift
;;
--jemalloc)
CONFIGURE_OPTIONS="${CONFIGURE_OPTIONS} -DUSE_JEMALLOC=On"
shift
;;
--rpath)
CONFIGURE_OPTIONS="${CONFIGURE_OPTIONS} -DCMAKE_SKIP_RPATH=On"
shift
;;
--staticlibc)
CFLAGS="${CFLAGS} -static-libgcc"
CXXFLAGS="${CXXFLAGS} -static-libgcc -static-libstdc++"
V8_CFLAGS="${V8_CFLAGS} -static-libgcc"
V8_CXXFLAGS="${V8_CXXFLAGS} -static-libgcc -static-libstdc++"
V8_LDFLAGS="${V8_LDFLAGS} -static-libgcc -static-libstdc++"
shift
;;
--targetDir)
shift
TARGET_DIR=$1
shift
;;
*)
break
;;
@ -162,7 +196,7 @@ case "$1" in
standard)
CFLAGS="${CFLAGS} -O3"
CXXFLAGS="${CXXFLAGS} -O3"
CONFIGURE_OPTIONS="${CONFIGURE_OPTIONS} -DCMAKE_BUILD_TYPE=RelWithDebInfo"
echo "using standard compile configuration"
;;
@ -251,8 +285,8 @@ if test ${CLEAN_IT} -eq 1; then
git clean -f -d -x
fi
set
test -d build || mkdir build
cd build
test -d ${BUILD_DIR} || mkdir ${BUILD_DIR}
cd ${BUILD_DIR}
VERBOSE_MAKE=""
@ -263,13 +297,18 @@ fi
if [ ! -f Makefile ]; then
CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LDFLAGS="${LDFLAGS}" LIBS="${LIBS}" \
cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DETCDIR=/etc -DVARDIR=/var ${CONFIGURE_OPTIONS} ${MAINTAINER_MODE}
cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LOCALSTATEDIR=/var -DVARDIR=/var ${CONFIGURE_OPTIONS} ${MAINTAINER_MODE}
fi
${MAKE_CMD_PREFIX} ${MAKE} ${VERBOSE_MAKE} -j "${PARALLEL_BUILDS}" ${MAKE_PARAMS}
if [ "$CPACK" == "1" -a -n "${TARGET_DIR}" ]; then
cpack -G DEB
cp *.deb ${TARGET_DIR}
if [ -n "$CPACK" -a -n "${TARGET_DIR}" ]; then
if [ "$CPACK" == "DEB" ]; then
make prepare_debian
fi
cpack -G "$CPACK"
EXT=`echo $CPACK|tr '[:upper:]' '[:lower:]'`
cp *.${EXT} ${TARGET_DIR}
fi
git rev-parse HEAD > ../last_compiled_version.sha

View File

@ -0,0 +1,9 @@
a multi-purpose NoSQL database
A distributed free and open-source database with a flexible data model for documents,
graphs, and key-values. Build high performance applications using a convenient
SQL-like query language or JavaScript extensions.
.
Copyright: 2014-2016 by ArangoDB GmbH
Copyright: 2012-2013 by triAGENS GmbH
ArangoDB Software
www.arangodb.com

View File

@ -0,0 +1,495 @@
#
# spec file for package arangodb
#
#
# Copyright (c) 2014 info@arangodb.org
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
## -----------------------------------------------------------------------------
## --SECTION-- global variables
## -----------------------------------------------------------------------------
%define _cfgdir %{_sysconfdir}/arangodb3
%define _databasedir %{_localstatedir}/lib/arangodb3
%define _appdir %{_localstatedir}/lib/arangodb3-apps
%define _logdir %{_localstatedir}/log/arangodb3
%if 0%{?suse_version} >= 1230
%define _piddir /run/arangodb
%else
%define _piddir %{_localstatedir}/run/arangodb
%endif
%define _skipFdupes 0
## -----------------------------------------------------------------------------
## --SECTION-- package data
## -----------------------------------------------------------------------------
Name: @CPACK_PACKAGE_NAME@
Version: @CPACK_PACKAGE_VERSION@
Release: 1.1
Summary: The open-source, multi-model NoSQL database
License: Apache-2.0
Group: Productivity/Databases/Servers
Conflicts: arangodb3-client
Url: http://www.arangodb.com
Source: arangodb-%{version}.tar.bz2
Source1: init-files.tar.bz2
Vendor: @CPACK_PACKAGE_VENDOR@
Prefix: @CPACK_PACKAGING_INSTALL_PREFIX@
BuildRoot: @CMAKE_CURRENT_BINARY_DIR@/_CPack_Packages/Linux/RPM/@CPACK_PACKAGE_FILE_NAME@
BuildRequires: cmake make, python
%{?systemd_requires}
%define debug_package %{nil}
## -----------------------------------------------------------------------------
## --SECTION-- build dependencies
## -----------------------------------------------------------------------------
################################################################################
### @brief SUSE
################################################################################
%if 0%{?suse_version}
%if 0%{?sles_version} == 11
BuildRequires: python-argparse
%endif
BuildRequires: cmake
BuildRequires: libopenssl-devel
BuildRequires: pwdutils
BuildRequires: fdupes
BuildRequires: libicu-devel
%if 0%{?suse_version} == 1310 || 0%{?suse_version} == 1320
BuildRequires: libstdc++6
%endif
%if 0%{?suse_version} >= 1210
BuildRequires: systemd
%endif
%if 0%{?suse_version} == 1315 || 0%{?suse_version} == 1330
BuildRequires: gcc5-c++
%define C_COMPILER gcc-5
%define CXX_COMPILER g++-5
%else
BuildRequires: arangodb-gcc54
%define C_COMPILER /opt/arangodb/bin/gcc
%define CXX_COMPILER /opt/arangodb/bin/g++
%endif
%if 0%{?sles_version} == 11
BuildRequires: libicu-devel
%define JEMALLOC_OPT %{nil}
%else
%if 0%{?suse_version} == 1315
BuildRequires: arangodb-jemalloc-devel-static
%else
BuildRequires: jemalloc-devel-static
%endif
%define JEMALLOC_OPT -DFORCE_JEMALLOC_LIB=:libjemalloc.a
%endif
%endif
################################################################################
### @brief red-hat or centos
################################################################################
%if 0%{?centos_version} || 0%{?rhel_version}
%if 0%{?centos_version} == 600
BuildRequires: python-argparse
%endif
%if 0%{?rhel_version} == 600
BuildRequires: cmake = 3.5.2
BuildRequires: python-argparse
%else
BuildRequires: cmake
%endif
%define _skipFdupes 1
BuildRequires: glibc-devel
BuildRequires: arangodb-gcc54
BuildRequires: arangodb-jemalloc-devel-static
BuildRequires: openssl-devel
BuildRequires: redhat-rpm-config
%define JEMALLOC_OPT -DFORCE_JEMALLOC_LIB=:libjemalloc.a
%define C_COMPILER /opt/arangodb/bin/gcc
%define CXX_COMPILER /opt/arangodb/bin/g++
%ifarch i686 i586 i486 i386
%define optflags -O2 -g -march=i586
%endif
%endif
################################################################################
### @brief fedora
################################################################################
%if 0%{?fedora_version}
%define _skipFdupes 1
BuildRequires: cmake
BuildRequires: glibc-devel
BuildRequires: openssl-devel
BuildRequires: libicu-devel
%if 0%{fedora_version} == 22 || 0%{fedora_version} == 23
BuildRequires: libstdc++-static
BuildRequires: gcc-c++
BuildRequires: jemalloc-devel
%define JEMALLOC_OPT %{nil}
%define C_COMPILER gcc
%define CXX_COMPILER g++
%else
BuildRequires: arangodb-gcc54
BuildRequires: arangodb-jemalloc-devel-static
%define JEMALLOC_OPT -DFORCE_JEMALLOC_LIB=:libjemalloc.a
%define C_COMPILER /opt/arangodb/bin/gcc
%define CXX_COMPILER /opt/arangodb/bin/g++
%endif
%endif
################################################################################
### @brief mdk
################################################################################
%if 0%{?mdkversion}
BuildRequires: openssl-devel
BuildRequires: libicu-devel
%define _skipFdupes 1
%endif
## -----------------------------------------------------------------------------
## --SECTION-- client only package
## -----------------------------------------------------------------------------
%package client
Summary: ArangoDB shell as stand-alone package
Group: Productivity/Databases/Servers
Conflicts: arangodb3
## -----------------------------------------------------------------------------
## --SECTION-- description
## -----------------------------------------------------------------------------
%description
ArangoDB is a durable, reliable, transactional multi-model database. Its key-features are: joins, transaction, and flexible data modelling.
The ArangoDB consists of a server, a separate shell, which allows you to administrate the server, and a set of client APIs for various languages.
It is written in C/C++.
%description client
The ArangoDB shell as stand-alone program. It also contains the utility programs: arangobench (benchmark), arangorestore & arangodump (backup), arangoimp (import).
## -----------------------------------------------------------------------------
## --SECTION-- build
## -----------------------------------------------------------------------------
%prep
%setup -q -n arangodb-%{version}
%setup -q -n arangodb-%{version} -T -D -a 1
%build
export CC="%{C_COMPILER}"
export CXX="%{CXX_COMPILER}"
export CFLAGS="-g -static-libgcc -O3 -fno-omit-frame-pointer"
export CXXFLAGS="-g -static-libgcc -static-libstdc++ -O3 -fno-omit-frame-pointer"
export V8_CFLAGS="-static-libgcc"
export V8_CXXFLAGS="-static-libgcc -static-libstdc++"
export V8_LDFLAGS="-static-libgcc -static-libstdc++"
export PATH="/opt/arangodb/bin:$PATH"
mkdir build
cd build
cmake \
-DVERBOSE=On \
-DUSE_OPTIMIZE_FOR_ARCHITECTURE=Off \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_C_FLAGS="${CFLAGS}" \
-DCMAKE_CXX_FLAGS="${CXXFLAGS}" \
-DCMAKE_C_COMPILER="%{C_COMPILER}" \
-DCMAKE_CXX_COMPILER="%{CXX_COMPILER}" \
%{JEMALLOC_OPT} \
-DETCDIR=/etc \
-DVARDIR=/var \
-DCMAKE_INSTALL_PREFIX:PATH=/usr \
-DCMAKE_INSTALL_DATADIR:PATH=/usr/share \
-DCMAKE_SKIP_RPATH:BOOL=ON \
-DCMAKE_USER_MAKE_RULES_OVERRIDE= \
..
make %{?_smp_mflags} VERBOSE=1 V=1 Verbose=1 all
## -----------------------------------------------------------------------------
## --SECTION-- install
## -----------------------------------------------------------------------------
%install
export CC="%{C_COMPILER}"
export CXX="%{CXX_COMPILER}"
export CFLAGS="-g -static-libgcc -O3 -fno-omit-frame-pointer"
export CXXFLAGS="-g -static-libgcc -static-libstdc++ -O3 -fno-omit-frame-pointer"
export V8_CFLAGS="-static-libgcc"
export V8_CXXFLAGS="-static-libgcc -static-libstdc++"
export V8_LDFLAGS="-static-libgcc -static-libstdc++"
export PATH="/opt/arangodb/bin:$PATH"
find js -xtype l -exec rm "{}" ";"
cd build
make DESTDIR=%{buildroot} install
mkdir -p %{buildroot}%{_databasedir}
mkdir -p %{buildroot}%{_appdir}
mkdir -p %{buildroot}%{_logdir}
mkdir -p %{buildroot}%{_piddir}
# use %doc to install readme
rm -f %{buildroot}/usr/share/doc/packages/arangodb3/*
rm -f %{buildroot}/usr/share/doc/arangodb3/*
%if 0%{?suse_version}
%if 0%{?suse_version} >= 1230
%{__install} -D -m 0755 ../rc.arangod.OpenSuSE_13 %{buildroot}%{_sysconfdir}/init.d/arangodb3
%else
%{__install} -D -m 0755 ../rc.arangod.OpenSuSE %{buildroot}%{_sysconfdir}/init.d/arangodb3
%endif
ln -s %{_sysconfdir}/init.d/arangodb3 %{buildroot}%{_sbindir}/rcarangodb
%if 0%{?suse_version} >= 1210
%{__install} -D -m 0644 ../arangodb.service %{buildroot}%{_unitdir}/arangodb3.service
%endif
%else
%{__install} -D -m 0755 ../rc.arangod.Centos %{buildroot}%{_sysconfdir}/init.d/arangodb3
%endif
%if %{_skipFdupes} == 0
%fdupes %{buildroot}%{_datadir}/arangodb3
%endif
## -----------------------------------------------------------------------------
## --SECTION-- check
## -----------------------------------------------------------------------------
%check
## -----------------------------------------------------------------------------
## --SECTION-- files
## -----------------------------------------------------------------------------
%files
%defattr(-,root,root,0755)
%doc README
%doc README.md
%doc LICENSE
%doc LICENSES-OTHER-COMPONENTS.md
%attr(0755,arangodb,arangodb) %{_databasedir}
%attr(0755,arangodb,arangodb) %{_appdir}
%attr(0755,arangodb,arangodb) %{_logdir}
%ghost %attr(0755,arangodb,arangodb) %{_piddir}
%config(noreplace) %attr(-,arangodb,arangodb) %{_cfgdir}
%{_bindir}/*
%{_sbindir}/*
%{_mandir}/*/*
%{_datadir}/arangodb3
%{_sysconfdir}/init.d/arangodb3
%if 0%{?suse_version} >= 1210
%{_unitdir}/arangodb3.service
%endif
%files client
%defattr(-,root,root,0755)
%doc README
%doc README.md
%doc LICENSE
%doc LICENSES-OTHER-COMPONENTS.md
%config(noreplace) %attr(-,arangodb,arangodb) %{_cfgdir}/arangosh.conf
%config(noreplace) %attr(-,arangodb,arangodb) %{_cfgdir}/arangoimp.conf
%config(noreplace) %attr(-,arangodb,arangodb) %{_cfgdir}/arangodump.conf
%config(noreplace) %attr(-,arangodb,arangodb) %{_cfgdir}/arangorestore.conf
%config(noreplace) %attr(-,arangodb,arangodb) %{_cfgdir}/arangobench.conf
%config(noreplace) %attr(-,arangodb,arangodb) %{_cfgdir}/foxx-manager.conf
%{_bindir}/arangosh
%{_bindir}/arangoimp
%{_bindir}/arangodump
%{_bindir}/arangorestore
%{_bindir}/arangobench
%{_bindir}/foxx-manager
%{_mandir}/*/arangosh*
%{_mandir}/*/arangorestore*
%{_mandir}/*/arangobench*
%{_mandir}/*/arangodump*
%{_mandir}/*/arangoimp*
%{_datadir}/arangodb3/js/common
%{_datadir}/arangodb3/js/client
%{_datadir}/arangodb3/js/node
## -----------------------------------------------------------------------------
## --SECTION-- post
## -----------------------------------------------------------------------------
%post
%if 0%{?suse_version}
%{fillup_and_insserv -f -y arangodb3}
%restart_on_update arangodb3
%if 0%{?suse_version} >= 1210
%service_add_post arangodb3.service
%endif
%else
chkconfig --level 2345 arangodb3 on
%endif
echo "
ArangoDB 3 (https://www.arangodb.com)
The multi-model NoSQL database: distributed free and open-source database
with a flexible data model for documents, graphs, and key-values. Build
high performance applications using a convenient SQL-like query language
or JavaScript extensions.
First Steps with ArangoDB:
https://www.arangodb.com/quickstart
Upgrading ArangoDB:
https://docs.arangodb.com/Installing/Upgrading.html
Upgrading ArangoDB database files:
> /etc/init.d/arangodb3 upgrade
Configuration file:
/etc/arangodb3/arangod.conf
Start ArangoDB shell client:
> %{_bindir}/arangosh
"
%if 0%{?suse_version} >= 1210
echo "Start ArangoDB service:
> systemctl start arangodb3.service
Enable ArangoDB service:
> systemctl enable arangodb3.service
"
%else
echo "Start ArangoDB service:
> /etc/init.d/arangodb3 start
"
%endif
export ARANGODB_DEFAULT_ROOT_PASSWORD=`(uname -a ; cat /etc/hostname) | md5sum | awk '{print $1}'`
echo "SECURITY HINT:"
echo "run 'arango-secure-installation' to set a root password"
echo "the current password is $ARANGODB_DEFAULT_ROOT_PASSWORD"
echo "(in case this a FRESH install, for UPGRADE the password"
echo "will not be changed)"
/usr/sbin/arango-init-database --uid arangodb --gid arangodb || true
exit 0
## -----------------------------------------------------------------------------
## --SECTION-- postun
## -----------------------------------------------------------------------------
%postun
%if 0%{?suse_version}
%restart_on_update arangodb3
%insserv_cleanup
%if 0%{?suse_version} >= 1210
%service_del_postun arangodb3.service
%endif
%else
exit 0
%endif
## -----------------------------------------------------------------------------
## --SECTION-- pre
## -----------------------------------------------------------------------------
%pre
# create arangodb group only if it doesn't already exist
if ! getent group arangodb >/dev/null 2>&1; then
/usr/sbin/groupadd -r arangodb
fi
# create arangodb user only if it doesn't already exist
if ! getent passwd arangodb >/dev/null 2>&1; then
/usr/sbin/useradd -r -g arangodb --home %{_localstatedir}/arangodb arangodb
/usr/sbin/usermod -c "Arango Server" arangodb
fi
%if 0%{?suse_version} >= 1210
%service_add_pre arangodb3.service
%endif
## -----------------------------------------------------------------------------
## --SECTION-- preun
## -----------------------------------------------------------------------------
%preun
%if 0%{?suse_version}
%stop_on_removal arangodb3
%if 0%{?suse_version} >= 1210
%service_del_preun arangodb3.service
%endif
%else
%{_sysconfdir}/init.d/arangodb stop > /dev/null 2>&1 || true
chkconfig --del arangodb3
exit 0
%endif
## -----------------------------------------------------------------------------
## --SECTION-- changelog
## -----------------------------------------------------------------------------
%changelog

View File

@ -346,7 +346,7 @@ target_link_libraries(${BIN_ARANGOD}
install(
TARGETS ${BIN_ARANGOD}
RUNTIME DESTINATION ${ARANGODB_INSTALL_SBIN})
RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_SBINDIR})
install_config(arangod)
@ -361,7 +361,7 @@ endif ()
################################################################################
install_command_alias(${BIN_ARANGOD}
${ARANGODB_INSTALL_SBIN}
${CMAKE_INSTALL_FULL_SBINDIR}
arango-dfdb)
install_config(arango-dfdb)
@ -371,7 +371,7 @@ install_config(arango-dfdb)
################################################################################
install_command_alias(${BIN_ARANGOD}
${ARANGODB_INSTALL_SBIN}
${CMAKE_INSTALL_FULL_SBINDIR}
arango-secure-installation)
install_config(arango-secure-installation)
@ -381,7 +381,7 @@ install_config(arango-secure-installation)
################################################################################
install_command_alias(${BIN_ARANGOD}
${ARANGODB_INSTALL_SBIN}
${CMAKE_INSTALL_FULL_SBINDIR}
arango-init-database)
install_config(arango-init-database)

View File

@ -1,20 +1,10 @@
if(NOT DEFINED CMAKE_INSTALL_SYSCONFDIR)
set(CMAKE_INSTALL_SYSCONFDIR "etc/arangodb3" CACHE PATH "read-only single-machine data (etc)")
endif()
#if(NOT DEFINED CMAKE_INSTALL_SYSCONFDIR)
# set(CMAKE_INSTALL_SYSCONFDIR "etc/arangodb3" CACHE PATH "read-only single-machine data (etc)")
#endif()
include(GNUInstallDirs)
# install the visual studio runtime:
if (MSVC)
set(CMAKE_INSTALL_UCRT_LIBRARIES 1)
include(InstallRequiredSystemLibraries)
INSTALL(FILES ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} DESTINATION bin COMPONENT Libraries)
INSTALL(FILES ${CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT} DESTINATION bin COMPONENT Libraries)
endif()
file(TO_NATIVE_PATH "${CMAKE_INSTALL_FULL_SYSCONFDIR}" ETCDIR_NATIVE)
STRING(REGEX REPLACE "\\\\" "\\\\\\\\" ETCDIR_ESCAPED "${ETCDIR_NATIVE}")
add_definitions("-D_SYSCONFDIR_=\"${ETCDIR_ESCAPED}\"")
# database directory
@ -26,192 +16,47 @@ FILE(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/var/lib/arangodb3-apps")
# logs
FILE(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/var/log/arangodb3")
# package
set(TRI_PKGDATADIR "${CMAKE_INSTALL_FULL_DATAROOTDIR}/arangodb3")
# resources
set(TRI_RESOURCEDIR "resources")
# sbinaries
if (MSVC)
set(ARANGODB_INSTALL_SBIN "bin")
set(TRI_SBINDIR "${CMAKE_INSTALL_PREFIX}/bin")
else ()
set(ARANGODB_INSTALL_SBIN "sbin")
set(TRI_SBINDIR "${CMAKE_INSTALL_PREFIX}/sbin")
endif ()
# MS Windows -------------------------------------------------------------------
if (MSVC)
# icon paths
file(TO_NATIVE_PATH
"${TRI_RESOURCEDIR}/Icons/arangodb.ico"
RELATIVE_ARANGO_ICON
)
file(TO_NATIVE_PATH
"${PROJECT_SOURCE_DIR}/Installation/Windows/Icons/arangodb.bmp"
ARANGO_IMG
)
file(TO_NATIVE_PATH
"${PROJECT_SOURCE_DIR}/Installation/Windows/Icons/arangodb.ico"
ARANGO_ICON
)
STRING(REGEX REPLACE "\\\\" "\\\\\\\\" ARANGO_IMG "${ARANGO_IMG}")
STRING(REGEX REPLACE "\\\\" "\\\\\\\\" ARANGO_ICON "${ARANGO_ICON}")
STRING(REGEX REPLACE "\\\\" "\\\\\\\\" RELATIVE_ARANGO_ICON "${RELATIVE_ARANGO_ICON}")
# versioning
set(CMAKE_MODULE_PATH
${CMAKE_MODULE_PATH}
${PROJECT_SOURCE_DIR}/Installation/Windows/version
)
include("${PROJECT_SOURCE_DIR}/Installation/Windows/version/generate_product_version.cmake")
endif ()
################################################################################
## INSTALL
################################################################################
# Global macros ----------------------------------------------------------------
macro (generate_root_config name)
FILE(READ ${PROJECT_SOURCE_DIR}/etc/arangodb3/${name}.conf.in FileContent)
STRING(REPLACE "@PKGDATADIR@" "@ROOTDIR@/share/arangodb3"
FileContent "${FileContent}")
STRING(REPLACE "@LOCALSTATEDIR@" "@ROOTDIR@/var"
FileContent "${FileContent}")
STRING(REPLACE "@SBINDIR@" "@ROOTDIR@/bin"
FileContent "${FileContent}")
STRING(REPLACE "@LIBEXECDIR@/arangodb3" "@ROOTDIR@/bin"
FileContent "${FileContent}")
STRING(REPLACE "@SYSCONFDIR@" "@ROOTDIR@/etc/arangodb3"
FileContent "${FileContent}")
if (MSVC)
STRING(REPLACE "@PROGRAM_SUFFIX@" ".exe"
FileContent "${FileContent}")
STRING(REGEX REPLACE "[\r\n]file =" "\n# file ="
FileContent "${FileContent}")
endif ()
FILE(WRITE ${PROJECT_BINARY_DIR}/etc/arangodb3/${name}.conf "${FileContent}")
endmacro ()
# generates config file using the configured paths ----------------------------
macro (generate_path_config name)
FILE(READ ${PROJECT_SOURCE_DIR}/etc/arangodb3/${name}.conf.in FileContent)
STRING(REPLACE "@PKGDATADIR@" "${TRI_PKGDATADIR}"
FileContent "${FileContent}")
STRING(REPLACE "@LOCALSTATEDIR@" "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}"
FileContent "${FileContent}")
FILE(WRITE ${PROJECT_BINARY_DIR}/etc/arangodb3/${name}.conf "${FileContent}")
endmacro ()
# installs a config file -------------------------------------------------------
macro (install_config name)
if (MSVC OR (DARWIN AND NOT HOMEBREW))
generate_root_config(${name})
else ()
generate_path_config(${name})
endif ()
install(
FILES ${PROJECT_BINARY_DIR}/etc/arangodb3/${name}.conf
DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR})
endmacro ()
# installs a readme file converting EOL ----------------------------------------
macro (install_readme input where output)
FILE(READ ${PROJECT_SOURCE_DIR}/${input} FileContent)
STRING(REPLACE "\r" "" FileContent "${FileContent}")
if (MSVC)
STRING(REPLACE "\n" "\r\n" FileContent "${FileContent}")
endif ()
FILE(WRITE ${PROJECT_BINARY_DIR}/${output} "${FileContent}")
install(
FILES ${PROJECT_BINARY_DIR}/${output}
DESTINATION ${where})
endmacro ()
# installs a link to an executable ---------------------------------------------
macro (install_command_alias name where alias)
if (MSVC)
add_custom_command(
TARGET ${name}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${name}>
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$<CONFIGURATION>/${alias}.exe)
install(
PROGRAMS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$<CONFIGURATION>/${alias}.exe
DESTINATION ${where})
else ()
add_custom_command(
TARGET ${name}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E create_symlink ${name}
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${alias})
install(
PROGRAMS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${alias}
DESTINATION ${where})
endif ()
endmacro ()
# sub directories --------------------------------------------------------------
#if(BUILD_STATIC_EXECUTABLES)
# set(CMAKE_EXE_LINKER_FLAGS -static)
# set(CMAKE_FIND_LIBRARY_SUFFIXES .a)
# set(CMAKE_EXE_LINK_DYNAMIC_C_FLAGS) # remove -Wl,-Bdynamic
# set(CMAKE_EXE_LINK_DYNAMIC_CXX_FLAGS)
# set(CMAKE_SHARED_LIBRARY_C_FLAGS) # remove -fPIC
# set(CMAKE_SHARED_LIBRARY_CXX_FLAGS)
# set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS) # remove -rdynamic
# set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS)
# # Maybe this works as well, haven't tried yet.
# # set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS FALSE)
#else(BUILD_STATIC_EXECUTABLES)
# # Set RPATH to use for installed targets; append linker search path
# set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${LOFAR_LIBDIR}")
# set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
#endif(BUILD_STATIC_EXECUTABLES)
#--------------------------------------------------------------------------------
#get_cmake_property(_variableNames VARIABLES)
#foreach (_variableName ${_variableNames})
# message(STATUS "${_variableName}=${${_variableName}}")
#endforeach ()
#--------------------------------------------------------------------------------
include(ArangoDBinstallCfg)
# install ----------------------------------------------------------------------
install(DIRECTORY ${PROJECT_SOURCE_DIR}/Documentation/man/
DESTINATION share/man)
if (MSVC)
install_readme(README . README.txt)
install_readme(README.md . README.md)
install_readme(README.windows . README.windows.txt)
endif ()
install_readme(README README.txt)
install_readme(README.md README.md)
install_readme(LICENSE LICENSE.txt)
install_readme(LICENSES-OTHER-COMPONENTS.md LICENSES-OTHER-COMPONENTS.md)
if (MSVC)
install_readme(LICENSE . LICENSE.txt)
install_readme(LICENSES-OTHER-COMPONENTS.md . LICENSES-OTHER-COMPONENTS.md)
else ()
install_readme(README share/doc/arangodb3 README)
install_readme(README.md share/doc/arangodb3 README.md)
install_readme(LICENSE share/doc/arangodb3 LICENSE)
install_readme(LICENSES-OTHER-COMPONENTS.md share/doc/arangodb3 LICENSES-OTHER-COMPONENTS.md)
endif ()
# Build package ----------------------------------------------------------------
if (NOT(MSVC))
set(CPACK_SET_DESTDIR ON)
endif()
find_program(DH_INSTALLINIT dh_installinit)
find_program(FAKEROOT fakeroot)
set(CPACK_PACKAGE_VENDOR "ArangoDB GmbH")
set(CPACK_PACKAGE_CONTACT "info@arangodb.com")
set(CPACK_PACKAGE_VERSION "${ARANGODB_VERSION}")
if (DH_INSTALLINIT AND FAKEROOT)
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
set(CPACK_STRIP_FILES "ON")
set(CPACK_PACKAGE_NAME "arangodb3")
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_PACKAGE_RELEASE}.${CMAKE_SYSTEM_PROCESSOR}")
if ("${PACKAGING}" STREQUAL "DEB")##################################################
find_program(DH_INSTALLINIT dh_installinit)
if (NOT DH_INSTALLINIT)
message(ERROR "Failed to find debhelper. please install in order to build debian packages.")
endif()
find_program(FAKEROOT fakeroot)
if (NOT FAKEROOT)
message(ERROR "Failed to find fakeroot. please install in order to build debian packages.")
endif()
add_custom_target(prepare_debian)
SET(DEBIAN_CONTROL_EXTRA_BASENAMES
postinst
@ -253,93 +98,6 @@ if (DH_INSTALLINIT AND FAKEROOT)
COMMAND fakeroot dh_installdeb
WORKING_DIRECTORY ${DEBIAN_WORK_DIR}
)
endif()
# General
if (DARWIN)
set(CPACK_PACKAGE_NAME "ArangoDB-CLI")
else ()
set(CPACK_PACKAGE_NAME "arangodb3")
endif ()
set(CPACK_PACKAGE_VENDOR "ArangoDB GmbH")
set(CPACK_PACKAGE_CONTACT "info@arangodb.com")
set(CPACK_PACKAGE_VERSION "${ARANGODB_VERSION}")
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
set(CPACK_STRIP_FILES "ON")
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64")
set(CPACK_DEBIAN_PACKAGE_SECTION "database")
set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "a multi-purpose NoSQL database
A distributed free and open-source database with a flexible data model for documents,
graphs, and key-values. Build high performance applications using a convenient
SQL-like query language or JavaScript extensions.
.
Copyright: 2014-2016 by ArangoDB GmbH
Copyright: 2012-2013 by triAGENS GmbH
ArangoDB Software
www.arangodb.com
")
SET(CPACK_DEBIAN_PACKAGE_CONFLICTS "arangodb")
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
set(CPACK_DEBIAN_COMPRESSION_TYPE "xz")
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://www.arangodb.com/")
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${PROJECT_BINARY_DIR}/debian-work/debian/${CPACK_PACKAGE_NAME}/DEBIAN/postinst;${PROJECT_BINARY_DIR}/debian-work/debian/${CPACK_PACKAGE_NAME}/DEBIAN/preinst;${PROJECT_BINARY_DIR}/debian-work/debian/${CPACK_PACKAGE_NAME}/DEBIAN/postrm;${PROJECT_BINARY_DIR}/debian-work/debian/${CPACK_PACKAGE_NAME}/DEBIAN/prerm;")
set(CPACK_BUNDLE_NAME "${CPACK_PACKAGE_NAME}")
configure_file("${PROJECT_SOURCE_DIR}/Installation/MacOSX/Bundle/Info.plist.in" "${CMAKE_CURRENT_BINARY_DIR}/Info.plist")
set(CPACK_BUNDLE_PLIST "${CMAKE_CURRENT_BINARY_DIR}/Info.plist")
set(CPACK_BUNDLE_ICON "${PROJECT_SOURCE_DIR}/Installation/MacOSX/Bundle/icon.icns")
set(CPACK_BUNDLE_STARTUP_COMMAND "${PROJECT_SOURCE_DIR}/Installation/MacOSX/Bundle/arangodb-cli.sh")
# MS installer
if (MSVC)
set(CPACK_PACKAGE_NAME "ArangoDB")
set(CPACK_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Installation/Windows/Templates")
set(CPACK_PLUGIN_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Installation/Windows/Plugins")
set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL 1)
set(BITS 64)
if (CMAKE_CL_64)
SET(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
SET(BITS 64)
else ()
SET(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES")
SET(BITS 32)
endif ()
message(STATUS "ARANGO_IMG: ${ARANGO_IMG}")
message(STATUS "ARANGO_ICON: ${ARANGO_ICON}")
message(STATUS "RELATIVE_ARANGO_ICON: ${RELATIVE_ARANGO_ICON}")
install(
DIRECTORY "${PROJECT_SOURCE_DIR}/Installation/Windows/Icons"
DESTINATION ${TRI_RESOURCEDIR})
set(CPACK_ARANGODB_NSIS_DEFINES "
!define BITS ${BITS}
!define TRI_FRIENDLY_SVC_NAME '${ARANGODB_FRIENDLY_STRING}'
!define TRI_AARDVARK_URL 'http://127.0.0.1:8529'
")
set(CPACK_PACKAGE_ICON ${ARANGO_ICON})
set(CPACK_NSIS_MODIFY_PATH ON)
set(CPACK_NSIS_MUI_ICON ${ARANGO_ICON})
set(CPACK_NSIS_MUI_UNIICON ${ARANGO_ICON})
set(CPACK_NSIS_INSTALLED_ICON_NAME ${RELATIVE_ARANGO_ICON})
set(CPACK_NSIS_DISPLAY_NAME, ${ARANGODB_DISPLAY_NAME})
set(CPACK_NSIS_HELP_LINK ${ARANGODB_HELP_LINK})
set(CPACK_NSIS_URL_INFO_ABOUT ${ARANGODB_URL_INFO_ABOUT})
set(CPACK_NSIS_CONTACT ${ARANGODB_CONTACT})
endif ()
configure_file("${CMAKE_SOURCE_DIR}/Installation/cmake/CMakeCPackOptions.cmake.in"
"${CMAKE_BINARY_DIR}/CMakeCPackOptions.cmake" @ONLY)
set(CPACK_PROJECT_CONFIG_FILE "${CMAKE_BINARY_DIR}/CMakeCPackOptions.cmake")
if (NOT(MSVC OR DARWIN))
# components
install(
FILES ${PROJECT_SOURCE_DIR}/Installation/debian/arangodb.init
@ -348,17 +106,117 @@ if (NOT(MSVC OR DARWIN))
RENAME arangodb3
COMPONENT debian-extras
)
endif()
if(CMAKE_TARGET_ARCHITECTURES MATCHES ".*x86_64.*")
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64")
else()#TODO - arm?
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "i386")
endif()
set(CPACK_DEBIAN_PACKAGE_SECTION "database")
FILE(READ "${PROJECT_SOURCE_DIR}/Installation/debian/packagedesc.txt" CPACK_DEBIAN_PACKAGE_DESCRIPTION)
SET(CPACK_DEBIAN_PACKAGE_CONFLICTS "arangodb")
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
set(CPACK_DEBIAN_COMPRESSION_TYPE "xz")
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE ${ARANGODB_URL_INFO_ABOUT})
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${PROJECT_BINARY_DIR}/debian-work/debian/${CPACK_PACKAGE_NAME}/DEBIAN/postinst;${PROJECT_BINARY_DIR}/debian-work/debian/${CPACK_PACKAGE_NAME}/DEBIAN/preinst;${PROJECT_BINARY_DIR}/debian-work/debian/${CPACK_PACKAGE_NAME}/DEBIAN/postrm;${PROJECT_BINARY_DIR}/debian-work/debian/${CPACK_PACKAGE_NAME}/DEBIAN/prerm;")
elseif ("${PACKAGING}" STREQUAL "RPM")##############################################
set(CPACK_GENERATOR "RPM")
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/Installation/rpm/arangodb.spec.in" "${CMAKE_CURRENT_BINARY_DIR}/arangodb.spec" @ONLY IMMEDIATE)
set(CPACK_RPM_USER_BINARY_SPECFILE "${CMAKE_CURRENT_BINARY_DIR}/my_project.spec")
elseif ("${PACKAGING}" STREQUAL "DARWIN")############################################
set(CPACK_PACKAGE_NAME "ArangoDB-CLI")
set(CPACK_BUNDLE_NAME "${CPACK_PACKAGE_NAME}")
configure_file("${PROJECT_SOURCE_DIR}/Installation/MacOSX/Bundle/Info.plist.in" "${CMAKE_CURRENT_BINARY_DIR}/Info.plist")
set(CPACK_BUNDLE_PLIST "${CMAKE_CURRENT_BINARY_DIR}/Info.plist")
set(CPACK_BUNDLE_ICON "${PROJECT_SOURCE_DIR}/Installation/MacOSX/Bundle/icon.icns")
set(CPACK_BUNDLE_STARTUP_COMMAND "${PROJECT_SOURCE_DIR}/Installation/MacOSX/Bundle/arangodb-cli.sh")
elseif (MSVC)#################################################################
# so we don't need to ship dll's twice, make it one directory:
set(CMAKE_INSTALL_FULL_SBINDIR "${CMAKE_INSTALL_FULL_BINDIR}")
set(W_INSTALL_FILES "${PROJECT_SOURCE_DIR}/Installation/Windows/")
set(CPACK_PACKAGE_NAME "ArangoDB")
set(CPACK_NSIS_DISPLAY_NAME, ${ARANGODB_DISPLAY_NAME})
set(CPACK_NSIS_HELP_LINK ${ARANGODB_HELP_LINK})
set(CPACK_NSIS_URL_INFO_ABOUT ${ARANGODB_URL_INFO_ABOUT})
set(CPACK_NSIS_CONTACT ${ARANGODB_CONTACT})
set(CPACK_NSIS_MODIFY_PATH ON)
set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL 1)
set(CPACK_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Installation/Windows/Templates")
set(CPACK_PLUGIN_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Installation/Windows/Plugins")
set(BITS 64)
if (CMAKE_CL_64)
SET(CPACK_NSIS_INSTALL_ROOT "${PROGRAMFILES64}")
SET(BITS 64)
else ()
SET(CPACK_NSIS_INSTALL_ROOT "${PROGRAMFILES}")
SET(BITS 32)
endif ()
install_readme(README.windows README.windows.txt)
# install the visual studio runtime:
set(CMAKE_INSTALL_UCRT_LIBRARIES 1)
include(InstallRequiredSystemLibraries)
INSTALL(FILES ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} DESTINATION bin COMPONENT Libraries)
INSTALL(FILES ${CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT} DESTINATION bin COMPONENT Libraries)
# install openssl
if (NOT LIB_EAY_RELEASE_DLL OR NOT SSL_EAY_RELEASE_DLL)
message(FATAL_ERROR, "BUNDLE_OPENSSL set but couldn't locate SSL DLLs. Please set LIB_EAY_RELEASE_DLL and SSL_EAY_RELEASE_DLL")
endif()
install (FILES "${LIB_EAY_RELEASE_DLL}" DESTINATION "${CMAKE_INSTALL_FULL_BINDIR}/" COMPONENT Libraries)
install (FILES "${SSL_EAY_RELEASE_DLL}" DESTINATION "${CMAKE_INSTALL_FULL_BINDIR}/" COMPONENT Libraries)
# icon paths
set (ICON_PATH "${W_INSTALL_FILES}/Icons/")
install(DIRECTORY "${ICON_PATH}" DESTINATION "resources")
file(TO_NATIVE_PATH "resources/Icons/arangodb.ico" RELATIVE_ARANGO_ICON)
file(TO_NATIVE_PATH "${ICON_PATH}arangodb.bmp" ARANGO_IMG)
file(TO_NATIVE_PATH "${ICON_PATH}/arangodb.ico" ARANGO_ICON)
STRING(REGEX REPLACE "\\\\" "\\\\\\\\" RELATIVE_ARANGO_ICON "${RELATIVE_ARANGO_ICON}")
STRING(REGEX REPLACE "\\\\" "\\\\\\\\" ARANGO_IMG "${ARANGO_IMG}")
STRING(REGEX REPLACE "\\\\" "\\\\\\\\" ARANGO_ICON "${ARANGO_ICON}")
set(CPACK_PACKAGE_ICON ${ARANGO_ICON})
set(CPACK_NSIS_MUI_ICON ${ARANGO_ICON})
set(CPACK_NSIS_MUI_UNIICON ${ARANGO_ICON})
set(CPACK_NSIS_INSTALLED_ICON_NAME ${RELATIVE_ARANGO_ICON})
message(STATUS "RELATIVE_ARANGO_ICON: ${RELATIVE_ARANGO_ICON}")
message(STATUS "ARANGO_IMG: ${ARANGO_IMG}")
message(STATUS "ARANGO_ICON: ${ARANGO_ICON}")
# versioning
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${W_INSTALL_FILES}/version")
include("${W_INSTALL_FILES}/version/generate_product_version.cmake")
set(CPACK_ARANGODB_NSIS_DEFINES "
!define BITS ${BITS}
!define TRI_FRIENDLY_SVC_NAME '${ARANGODB_FRIENDLY_STRING}'
!define TRI_AARDVARK_URL 'http://127.0.0.1:8529'
")
endif ()
configure_file(
"${CMAKE_SOURCE_DIR}/Installation/cmake/CMakeCPackOptions.cmake.in"
"${CMAKE_BINARY_DIR}/CMakeCPackOptions.cmake" @ONLY)
set(CPACK_PROJECT_CONFIG_FILE "${CMAKE_BINARY_DIR}/CMakeCPackOptions.cmake")
# Custom targets ----------------------------------------------------------------
# love
add_custom_target (love
COMMENT "ArangoDB loves you."
COMMAND ""
)
# Finally: user cpack
include(CPack)
@ -409,14 +267,32 @@ install(
DIRECTORY ${PROJECT_BINARY_DIR}/var/lib/arangodb3-apps
DESTINATION ${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/lib)
if (BUNDLE_OPENSSL)
if (NOT LIB_EAY_RELEASE_DLL OR NOT SSL_EAY_RELEASE_DLL)
message(FATAL_ERROR, "BUNDLE_OPENSSL set but couldn't locate SSL DLLs. Please set LIB_EAY_RELEASE_DLL and SSL_EAY_RELEASE_DLL")
endif()
install (FILES "${LIB_EAY_RELEASE_DLL}"
DESTINATION "${CMAKE_INSTALL_PREFIX}/bin"
COMPONENT Libraries)
install (FILES "${SSL_EAY_RELEASE_DLL}"
DESTINATION "${CMAKE_INSTALL_PREFIX}/bin"
COMPONENT Libraries)
endif()
# sub directories --------------------------------------------------------------
#if(BUILD_STATIC_EXECUTABLES)
# set(CMAKE_EXE_LINKER_FLAGS -static)
# set(CMAKE_FIND_LIBRARY_SUFFIXES .a)
# set(CMAKE_EXE_LINK_DYNAMIC_C_FLAGS) # remove -Wl,-Bdynamic
# set(CMAKE_EXE_LINK_DYNAMIC_CXX_FLAGS)
# set(CMAKE_SHARED_LIBRARY_C_FLAGS) # remove -fPIC
# set(CMAKE_SHARED_LIBRARY_CXX_FLAGS)
# set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS) # remove -rdynamic
# set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS)
# # Maybe this works as well, haven't tried yet.
# # set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS FALSE)
#else(BUILD_STATIC_EXECUTABLES)
# # Set RPATH to use for installed targets; append linker search path
# set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${LOFAR_LIBDIR}")
# set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
#endif(BUILD_STATIC_EXECUTABLES)
#--------------------------------------------------------------------------------
#get_cmake_property(_variableNames VARIABLES)
#foreach (_variableName ${_variableNames})
# message(STATUS "${_variableName}=${${_variableName}}")
#endforeach ()
#--------------------------------------------------------------------------------

View File

@ -0,0 +1,98 @@
################################################################################
## INSTALL
################################################################################
include(GNUInstallDirs)
set(CMAKE_INSTALL_SYSCONFDIR_ARANGO "${CMAKE_INSTALL_SYSCONFDIR}/arangodb3" CACHE PATH "read-only single-machine data (etc)")
set(CMAKE_INSTALL_FULL_SYSCONFDIR_ARANGO "${CMAKE_INSTALL_FULL_SYSCONFDIR}/arangodb3" CACHE PATH "read-only single-machine data (etc)")
# Global macros ----------------------------------------------------------------
macro (generate_root_config name)
FILE(READ ${PROJECT_SOURCE_DIR}/${CMAKE_INSTALL_SYSCONFDIR_ARANGODB}/${name}.conf.in FileContent)
STRING(REPLACE "@PKGDATADIR@" "@ROOTDIR@/share/arangodb3"
FileContent "${FileContent}")
STRING(REPLACE "@LOCALSTATEDIR@" "@ROOTDIR@/var"
FileContent "${FileContent}")
STRING(REPLACE "@SBINDIR@" "@ROOTDIR@/bin"
FileContent "${FileContent}")
STRING(REPLACE "@LIBEXECDIR@/arangodb3" "@ROOTDIR@/bin"
FileContent "${FileContent}")
STRING(REPLACE "@SYSCONFDIR@" "@ROOTDIR@/${CMAKE_INSTALL_SYSCONFDIR_ARANGODB}"
FileContent "${FileContent}")
if (MSVC)
STRING(REPLACE "@PROGRAM_SUFFIX@" ".exe"
FileContent "${FileContent}")
STRING(REGEX REPLACE "[\r\n]file =" "\n# file ="
FileContent "${FileContent}")
endif ()
FILE(WRITE ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_SYSCONFDIR_ARANGODB}/${name}.conf "${FileContent}")
endmacro ()
# generates config file using the configured paths ----------------------------
macro (generate_path_config name)
FILE(READ "${PROJECT_SOURCE_DIR}/etc/arangodb3/${name}.conf.in" FileContent)
STRING(REPLACE "@PKGDATADIR@" "${CMAKE_INSTALL_FULL_DATAROOTDIR}/"
FileContent "${FileContent}")
STRING(REPLACE "@LOCALSTATEDIR@" "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}"
FileContent "${FileContent}")
FILE(WRITE ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_SYSCONFDIR_ARANGODB}/${name}.conf "${FileContent}")
endmacro ()
# installs a config file -------------------------------------------------------
macro (install_config name)
if (MSVC OR (DARWIN AND NOT HOMEBREW))
generate_root_config(${name})
else ()
generate_path_config(${name})
endif ()
install(
FILES ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_SYSCONFDIR_ARANGO}/${name}.conf
DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR_ARANGO})
endmacro ()
# installs a readme file converting EOL ----------------------------------------
macro (install_readme input output)
set(where "${CMAKE_INSTALL_FULL_DOCDIR}")
if (MSVC)
# the windows installer contains the readme in the top level directory:
set(where ".")
endif ()
set(PKG_VERSION "")
if (${USE_VERSION_IN_LICENSEDIR})
set(PKG_VERSION "-${ARANGODB_VERSION}")
endif ()
FILE(READ ${PROJECT_SOURCE_DIR}/${input} FileContent)
STRING(REPLACE "\r" "" FileContent "${FileContent}")
if (MSVC)
STRING(REPLACE "\n" "\r\n" FileContent "${FileContent}")
endif ()
FILE(WRITE ${PROJECT_BINARY_DIR}/${output} "${FileContent}")
install(
FILES ${PROJECT_BINARY_DIR}/${output}
DESTINATION ${where}${PKG_VERSION})
endmacro ()
# installs a link to an executable ---------------------------------------------
macro (install_command_alias name where alias)
if (MSVC)
add_custom_command(
TARGET ${name}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${name}>
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$<CONFIGURATION>/${alias}.exe)
install(
PROGRAMS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$<CONFIGURATION>/${alias}.exe
DESTINATION ${where})
else ()
add_custom_command(
TARGET ${name}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E create_symlink ${name}
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${alias})
install(
PROGRAMS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${alias}
DESTINATION ${where})
endif ()
endmacro ()

View File

@ -6,7 +6,6 @@
[database]
directory = @LOCALSTATEDIR@/lib/arangodb3
# directory = @HOMEDRIVE@/@HOMEPATH@/arangodb3/databases
# maximal-journal-size = 33554432
@ -70,8 +69,3 @@ level = info
file = @LOCALSTATEDIR@/log/arangodb3/arangod.log
[cluster]
data-path = @LOCALSTATEDIR@/lib/arangodb3/cluster
log-path = @LOCALSTATEDIR@/log/arangodb3/cluster
arangod-path = @SBINDIR@/arangod@PROGRAM_SUFFIX@
dbserver-config = @SYSCONFDIR@/arangod.conf
coordinator-config = @SYSCONFDIR@/arangod.conf

View File

@ -2,10 +2,14 @@
set -e
mkdir -p build-debian
cd build-debian
CFLAGS="-g -static-libgcc -O3 -fomit-frame-pointer" CXXFLAGS="-g -static-libgcc -static-libstdc++ -O3 -fomit-frame-pointer" V8_CFLAGS="-static-libgcc" V8_CXXFLAGS="-static-libgcc -static-libstdc++" V8_LDFLAGS="-static-libgcc -static-libstdc++" cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_SKIP_RPATH=On -DUSE_OPTIMIZE_FOR_ARCHITECTURE=Off -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LOCALSTATEDIR=/var -DCMAKE_INSTALL_SYSCONFDIR=/etc/arangodb3 -DUSE_JEMALLOC=On ..
make -j12
make prepare_debian
cpack -G DEB --verbose
cd ..
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd ${DIR}/..
./Installation/Jenkins/build.sh \
standard \
--rpath \
--package DEB \
--jemalloc \
cd ${DIR}/..

15
scripts/build-rpm.sh Normal file
View File

@ -0,0 +1,15 @@
#!/bin/sh
set -e
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd ${DIR}/..
./Installation/Jenkins/build.sh \
standard \
--rpath \
--package RPM \
--jemalloc \
cd ${DIR}/..