Skip to content

Commit 5d9f787

Browse files
committed
Expand build matrix to test install.sh
An additional Mac OS X and Linux case is added to use install.sh to perform the installation. GCC cannot be built from source because Travis-CI will time out, but it may be possible to build CMake, MPICH and any other dependencies that are missing. Due to the fact that the install script is rather verbose, and logs longer than 4 MB are assumed to be erroring, the output of `install.sh` is written to a file, and a status message is printed every 5 minutes while install.sh is running. Upon success and failure, install.log is printed to stdout. One might have to "download log" due to truncation to view this.
1 parent 7579921 commit 5d9f787

File tree

1 file changed

+79
-41
lines changed

1 file changed

+79
-41
lines changed

.travis.yml

Lines changed: 79 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,28 @@ env:
99
- MPICH_DIR="$HOME/.local/usr/mpich"
1010
- MPICH_BOT_URL_HEAD="https://github.com/sourceryinstitute/opencoarrays/files/64308/"
1111
- MPICH_BOT_URL_TAIL="mpich-3.2.yosemite.bottle.1.tar.gz"
12-
- OSX_PACKAGES="gcc cmake"
1312

1413
matrix:
1514
include:
1615
- os: osx
1716
env:
1817
- BUILD_TYPE="CodeCoverage"
18+
OSX_PACKAGES="gcc cmake"
1919
- os: osx
2020
env:
2121
- BUILD_TYPE="Release"
22+
OSX_PACKAGES="gcc cmake"
23+
- os: osx
24+
env:
25+
- BUILD_TYPE="InstallScript"
26+
OSX_PACKAGES="gcc"
2227
- os: linux
2328
sudo: false
2429
env:
2530
- BUILD_TYPE="CodeCoverage"
2631
cache:
2732
directories:
2833
- "$CACHE"
29-
- "$HOME/.cache/pip"
3034
addons:
3135
apt:
3236
sources:
@@ -45,7 +49,6 @@ matrix:
4549
cache:
4650
directories:
4751
- "$CACHE"
48-
- "$HOME/.cache/pip"
4952
addons:
5053
apt:
5154
sources:
@@ -57,6 +60,17 @@ matrix:
5760
- binutils
5861
- cmake-data
5962
- cmake
63+
- os: linux
64+
sudo: false
65+
env:
66+
- BUILD_TYPE="InstallScript"
67+
addons:
68+
apt:
69+
sources:
70+
- ubuntu-toolchain-r-test
71+
packages:
72+
- gcc-5
73+
- gfortran-5
6074

6175
before_install:
6276
- |
@@ -70,73 +84,97 @@ before_install:
7084
export CC=gcc-5
7185
$FC --version
7286
$CC --version
73-
cmake --version
7487
fi
7588
7689
install:
7790
- |
7891
if [[ $TRAVIS ]] && [[ "X$TRAVIS_OS_NAME" = "Xosx" ]]; then
79-
brew update > /dev/null
92+
brew update > /dev/null
8093
8194
for pkg in $OSX_PACKAGES; do
8295
[[ "$(brew ls --versions $pkg)" ]] || brew install --force-bottle $pkg
8396
brew outdated $pkg || brew upgrade --force-bottle $pkg
8497
done
8598
export FC=gfortran-5
8699
export CC=gcc-5
87-
if ! [[ "$(brew ls --versions mpich)" ]]; then
100+
if ! [[ "$(brew ls --versions mpich)" ]] && [[ "X$BUILD_TYPE" != "XInstallScript" ]]; then
88101
wget ${MPICH_BOT_URL_HEAD}${MPICH_BOT_URL_TAIL}
89102
brew install --force-bottle ${MPICH_BOT_URL_TAIL}
90103
if ! [[ "$(brew ls --versions mpich)" ]]; then
91104
brew install --force-bottle mpich
92105
fi
106+
mpif90 --version
107+
mpicc --version
108+
cmake --version
109+
export FC=mpif90
110+
export CC=mpicc
111+
elif [[ "X$BUILD_TYPE" = "XInstallScript" ]]; then # uninstall some stuff if present
112+
[[ "$(brew ls --versions cmake)" ]] && brew rm cmake || true
113+
[[ "$(brew ls --versions mpich)" ]] && brew rm mpich || true
114+
[[ "$(brew ls --versions openmpi)" ]] && brew rm openmpi || true
93115
fi
94-
else
116+
elif [[ "X$BUILD_TYPE" != "XInstallScript" ]]; then # Ubuntu on Travis-CI, NOT testing install.sh
95117
if ! ( [[ -x "$HOME/.local/bin/mpif90" ]] && [[ -x "$HOME/.local/bin/mpicc" ]] ); then
96118
# mpich install not cached
97-
if ( [[ $TRAVIS ]] && [[ "X$TRAVIS_BRANCH" == Xbranch-1.* ]] ); then
98-
install_prerequisites/build mpich "$MPICH_VER" "$MPICH_DIR" 4
99-
else
100-
# install_prerequisites/build is broken as of 2015.12.09 / 9d2edbb0 on master
101-
# argument parsing bug fixes haven't made it back into master yet...
102-
wget "${MPICH_URL_HEAD}/${MPICH_URL_TAIL}"
103-
mv "$MPICH_URL_TAIL" "$MPICH_DIR/.."
104-
pushd "$MPICH_DIR/.."
105-
tar -xzvf "$MPICH_URL_TAIL"
106-
cd "${MPICH_URL_TAIL%.tar.gz}"
107-
./configure --prefix="$MPICH_DIR"
108-
make -j 4
109-
make install
110-
popd
119+
# could use install_prerequisites/build instead...
120+
wget "${MPICH_URL_HEAD}/${MPICH_URL_TAIL}"
121+
mv "$MPICH_URL_TAIL" "$MPICH_DIR/.."
122+
pushd "$MPICH_DIR/.."
123+
tar -xzvf "$MPICH_URL_TAIL"
124+
cd "${MPICH_URL_TAIL%.tar.gz}"
125+
./configure --prefix="$MPICH_DIR"
126+
make -j 4
127+
make install
128+
popd
129+
for f in "$MPICH_DIR/bin/"*; do
130+
if [[ -x "$f" ]]; then
131+
ln -fs "$f" "$HOME/.local/bin/${f##*/}" && "${f##*/}" --version
111132
fi
112-
for f in "$MPICH_DIR/bin/"*; do
113-
if [[ -x "$f" ]]; then
114-
ln -fs "$f" "$HOME/.local/bin/${f##*/}" && "${f##*/}" --version
115-
fi
116-
done
117-
fi
133+
done
118134
fi
119-
120-
before_script:
121-
- mpif90 --version
122-
- export FC=mpif90
123-
- mpicc --version
124-
- export CC=mpicc
125-
- cmake --version
135+
mpif90 --version
136+
mpicc --version
137+
cmake --version
138+
export FC=mpif90
139+
export CC=mpicc
140+
fi
126141
127142
script:
128-
- mkdir cmake-build
129-
- cd cmake-build
130-
- cmake -DCMAKE_INSTALL_PREFIX:PATH="$HOME/OpenCoarrays" -DCMAKE_BUILD_TYPE="$BUILD_TYPE" ..
131-
- make -j 4
132-
- ctest --verbose
133-
- make install
134-
- cd ..
143+
- |
144+
if [[ "X$BUILD_TYPE" = "XInstallScript" ]]; then
145+
export FC=gfortran-5
146+
export CC=gcc-5
147+
[[ -d "$HOME/opt" ]] || mkdir "$HOME/opt"
148+
[[ -d "$HOME/bin" ]] || mkdir "$HOME/bin"
149+
ln -fs "$(which gfortran-5)" "$HOME/bin/gfortran"
150+
ln -fs "$(which gcc-5)" "$HOME/bin/gcc"
151+
ln -fs "$(which g++-5)" "$HOME/bin/g++"
152+
export PATH="$PATH:$HOME/bin"
153+
yes | ./install.sh $HOME/opt/opencoarrays 4 > install.log &
154+
install_sh_PID=$!
155+
echo "install.log will be displayed after success or failure"
156+
while ps -p $install_sh_PID > /dev/null; do
157+
echo "Still working on installing opencoarrays and dependencies"
158+
sleep 300 # prevent Travis-CI abort due to inactivity and excessive logging
159+
done
160+
else
161+
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 --verbose
166+
make install
167+
cd ..
168+
fi
135169
136170
after_success:
137171
- find . -name '*.gcno' -print
138172
- gcov-5 --version
139173
- bash <(curl -s https://codecov.io/bash) -x $(which gcov-5)
174+
- cat install.log || true
175+
176+
after_failure:
177+
- cat install.log || true
140178

141179
notifications:
142180
webhooks:

0 commit comments

Comments
 (0)