diff --git a/.travis.yml b/.travis.yml index a62e8c66..527b1b79 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,12 @@ language: c compiler: - - gcc - clang + - gcc + +env: + matrix: +# - BUILD=hstox + - BUILD=toxcore addons: apt: @@ -10,90 +15,27 @@ addons: packages: - check - libvpx-dev - - opam + - opam # For apidsl and Frama-C. + - texinfo # For libconfig. cache: directories: - $HOME/cache -before_script: - - pushd .. - - CACHE_DIR=$HOME/cache +install: + # Globally used environment variables. + - export CACHE_DIR=$HOME/cache - export OPAMROOT=$CACHE_DIR/.opam - export PKG_CONFIG_PATH=$CACHE_DIR/lib/pkgconfig - # 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/iphydf/apidsl - - make -C apidsl - # Install cpp-coveralls to upload test coverage results. - - pip install --user cpp-coveralls - # Install astyle (version in ubuntu-precise too old). - - ASTYLE=$CACHE_DIR/astyle/build/gcc/bin/astyle - - > - [ -f $ASTYLE ] || { - wget -O astyle.tar.gz http://sourceforge.net/projects/astyle/files/astyle/astyle%202.05.1/astyle_2.05.1_linux.tar.gz/download - tar -xf astyle.tar.gz -C $CACHE_DIR - make -C $CACHE_DIR/astyle/build/gcc - } - # Install libsodium (not in ubuntu-precise). - - > - [ -f $CACHE_DIR/lib/libsodium.a ] || { - git clone --depth=1 --branch=stable https://github.com/jedisct1/libsodium - cd libsodium - ./autogen.sh - ./configure --prefix=$CACHE_DIR - make install -j3 - cd .. - } - # Install libconfig (version in ubuntu-precise too old). - - > - [ -f $CACHE_DIR/lib/libconfig.a ] || { - git clone --depth=1 --branch=REL1_6_STABLE https://github.com/hyperrealm/libconfig - cd libconfig - autoreconf -fi - ./configure --prefix=$CACHE_DIR - touch lib/scanner.l - make install -j3 - cd .. - } - # 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 - cd opus - ./autogen.sh - ./configure --prefix=$CACHE_DIR - make install -j3 - cd .. - } - - popd + - export ASTYLE=$CACHE_DIR/astyle/build/gcc/bin/astyle + # Install required packages. + - other/travis/${BUILD}-install script: - # Check if toxcore.h and toxav.h match apidsl tox.in.h and toxav.in.h. - - ../apidsl/_build/apigen.native ./other/apidsl/tox.in.h | $ASTYLE --options=./other/astyle/astylerc > toxcore/tox.h - - ../apidsl/_build/apigen.native ./other/apidsl/toxav.in.h | $ASTYLE --options=./other/astyle/astylerc > toxav/toxav.h - - git diff --exit-code - # Build toxcore and run tests. - - ./autogen.sh - - > - ./configure \ - --with-libsodium-libs=$CACHE_DIR/lib \ - --with-libsodium-headers=$CACHE_DIR/include \ - --enable-daemon \ - --enable-logging \ - --enable-ntox \ - CFLAGS="-O0 -Wall -Wextra -fprofile-arcs -ftest-coverage -DTRAVIS_ENV" - - make - - make check - - if [ -f build/test-suite.log ]; then cat build/test-suite.log; fi - - make dist + - other/travis/${BUILD}-script after_script: - - coveralls --exclude auto_tests --exclude other --exclude testing --gcov-options '\-lp' + - other/travis/${BUILD}-after_script notifications: irc: "chat.freenode.net#toktok-status" diff --git a/other/travis/toxcore-after_script b/other/travis/toxcore-after_script new file mode 100755 index 00000000..06dec607 --- /dev/null +++ b/other/travis/toxcore-after_script @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e -x + +coveralls \ + --exclude auto_tests \ + --exclude other \ + --exclude testing \ + --gcov-options '\-lp' diff --git a/other/travis/toxcore-install b/other/travis/toxcore-install new file mode 100755 index 00000000..0cd43bc5 --- /dev/null +++ b/other/travis/toxcore-install @@ -0,0 +1,57 @@ +#!/bin/sh + +set -e -x + +cd .. + +# 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/iphydf/apidsl +make -C apidsl + +# Install cpp-coveralls to upload test coverage results. +pip install --user cpp-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 +} + +# Install libsodium (not in ubuntu-precise). +[ -f $CACHE_DIR/lib/libsodium.a ] || { + git clone --depth=1 --branch=stable https://github.com/jedisct1/libsodium + cd libsodium + ./autogen.sh + ./configure --prefix=$CACHE_DIR + make install -j3 + cd .. +} + +# Install libconfig (version in ubuntu-precise too old). +[ -f $CACHE_DIR/lib/libconfig.a ] || { + git clone --depth=1 --branch=REL1_6_STABLE https://github.com/hyperrealm/libconfig + cd libconfig + autoreconf -fi + ./configure --prefix=$CACHE_DIR + touch lib/scanner.l + make install -j3 + cd .. +} + +# 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 + cd opus + ./autogen.sh + ./configure --prefix=$CACHE_DIR + make install -j3 + cd .. +} diff --git a/other/travis/toxcore-script b/other/travis/toxcore-script new file mode 100755 index 00000000..b2ee5d02 --- /dev/null +++ b/other/travis/toxcore-script @@ -0,0 +1,25 @@ +#!/bin/sh + +set -e -x + +# Check if toxcore.h and toxav.h match apidsl tox.in.h and toxav.in.h. +../apidsl/_build/apigen.native ./other/apidsl/tox.in.h | $ASTYLE --options=./other/astyle/astylerc > toxcore/tox.h +../apidsl/_build/apigen.native ./other/apidsl/toxav.in.h | $ASTYLE --options=./other/astyle/astylerc > toxav/toxav.h +git diff --exit-code + +# Build toxcore and run tests. +./autogen.sh +./configure \ + --with-libsodium-libs=$CACHE_DIR/lib \ + --with-libsodium-headers=$CACHE_DIR/include \ + --enable-daemon \ + --enable-logging \ + --enable-ntox \ + CFLAGS="-O0 -Wall -Wextra -fprofile-arcs -ftest-coverage -DTRAVIS_ENV=1" + +make +make check +if [ -f build/test-suite.log ]; then + cat build/test-suite.log +fi +make dist