205 lines
8.2 KiB
YAML
205 lines
8.2 KiB
YAML
language: cpp
|
|
|
|
matrix:
|
|
fast_finish: true
|
|
include:
|
|
- env: variant=test_debug lint=1 tests=1 toolset=gcc-sanitizer
|
|
- env: variant=test_debug sim=1 ssl=openssl crypto=libcrypto toolset=gcc-sanitizer
|
|
- env: variant=test_release coverage=1 tests=1 toolset=gcc-coverage python=1
|
|
- env: autotools=1 toolset=gcc
|
|
- os: osx
|
|
osx_image: xcode6.4
|
|
env: variant=test_release docs=1 tests=1 toolset=darwin
|
|
- os: osx
|
|
osx_image: xcode6.4
|
|
env: variant=test_debug ssl=openssl tests=1 crypto=libcrypto toolset=darwin
|
|
- os: osx
|
|
osx_image: xcode6.4
|
|
env: variant=test_barebones tools=1 examples=1 toolset=darwin python=1
|
|
- dist: trusty
|
|
env: arch=arm toolset=gcc-arm
|
|
|
|
notifications:
|
|
email: false
|
|
|
|
git:
|
|
submodules: false
|
|
depth: 1
|
|
|
|
branches:
|
|
only:
|
|
- master
|
|
- RC_1_1
|
|
- RC_1_0
|
|
|
|
cache:
|
|
directories:
|
|
- $HOME/.ccache
|
|
|
|
# sources list: https://github.com/travis-ci/apt-source-whitelist/blob/master/ubuntu.json,
|
|
# packages list: https://github.com/travis-ci/apt-package-whitelist/blob/master/ubuntu-precise
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- boost-latest
|
|
- ubuntu-toolchain-r-test
|
|
packages:
|
|
- libboost1.55-all-dev
|
|
- libboost1.55-tools-dev
|
|
- python2.7-dev
|
|
- g++-5
|
|
|
|
before_install:
|
|
|
|
- git submodule update --init --recursive
|
|
- 'if [[ $ssl == "" ]]; then export ssl=off; fi'
|
|
- 'if [[ $crypto == "" ]]; then export crypto=built-in; fi'
|
|
- 'if [[ $TRAVIS_OS_NAME == "osx" && ( "$tests" == "1" || "$sim" == 1 || "$examples" == "1" || "$tools" == "1" || "$python" == "1" ) ]]; then
|
|
travis_retry brew update > /dev/null && brew install --quiet ccache boost-build;
|
|
fi'
|
|
- 'if [[ $TRAVIS_OS_NAME == "osx" && "$python" == "1" ]]; then travis_retry brew update > /dev/null && brew install --quiet boost-python; fi'
|
|
- 'if [ "$docs" = "1" ]; then
|
|
travis_retry brew install --quiet docutils;
|
|
mkdir -p /Users/travis/Library/Python/2.7/lib/python/site-packages;
|
|
echo ''import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")'' >> /Users/travis/Library/Python/2.7/lib/python/site-packages/homebrew.pth;
|
|
sudo easy_install Pygments;
|
|
sudo easy_install -U aafigure;
|
|
travis_retry brew install --quiet graphviz;
|
|
travis_retry brew install --quiet Homebrew/python/pillow;
|
|
fi'
|
|
|
|
- if [ "$coverage" == "1" ]; then
|
|
pip install --user codecov;
|
|
fi
|
|
- 'echo "toolset: " ${toolset}'
|
|
- 'echo "variant: " ${variant}'
|
|
# disable leak checking for now. it reports some suspicious reports against some
|
|
# tests
|
|
- export ASAN_OPTIONS=detect_leaks=0;
|
|
|
|
install:
|
|
|
|
- touch ~/user-config.jam
|
|
- 'if [[ $toolset == "gcc" ]]; then
|
|
g++-5 --version;
|
|
echo "using gcc : : ccache g++-5 : <cxxflags>-std=c++11 ;" >> ~/user-config.jam;
|
|
fi'
|
|
- 'if [[ $toolset == "gcc-sanitizer" ]]; then
|
|
echo "using gcc : sanitizer : ccache g++-5 :
|
|
<cxxflags>-std=c++11
|
|
<compileflags>-fstack-protector-all
|
|
<compileflags>-fstack-check
|
|
<compileflags>-fsanitize=address,undefined
|
|
<compileflags>-fno-sanitize-recover=address,undefined
|
|
<linkflags>-fsanitize=address,undefined
|
|
<linkflags>-fno-sanitize-recover=address,undefined
|
|
<linkflags>-fuse-ld=gold ;" >> ~/user-config.jam;
|
|
fi'
|
|
- 'if [[ $toolset == "gcc-coverage" ]]; then
|
|
echo "using gcc : coverage : ccache g++-5 --coverage : <cxxflags>-std=c++11 <linkflags>--coverage ;" >> ~/user-config.jam;
|
|
fi'
|
|
- 'if [[ $toolset == "gcc-arm" ]]; then
|
|
echo "using gcc : arm : ccache armv8l-linux-gnueabihf-g++ : <cxxflags>\"-std=c++11 -fsigned-char -march=armv8-a+crc -mfpu=crypto-neon-fp-armv8 -DTORRENT_FORCE_ARM_CRC32\" <linkflags>-lm ;" >> ~/user-config.jam;
|
|
fi;'
|
|
- 'echo "using darwin : : ccache clang++ : <cxxflags>-std=c++11 ;" >> ~/user-config.jam'
|
|
- 'echo "using python : 2.7 ;" >> ~/user-config.jam'
|
|
- if [ "$docs" == "1" ]; then rst2html.py --version; fi
|
|
- 'if [ "$lint" == "1" ]; then curl "https://raw.githubusercontent.com/google/styleguide/71ec7f1e524969c19ce33cfc72e8e023f2b98ee2/cpplint/cpplint.py" >~/cpplint.py; fi'
|
|
|
|
- ccache -V
|
|
- ccache --show-stats
|
|
- ccache --zero-stats
|
|
|
|
- 'if [[ "$arch" == "arm" ]]; then
|
|
cd test;
|
|
wget -O gcc-linaro.tar.xz https://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/armv8l-linux-gnueabihf/gcc-linaro-5.3.1-2016.05-x86_64_armv8l-linux-gnueabihf.tar.xz;
|
|
tar xf gcc-linaro.tar.xz;
|
|
export PATH=${PWD}/gcc-linaro-5.3.1-2016.05-x86_64_armv8l-linux-gnueabihf/bin:${PATH};
|
|
armv8l-linux-gnueabihf-g++ --version;
|
|
wget -O boost.zip http://pilotfiber.dl.sourceforge.net/project/boost/boost/1.55.0/boost_1_55_0.zip;
|
|
unzip -qq boost.zip;
|
|
export BOOST_ROOT=$PWD/boost_1_55_0;
|
|
travis_retry sudo apt-get install -y qemu-user-static debootstrap;
|
|
travis_retry sudo debootstrap --variant=minbase --arch armhf --foreign --include=build-essential testing rootfs;
|
|
sudo cp /usr/bin/qemu-arm-static rootfs/usr/bin/;
|
|
sudo chroot rootfs /debootstrap/debootstrap --second-stage;
|
|
sudo chroot rootfs mount -t proc none /proc;
|
|
cd ..;
|
|
fi'
|
|
|
|
script:
|
|
|
|
- cd docs
|
|
- 'if [ "$docs" == "1" ]; then
|
|
make RST2HTML=rst2html.py;
|
|
fi'
|
|
- cd ..
|
|
|
|
- 'if [ "$lint" == "1" ]; then
|
|
python ~/cpplint.py --extensions=cpp --headers=hpp --filter=-,+runtime/explicit,+whitespace/end_of_line --linelength=90 test/*.{cpp,hpp} src/*.cpp include/libtorrent/*.hpp include/libtorrent/kademlia/*.hpp src/kademlia/*.cpp include/libtorrent/aux_/*.hpp include/libtorrent/extensions/*.hpp simulation/*.{cpp,hpp} tools/*.{cpp,hpp} examples/*.{cpp,hpp};
|
|
fi'
|
|
|
|
# if we are building with code coverage, report it as soon as possible
|
|
# libtorrent is the name of the test suite target
|
|
- cd test
|
|
- 'if [ "$tests" == "1" ]; then
|
|
travis_retry bjam -j3 warnings-as-errors=on ssl=$ssl crypto=$crypto debug-iterators=on picker-debugging=on invariant-checks=full $toolset variant=$variant libtorrent test_natpmp enum_if -l300 &&
|
|
if [ "$coverage" == "1" ]; then
|
|
codecov --root .. --gcov-exec gcov-5;
|
|
fi;
|
|
fi'
|
|
|
|
- cd ../examples
|
|
- 'if [ "$examples" == "1" ]; then
|
|
bjam -j3 warnings-as-errors=on ssl=$ssl crypto=$crypto debug-iterators=on picker-debugging=on invariant-checks=full $toolset variant=$variant link=shared;
|
|
fi'
|
|
- cd ..
|
|
|
|
- cd tools
|
|
- 'if [ "$tools" == "1" ]; then
|
|
bjam -j3 warnings-as-errors=on ssl=$ssl crypto=$crypto debug-iterators=on picker-debugging=on invariant-checks=full $toolset variant=$variant link=shared;
|
|
fi'
|
|
- cd ..
|
|
|
|
# build libtorrent separately and install it in a temporary (well known) dir
|
|
# we have to do this because on linux the name of the python module is the same
|
|
# as the main library, so we cannot stage them to the same directory
|
|
# here we specify the temporary lib dir as a path to look for the main library
|
|
- 'if [ "$python" == "1" ]; then
|
|
bjam -j3 warnings-as-errors=on ssl=$ssl crypto=$crypto debug-iterators=on picker-debugging=on invariant-checks=full $toolset variant=$variant link=shared install location=./lib;
|
|
fi'
|
|
|
|
# a binary built with sanitizer does not interact well with python
|
|
- cd bindings/python
|
|
- 'if [[ "$python" == "1" ]]; then
|
|
bjam -j3 warnings-as-errors=on ssl=$ssl crypto=$crypto debug-iterators=on picker-debugging=on invariant-checks=full $toolset variant=$variant stage_module libtorrent-link=shared install-type=LIB dll-path=../../lib &&
|
|
LD_LIBRARY_PATH=../../lib DYLD_LIBRARY_PATH=../../lib python test.py;
|
|
fi'
|
|
- cd ../..;
|
|
|
|
# simulation
|
|
- cd simulation
|
|
- 'if [[ "$sim" == "1" ]]; then
|
|
bjam -j2 crypto=built-in ssl=off warnings-as-errors=on debug-iterators=on picker-debugging=on invariant-checks=full $toolset;
|
|
fi'
|
|
- cd ..
|
|
|
|
# run through autotools and ./configure to make sure it works
|
|
- 'if [[ "$autotools" == "1" ]]; then
|
|
./autotool.sh &&
|
|
export CXX=g++-5 &&
|
|
export CC=gcc-5 &&
|
|
export CXXFLAGS="-Werror -Wno-deprecated-declarations" &&
|
|
./configure --enable-debug --enable-encryption --enable-examples --enable-tests --enable-python-binding &&
|
|
make -j2 check;
|
|
fi'
|
|
|
|
- ccache --show-stats
|
|
|
|
- cd test
|
|
- 'if [[ "$arch" == "arm" ]];
|
|
then
|
|
bjam arm-tests warnings-as-errors=on ssl=$ssl crypto=$crypto variant=test_arm $toolset target-os=linux link=static testing.launcher="sudo cp -R bin rootfs/; sudo chroot rootfs";
|
|
fi'
|
|
- cd ..
|