#!/bin/bash fw_depends gcc-6 fw_installed ulib && return 0 ULIB_VERSION=1.4.2 ULIB_ROOT=$IROOT/ULib ULIB_DOCUMENT_ROOT=$ULIB_ROOT/ULIB_DOCUMENT_ROOT # Create a run directory for ULIB [ ! -e $IROOT/ulib.installed -a -d $IROOT/ULib ] && rm -rf $IROOT/ULib* mkdir -p $ULIB_ROOT mkdir -p $ULIB_DOCUMENT_ROOT #if [ "$TRAVIS" = "true" ]; then # AVOID "fatal error: postgres_fe.h: No such file or directory" sudo apt-get install -y postgresql-server-dev-all #fi # make use of FIFO scheduling policy possible (we must avoid use of test because bash signal trapping) #type setcap >/dev/null 2>/dev/null #if [ $? -ne 0 ]; then sudo apt-get install -y libcap2-bin #fi export CC=gcc-6 export CXX=g++-6 export AR=gcc-ar-6 export RANLIB=gcc-ranlib-6 # We need to install mongo-c-driver (we don't have a ubuntu package) RETCODE=$(fw_exists ${IROOT}/mongo-c-driver.installed) if [ "$RETCODE" != 0 ]; then wget https://github.com/mongodb/mongo-c-driver/releases/download/1.1.10/mongo-c-driver-1.1.10.tar.gz tar -xzf mongo-c-driver-1.1.10.tar.gz cd mongo-c-driver-1.1.10/ ./configure --prefix=$IROOT --libdir=$IROOT make && sudo make install touch ${IROOT}/mongo-c-driver.installed fi cd $IROOT if [ -e ../results/ULib-${ULIB_VERSION}.tar.gz ]; then mv ../results/ULib-${ULIB_VERSION}.tar.gz . else # 1. Download ULib fw_get -o ULib-${ULIB_VERSION}.tar.gz https://github.com/stefanocasazza/ULib/archive/v${ULIB_VERSION}.tar.gz fi fw_untar ULib-${ULIB_VERSION}.tar.gz # 2. Compile application (userver_tcp) cd ULib-$ULIB_VERSION # AVOID "configure: error: newly created file is older than distributed files! Check your system clock" find . -exec touch {} \; cp -r tests/examples/benchmark/FrameworkBenchmarks/ULib/db $ULIB_ROOT cat <$ULIB_ROOT/benchmark.cfg userver { PORT 8080 PREFORK_CHILD 2 TCP_LINGER_SET 0 LISTEN_BACKLOG 16384 ORM_DRIVER "mysql pgsql" CLIENT_FOR_PARALLELIZATION 100 DOCUMENT_ROOT $ULIB_DOCUMENT_ROOT } EOF USP_FLAGS="-DAS_cpoll_cppsp_DO" \ ./configure --prefix=$ULIB_ROOT \ --disable-static --disable-examples \ --with-mysql --with-pgsql \ --without-ssl --without-pcre --without-expat \ --without-libz --without-libuuid --without-magic --without-libares \ --enable-static-orm-driver='mysql pgsql' --enable-static-server-plugin=http \ --with-mongodb --with-mongodb-includes="-I$IROOT/include/libbson-1.0 -I$IROOT/include/libmongoc-1.0" --with-mongodb-ldflags="-L$IROOT" # --enable-debug \ #USP_LIBS="-ljson" \ #cp $TROOT/src/* src/ulib/net/server/plugin/usp make install cd examples/userver make install # Never use setcap inside of TRAVIS [ "$TRAVIS" != "true" ] || { \ if [ `ulimit -r` -eq 99 ]; then sudo setcap cap_sys_nice,cap_sys_resource,cap_net_bind_service,cap_net_raw+eip $IROOT/ULib/bin/userver_tcp fi } # Compile usp pages (no more REDIS) cd ../../src/ulib/net/server/plugin/usp make json.la plaintext.la db.la query.la update.la fortune.la cached_worlds.la \ mdb.la mquery.la mupdate.la mfortune.la # rdb.la rquery.la rupdate.la rfortune.la # Check that compilation worked if [ ! -e .libs/cached_worlds.so ]; then exit 1 fi cp .libs/json.so .libs/plaintext.so \ .libs/db.so .libs/query.so .libs/update.so .libs/fortune.so .libs/cached_worlds.so \ .libs/mdb.so .libs/mquery.so .libs/mupdate.so .libs/mfortune.so $ULIB_DOCUMENT_ROOT # .libs/rdb.so .libs/rquery.so .libs/rupdate.so .libs/rfortune.so \ cat <$IROOT/ulib.installed export ULIB_ROOT=${ULIB_ROOT} export ULIB_VERSION=${ULIB_VERSION} export ULIB_DOCUMENT_ROOT=${ULIB_DOCUMENT_ROOT} export PATH=${ULIB_ROOT}/bin:${PATH} EOF source $IROOT/ulib.installed