premiere-libtorrent/.travis.yml

160 lines
5.7 KiB
YAML

language: cpp
os:
- linux
- osx
env:
- variant=test_release coverage=1 docs=1
- variant=test_debug sim=1
- variant=test_barebones
- analyze=1
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++-4.8
- 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 [[ $TRAVIS_OS_NAME == "osx" && "$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 [[ $TRAVIS_OS_NAME == "linux" && "$coverage" == "1" ]]; then
export coverage_toolset=gcc-coverage;
pip install --user codecov;
else
export coverage_toolset=$toolset;
fi
- 'echo "using toolset: " ${toolset}'
install:
- g++-4.8 --version
- 'echo "using gcc : : ccache g++-4.8 : <cflags>-std=c11 <cxxflags>-std=c++11 ;" > ~/user-config.jam'
- 'echo "using gcc : coverage : ccache g++-4.8 : <cflags>-std=c11 <cxxflags>-std=c++11 <compileflags>--coverage <linkflags>--coverage ;" >> ~/user-config.jam'
# 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" && $TRAVIS_OS_NAME == "osx" ]]; then rst2html.py --version; fi
script:
- cd docs
- 'if [[ "$docs" == "1" && $TRAVIS_OS_NAME == "osx" ]]; 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 --hash -j3 warnings-as-errors=on variant=$variant -l900 $coverage_toolset $target &&
if [[ $TRAVIS_OS_NAME == "linux" && "$coverage" == "1" ]]; then
codecov --root .. --gcov-exec gcov-4.8;
fi;
fi'
- cd ../examples
- 'if [ "$variant" != "" ]; then
bjam --hash -j3 warnings-as-errors=on variant=$variant $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 --hash -j3 warnings-as-errors=on link=shared variant=$variant $toolset install location=./lib;
fi'
- cd bindings/python
- 'if [ "$variant" != "" ]; then
bjam --hash -j3 warnings-as-errors=on variant=$variant $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 --hash -j2 crypto=built-in warnings-as-errors=on $coverage_toolset;
fi'
- cd ..
# run cppcheck if enabled
- 'if [[ "$analyze" == "1" ]]; then
if [[ $TRAVIS_OS_NAME == "linux" ]]; 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 [[ $TRAVIS_OS_NAME == "osx" ]]; then
echo "nothing here yet";
fi;
fi'
- 'if [[ "$variant" != "" ]]; then ccache --show-stats; fi'