toxcore/other/travis/toxcore-linux-install
2017-12-12 22:15:56 +01:00

96 lines
3.3 KiB
Bash
Executable File

#!/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