premiere-libtorrent/.travis.yml

175 lines
8.2 KiB
YAML
Raw Normal View History

2015-06-05 02:15:57 +02:00
language: cpp
matrix:
include:
- env: variant=test_release lang=cpp11 sim=0 coverage=1 docs=1
- env: variant=test_debug lang=sanitizer sim=1 coverage=0
- env: variant=test_debug lang=cpp98 sim=0 coverage=0
2017-02-25 20:09:11 +01:00
- env: variant=test_barebones lang=cpp11 sim=0 coverage=0 autotools=1
2018-01-21 17:21:18 +01:00
- env: variant=test_debug lang=cpp11 sim=0 coverage=0 docs=1 target=osx-tests ios=1
2018-01-15 11:53:20 +01:00
os: osx
osx_image: xcode8.3
2015-06-20 16:40:47 +02:00
git:
submodules: false
branches:
only:
- master
2016-01-20 02:54:34 +01:00
- RC_1_1
- RC_1_0
# container-based builds
sudo: false
cache:
directories:
- $HOME/.ccache
2015-06-05 02:15:57 +02:00
# 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
2015-08-08 08:07:38 +02:00
- libboost1.55-tools-dev
- python2.7-dev
- g++-5
2015-08-08 05:17:33 +02:00
before_install:
2015-11-06 06:38:42 +01:00
- git submodule update --init --recursive
2018-01-21 17:21:18 +01:00
- if [ $TRAVIS_OS_NAME == "osx" ]; then brew update > /dev/null && brew install ccache boost-build; fi
# we have to use python from brew rather than the system provided python
# because of OSX System Integrity Protection, which prevents injecting
# user-libraries (i.e. python modules) into system binaries (i.e. /usr/bin/python)
- 'if [[ $TRAVIS_OS_NAME == "osx" ]]; then travis_retry brew install boost-python; brew upgrade python2; fi'
2016-02-16 20:39:06 +01:00
- 'if [[ $TRAVIS_OS_NAME == "osx" && $docs = "1" ]]; then
2017-06-16 14:08:33 +02:00
easy_install --user docutils;
2016-02-16 20:39:06 +01:00
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;
2017-06-16 05:35:50 +02:00
easy_install --user Pygments;
easy_install --user aafigure;
brew install graphviz hunspell;
2017-06-16 14:08:33 +02:00
easy_install --user Pillow;
2016-02-16 20:39:06 +01:00
fi'
# disable simulations on OSX for now. It hangs on travis
- if [ $TRAVIS_OS_NAME == "osx" ]; then export toolset="darwin-${lang}"; fi
2015-09-01 05:23:10 +02:00
- if [ $TRAVIS_OS_NAME == "linux" ]; then export toolset="gcc-${lang}"; fi
2015-12-16 03:07:26 +01:00
- if [[ $TRAVIS_OS_NAME == "linux" && $coverage == "1" ]]; then
export coverage_toolset=gcc-coverage;
pip install --user codecov;
else
export coverage_toolset=$toolset;
fi
- 'if [[ $lang == "sanitizer" ]]; then export test_args=testing.arg="--no-stderr-redirect"; fi'
- 'echo "toolset: " ${toolset}'
- 'echo "target: " ${target}'
- 'echo "coverage_toolset: " ${coverage_toolset}'
- 'echo "test_args: " ${test_args}'
- 'echo "variant: " ${variant}'
# disable leak checking for now. it reports some suspicious reports against some
# tests
- export ASAN_OPTIONS=detect_leaks=0;
2015-08-08 05:17:33 +02:00
install:
- 'if [[ $toolset == "gcc" ]]; then g++-5 --version; fi'
- 'echo "using gcc : cpp11 : ccache g++-5 : <cflags>-std=c11 <cxxflags>-std=c++11 ;" > ~/user-config.jam'
- 'echo "using gcc : sanitizer : ccache g++-5 : <cflags>-std=c11 <cxxflags>-std=c++11 <compileflags>-fsanitize=address,undefined <compileflags>-fno-sanitize-recover=undefined <linkflags>-fuse-ld=gold <linkflags>-fsanitize=address,undefined <linkflags>-fno-sanitize-recover=undefined ;" >> ~/user-config.jam'
- 'echo "using gcc : coverage : ccache g++-5 : <cflags>-std=c11 <cxxflags>-std=c++11 <compileflags>--coverage <linkflags>--coverage ;" >> ~/user-config.jam'
- 'echo "using gcc : cpp98 : ccache g++-5 : <cflags>-std=c99 <cxxflags>-std=c++98 ;" >> ~/user-config.jam'
2015-09-01 05:23:10 +02:00
# 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 : cpp11 : ccache clang++ : <cflags>-std=c11 <cxxflags>-std=c++11 <compileflags>-Wno-deprecated-declarations ;" >> ~/user-config.jam'
- 'echo "using darwin : cpp98 : ccache clang++ : <warnings>off <cflags>-std=c99 <cxxflags>-std=c++98 <compileflags>-Wno-deprecated-declarations ;" >> ~/user-config.jam'
2018-01-15 11:53:20 +01:00
- 'echo "using darwin : ios_sim : ccache clang++ : <cflags>-std=c11 <cxxflags>-std=c++11 <compileflags>-Wno-deprecated-declarations
<compileflags>\"-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk\"
<compileflags>-mios-simulator-version-min=7
<compileflags>-fobjc-abi-version=2
<linkflags>\"-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk\"
<linkflags>-mios-simulator-version-min=7
<linkflags>-fobjc-abi-version=2
;" >>~/user-config.jam'
- 'echo "using darwin : ios : ccache clang++ : <cflags>-std=c11 <cxxflags>-std=c++11 <compileflags>-Wno-deprecated-declarations
<compileflags>\"-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk\"
<compileflags>-mios-version-min=7
<compileflags>\"-arch armv7\"
<compileflags>-fobjc-abi-version=2
<linkflags>\"-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk\"
<linkflags>-mios-version-min=7
<linkflags>\"-arch armv7\"
<linkflags>-fobjc-abi-version=2
;" >>~/user-config.jam'
- 'echo "using python : 2.7 ;" >> ~/user-config.jam'
2015-07-12 08:21:53 +02:00
- ccache -V && ccache --show-stats && ccache --zero-stats
2017-06-16 14:08:33 +02:00
- if [[ $docs == "1" && $TRAVIS_OS_NAME == "osx" ]]; then /Users/travis/Library/Python/2.7/bin/rst2html.py --version; fi
2018-01-15 11:53:20 +01:00
- cat ~/user-config.jam
2015-06-05 02:15:57 +02:00
2018-01-21 17:21:18 +01:00
- which python2
script:
# disable invoking docutils for now, until we can have a modern version of it
- cd docs
2017-06-18 20:39:10 +02:00
- if [[ $docs == "1" && $TRAVIS_OS_NAME == "osx" ]]; then make spell-check RST2HTML=/Users/travis/Library/Python/2.7/bin/rst2html.py AAFIGURE=echo; fi
- cd ..
- cd test
2015-12-20 02:27:57 +01:00
# if we're building with code coverage, report it as soon as possible
2018-01-15 11:53:20 +01:00
- if [[ $tests != "0" ]]; then
bjam --hash -j3 warnings-as-errors=on invariant-checks=full variant=$variant -l900 $coverage_toolset $target $test_args &&
if [[ $TRAVIS_OS_NAME == "linux" && $coverage == "1" ]]; then
codecov --root .. --gcov-exec gcov-4.8;
fi;
2015-12-20 02:27:57 +01:00
fi
2015-12-16 03:07:26 +01:00
- cd ../examples
2018-01-21 17:21:18 +01:00
- bjam --hash -j3 warnings-as-errors=on debug-iterators=on picker-debugging=on invariant-checks=full variant=$variant $coverage_toolset link=shared &&
if [[ $lang == "cpp11" ]]; then
bjam --hash -j3 warnings-as-errors=on debug-iterators=on picker-debugging=on invariant-checks=full variant=$variant $coverage_toolset link=shared bt-get bt-get2;
2016-02-21 23:09:41 +01:00
fi
- cd ..
2015-12-16 03:07:26 +01:00
2017-02-25 20:09:11 +01:00
# run through autotools and ./configure to make sure it works
2018-01-15 11:53:20 +01:00
- if [[ "$autotools" == "1" ]]; then
2017-02-25 20:09:11 +01:00
./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;
2018-01-15 11:53:20 +01:00
fi
- if [[ $ios == "1" ]]; then
2018-01-21 17:21:18 +01:00
bjam darwin-ios darwin-ios_sim -j2 -q link=static;
2018-01-15 11:53:20 +01:00
fi
2017-02-25 20:09:11 +01:00
# 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 can't stage them to the same directory
2018-01-21 17:21:18 +01:00
- bjam --hash -j3 warnings-as-errors=on link=shared debug-iterators=on picker-debugging=on invariant-checks=full variant=$variant $coverage_toolset install location=./lib;
2015-12-16 03:07:26 +01:00
# here we specify the temporary lib dir as a path to look for the main library
# a binary built with sanitizer does not interact well with python
- cd bindings/python
2018-01-21 17:21:18 +01:00
- if [[ $lang != "sanitizer" ]]; then
bjam --hash -j3 warnings-as-errors=on debug-iterators=on picker-debugging=on invariant-checks=full variant=$variant $coverage_toolset stage_module stage_dependencies libtorrent-link=shared install-type=LIB dll-path=../../lib &&
if [[ $TRAVIS_OS_NAME == "osx" ]]; then
DYLD_LIBRARY_PATH=./dependencies python2 test.py;
else
LD_LIBRARY_PATH=./dependencies python test.py;
fi;
2018-01-15 11:53:20 +01:00
fi
- cd ../..
2015-12-16 03:07:26 +01:00
- cd simulation
- if [ $sim = "1" ]; then
bjam --hash -j2 crypto=built-in warnings-as-errors=on $coverage_toolset $test_args;
2015-08-09 06:56:37 +02:00
fi
- cd ..
- ccache --show-stats
2015-08-08 07:10:36 +02:00