You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

259 lines
10 KiB

##
## arangodb.spec -- OpenPKG RPM Package Specification
## Copyright (c) 2000-2017 OpenPKG Foundation e.V. <http://openpkg.net/>
##
## Permission to use, copy, modify, and distribute this software for
## any purpose with or without fee is hereby granted, provided that
## the above copyright notice and this permission notice appear in all
## copies.
##
## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
## SUCH DAMAGE.
##
# package version
%define V_opkg 3.2.3
%define V_tarball 3.2.3
# package information
Name: arangodb
Summary: Document/Graph/Key-Value Database
URL: http://www.arangodb.org/
Vendor: triAGENS GmbH
Packager: OpenPKG Foundation e.V.
Distribution: OpenPKG Community
Class: EVAL
Group: Database
License: Apache
Version: %{V_opkg}
Release: 20170907
# list of sources
Source0: https://github.com/arangodb/arangodb/archive/v%{V_tarball}.tar.gz
Source1: rc.arangodb
Source2: arangod.conf
Source3: arangosh.conf
Source4: arangodump.conf
Source5: arangomkdb.sh
Patch0: arangodb.patch
# build information
BuildPreReq: OpenPKG, openpkg >= 20160101, gcc6, gcc6::with_cxx = yes, bison, python
PreReq: OpenPKG, openpkg >= 20160101, x509
BuildPreReq: readline, ncurses, openssl, libexecinfo, boost
PreReq: readline, ncurses, openssl, libexecinfo, boost
%description
ArangoDB is a distributed database with four main features:
Multi-Model: documents, graphs and key-value pairs -— model your
data as you see fit for your application; Joins: conveniently join
what belongs together for flexible ad-hoc querying, less data
redundancy; Transactions: easy application development keeping your
data consistent and safe. No hassle in your client; Query Language:
use the SQL-like ArangoDB Query Language (AQL) for powerful data
retrival.
%track
prog arangodb = {
version = %{version}
url = https://github.com/arangodb/arangodb/releases
regex = v(\d+\.\d+\.\d+)\.tar\.gz
}
%prep
%setup -q -n arangodb-%{V_tarball}
%patch -p0
%build
# patch sources
%{l_shtool} subst \
-e 's;/bin/bash;%{l_bash};g' \
3rdParty/V8-*/build/gyp/gyp
# remove binary symlinks (which point to not existing files anyway)
rm -rf js/node/node_modules/mocha/node_modules/.bin
rm -rf js/node/node_modules/jshint/node_modules/.bin
rm -rf js/node/node_modules/js-yaml/node_modules/.bin
rm -rf js/node/node_modules/.bin
# provide tools as it is too hard to pass the correct flags
# to all sub-directory build processes of ArangoDB
iflags="-I `pwd`/3rdParty/rocksdb/rocksdb/include"
iflags="$iflags -I `pwd`/3rdParty/snappy/google-snappy-*"
iflags="$iflags -I `pwd`/3rdParty/V8/v5*/include"
iflags="$iflags -I `pwd`/3rdParty/V8/v5*/third_party/icu/source/i18n"
iflags="$iflags -I `pwd`/3rdParty/libev/libev-*"
iflags="$iflags -I `pwd`/3rdParty/zlib/zlib-*"
iflags="$iflags -I `pwd`/3rdParty/curl/curl-*/include"
lflags="-L `pwd`/build/3rdParty/rocksdb/rocksdb"
lflags="$lflags -L `pwd`/build/3rdParty/snappy/google-snappy-*"
lflags="$lflags -L `pwd`/build/3rdParty/V8/v5*/*.release/obj.target/third_party/icu"
lflags="$lflags -L `pwd`/build/3rdParty/V8/v5*/*.release/obj.target/tools/gyp"
lflags="$lflags -L `pwd`/build/3rdParty/libev"
lflags="$lflags -L `pwd`/build/3rdParty/zlib/zlib-*"
lflags="$lflags -L `pwd`/build/3rdParty/curl/curl-*"
cflags="-std=gnu11 -Wno-sign-compare"
cflags="$cflags %{l_cflags -O}"
cflags="$cflags $iflags"
cflags="$cflags %{l_cppflags}"
cflags="$cflags $lflags"
cflags="$cflags %{l_ldflags}"
cxxflags="-std=gnu++14 -Wno-sign-compare"
cxxflags="$cxxflags -D_GLIBCXX_USE_C99"
cxxflags="$cxxflags %{l_cxxflags -O}"
cxxflags="$cxxflags $iflags"
cxxflags="$cxxflags %{l_cppflags}"
cxxflags="$cxxflags $lflags"
cxxflags="$cxxflags %{l_ldflags}"
mkdir tool
( echo "#!/bin/sh"
echo "exec %{l_prefix}/bin/gcc6 $cflags \${1+\"\$@\"}"
) >tool/cc
( echo "#!/bin/sh"
echo "exec %{l_prefix}/bin/g++6 $cxxflags \${1+\"\$@\"}"
) >tool/c++
chmod a+x tool/*
PATH=`pwd`/tool:$PATH
# configure program
mkdir build
cd build
cmake \
-Wno-dev \
-DCMAKE_BUILD_TYPE="Release" \
-DCMAKE_C_COMPILER="cc" \
-DCMAKE_C_FLAGS="%{l_cflags -O} %{l_cppflags}" \
-DCMAKE_CXX_COMPILER="c++" \
-DCMAKE_CXX_FLAGS="%{l_cxxflags -O} %{l_cppflags}" \
-DCMAKE_EXE_LINKER_FLAGS="%{l_ldflags}" \
-DCMAKE_INSTALL_PREFIX="%{l_prefix}" \
-DCMAKE_INSTALL_SYSCONFDIR_ARANGO="%{l_prefix}/etc/arangodb" \
-DPYTHON_EXECUTABLE="%{l_prefix}/bin/python" \
-DOPENSSL_ROOT_DIR="%{l_prefix}" \
-DUSE_BACKTRACE=on \
-DUSE_FAILURE_TESTS=off \
-DUSE_MAINTAINER_MODE=off \
-DUSE_BOOST_UNITTESTS=off \
-DUSE_JEMALLOC=off \
-DASM686=off \
-DAMD64=off \
..
# build program
%{l_make} %{l_mflags -O}
%install
# install program
( cd build
%{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT
) || exit $?
# post-adjust installation
strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true
rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/doc >/dev/null 2>&1 || true
rm -rf $RPM_BUILD_ROOT%{l_prefix}/var/lib >/dev/null 2>&1 || true
rm -rf $RPM_BUILD_ROOT%{l_prefix}/var/log >/dev/null 2>&1 || true
rm -rf $RPM_BUILD_ROOT%{l_prefix}/var/db >/dev/null 2>&1 || true
# install default configuration
rm -f $RPM_BUILD_ROOT%{l_prefix}/etc/arangodb/*
mv $RPM_BUILD_ROOT%{l_prefix}/etc/arangodb3 \
$RPM_BUILD_ROOT%{l_prefix}/etc/arangodb
%{l_shtool} install -c -m 644 %{l_value -s -a} \
%{SOURCE arangod.conf} \
%{SOURCE arangosh.conf} \
%{SOURCE arangodump.conf} \
$RPM_BUILD_ROOT%{l_prefix}/etc/arangodb/
# install utility
%{l_shtool} install -c -m 755 %{l_value -s -a} \
-e 's;@l_bash@;%{l_bash};g' \
%{SOURCE arangomkdb.sh} \
$RPM_BUILD_ROOT%{l_prefix}/bin/arangomkdb
# install run-command script
%{l_shtool} mkdir -f -p -m 755 \
$RPM_BUILD_ROOT%{l_prefix}/etc/rc.d
%{l_shtool} install -c -m 755 %{l_value -s -a} \
%{SOURCE rc.arangodb} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
# create run-time directory
%{l_shtool} mkdir -f -p -m 755 \
$RPM_BUILD_ROOT%{l_prefix}/var/arangodb/apps \
$RPM_BUILD_ROOT%{l_prefix}/var/arangodb/db \
$RPM_BUILD_ROOT%{l_prefix}/var/arangodb/log \
$RPM_BUILD_ROOT%{l_prefix}/var/arangodb/run
# determine installation files
%{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
%{l_files_std} \
'%config %{l_prefix}/etc/arangodb/*' \
'%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/arangodb/*'
%files -f files
%clean
%post
if [ $1 -eq 1 ]; then
# provide SSL/TLS certificate/key pairs
if [ ! -f $RPM_INSTALL_PREFIX/etc/arangodb/arangod-sv.pem ]; then
cat $RPM_INSTALL_PREFIX/etc/x509/example-server.crt.pem \
$RPM_INSTALL_PREFIX/etc/x509/example-server.key.pem \
>$RPM_INSTALL_PREFIX/etc/arangodb/arangod-sv.pem
chown %{l_rusr}:%{l_rgrp} $RPM_INSTALL_PREFIX/etc/arangodb/arangod-sv.pem
chmod 600 $RPM_INSTALL_PREFIX/etc/arangodb/arangod-sv.pem
fi
if [ ! -f $RPM_INSTALL_PREFIX/etc/arangodb/arangod-ca.pem ]; then
cat $RPM_INSTALL_PREFIX/etc/x509/example-ca.crt.pem \
>$RPM_INSTALL_PREFIX/etc/arangodb/arangod-ca.pem
chown %{l_rusr}:%{l_rgrp} $RPM_INSTALL_PREFIX/etc/arangodb/arangod-ca.pem
chmod 644 $RPM_INSTALL_PREFIX/etc/arangodb/arangod-ca.pem
fi
# display information about next steps
( echo "After initially starting ArangoDB with..."
echo " \$ $RPM_INSTALL_PREFIX/bin/openpkg rc arangodb start"
echo "...you should immediately set the \"root\" password on database \"_system\":"
echo " \$ echo 'require(\"@arangodb/users\").update(\"root\", \"<root-pw>\");' | \\%{l_nil}"
echo " $RPM_INSTALL_PREFIX/bin/arangosh --server.authentication false"
echo "You can then create a custom database with:"
echo " \$ $RPM_INSTALL_PREFIX/bin/arangomkdb <database> <username> <password>"
echo "Then you can connect to the custom database with:"
echo " \$ $RPM_INSTALL_PREFIX/bin/arangosh \\%{l_nil}"
echo " --server.database <database> \\%{l_nil}"
echo " --server.username <username> \\%{l_nil}"
echo " --server.password <password>"
echo "The web interface of ArangoDB you can reach under:"
echo " https://localhost:8529/"
) | %{l_rpmtool} msg -b -t notice
fi
if [ $1 -eq 2 ]; then
# after upgrade, restart service
eval `%{l_rc} arangodb status 2>/dev/null`
[ ".$arangodb_active" = .yes ] && %{l_rc} mongodb restart
fi
exit 0
%preun
# before erase, stop service and remove log files
if [ $1 -eq 0 ]; then
%{l_rc} arangodb stop 2>/dev/null
rm -f $RPM_INSTALL_PREFIX/etc/arangodb/*.pem >/dev/null 2>&1 || true
rm -f $RPM_INSTALL_PREFIX/var/arangodb/run/* >/dev/null 2>&1 || true
rm -f $RPM_INSTALL_PREFIX/var/arangodb/log/* >/dev/null 2>&1 || true
rm -rf $RPM_INSTALL_PREFIX/var/arangodb/db/* >/dev/null 2>&1 || true
rm -rf $RPM_INSTALL_PREFIX/var/arangodb/apps/* >/dev/null 2>&1 || true
fi
exit 0