forked from arvidn/libtorrent
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.yml
151 lines (131 loc) · 5.54 KB
/
.travis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
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:
- 'if [[ "$docs" == "1" && $TRAVIS_OS_NAME == "osx" ]]; then
cd docs;
make RST2HTML=rst2html.py;
cd ..;
fi'
# 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
- 'if [ "$variant" != "" ]; then
cd test;
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;
cd ../examples;
bjam --hash -j3 warnings-as-errors=on variant=$variant $toolset link=shared bt-get bt-get2;
cd ..;
fi'
# 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;
cd bindings/python;
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;
cd ../..;
fi'
# simulation
- 'if [ "$variant" != "" ]; then
cd simulation;
if [ "$sim" == "1" ]; then
bjam --hash -j2 crypto=built-in warnings-as-errors=on $coverage_toolset;
fi;
cd ..;
fi'
# run cppcheck if enabled
- 'if [[ "$analyze" == "1" ]]; then
if [[ $TRAVIS_OS_NAME == "linux" ]]; then
cppcheck --version;
find src -type f | 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=syntaxError
--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'