mirror of https://gitee.com/bigwinds/arangodb
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:
parent
10dc8a66bf
commit
c6a1bcc226
|
@ -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
|
||||
################################################################################
|
||||
|
|
|
@ -11,24 +11,24 @@ fi
|
|||
# remove local from LD_LIBRARY_PATH
|
||||
|
||||
if [ "$LD_LIBRARY_PATH" != "" ]; then
|
||||
LD_LIBRARY_PATH=`echo $LD_LIBRARY_PATH | sed -e 's/:$//'`;
|
||||
LD_LIBRARY_PATH=`echo $LD_LIBRARY_PATH | sed -e 's/:$//'`;
|
||||
fi
|
||||
|
||||
# find out if we are running on 32 or 64 bit
|
||||
|
||||
BITS=32
|
||||
case `uname -m` in
|
||||
x86_64)
|
||||
BITS=64
|
||||
;;
|
||||
x86_64)
|
||||
BITS=64
|
||||
;;
|
||||
|
||||
armv7l)
|
||||
BITS=32
|
||||
;;
|
||||
armv7l)
|
||||
BITS=32
|
||||
;;
|
||||
|
||||
armv6)
|
||||
BITS=32
|
||||
;;
|
||||
armv6)
|
||||
BITS=32
|
||||
;;
|
||||
esac
|
||||
|
||||
# check if there are any relevant changes to the source code
|
||||
|
@ -36,19 +36,19 @@ esac
|
|||
LASTREV=""
|
||||
|
||||
if test -f last_compiled_version.sha; then
|
||||
LASTREV=`cat last_compiled_version.sha`
|
||||
LASTREV=`cat last_compiled_version.sha`
|
||||
fi
|
||||
|
||||
COMPILE_MATTERS="3rdParty"
|
||||
CLEAN_IT=1
|
||||
|
||||
if test -n "$LASTREV"; then
|
||||
lines=`git diff ${LASTREV}: ${COMPILE_MATTERS} | wc -l`
|
||||
lines=`git diff ${LASTREV}: ${COMPILE_MATTERS} | wc -l`
|
||||
|
||||
if test $lines -eq 0; then
|
||||
echo "no relevant changes, no need for full recompile"
|
||||
CLEAN_IT=0
|
||||
fi
|
||||
if test $lines -eq 0; then
|
||||
echo "no relevant changes, no need for full recompile"
|
||||
CLEAN_IT=0
|
||||
fi
|
||||
fi
|
||||
|
||||
# setup make options
|
||||
|
@ -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=""
|
||||
|
||||
|
@ -81,154 +86,183 @@ SANITIZE=0
|
|||
VERBOSE=0
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--clang)
|
||||
CLANG=1
|
||||
shift
|
||||
;;
|
||||
case "$1" in
|
||||
--clang)
|
||||
CLANG=1
|
||||
shift
|
||||
;;
|
||||
|
||||
--clang36)
|
||||
CLANG36=1
|
||||
shift
|
||||
;;
|
||||
--clang36)
|
||||
CLANG36=1
|
||||
shift
|
||||
;;
|
||||
|
||||
--gcc5)
|
||||
GCC5=1
|
||||
shift
|
||||
;;
|
||||
--gcc5)
|
||||
GCC5=1
|
||||
shift
|
||||
;;
|
||||
|
||||
--sanitize)
|
||||
SANITIZE=1
|
||||
shift
|
||||
;;
|
||||
--sanitize)
|
||||
SANITIZE=1
|
||||
shift
|
||||
;;
|
||||
|
||||
--coverage)
|
||||
COVERAGE=1
|
||||
shift
|
||||
;;
|
||||
--coverage)
|
||||
COVERAGE=1
|
||||
shift
|
||||
;;
|
||||
|
||||
--gold)
|
||||
GOLD=1
|
||||
shift
|
||||
;;
|
||||
--gold)
|
||||
GOLD=1
|
||||
shift
|
||||
;;
|
||||
|
||||
--failure-tests)
|
||||
FAILURE_TESTS=1
|
||||
shift
|
||||
;;
|
||||
--failure-tests)
|
||||
FAILURE_TESTS=1
|
||||
shift
|
||||
;;
|
||||
|
||||
--verbose)
|
||||
VERBOSE=1
|
||||
shift
|
||||
;;
|
||||
|
||||
--cpack)
|
||||
CPACK=1
|
||||
shift
|
||||
;;
|
||||
--verbose)
|
||||
VERBOSE=1
|
||||
shift
|
||||
;;
|
||||
|
||||
--builddir)
|
||||
shift
|
||||
BUILD_DIR=$1
|
||||
shift
|
||||
;;
|
||||
|
||||
--cswgcc)
|
||||
export CC="/opt/csw/bin/gcc"
|
||||
export CXX="/opt/csw/bin/g++"
|
||||
MAKE=/opt/csw/bin/gmake
|
||||
PATH=/opt/csw/bin/:${PATH}
|
||||
shift
|
||||
;;
|
||||
--targetDir)
|
||||
shift
|
||||
TARGET_DIR=$1
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
--cswgcc)
|
||||
export CC="/opt/csw/bin/gcc"
|
||||
export CXX="/opt/csw/bin/g++"
|
||||
MAKE=/opt/csw/bin/gmake
|
||||
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
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ "$GCC5" == 1 ]; then
|
||||
CC=/usr/bin/gcc-5
|
||||
CXX=/usr/bin/g++-5
|
||||
CC=/usr/bin/gcc-5
|
||||
CXX=/usr/bin/g++-5
|
||||
elif [ "$CLANG" == 1 ]; then
|
||||
CC=/usr/bin/clang
|
||||
CXX=/usr/bin/clang++
|
||||
CXXFLAGS="${CXXFLAGS} -std=c++11"
|
||||
CC=/usr/bin/clang
|
||||
CXX=/usr/bin/clang++
|
||||
CXXFLAGS="${CXXFLAGS} -std=c++11"
|
||||
elif [ "$CLANG36" == 1 ]; then
|
||||
CC=/usr/bin/clang-3.6
|
||||
CXX=/usr/bin/clang++-3.6
|
||||
CXXFLAGS="${CXXFLAGS} -std=c++11"
|
||||
CC=/usr/bin/clang-3.6
|
||||
CXX=/usr/bin/clang++-3.6
|
||||
CXXFLAGS="${CXXFLAGS} -std=c++11"
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
standard)
|
||||
CFLAGS="${CFLAGS} -O3"
|
||||
CXXFLAGS="${CXXFLAGS} -O3"
|
||||
standard)
|
||||
CFLAGS="${CFLAGS} -O3"
|
||||
CXXFLAGS="${CXXFLAGS} -O3"
|
||||
CONFIGURE_OPTIONS="${CONFIGURE_OPTIONS} -DCMAKE_BUILD_TYPE=RelWithDebInfo"
|
||||
echo "using standard compile configuration"
|
||||
;;
|
||||
|
||||
echo "using standard compile configuration"
|
||||
;;
|
||||
debug)
|
||||
CFLAGS="${CFLAGS} -O0"
|
||||
CXXFLAGS="${CXXFLAGS} -O0"
|
||||
CONFIGURE_OPTIONS="${CONFIGURE_OPTIONS} --enable-v8-debug"
|
||||
|
||||
debug)
|
||||
CFLAGS="${CFLAGS} -O0"
|
||||
CXXFLAGS="${CXXFLAGS} -O0"
|
||||
CONFIGURE_OPTIONS="${CONFIGURE_OPTIONS} --enable-v8-debug"
|
||||
echo "using debug compile configuration"
|
||||
;;
|
||||
|
||||
echo "using debug compile configuration"
|
||||
;;
|
||||
maintainer)
|
||||
CFLAGS="${CFLAGS} -O3"
|
||||
CXXFLAGS="${CXXFLAGS} -O3"
|
||||
MAINTAINER_MODE="-DUSE_MAINTAINER_MODE=on"
|
||||
|
||||
maintainer)
|
||||
CFLAGS="${CFLAGS} -O3"
|
||||
CXXFLAGS="${CXXFLAGS} -O3"
|
||||
MAINTAINER_MODE="-DUSE_MAINTAINER_MODE=on"
|
||||
echo "using maintainer mode"
|
||||
;;
|
||||
|
||||
scan-build)
|
||||
MAKE_CMD_PREFIX="scan-build"
|
||||
MAKE_PARAMS="-f Makefile"
|
||||
|
||||
echo "using maintainer mode"
|
||||
;;
|
||||
|
||||
scan-build)
|
||||
MAKE_CMD_PREFIX="scan-build"
|
||||
MAKE_PARAMS="-f Makefile"
|
||||
echo "using scan-build compile configuration"
|
||||
|
||||
echo "using scan-build compile configuration"
|
||||
;;
|
||||
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "using unknown compile configuration"
|
||||
;;
|
||||
*)
|
||||
echo "using unknown compile configuration"
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ "$SANITIZE" == 1 ]; then
|
||||
if [ "$GCC5" == 1 ]; then
|
||||
CFLAGS="${CFLAGS} -fsanitize=address -fsanitize=undefined -fno-sanitize=alignment -fno-sanitize=vptr -fno-omit-frame-pointer"
|
||||
CXXFLAGS="${CXXFLAGS} -fsanitize=address -fsanitize=undefined -fno-sanitize=alignment -fno-sanitize=vptr -fno-omit-frame-pointer"
|
||||
LDFLAGS="${LDFLAGS} -pthread"
|
||||
LIBS="ubsan;asan"
|
||||
else
|
||||
CFLAGS="${CFLAGS} -fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer"
|
||||
CXXFLAGS="${CXXFLAGS} -fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer"
|
||||
LDFLAGS="-pthread"
|
||||
fi
|
||||
if [ "$GCC5" == 1 ]; then
|
||||
CFLAGS="${CFLAGS} -fsanitize=address -fsanitize=undefined -fno-sanitize=alignment -fno-sanitize=vptr -fno-omit-frame-pointer"
|
||||
CXXFLAGS="${CXXFLAGS} -fsanitize=address -fsanitize=undefined -fno-sanitize=alignment -fno-sanitize=vptr -fno-omit-frame-pointer"
|
||||
LDFLAGS="${LDFLAGS} -pthread"
|
||||
LIBS="ubsan;asan"
|
||||
else
|
||||
CFLAGS="${CFLAGS} -fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer"
|
||||
CXXFLAGS="${CXXFLAGS} -fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer"
|
||||
LDFLAGS="-pthread"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$COVERAGE" == 1 ]; then
|
||||
CFLAGS="${CFLAGS} -O0 -fprofile-arcs -ftest-coverage -DCOVERAGE"
|
||||
CXXFLAGS="${CXXFLAGS} -O0 -fprofile-arcs -ftest-coverage -DCOVERAGE"
|
||||
LDFLAGS="${LDFLAGS} -pthread"
|
||||
LIBS="gcov"
|
||||
CFLAGS="${CFLAGS} -O0 -fprofile-arcs -ftest-coverage -DCOVERAGE"
|
||||
CXXFLAGS="${CXXFLAGS} -O0 -fprofile-arcs -ftest-coverage -DCOVERAGE"
|
||||
LDFLAGS="${LDFLAGS} -pthread"
|
||||
LIBS="gcov"
|
||||
fi
|
||||
|
||||
if [ "$GOLD" == 1 ]; then
|
||||
CXXFLAG="${CXXFLAGS} -B/usr/bin/gold"
|
||||
CXXFLAG="${CXXFLAGS} -B/usr/bin/gold"
|
||||
fi
|
||||
|
||||
if [ "$FAILURE_TESTS" == 1 ]; then
|
||||
CONFIGURE_OPTIONS="${CONFIGURE_OPTIONS} -DUSE_FAILURE_TESTS=on";
|
||||
CONFIGURE_OPTIONS="${CONFIGURE_OPTIONS} -DUSE_FAILURE_TESTS=on";
|
||||
fi
|
||||
|
||||
if [ -n "$CC" ]; then
|
||||
CONFIGURE_OPTIONS="${CONFIGURE_OPTIONS} -DCMAKE_C_COMPILER=${CC}"
|
||||
CONFIGURE_OPTIONS="${CONFIGURE_OPTIONS} -DCMAKE_C_COMPILER=${CC}"
|
||||
fi
|
||||
|
||||
if [ -n "$CXX" ]; then
|
||||
CONFIGURE_OPTIONS="${CONFIGURE_OPTIONS} -DCMAKE_CXX_COMPILER=${CXX}"
|
||||
CONFIGURE_OPTIONS="${CONFIGURE_OPTIONS} -DCMAKE_CXX_COMPILER=${CXX}"
|
||||
fi
|
||||
|
||||
CONFIGURE_OPTIONS="${CONFIGURE_OPTIONS} -DUSE_OPTIMIZE_FOR_ARCHITECTURE=Off"
|
||||
|
@ -247,29 +281,34 @@ echo " CONFIGURE_OPTIONS: ${CONFIGURE_OPTIONS} ${MAINTAINER_MODE}"
|
|||
# compile everything
|
||||
|
||||
if test ${CLEAN_IT} -eq 1; then
|
||||
echo "found fundamental changes, rebuilding from scratch!"
|
||||
git clean -f -d -x
|
||||
echo "found fundamental changes, rebuilding from scratch!"
|
||||
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=""
|
||||
|
||||
if [ "${VERBOSE}" == 1 ]; then
|
||||
CONFIGURE_OPTIONS="${CONFIGURE_OPTIONS} -DVERBOSE=ON"
|
||||
VERBOSE_MAKE="V=1 Verbose=1 VERBOSE=1"
|
||||
CONFIGURE_OPTIONS="${CONFIGURE_OPTIONS} -DVERBOSE=ON"
|
||||
VERBOSE_MAKE="V=1 Verbose=1 VERBOSE=1"
|
||||
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}
|
||||
CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LDFLAGS="${LDFLAGS}" LIBS="${LIBS}" \
|
||||
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
|
||||
|
@ -277,53 +316,53 @@ git rev-parse HEAD > ../last_compiled_version.sha
|
|||
# and install
|
||||
|
||||
if test -n "${TARGET_DIR}"; then
|
||||
echo "building distribution tarball"
|
||||
mkdir -p "${TARGET_DIR}"
|
||||
dir="${TARGET_DIR}"
|
||||
TARFILE=arangodb.tar.gz
|
||||
TARFILE_TMP=`pwd`/arangodb.tar.$$
|
||||
echo "building distribution tarball"
|
||||
mkdir -p "${TARGET_DIR}"
|
||||
dir="${TARGET_DIR}"
|
||||
TARFILE=arangodb.tar.gz
|
||||
TARFILE_TMP=`pwd`/arangodb.tar.$$
|
||||
|
||||
mkdir -p ${dir}
|
||||
trap "rm -rf ${TARFILE_TMP}" EXIT
|
||||
|
||||
(cd ..
|
||||
|
||||
touch 3rdParty/.keepme
|
||||
touch arangod/.keepme
|
||||
touch arangosh/.keepme
|
||||
|
||||
tar -c -f ${TARFILE_TMP} \
|
||||
VERSION utils scripts etc/relative UnitTests Documentation js \
|
||||
lib/Basics/errors.dat \
|
||||
3rdParty/.keepme \
|
||||
arangod/.keepme \
|
||||
arangosh/.keepme
|
||||
)
|
||||
|
||||
tar -u -f ${TARFILE_TMP} \
|
||||
bin etc tests
|
||||
|
||||
find . -name *.gcno > files.$$
|
||||
|
||||
if [ -s files.$$ ]; then
|
||||
tar -u -f ${TARFILE_TMP} \
|
||||
--files-from files.$$
|
||||
mkdir -p ${dir}
|
||||
trap "rm -rf ${TARFILE_TMP}" EXIT
|
||||
|
||||
(cd ..
|
||||
|
||||
find . \
|
||||
\( -name *.cpp -o -name *.h -o -name *.c -o -name *.hpp -o -name *.ll -o -name *.y \) > files.$$
|
||||
touch 3rdParty/.keepme
|
||||
touch arangod/.keepme
|
||||
touch arangosh/.keepme
|
||||
|
||||
tar -u -f ${TARFILE_TMP} \
|
||||
--files-from files.$$
|
||||
|
||||
rm files.$$
|
||||
tar -c -f ${TARFILE_TMP} \
|
||||
VERSION utils scripts etc/relative UnitTests Documentation js \
|
||||
lib/Basics/errors.dat \
|
||||
3rdParty/.keepme \
|
||||
arangod/.keepme \
|
||||
arangosh/.keepme
|
||||
)
|
||||
|
||||
tar -u -f ${TARFILE_TMP} \
|
||||
bin etc tests
|
||||
|
||||
rm files.$$
|
||||
find . -name *.gcno > files.$$
|
||||
|
||||
gzip < ${TARFILE_TMP} > ${dir}/${TARFILE}
|
||||
md5sum < ${dir}/${TARFILE} > ${dir}/${TARFILE}.md5
|
||||
rm ${TARFILE_TMP}
|
||||
fi
|
||||
if [ -s files.$$ ]; then
|
||||
tar -u -f ${TARFILE_TMP} \
|
||||
--files-from files.$$
|
||||
|
||||
(cd ..
|
||||
|
||||
find . \
|
||||
\( -name *.cpp -o -name *.h -o -name *.c -o -name *.hpp -o -name *.ll -o -name *.y \) > files.$$
|
||||
|
||||
tar -u -f ${TARFILE_TMP} \
|
||||
--files-from files.$$
|
||||
|
||||
rm files.$$
|
||||
)
|
||||
|
||||
rm files.$$
|
||||
|
||||
gzip < ${TARFILE_TMP} > ${dir}/${TARFILE}
|
||||
md5sum < ${dir}/${TARFILE} > ${dir}/${TARFILE}.md5
|
||||
rm ${TARFILE_TMP}
|
||||
fi
|
||||
fi
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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)
|
||||
|
|
|
@ -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,204 +16,59 @@ 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
|
||||
preinst
|
||||
postrm
|
||||
prerm
|
||||
)
|
||||
)
|
||||
SET(DEBIAN_WORK_DIR "${PROJECT_BINARY_DIR}/debian-work")
|
||||
add_custom_command(TARGET prepare_debian POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E
|
||||
remove_directory "${DEBIAN_WORK_DIR}"
|
||||
)
|
||||
)
|
||||
foreach (_DEBIAN_CONTROL_EXTRA_BASENAME ${DEBIAN_CONTROL_EXTRA_BASENAMES})
|
||||
SET(RELATIVE_NAME "debian/${_DEBIAN_CONTROL_EXTRA_BASENAME}")
|
||||
SET(SRCFILE "${PROJECT_SOURCE_DIR}/Installation/${RELATIVE_NAME}")
|
||||
|
@ -233,113 +78,26 @@ if (DH_INSTALLINIT AND FAKEROOT)
|
|||
list(APPEND DEBIAN_CONTROL_EXTRA_DEST "${DESTFILE}")
|
||||
|
||||
add_custom_command(TARGET prepare_debian POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E
|
||||
copy ${SRCFILE} ${DESTFILE})
|
||||
COMMAND ${CMAKE_COMMAND} -E
|
||||
copy ${SRCFILE} ${DESTFILE})
|
||||
endforeach()
|
||||
|
||||
add_custom_command(TARGET prepare_debian POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E
|
||||
copy "${PROJECT_SOURCE_DIR}/Installation/debian/control" "${DEBIAN_WORK_DIR}/debian/control"
|
||||
)
|
||||
)
|
||||
add_custom_command(TARGET prepare_debian POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E
|
||||
copy "${PROJECT_SOURCE_DIR}/Installation/debian/compat" "${DEBIAN_WORK_DIR}/debian/compat"
|
||||
)
|
||||
)
|
||||
add_custom_command(TARGET prepare_debian POST_BUILD
|
||||
COMMAND fakeroot "${DH_INSTALLINIT}" -o 2>/dev/null
|
||||
WORKING_DIRECTORY ${DEBIAN_WORK_DIR}
|
||||
)
|
||||
)
|
||||
add_custom_command(TARGET prepare_debian POST_BUILD
|
||||
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
|
||||
|
@ -347,17 +105,117 @@ if (NOT(MSVC OR DARWIN))
|
|||
DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}/init.d
|
||||
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 ()
|
||||
#--------------------------------------------------------------------------------
|
||||
|
|
|
@ -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 ()
|
|
@ -6,7 +6,6 @@
|
|||
|
||||
[database]
|
||||
directory = @LOCALSTATEDIR@/lib/arangodb3
|
||||
# directory = @HOMEDRIVE@/@HOMEPATH@/arangodb3/databases
|
||||
|
||||
# maximal-journal-size = 33554432
|
||||
|
||||
|
@ -69,9 +68,4 @@ app-path = @LOCALSTATEDIR@/lib/arangodb3-apps
|
|||
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
|
||||
[cluster]
|
|
@ -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}/..
|
||||
|
|
|
@ -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}/..
|
Loading…
Reference in New Issue