195 lines
7.2 KiB
YAML
195 lines
7.2 KiB
YAML
language: cpp
|
|
|
|
matrix:
|
|
include:
|
|
- env: variant=test_release coverage=1
|
|
- env: variant=test_debug sim=1
|
|
- env: variant=test_barebones
|
|
- env: analyze=1
|
|
- os: osx
|
|
osx_image: xcode6.4
|
|
env: variant=test_release docs=1
|
|
- os: osx
|
|
osx_image: xcode6.4
|
|
env: variant=test_debug
|
|
- os: osx
|
|
osx_image: xcode6.4
|
|
env: variant=test_barebones
|
|
- sudo: required
|
|
dist: trusty
|
|
env: arch=arm
|
|
|
|
git:
|
|
submodules: false
|
|
|
|
branches:
|
|
only:
|
|
- master
|
|
- RC_1_1
|
|
- RC_1_0
|
|
|
|
# container-based builds
|
|
sudo: false
|
|
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
|
|
- cppcheck
|
|
|
|
before_install:
|
|
|
|
- git submodule update --init --recursive
|
|
- 'if [[ $TRAVIS_OS_NAME == "osx" && "$variant" != "" ]]; then brew update > /dev/null && brew install --quiet ccache boost-build boost-python; fi'
|
|
- 'if [ "$docs" = "1" ]; then
|
|
brew install --quiet https://raw.githubusercontent.com/catap/homebrew/docutils/Library/Formula/docutils.rb;
|
|
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;
|
|
brew install --quiet graphviz;
|
|
brew install --quiet Homebrew/python/pillow;
|
|
fi'
|
|
|
|
# disable simulations on OSX for now. It hangs on travis
|
|
- if [ $TRAVIS_OS_NAME == "osx" ]; then export toolset="darwin"; export sim="0"; fi
|
|
- if [ $TRAVIS_OS_NAME == "osx" ]; then export target="osx-tests"; fi
|
|
- if [ $TRAVIS_OS_NAME == "linux" ]; then export toolset="gcc"; fi
|
|
- if [ "$coverage" == "1" ]; then
|
|
export toolset=gcc-coverage;
|
|
pip install --user codecov;
|
|
fi
|
|
- 'echo "using toolset: " ${toolset}'
|
|
|
|
install:
|
|
|
|
- touch ~/user-config.jam
|
|
- if [[ $TRAVIS_OS_NAME == "linux" ]]; then g++-5 --version; fi
|
|
- 'if [[ $TRAVIS_OS_NAME == "linux" ]]; then
|
|
echo "using gcc : : ccache g++-5 : <cflags>-std=c11 <cxxflags>-std=c++11 ;" >> ~/user-config.jam;
|
|
echo "using gcc : coverage : ccache g++-5 : <cflags>-std=c11 <cxxflags>-std=c++11 <compileflags>--coverage <linkflags>--coverage ;" >> ~/user-config.jam;
|
|
fi'
|
|
|
|
# osx builds need to disable the deprecated warning because of the openssl
|
|
# shipping with the system having marked all functions as deprecated. Since
|
|
# we're building with -Werror, we can't have those warnings
|
|
- 'echo "using darwin : : ccache clang++ : <cflags>-std=c11 <cxxflags>-std=c++11 <compileflags>-Wno-deprecated-declarations ;" >> ~/user-config.jam'
|
|
- 'echo "using python : 2.7 ;" >> ~/user-config.jam'
|
|
- 'if [[ "$variant" != "" ]]; then ccache -V && ccache --show-stats && ccache --zero-stats; fi'
|
|
- if [ "$docs" == "1" ]; then rst2html.py --version; fi
|
|
|
|
- 'if [ $arch == "arm" ];
|
|
then
|
|
cd test;
|
|
echo "using gcc : arm64 : aarch64-linux-gnu-gcc : <cflags>-std=c11 <cxxflags>-std=c++11 <cxxflags>-fsigned-char <linkflags>-lstdc++ <linkflags>-lm ;" >> ~/user-config.jam;
|
|
wget http://releases.linaro.org/components/toolchain/binaries/latest-5/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz;
|
|
tar xf gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz;
|
|
export PATH=${PWD}/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/bin:${PATH};
|
|
aarch64-linux-gnu-gcc --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;
|
|
sudo apt-get install -y qemu-user-static debootstrap;
|
|
sudo debootstrap --variant=minbase --arch arm64 --foreign --include=build-essential testing rootfs;
|
|
sudo cp /usr/bin/qemu-aarch64-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 variant is not set, we do not want to build anything
|
|
# if we are building with code coverage, report it as soon as possible
|
|
- cd test
|
|
- 'if [ "$variant" != "" ]; then
|
|
bjam -j3 warnings-as-errors=on variant=$variant -l900 $toolset $target test_natpmp &&
|
|
if [ "$coverage" == "1" ]; then
|
|
codecov --root .. --gcov-exec gcov-5;
|
|
fi;
|
|
fi'
|
|
|
|
- cd ../examples
|
|
- 'if [ "$variant" != "" ]; then
|
|
bjam -j3 warnings-as-errors=on variant=$variant picker-debugging=on $toolset link=shared;
|
|
fi'
|
|
- cd ..
|
|
|
|
- cd tools
|
|
- 'if [ "$variant" != "" ]; then
|
|
bjam -j3 warnings-as-errors=on variant=$variant picker-debugging=on $toolset 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 [ "$variant" != "" ]; then
|
|
bjam -j3 warnings-as-errors=on picker-debugging=on link=shared variant=$variant $toolset install location=./lib;
|
|
fi'
|
|
|
|
- cd bindings/python
|
|
- 'if [ "$variant" != "" ]; then
|
|
bjam -j3 warnings-as-errors=on variant=$variant picker-debugging=on $toolset 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 [[ "$variant" != "" && "$sim" == "1" ]]; then
|
|
bjam -j2 crypto=built-in warnings-as-errors=on $toolset;
|
|
fi'
|
|
- cd ..
|
|
|
|
# run cppcheck if enabled
|
|
- 'if [[ "$analyze" == "1" ]]; then
|
|
cppcheck --version &&
|
|
find src test examples tools -type f | grep ".*\.cpp$" >cppcheck.files &&
|
|
find simulation -type f -depth -2 | grep ".*\.cpp$" >>cppcheck.files &&
|
|
cppcheck -DTORRENT_USE_IPV6="1" -DTORRENT_USE_I2P="1"
|
|
-DTORRENT_USE_OPENSSL="1" -DTORRENT_USE_INVARIANT_CHECKS="1"
|
|
-DTORRENT_EXPENSIVE_INVARIANT_CHECKS="1" -DTORRENT_USE_ASSERTS="1"
|
|
-UTORRENT_DISABLE_MUTABLE_TORRENTS -UTORRENT_DISABLE_LOGGING
|
|
-UTORRENT_DEBUG_BUFFERS -UTORRENT_EXPORT_EXTRA
|
|
--suppress=preprocessorErrorDirective
|
|
--suppress=noConstructor
|
|
--suppress=syntaxError
|
|
--enable=style
|
|
--template "{file}({line}): {severity} ({id}): {message}"
|
|
--inline-suppr --force --std=c++11 -j2 -I include -I /usr/local/include
|
|
--file-list=cppcheck.files 2> cppcheck.txt;
|
|
if [ -s cppcheck.txt ]; then
|
|
echo " ======= CPPCHECK ERRORS =====";
|
|
cat cppcheck.txt;
|
|
exit 1;
|
|
fi;
|
|
fi'
|
|
|
|
- 'if [[ "$variant" != "" ]]; then ccache --show-stats; fi'
|
|
|
|
- cd test
|
|
- 'if [ $arch == "arm" ];
|
|
then
|
|
bjam arm-tests warnings-as-errors=on variant=test_arm toolset=gcc-arm64 target-os=linux link=static testing.launcher="sudo cp -R bin rootfs/; sudo chroot rootfs";
|
|
fi'
|
|
- cd ..
|