#!/bin/sh # Set up opam. opam init -y eval `opam config env` # Install required opam packages. opam install -y ocamlfind ppx_deriving menhir # Build apidsl. git clone --depth=1 https://github.com/TokTok/apidsl ../apidsl make -C ../apidsl -j$NPROC # Install cpp-coveralls to upload test coverage results. pip install --user urllib3[secure] cpp-coveralls # Work around https://github.com/eddyxu/cpp-coveralls/issues/108 by manually # installing the pyOpenSSL module and injecting it into urllib3 as per # https://urllib3.readthedocs.io/en/latest/user-guide.html#ssl-py2 sed -i -e '/^import sys$/a import urllib3.contrib.pyopenssl\nurllib3.contrib.pyopenssl.inject_into_urllib3()' `which coveralls` # Install astyle (version in ubuntu-precise too old). [ -f $ASTYLE ] || { wget -O ../astyle.tar.gz https://launchpad.net/ubuntu/+archive/primary/+files/astyle_2.05.1.orig.tar.gz tar -xf ../astyle.tar.gz -C $CACHE_DIR make -C $CACHE_DIR/astyle/build/gcc -j$NPROC } # Install libsodium (not in ubuntu-precise). [ -f $CACHE_DIR/lib/libsodium.a ] || { git clone --depth=1 --branch=stable https://github.com/jedisct1/libsodium ../libsodium cd ../libsodium # pushd ./autogen.sh ./configure --prefix=$CACHE_DIR make install -j$NPROC cd - # popd } # Install msgpack-c. [ -f $CACHE_DIR/lib/libmsgpackc.so ] || { git clone --depth=1 https://github.com/msgpack/msgpack-c ../msgpack-c $CC -shared -fPIC -O3 -I../msgpack-c/include ../msgpack-c/src/*.c -o $CACHE_DIR/lib/libmsgpackc.so cp -a ../msgpack-c/include/* $CACHE_DIR/include/ sed -e "s|@prefix@|$CACHE_DIR|" \ -e 's|@exec_prefix@|${prefix}|' \ -e 's|@libdir@|${prefix}/lib|' \ -e 's|@includedir@|${prefix}/include|' \ -e 's|@VERSION@|2.1.1|' \ ../msgpack-c/msgpack.pc.in \ > $CACHE_DIR/lib/pkgconfig/msgpack.pc # TODO(iphydf): This doesn't work, because the cmake version on travis is too # old. We're building it manually, instead. # cd ../msgpack-c # pushd # cmake . -DCMAKE_INSTALL_PREFIX:PATH=$CACHE_DIR \ # -DMSGPACK_ENABLE_CXX=OFF \ # -DMSGPACK_BUILD_EXAMPLES=OFF \ # -DMSGPACK_BUILD_TESTS=OFF # make -j$NPROC # make install -j$NPROC # cd - # popd } # Install libconfig (version in ubuntu-precise too old). [ -f $CACHE_DIR/lib/libconfig.a ] || { git clone --depth=1 --branch=v1.7.1 https://github.com/hyperrealm/libconfig ../libconfig cd ../libconfig # pushd autoreconf -fi ./configure --prefix=$CACHE_DIR touch lib/scanner.l make install -j$NPROC cd - # popd } # Install libopus (not in ubuntu-precise). [ -f $CACHE_DIR/lib/libopus.a ] || { git clone --depth=1 --branch=1.1.2 https://github.com/xiph/opus ../opus cd ../opus # pushd ./autogen.sh ./configure --prefix=$CACHE_DIR make install -j$NPROC cd - # popd } if [ "$CC" = "clang" ]; then # An initial update is required or the cabal cache will be empty and no packages # can be installed. cabal update # Install the hstox test runner after installing libsodium. CABAL_FLAGS="--disable-library-profiling" CABAL_FLAGS="$CABAL_FLAGS --extra-include-dirs=$CACHE_DIR/include" CABAL_FLAGS="$CABAL_FLAGS --extra-lib-dirs=$CACHE_DIR/lib" git clone --recursive --depth=1 https://github.com/TokTok/hs-toxcore ../hs-toxcore (cd ../hs-toxcore && cabal install $CABAL_FLAGS) fi