summaryrefslogtreecommitdiff
path: root/other/travis/toxcore-linux-install
blob: cc567a20daa42b10375f21db1620622c2a9323dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/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