Skip to content

Commit 53aee36

Browse files
authored
Merge pull request #1255 from jirutka/travis
Travis: Rewrite config, build and test also on Alpine Linux (musl libc)
2 parents 1e9247c + 486a485 commit 53aee36

File tree

1 file changed

+115
-29
lines changed

1 file changed

+115
-29
lines changed

.travis.yml

Lines changed: 115 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,119 @@
1+
# XXX: Precise is already deprecated, new default is Trusty.
2+
# https://blog.travis-ci.com/2017-07-11-trusty-as-default-linux-is-coming
3+
dist: precise
4+
sudo: false
15
language: c
6+
compiler: gcc
7+
8+
jobs:
9+
include:
10+
- &test-ubuntu
11+
stage: test
12+
addons:
13+
apt:
14+
packages:
15+
- gfortran
16+
before_script: &common-before
17+
- COMMON_FLAGS="DYNAMIC_ARCH=1 TARGET=NEHALEM NUM_THREADS=32"
18+
script:
19+
- set -e
20+
- make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
21+
- make -C test $COMMON_FLAGS $BTYPE
22+
- make -C ctest $COMMON_FLAGS $BTYPE
23+
- make -C utest $COMMON_FLAGS $BTYPE
24+
env:
25+
- TARGET_BOX=LINUX64
26+
- BTYPE="BINARY=64"
27+
28+
- <<: *test-ubuntu
29+
env:
30+
- TARGET_BOX=LINUX64
31+
- BTYPE="BINARY=64 USE_OPENMP=1"
32+
33+
- <<: *test-ubuntu
34+
env:
35+
- TARGET_BOX=LINUX64
36+
- BTYPE="BINARY=64 INTERFACE64=1"
37+
38+
- <<: *test-ubuntu
39+
addons:
40+
apt:
41+
packages:
42+
- gcc-multilib
43+
- gfortran-multilib
44+
env:
45+
- TARGET_BOX=LINUX32
46+
- BTYPE="BINARY=32"
47+
48+
- stage: test
49+
addons:
50+
apt:
51+
packages:
52+
- binutils-mingw-w64-x86-64
53+
- gcc-mingw-w64-x86-64
54+
- gfortran-mingw-w64-x86-64
55+
before_script: *common-before
56+
script:
57+
- make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
58+
env:
59+
- TARGET_BOX=WIN64
60+
- BTYPE="BINARY=64 HOSTCC=gcc CC=x86_64-w64-mingw32-gcc FC=x86_64-w64-mingw32-gfortran"
61+
62+
# Build & test on Alpine Linux inside chroot, i.e. on system with musl libc.
63+
# These jobs needs sudo, so Travis runs them on VM-based infrastructure
64+
# which is slower than container-based infrastructure used for jobs
65+
# that don't require sudo.
66+
- &test-alpine
67+
stage: test
68+
dist: trusty
69+
sudo: true
70+
language: minimal
71+
before_install:
72+
- "wget 'https://github.com/raw/alpinelinux/alpine-chroot-install/v0.6.0/alpine-chroot-install' \
73+
&& echo 'a827a4ba3d0817e7c88bae17fe34e50204983d1e alpine-chroot-install' | sha1sum -c || exit 1"
74+
- alpine() { /alpine/enter-chroot -u "$USER" "$@"; }
75+
install:
76+
- sudo sh alpine-chroot-install -p 'build-base gfortran perl linux-headers'
77+
before_script: *common-before
78+
script:
79+
- set -e
80+
# XXX: Disable some warnings for now to avoid exceeding Travis limit for log size.
81+
- alpine make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
82+
CFLAGS="-Wno-misleading-indentation -Wno-sign-conversion -Wno-incompatible-pointer-types"
83+
- alpine make -C test $COMMON_FLAGS $BTYPE
84+
- alpine make -C ctest $COMMON_FLAGS $BTYPE
85+
- alpine make -C utest $COMMON_FLAGS $BTYPE
86+
env:
87+
- TARGET_BOX=LINUX64_MUSL
88+
- BTYPE="BINARY=64"
89+
90+
# XXX: This job segfaults in TESTS OF THE COMPLEX LEVEL 3 BLAS,
91+
# so it's "allowed to fail" for now (see allow_failures).
92+
- &test-alpine-openmp
93+
<<: *test-alpine
94+
env:
95+
- TARGET_BOX=LINUX64_MUSL
96+
- BTYPE="BINARY=64 USE_OPENMP=1"
97+
98+
- <<: *test-alpine
99+
env:
100+
- TARGET_BOX=LINUX64_MUSL
101+
- BTYPE="BINARY=64 INTERFACE64=1"
102+
103+
# Build with the same flags as Alpine do in OpenBLAS package.
104+
- <<: *test-alpine
105+
env:
106+
- TARGET_BOX=LINUX64_MUSL
107+
- BTYPE="BINARY=64 NO_AFFINITY=1 USE_OPENMP=0 NO_LAPACK=0 TARGET=core2"
108+
109+
allow_failures:
110+
- <<: *test-alpine-openmp
111+
112+
# whitelist
113+
branches:
114+
only:
115+
- master
116+
- develop
2117

3118
notifications:
4119
webhooks:
@@ -7,32 +122,3 @@ notifications:
7122
on_success: change # options: [always|never|change] default: always
8123
on_failure: always # options: [always|never|change] default: always
9124
on_start: never # options: [always|never|change] default: always
10-
11-
compiler:
12-
- gcc
13-
14-
env:
15-
- TARGET_BOX=LINUX64 BTYPE="BINARY=64"
16-
- TARGET_BOX=LINUX64 BTYPE="BINARY=64 USE_OPENMP=1"
17-
- TARGET_BOX=LINUX64 BTYPE="BINARY=64 INTERFACE64=1"
18-
- TARGET_BOX=LINUX32 BTYPE="BINARY=32"
19-
- TARGET_BOX=WIN64 BTYPE="BINARY=64 HOSTCC=gcc CC=x86_64-w64-mingw32-gcc FC=x86_64-w64-mingw32-gfortran"
20-
21-
before_install:
22-
- sudo apt-get update -qq
23-
- sudo apt-get install -qq gfortran
24-
- if [[ "$TARGET_BOX" == "WIN64" ]]; then sudo apt-get install -qq binutils-mingw-w64-x86-64 gcc-mingw-w64-x86-64 gfortran-mingw-w64-x86-64; fi
25-
- if [[ "$TARGET_BOX" == "LINUX32" ]]; then sudo apt-get install -qq gcc-multilib gfortran-multilib; fi
26-
27-
script:
28-
- set -e
29-
- make QUIET_MAKE=1 DYNAMIC_ARCH=1 TARGET=NEHALEM NUM_THREADS=32 $BTYPE
30-
- if [ "$TARGET_BOX" == "LINUX32" ] || [ "$TARGET_BOX" == "LINUX64" ]; then make -C test DYNAMIC_ARCH=1 TARGET=NEHALEM NUM_THREADS=32 $BTYPE; fi
31-
- if [ "$TARGET_BOX" == "LINUX32" ] || [ "$TARGET_BOX" == "LINUX64" ]; then make -C ctest DYNAMIC_ARCH=1 TARGET=NEHALEM NUM_THREADS=32 $BTYPE; fi
32-
- if [ "$TARGET_BOX" == "LINUX32" ] || [ "$TARGET_BOX" == "LINUX64" ]; then make -C utest DYNAMIC_ARCH=1 TARGET=NEHALEM NUM_THREADS=32 $BTYPE; fi
33-
34-
# whitelist
35-
branches:
36-
only:
37-
- master
38-
- develop

0 commit comments

Comments
 (0)