Skip to content

Commit 351dfb4

Browse files
committed
Try installing gcc-6 and 7 on Travis-CI
- Expand build matrix over GCC 6 & 7 instead of BUILD_TYPE, skipping 7 on Ubuntu due to not being in Travis-CI white-list (but only use 6 for install script) - Run all CMake build types in each GCC (6 or 7) instance but not install script instances - Make some style changes: always brace variables and use the new test command (`[[ ... ]]` instead of '[ ... ]`) and use `type -P` instead of `which`, and compress ifs with && operators inside double brackets
1 parent 6e9c419 commit 351dfb4

File tree

1 file changed

+109
-97
lines changed

1 file changed

+109
-97
lines changed

.travis.yml

Lines changed: 109 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,72 @@
1+
---
12
language: generic
23

3-
os:
4-
- osx
5-
- linux
6-
sudo: false
7-
cache:
8-
apt: false
9-
directories:
10-
- "$CACHE"
11-
addons:
12-
apt:
13-
sources:
14-
- ubuntu-toolchain-r-test
15-
- george-edison55-precise-backports
16-
packages:
17-
- gcc-6
18-
- gfortran-6
19-
- g++-6
20-
- binutils
21-
- cmake-data
22-
- cmake
4+
os: osx
235

246
env:
257
global:
26-
- CACHE="$HOME/.local"
8+
- CACHE="${HOME}/.local"
279
- MPICH_VER="3.2"
28-
- MPICH_URL_HEAD="http://www.mpich.org/static/downloads/$MPICH_VER"
10+
- MPICH_URL_HEAD="http://www.mpich.org/static/downloads/${MPICH_VER}"
2911
- MPICH_URL_TAIL="mpich-${MPICH_VER}.tar.gz"
30-
- MPICH_DIR="$HOME/.local/usr/mpich"
31-
- MPICH_BOT_URL_HEAD="https://github.com/sourceryinstitute/OpenCoarrays/files/979804/"
12+
- MPICH_DIR="${HOME}/.local/usr/mpich"
13+
- MPICH_GCC6_BOT_URL_HEAD="https://github.com/sourceryinstitute/OpenCoarrays/files/979804/"
14+
- MPICH_GCC7_BOT_URL_HEAD="https://github.com/sourceryinstitute/OpenCoarrays/files/976779/"
3215
- MPICH_BOT_URL_TAIL="mpich-3.2_3.yosemite.bottle.1.tar.gz"
33-
- FC=gfortran-6
34-
- CC=gcc-6
35-
- CXX=g++-6
16+
- BUILD_TYPES="Release Debug RelWithDebInfo CodeCoverage"
3617
matrix:
37-
- BUILD_TYPE="Release" OSX_PACKAGES="gcc@6 cmake"
38-
- BUILD_TYPE="CodeCoverage" OSX_PACKAGES="gcc@6 cmake"
18+
- GCC=6 OSX_PACKAGES="gcc@6 cmake"
19+
- GCC=7 OSX_PACKAGES="gcc cmake"
3920

4021
matrix:
4122
include:
4223
- os: osx
4324
env:
44-
- BUILD_TYPE="InstallScript"
45-
OSX_PACKAGES="gcc@6"
46-
- os: linux
25+
- BUILD_TYPE="InstallScript"
26+
OSX_PACKAGES="gcc@6"
27+
GCC=6
28+
- &ubuntu
29+
os: linux
4730
sudo: false
31+
env:
32+
- GCC=6
33+
cache:
34+
apt: false
35+
directories:
36+
- "$CACHE"
37+
addons:
38+
apt:
39+
sources:
40+
- ubuntu-toolchain-r-test
41+
- george-edison55-precise-backports
42+
packages:
43+
- gcc-6
44+
- gfortran-6
45+
- g++-6
46+
- binutils
47+
- cmake-data
48+
- cmake
49+
# -
50+
# <<: *ubuntu
51+
# env:
52+
# - GCC=7
53+
# addons:
54+
# apt:
55+
# sources:
56+
# - ubuntu-toolchain-r-test
57+
# - george-edison55-precise-backports
58+
# packages:
59+
# - gcc-7
60+
# - gfortran-7
61+
# - g++-7
62+
# - binutils
63+
# - cmake-data
64+
# - cmake
65+
-
66+
<<: *ubuntu
4867
env:
4968
- BUILD_TYPE="InstallScript"
69+
GCC=6
5070
cache: false
5171
addons:
5272
apt:
@@ -58,143 +78,135 @@ matrix:
5878
- g++-6
5979

6080
before_install:
81+
- export FC=gfortran-${GCC}
82+
- export CC=gcc-${GCC}
83+
- export CXX=g++-${GCC}
84+
- export MPICH_BOT_URL_HEAD=MPICH_GCC${GCC}_BOT_URL_HEAD
6185
- |
62-
set -o errexit
63-
if [[ "$TRAVIS_TAG" ]] && [[ "X$TRAVIS_OS_NAME" = "Xosx" ]] && $TRAVIS_SECURE_ENV_VARS ; then
86+
if [[ (-n ${TRAVIS_TAG}) && (${TRAVIS_OS_NAME} == osx) ]] && ${TRAVIS_SECURE_ENV_VARS} ; then
6487
brew update > /dev/null
6588
[[ "$(brew ls --versions gpg2)" ]] || brew install gpg2
6689
brew outdated gpg2 || brew upgrade gpg2
67-
which openssl || brew install openssl
90+
type -P openssl || brew install openssl
6891
fi
69-
if ! [[ "$TRAVIS_TAG" ]] || ! $TRAVIS_SECURE_ENV_VARS ; then
92+
if ! [[ "${TRAVIS_TAG}" ]] || ! ${TRAVIS_SECURE_ENV_VARS} ; then
7093
unset encrypted_ef4535c39461_key || true
7194
unset encrypted_ef4535c39461_iv || true
7295
rm subkey-328B3A0E-secret.asc{,.enc} || true
7396
7497
fi
75-
if [[ "$TRAVIS_TAG" ]] ; then
98+
if [[ "${TRAVIS_TAG}" ]] ; then
7699
curl https://izaakbeekman.com/izaak.pubkey.txt | gpg --import
77100
git tag -v ${TRAVIS_TAG}
78101
fi
79-
set +o errexit
80-
-
81-
-
82-
-
83102
- |
84-
set -o errexit
85-
if [[ $TRAVIS ]] && [[ "X$TRAVIS_OS_NAME" = "Xosx" ]]; then
86-
export PATH="$PATH:$HOME/Library/Python/2.7/bin"
103+
if [[ (-n ${TRAVIS}) && (${TRAVIS_OS_NAME} == osx) ]]; then
104+
export PATH="${PATH}:${HOME}/Library/Python/2.7/bin"
87105
else
88-
[[ -d "$CACHE/bin" ]] || mkdir -p "$CACHE/bin"
89-
[[ -d "$MPICH_DIR" ]] || mkdir -p "$MPICH_DIR"
90-
export PATH="$CACHE/bin:$PATH"
91-
$FC --version
92-
$CC --version
93-
$CXX --version
106+
[[ -d "${CACHE}/bin" ]] || mkdir -p "${CACHE}/bin"
107+
[[ -d "${MPICH_DIR}" ]] || mkdir -p "${MPICH_DIR}"
108+
export PATH="${CACHE}/bin:${PATH}"
109+
${FC} --version
110+
${CC} --version
111+
${CXX} --version
94112
fi
95-
set +o errexit
96113
97114
install:
98115
- |
99-
set -o errexit
100-
if [[ $TRAVIS ]] && [[ "X$TRAVIS_OS_NAME" = "Xosx" ]]; then
116+
if [[ (-n ${TRAVIS}) && (${TRAVIS_OS_NAME} == osx) ]]; then
101117
brew update > /dev/null
102118
103-
for pkg in $OSX_PACKAGES; do
104-
[[ "$(brew ls --versions $pkg)" ]] || brew install --force-bottle $pkg
105-
brew outdated $pkg || brew upgrade --force-bottle $pkg
119+
for pkg in ${OSX_PACKAGES}; do
120+
[[ "$(brew ls --versions ${pkg})" ]] || brew install --force-bottle ${pkg}
121+
brew outdated ${pkg} || brew upgrade --force-bottle ${pkg}
106122
done
107-
if ! [[ "$(brew ls --versions mpich)" ]] && [[ "X$BUILD_TYPE" != "XInstallScript" ]]; then
108-
wget ${MPICH_BOT_URL_HEAD}${MPICH_BOT_URL_TAIL}
123+
if [[ ${BUILD_TYPE} == InstallScript ]]; then # uninstall some stuff if present
124+
brew uninstall --force --ignore-dependencies cmake || true
125+
brew uninstall --force --ignore-dependencies mpich || true
126+
brew uninstall --force --ignore-dependencies openmpi || true
127+
else
128+
wget "${!MPICH_BOT_URL_HEAD}${MPICH_BOT_URL_TAIL}"
109129
brew install --force-bottle ${MPICH_BOT_URL_TAIL}
110130
if ! [[ "$(brew ls --versions mpich)" ]]; then
111131
brew install --force-bottle mpich
112132
fi
113-
mpif90 --version || mpif90 -show
114-
mpicc --version || mpicc -show
115-
cmake --version
116-
elif [[ "X$BUILD_TYPE" = "XInstallScript" ]]; then # uninstall some stuff if present
117-
[[ "$(brew ls --versions cmake)" ]] && brew rm cmake || true
118-
[[ "$(brew ls --versions mpich)" ]] && brew rm mpich || true
119-
[[ "$(brew ls --versions openmpi)" ]] && brew rm openmpi || true
120133
fi
121-
elif [[ "X$BUILD_TYPE" != "XInstallScript" ]]; then # Ubuntu on Travis-CI, NOT testing install.sh
122-
if ! ( [[ -x "$HOME/.local/bin/mpif90" ]] && [[ -x "$HOME/.local/bin/mpicc" ]] ); then
134+
mpif90 --version || mpif90 -show || true
135+
mpicc --version || mpicc -show || true
136+
cmake --version || true
137+
138+
elif [[ ${BUILD_TYPE} != InstallScript ]]; then # Ubuntu on Travis-CI, NOT testing install.sh
139+
if ! [[ -x "${HOME}/.local/bin/mpif90" && -x "${HOME}/.local/bin/mpicc" ]]; then
123140
# mpich install not cached
124141
# could use prerequisites/build instead...
125142
wget "${MPICH_URL_HEAD}/${MPICH_URL_TAIL}"
126-
mv "$MPICH_URL_TAIL" "$MPICH_DIR/.."
127-
pushd "$MPICH_DIR/.."
128-
tar -xzvf "$MPICH_URL_TAIL"
143+
mv "${MPICH_URL_TAIL}" "${MPICH_DIR}/.."
144+
pushd "${MPICH_DIR}/.."
145+
tar -xzvf "${MPICH_URL_TAIL}"
129146
cd "${MPICH_URL_TAIL%.tar.gz}"
130-
./configure --prefix="$MPICH_DIR"
147+
./configure --prefix="${MPICH_DIR}"
131148
make -j 4
132149
make install
133150
popd
134-
for f in "$MPICH_DIR/bin/"*; do
135-
if [[ -x "$f" ]]; then
136-
ln -fs "$f" "$HOME/.local/bin/${f##*/}"
151+
for f in "${MPICH_DIR}/bin/"*; do
152+
if [[ -x "${f}" ]]; then
153+
ln -fs "${f}" "${HOME}/.local/bin/${f##*/}"
137154
fi
138155
done
139156
fi
140157
mpif90 --version
141158
mpicc --version
142159
cmake --version
143160
fi
144-
set +o errexit
145161
146162
script:
147163
- |
148-
set -o errexit
149-
if [[ "X$BUILD_TYPE" = "XInstallScript" ]]; then
150-
[[ -d "$HOME/opt" ]] || mkdir "$HOME/opt"
151-
[[ -d "$HOME/bin" ]] || mkdir "$HOME/bin"
152-
ln -fs "$(which gfortran-6)" "$HOME/bin/gfortran"
153-
ln -fs "$(which ${CC})" "$HOME/bin/gcc"
154-
ln -fs "$(which ${CXX})" "$HOME/bin/g++"
155-
export PATH="$PATH:$HOME/bin"
156-
./install.sh --yes-to-all -i "$HOME/opt/opencoarrays" -j 4 -f "$HOME/bin/gfortran" -c "$HOME/bin/gcc" -C "$HOME/bin/g++"
164+
if [[ ${BUILD_TYPE} == InstallScript ]]; then
165+
./install.sh --yes-to-all -i "${HOME}/opencoarrays" -j 4 -f "$(type -P "${FC}")" -c "$(type -P "${CC}")" -C "$(type -P "${CXX}")"
157166
cd prerequisites/builds/opencoarrays/*
158167
../../../installations/cmake/*/bin/ctest --output-on-failure --schedule-random --repeat-until-fail 7
159168
cd -
160169
else
161170
mkdir cmake-build
162-
cd cmake-build
163-
cmake -DCMAKE_INSTALL_PREFIX:PATH="$HOME/OpenCoarrays" -DCMAKE_BUILD_TYPE="$BUILD_TYPE" ..
164-
make -j 4
165-
ctest --output-on-failure --schedule-random --repeat-until-fail 7
166-
make install
167-
cd ..
171+
for BUILD_TYPE in ${BUILD_TYPES}; do
172+
rm -rf cmake-build/* || true
173+
cd cmake-build
174+
cmake -DCMAKE_INSTALL_PREFIX:PATH="${HOME}/OpenCoarrays" -DCMAKE_BUILD_TYPE="${BUILD_TYPE}" ..
175+
make -j 4
176+
ctest --output-on-failure --schedule-random --repeat-until-fail 7
177+
make install
178+
make uninstall
179+
cd ..
180+
done
168181
fi
169-
set +o errexit
170182
171183
after_script:
172184
- |
173-
if [ "$TRAVIS_TAG" ]; then
174-
if [[ "v$TRAVIS_TAG" != "v$(sed -n 's/\([0-9]\{1,\}\(\.[0-9]\{1,\}\)\{1,\}\)/\1/p' .VERSION)" ]]; then
185+
if [[ "${TRAVIS_TAG}" ]]; then
186+
if [[ "v${TRAVIS_TAG}" != "v$(sed -n 's/\([0-9]\{1,\}\(\.[0-9]\{1,\}\)\{1,\}\)/\1/p' .VERSION)" ]]; then
175187
echo "ERROR: You are trying to tag a new release but have a version missmatch in \`.VERSION\`"
176188
false # throw an error
177189
fi
178190
fi
179191
180192
after_success:
181193
- find . -name '*.gcno' -print
182-
- gcov-6 --version
183-
- bash <(curl -s https://codecov.io/bash) -x $(which gcov-6)
194+
- gcov-${GCC} --version
195+
- bash <(curl -s https://codecov.io/bash) -x $(type -P gcov-${GCC})
184196

185197
# before_deploy:
186198
# - git archive -v --prefix "OpenCoarrays-${TRAVIS_TAG}/" -o "OpenCoarrays-${TRAVIS_TAG}.tar.gz" ${TRAVIS_TAG}
187199
# - |
188200
# echo '# To verify cryptographic checksums `shasum -c opencoarrays-'"${TRAVIS_TAG}"'-SHA256.txt` on Mac OS X,' > "opencoarrays-${TRAVIS_TAG}-SHA256.txt
189201
# echo '# `sha256sum -c opencoarrays-'"${TRAVIS_TAG}"'-SHA256.txt` on Linux.' >> "opencoarrays-${TRAVIS_TAG}-SHA256.txt
190-
# if [[ "X$(uname -s)" == "XDarwin" ]]; then
202+
# if [[ $(uname -s) == Darwin ]]; then
191203
# shasum -a 256 "OpenCoarrays-${TRAVIS_TAG}.tar.gz" >> "opencoarrays-${TRAVIS_TAG}-SHA256.txt
192204
# else
193205
# sha256sum "OpenCoarrays-${TRAVIS_TAG}.tar.gz" >> "opencoarrays-${TRAVIS_TAG}-SHA256.txt
194206
# fi
195207
# - |
196208
# set -o errexit
197-
# openssl aes-256-cbc -K $encrypted_ef4535c39461_key -iv $encrypted_ef4535c39461_iv -in subkey-328B3A0E-secret.asc.enc -out ./subkey-328B3A0E-secret.asc -d
209+
# openssl aes-256-cbc -K ${encrypted_ef4535c39461_key} -iv ${encrypted_ef4535c39461_iv} -in subkey-328B3A0E-secret.asc.enc -out ./subkey-328B3A0E-secret.asc -d
198210
# gpg --allow-secret-key-import --import ./subkey-328B3A0E-secret.asc && rm subkey-328B3A0E-secret.asc
199211
# rm subkey-328B3A0E-secret.* || true
200212
# unset encrypted_ef4535c39461_key || true

0 commit comments

Comments
 (0)