forked from scipy/scipy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.yml
186 lines (186 loc) · 6.53 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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# After changing this file, check it on:
# http://lint.travis-ci.org/
language: python
sudo: false
env:
global:
# Wheelhouse for pre-release wheels
- PRE_WHEELS="https://7933911d6844c6c53a7d-47bd50c35cd79bd838daf386af554a83.ssl.cf2.rackcdn.com"
matrix:
include:
- python: 2.7
env:
- PYFLAKES=1
- PEP8=1
- NUMPYSPEC=numpy
before_install:
- pip install pycodestyle==2.3.1
- pip install pyflakes==1.1.0
script:
- PYFLAKES_NODOCTEST=1 pyflakes scipy benchmarks/benchmarks | grep -E -v 'unable to detect undefined names|assigned to but never used|imported but unused|redefinition of unused|may be undefined, or defined from star imports' > test.out; cat test.out; test \! -s test.out
- pycodestyle scipy benchmarks/benchmarks
- python: 2.7
env:
- TESTMODE=fast
- COVERAGE=
- NUMPYSPEC="--pre --upgrade --timeout=60 -f $PRE_WHEELS numpy"
- python: 3.6
env:
- TESTMODE=full
- COVERAGE="--coverage --gcov"
- NUMPYSPEC=numpy
- python: 3.5
env:
- TESTMODE=fast
- COVERAGE=
- USE_WHEEL=1
- REFGUIDE_CHECK=1
- python: 3.4
env:
- TESTMODE=fast
- COVERAGE=
- NUMPYSPEC="numpy==1.8.2"
- USE_SDIST=1
- OPTIMIZE=-OO
- os: osx
language: generic
env:
- TESTMODE=fast
- COVERAGE=
- NUMPYSPEC=numpy
- MB_PYTHON_VERSION=3.6
addons:
apt:
packages:
- libatlas-dev
- libatlas-base-dev
- liblapack-dev
- gfortran
- libgmp-dev
- libmpfr-dev
- libsuitesparse-dev
- ccache
- swig
- libmpc-dev
cache:
directories:
- $HOME/.ccache
- $HOME/.cache/pip
- $HOME/Library/Caches/pip
before_install:
# Work in our own virtualenv to isolate from travis-ci packages.
- echo $TRAVIS_OS_NAME
- |
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
free -m
export PATH=/usr/lib/ccache:$PATH
elif [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
brew cask uninstall oclint
brew install gcc ccache libmpc
touch config.sh
git clone --depth=1 https://github.com/matthew-brett/multibuild.git
source multibuild/common_utils.sh
source multibuild/travis_steps.sh
before_install
which ccache
export PATH=/usr/local/opt/ccache/libexec:$PATH
export USE_CCACHE=1
export CCACHE_MAXSIZE=200M
export CCACHE_CPP2=1
export CFLAGS="-arch x86_64"
export CXXFLAGS="-arch x86_64"
printenv
fi
- export CCACHE_COMPRESS=1
- python --version # just to check
- export NPY_NUM_BUILD_JOBS=2
- uname -a
- df -h
- ulimit -a
- mkdir builds
- cd builds
- travis_retry pip install --upgrade pip setuptools wheel
- travis_retry pip install cython==0.25.2
- if [ -n "$NUMPYSPEC" ]; then travis_retry pip install $NUMPYSPEC; fi
- travis_retry pip install --upgrade pytest pytest-xdist pytest-faulthandler mpmath argparse Pillow codecov
- travis_retry pip install gmpy2 # speeds up mpmath (scipy.special tests)
- |
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
# optional sparse.linalg dependency (test linux only, no suitesparse installed on osx)
if [ -z "$NUMPYSPEC" ]; then
# numpy must be installed to build scikit-umfpack
travis_retry pip install numpy
fi
travis_retry pip install scikit-umfpack
if [ -z "$NUMPYSPEC" ]; then
# cleanup after ourselves
travis_retry pip uninstall -y numpy
fi
fi
- if [ "${TESTMODE}" == "full" ]; then pip install pytest-cov coverage; fi
- |
if [ "${REFGUIDE_CHECK}" == "1" ]; then
travis_retry pip install matplotlib Sphinx==1.7.2
# XXX: Install older numpy as a workaround for float printing changes.
# XXX: We'll remove this once numpy 1.14.1 is released to fix its printing
# XXX: bugs
travis_retry pip install 'numpy!=1.14.0'
fi
- python -V
- ccache -s
- cd ..
- set -o pipefail
script:
- python -c 'import numpy as np; print("relaxed strides checking:", np.ones((10,1),order="C").flags.f_contiguous)'
# Make sure that relaxed strides checking is actually in effect; otherwise fail loudly
- if [ "$NPY_RELAXED_STRIDES_CHECKING" == "1" ]; then python -c'import numpy as np; assert np.ones((10,1),order="C").flags.f_contiguous'; fi
# Test that mpmath actually uses gmpy2
- python -c 'import mpmath.libmp; assert mpmath.libmp.BACKEND == "gmpy"'
- |
if [ "${USE_WHEEL}" == "1" ]; then
# Run setup.py build before pip wheel, to build in current directory
# and make more efficient use of ccache
echo "setup.py build"
python tools/suppress_output.py python setup.py build
echo "pip wheel"
python tools/suppress_output.py pip wheel --no-build-isolation .
pip install --no-cache-dir scipy*.whl
USE_WHEEL_BUILD="--no-build"
elif [ "${USE_SDIST}" == "1" ]; then
echo "setup.py sdist"
python tools/suppress_output.py python setup.py sdist
# Move out of source directory to avoid finding local scipy
cd dist
# Use pip --build option to make ccache work better.
# However, this option is partially broken
# (see https://github.com/pypa/pip/issues/4242)
# and some shenanigans are needed to make it work.
echo "pip install"
python ../tools/suppress_output.py pip install --no-cache-dir --no-build-isolation --build="$HOME/builds" --upgrade "file://`echo -n $PWD/scipy*`#egg=scipy" -v
cd ..
USE_WHEEL_BUILD="--no-build"
fi
- export SCIPY_AVAILABLE_MEM=3G
- python -u $OPTIMIZE runtests.py -g -m $TESTMODE $COVERAGE $USE_WHEEL_BUILD -- -rfEX -n 3 2>&1 | tee runtests.log
- tools/validate_runtests_log.py $TESTMODE < runtests.log
- if [ "${REFGUIDE_CHECK}" == "1" ]; then python runtests.py -g --refguide-check; fi
# Check dynamic symbol hiding works on Linux
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then ./tools/check_pyext_symbol_hiding.sh build; fi
after_script:
- ccache -s
# Upload coverage information
- |
if [ -n "${COVERAGE}" ]; then
RUN_DIR=`echo build/testenv/lib/python*/site-packages`
# Produce gcov output for codecov to find
find build -name '*.gcno' -type f -exec gcov -pb {} +
mv *.gcov "$RUN_DIR/"
# Run codecov
pushd "$RUN_DIR"
codecov -X gcov
popd
fi
notifications:
# Perhaps we should have status emails sent to the mailing list, but
# let's wait to see what people think before turning that on.
email: false