forked from opencollab/arpack-ng
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.yml
293 lines (284 loc) · 20.1 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
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
sudo: true
language: c
compiler:
- gcc
addons:
apt:
packages:
- gfortran
- gcc
- g++
- openmpi-bin
- libopenmpi-dev
- cmake
- automake
- autoconf
- pkg-config
- libtool
- libblas-dev
- liblapack-dev
- diffutils
- findutils
- libeigen3-dev
services:
- docker
stages:
# order stages
- name: fedora
- name: osx
- name: precise
- name: trusty
- name: xenial
- name: bionic
- name: coverage
- name: interface64
jobs:
include:
# osx <=> macOS 10.13 (high sierra)
- stage: osx
os: osx
osx_image: xcode10.1
before_install:
- brew list -1 | while read line; do brew unlink $line; done;
- brew list gcc || brew install gcc
- brew list cmake || brew install cmake
- brew list openblas || brew install openblas
- brew list lapack || brew install lapack
- brew list openmpi || brew install openmpi
- brew list -1 | while read line; do brew link --overwrite $line; done;
# full build but only partial testing as some tests crash on osx (no stack: if you get one, open an issue https://github.com/opencollab/arpack-ng/issues)
script: |
mkdir -p build && cd build && cmake -D EXAMPLES=ON -D MPI=ON -D ICB=ON .. && make VERBOSE=1 && \
make test ARGS="-R snbdr2_ex" && \
make test ARGS="-R dnbdr2_ex" && \
make test ARGS="-R cnbdr2_ex" && \
make test ARGS="-R znbdr2_ex" && \
make test ARGS="-R psndrv1_ex" && \
make test ARGS="-R pdndrv1_ex" && \
make test ARGS="-R pcndrv1_ex"
- stage: osx
os: osx
osx_image: xcode10.1
before_install:
- brew list -1 | while read line; do brew unlink $line; done;
- brew list gcc || brew install gcc
- brew list autoconf || brew install autoconf
- brew list automake || brew install automake
- brew list openblas || brew install openblas
- brew list lapack || brew install lapack
- brew list openmpi || brew install openmpi
- brew list -1 | while read line; do brew link --overwrite $line; done;
# full build but only partial testing as some tests crash on osx (no stack: if you get one, open an issue https://github.com/opencollab/arpack-ng/issues)
script: |
./bootstrap && ./configure --enable-mpi --enable-icb && make VERBOSE=1 && \
cd $TRAVIS_BUILD_DIR/EXAMPLES/BAND && make check TESTS="snbdr2 dnbdr2 cnbdr2 znbdr2" && \
cd $TRAVIS_BUILD_DIR/PARPACK/EXAMPLES/MPI && make check TESTS="psndrv1 pdndrv1 pcndrv1"
# precise <=> test "older" systems, without ICB, without cmake (too old to be supported)
- stage: precise
dist: precise
script: ./bootstrap && ./configure && make VERBOSE=1 && make check && make distcheck;
- stage: precise
dist: precise
script: ./bootstrap && ./configure --enable-mpi && make VERBOSE=1 && make check && make distcheck;
# trusty <=> test "older" systems, without ICB
- stage: trusty
dist: trusty
script: mkdir -p build && cd build && cmake -D EXAMPLES=ON -D MPI=OFF -D ICB=OFF .. && make VERBOSE=1 && make test && make package_source;
- stage: trusty
dist: trusty
script: mkdir -p build && cd build && cmake -D EXAMPLES=ON -D MPI=ON -D ICB=OFF .. && make VERBOSE=1 && make test && make package_source;
- stage: trusty
dist: trusty
script: ./bootstrap && ./configure && make VERBOSE=1 && make check && make distcheck;
- stage: trusty
dist: trusty
script: ./bootstrap && ./configure --enable-mpi && make VERBOSE=1 && make check && make distcheck;
# xenial <=> test "recent" systems, with and without ICB
- stage: xenial
dist: xenial
script: mkdir -p build && cd build && cmake -D EXAMPLES=ON -D MPI=OFF -D ICB=OFF .. && make VERBOSE=1 && make test && make package_source;
- stage: xenial
dist: xenial
script: mkdir -p build && cd build && cmake -D EXAMPLES=ON -D MPI=ON -D ICB=OFF .. && make VERBOSE=1 && make test && make package_source;
- stage: xenial
dist: xenial
script: mkdir -p build && cd build && cmake -D EXAMPLES=ON -D MPI=OFF -D ICB=ON .. && make VERBOSE=1 && make test && make package_source;
- stage: xenial
dist: xenial
script: mkdir -p build && cd build && cmake -DEXAMPLES=ON -DMPI=OFF -DICBEXMM=ON .. && make VERBOSE=1 && make test && make package_source;
- stage: xenial
dist: xenial
script: mkdir -p build && cd build && cmake -D EXAMPLES=ON -D MPI=ON -D ICB=ON .. && make VERBOSE=1 && make test && make package_source;
- stage: xenial
dist: xenial
script: ./bootstrap && ./configure && make VERBOSE=1 && make check && make distcheck;
- stage: xenial
dist: xenial
script: ./bootstrap && ./configure --enable-mpi && make VERBOSE=1 && make check && make distcheck;
- stage: xenial
dist: xenial
script: ./bootstrap && ./configure --enable-icb && make VERBOSE=1 && make check && make distcheck;
- stage: xenial
dist: xenial
script: ./bootstrap && ./configure --enable-icb-exmm && make VERBOSE=1 && make check && make distcheck;
- stage: xenial
dist: xenial
script: ./bootstrap && ./configure --enable-mpi --enable-icb && make VERBOSE=1 && make check && make distcheck;
# bionic <=> test ubuntu:bionic with autotools/cmake
# note: when you PR, docker-cp provides, in the container, the branch associated with the PR (not master where there's nothing new)
# 1. docker create --name mobydick IMAGE CMD <=> create a container (= instance of image) but container is NOT yet started
# 2. docker cp -a ${TRAVIS_BUILD_DIR} mobydick:/tmp <=> copy git repository (CI worker, checkout-ed on PR branch) into the container
# note: docker-cp works only if copy from/to containers (not images)
# 3. docker start -a mobydick <=> start to run the container (initialized with docker-cp)
- stage: bionic
dist: xenial
script: |
sudo docker pull ubuntu:bionic \
&& \
sudo docker create --name mobydick ubuntu:bionic /bin/bash -c \
"cat /etc/os-release && \
apt-get -y update && \
apt-get -y --allow-unauthenticated -o Dpkg::Options::=--force-confdef upgrade && \
apt-get -y --allow-unauthenticated -o Dpkg::Options::=--force-confdef dist-upgrade && \
apt-get -y install build-essential && \
apt-get -y install git gfortran gcc g++ openmpi-bin libopenmpi-dev automake autoconf libtool pkg-config && \
apt-get -y install libblas-dev liblapack-dev && \
cd /tmp && \
cd arpack-ng && \
git status && \
git log -2 && \
sed -e 's/LOG_FLAGS = /LOG_FLAGS = --allow-run-as-root --oversubscribe /' -i PARPACK/EXAMPLES/MPI/Makefile.am && \
sed -e 's/LOG_FLAGS = /LOG_FLAGS = --allow-run-as-root --oversubscribe /' -i PARPACK/TESTS/MPI/Makefile.am && \
./bootstrap && \
./configure --enable-icb --enable-mpi --disable-dependency-tracking && \
export VERBOSE=1 && \
make all && \
make check && \
find . -name test-suite.log | xargs tail -n 300" \
&& \
sudo docker cp -a ${TRAVIS_BUILD_DIR} mobydick:/tmp \
&& \
sudo docker start -a mobydick
- stage: bionic
dist: xenial
script: |
sudo docker pull ubuntu:bionic \
&& \
sudo docker create --name mobydick ubuntu:bionic /bin/bash -c \
"cat /etc/os-release && \
apt-get -y update && \
apt-get -y --allow-unauthenticated -o Dpkg::Options::=--force-confdef upgrade && \
apt-get -y --allow-unauthenticated -o Dpkg::Options::=--force-confdef dist-upgrade && \
apt-get -y install build-essential && \
apt-get -y install git gfortran gcc g++ openmpi-bin libopenmpi-dev cmake && \
apt-get -y install libblas-dev liblapack-dev && \
apt-get -y install libeigen3-dev && \
apt-get -y install python3-minimal python3-pip python3-numpy && \
pip3 install numpy && \
apt-get -y install wget && \
wget https://sourceforge.net/projects/boost/files/boost/1.67.0/boost_1_67_0.tar.gz && \
tar -xf boost_1_67_0.tar.gz && cd boost_1_67_0 && \
./bootstrap.sh --with-libraries=python --with-python=/usr/bin/python3 && \
./b2 install && \
apt-get install locate && \
updatedb && \
cd /tmp && \
cd arpack-ng && \
git status && \
git log -2 && \
sed -e 's/mpirun /mpirun --allow-run-as-root --oversubscribe /' -i CMakeLists.txt && \
mkdir -p build && cd build && \
cmake -DEXAMPLES=ON -DMPI=ON -DPYTHON3=ON -DBOOST_PYTHON_LIBSUFFIX='36' .. && \
export VERBOSE=1 && \
make all && \
make test && \
tail -n 300 ./Testing/Temporary/LastTest.log" \
&& \
sudo docker cp -a ${TRAVIS_BUILD_DIR} mobydick:/tmp \
&& \
sudo docker start -a mobydick
# xenial <=> coverage: "recent" systems with ICB
- stage: coverage
dist: xenial
script: |
mkdir -p build && cd build \
&& \
cmake -DEXAMPLES=ON -DMPI=ON -DICBEXMM=ON -DCOVERALLS=ON .. &> cmake.log \
&& \
tail -n 50 cmake.log \
&& \
make all &> compil.log \
&& \
tail -n 50 compil.log \
&& \
make test &> test.log \
&& \
tail -n 50 test.log \
&& \
make coveralls &> coveralls.log \
&& \
head -n 50 coveralls.log && tail -n 50 coveralls.log \
&& \
head -n 50 coveralls.json && tail -n 50 coveralls.json
# xenial <=> interface64: "recent" systems with ICB + MKL + ILP64 (need debian/testing to get MKL-ILP64)
# note: when you PR, docker-cp provides, in the container, the branch associated with the PR (not master where there's nothing new)
# 1. docker create --name mobydick IMAGE CMD <=> create a container (= instance of image) but container is NOT yet started
# 2. docker cp -a ${TRAVIS_BUILD_DIR} mobydick:/tmp <=> copy git repository (CI worker, checkout-ed on PR branch) into the container
# note: docker-cp works only if copy from/to containers (not images)
# 3. docker start -a mobydick <=> start to run the container (initialized with docker-cp)
- stage: interface64
allow_failure:
dist: xenial
script: |
sudo docker pull debian \
&& \
sudo docker create --name mobydick debian /bin/bash -c \
"cat /etc/os-release && \
cat /etc/apt/sources.list && \
sed -e 's/stretch/testing/' -i /etc/apt/sources.list && \
sed -e 's/main/main non-free contrib/' -i /etc/apt/sources.list && \
sed -e '/security.debian.org/d' -i /etc/apt/sources.list && \
cat /etc/apt/sources.list && \
export DEBIAN_FRONTEND=noninteractive && \
apt-get -y update && \
apt-get -y --allow-unauthenticated -o Dpkg::Options::=--force-confdef upgrade && \
apt-get -y --allow-unauthenticated -o Dpkg::Options::=--force-confdef dist-upgrade && \
cat /etc/os-release && \
apt-get -y install dialog apt-utils && \
echo yes | apt-get -y install intel-mkl libmkl-dev && \
apt-get -y install build-essential && \
apt-get -y install git gfortran gcc g++ openmpi-bin libopenmpi-dev automake autoconf libtool pkg-config && \
cd /tmp && \
cd arpack-ng && \
git status && \
git log -2 && \
sed -e 's/LOG_FLAGS = /LOG_FLAGS = --allow-run-as-root --oversubscribe /' -i PARPACK/EXAMPLES/MPI/Makefile.am && \
sed -e 's/LOG_FLAGS = /LOG_FLAGS = --allow-run-as-root --oversubscribe /' -i PARPACK/TESTS/MPI/Makefile.am && \
./bootstrap && \
export FFLAGS='-I/usr/include/mkl' && \
export FCFLAGS='-I/usr/include/mkl' && \
export LIBS='-Wl,--no-as-needed -lmkl_sequential -lmkl_core -lpthread -lm -ldl' && \
export INTERFACE64=1 && \
./configure --with-blas=mkl_gf_ilp64 --with-lapack=mkl_gf_ilp64 --enable-icb --enable-mpi \
--disable-dependency-tracking && \
export VERBOSE=1 && \
make all && \
make check && \
find . -name test-suite.log | xargs tail -n 300" \
&& \
sudo docker cp -a ${TRAVIS_BUILD_DIR} mobydick:/tmp \
&& \
sudo docker start -a mobydick
# fedora (released fedora with openmpi)
- stage: fedora
dist: xenial
script: ./scripts/travis_fedora.sh setup openmpi latest
# fedora (with gcc 10 and mpich)
- stage: fedora
dist: xenial
script: ./scripts/travis_fedora.sh setup mpich rawhide
after_failure:
# show build error or test log to know what is wrong if errors occured.
- if [[ -f $TRAVIS_BUILD_DIR/build/Testing/Temporary/LastTest.log ]]; then tail -n 300 $TRAVIS_BUILD_DIR/build/Testing/Temporary/LastTest.log; fi
- find . -name test-suite.log | xargs tail -n 300
- find . -name arpackmm.run.log | xargs tail -n 300