Skip to content

Commit d549043

Browse files
committed
Fixes #101: Put Travis-CI code in shell scripts
- `after_script` section needs some updating, and install script tests should only install cmake etc if they have changed, but this can be fixed later
1 parent 61a1cd4 commit d549043

File tree

8 files changed

+123
-64
lines changed

8 files changed

+123
-64
lines changed

.travis.yml

Lines changed: 6 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,16 @@ env:
1313
- MPICH_GCC7_BOT_URL_HEAD="https://github.com/sourceryinstitute/OpenCoarrays/files/976779/"
1414
- MPICH_BOT_URL_TAIL="mpich-3.2_3.yosemite.bottle.1.tar.gz"
1515
- BUILD_TYPES="Release Debug RelWithDebInfo CodeCoverage"
16-
matrix: # shellcheck installed manually below for macOS
17-
- GCC=6 OSX_PACKAGES="gcc@6 cmake"
18-
- GCC=7 OSX_PACKAGES="gcc cmake"
16+
matrix:
17+
- GCC="6 7" OSX_PACKAGES="shellcheck gcc gcc@6 cmake"
1918

2019
matrix:
2120
fast_finish: true
2221
include:
2322
- os: osx
2423
env:
2524
- BUILD_TYPE="InstallScript"
26-
OSX_PACKAGES="gcc@6"
25+
OSX_PACKAGES="shellcheck gcc@6"
2726
GCC=6
2827
- &ubuntu
2928
os: linux
@@ -44,8 +43,6 @@ matrix:
4443
- gcc-6
4544
- gfortran-6
4645
- g++-6
47-
- binutils
48-
- cmake-data
4946
- cmake
5047
-
5148
<<: *ubuntu
@@ -58,8 +55,6 @@ matrix:
5855
- gcc-7
5956
- gfortran-7
6057
- g++-7
61-
- binutils
62-
- cmake-data
6358
- cmake
6459
-
6560
<<: *ubuntu
@@ -87,37 +82,8 @@ matrix:
8782
- *linux_allowed_failure
8883

8984
before_install:
90-
- export FC=gfortran-${GCC}
91-
- export CC=gcc-${GCC}
92-
- export CXX=g++-${GCC}
93-
- export MPICH_BOT_URL_HEAD=MPICH_GCC${GCC}_BOT_URL_HEAD
94-
- |
95-
if [[ (-n ${TRAVIS_TAG}) && (${TRAVIS_OS_NAME} == osx) ]] && ${TRAVIS_SECURE_ENV_VARS} ; then
96-
brew update > /dev/null
97-
brew ls --versions gpg2 >/dev/null || brew install gpg2
98-
brew outdated gpg2 || brew upgrade gpg2
99-
type -P openssl || brew install openssl
100-
fi
101-
if ! [[ "${TRAVIS_TAG}" ]] || ! ${TRAVIS_SECURE_ENV_VARS} ; then
102-
unset encrypted_ef4535c39461_key || true
103-
unset encrypted_ef4535c39461_iv || true
104-
rm subkey-328B3A0E-secret.asc{,.enc} || true
105-
106-
fi
107-
if [[ "${TRAVIS_TAG}" ]] ; then
108-
curl https://izaakbeekman.com/izaak.pubkey.txt | gpg --import
109-
git tag -v ${TRAVIS_TAG}
110-
fi
111-
- |
112-
if [[ (-n ${TRAVIS}) && (${TRAVIS_OS_NAME} == osx) ]]; then
113-
export PATH="${PATH}:${HOME}/Library/Python/2.7/bin"
114-
else
115-
[[ -d "${CACHE}/bin" ]] || mkdir -p "${CACHE}/bin"
116-
export PATH="${CACHE}/bin:${PATH}"
117-
${FC} --version
118-
${CC} --version
119-
${CXX} --version
120-
fi
85+
- source developer-scripts/travis/before_install.all.sh
86+
- developer-scripts/travis/before_install.${TRAVIS_OS_NAME}.sh
12187

12288
install:
12389
- pwd
@@ -129,8 +95,7 @@ script:
12995

13096
after_script:
13197
- find . -name '*.gcno' -print
132-
- gcov-${GCC} --version
133-
- bash <(curl -s https://codecov.io/bash) -x $(type -P gcov-${GCC})
98+
- for version in ${GCC}; do bash <(curl -s https://codecov.io/bash) -x $(type -P gcov-${GCC}) ; done
13499
- |
135100
if [[ "${TRAVIS_TAG}" ]]; then
136101
if [[ "v${TRAVIS_TAG}" != "v$(sed -n '/[0-9]\{1,\}\(\.[0-9]\{1,\}\)\{1,\}/{s/^\([^.]*\)\([0-9]\{1,\}\(\.[0-9]\{1,\}\)\{1,\}\)\(.*\)/\2/p;q;}' .VERSION)" ]]; then
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/usr/bin/env bash
2+
if ! [[ "${TRAVIS_TAG}" ]] || ! ${TRAVIS_SECURE_ENV_VARS} ; then
3+
unset encrypted_ef4535c39461_key || true
4+
unset encrypted_ef4535c39461_iv || true
5+
rm subkey-328B3A0E-secret.asc{,.enc} || true
6+
else
7+
echo "Encrypted vars not unset"
8+
fi
9+
if [[ "${OS_TYPE}" == [Dd]arwin* ]]; then
10+
export PATH="${PATH}:${HOME}/Library/Python/2.7/bin"
11+
else
12+
export PATH="${CACHE}/bin:${PATH}"
13+
export FC=gfortran-${GCC}
14+
export CC=gcc-${GCC}
15+
export CXX=g++-${GCC}
16+
fi
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/usr/bin/env bash
2+
3+
set -o errexit
4+
set -o verbose
5+
set -o pipefail
6+
set -o nounset
7+
set -o errtrace
8+
9+
__file=developer-scripts/travis/install.linux.sh
10+
11+
# Error tracing
12+
# requires `set -o errtrace`
13+
__caf_err_report() {
14+
error_code=${?}
15+
local error_code
16+
echo "Error (code=${error_code}) in ${__file} in function ${1} on line ${2}." >&2
17+
false
18+
return ${error_code}
19+
}
20+
# Always provide an error backtrace
21+
trap '__caf_err_report "${FUNCNAME:-.}" ${LINENO}' ERR
22+
23+
[[ -d "${CACHE}/bin" ]] || mkdir -p "${CACHE}/bin"
24+
${FC} --version
25+
${CC} --version
26+
${CXX} --version
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/usr/bin/env bash
2+
3+
set -o errexit
4+
set -o verbose
5+
set -o pipefail
6+
set -o nounset
7+
set -o errtrace
8+
9+
__file=developer-scripts/travis/install.linux.sh
10+
11+
# Error tracing
12+
# requires `set -o errtrace`
13+
__caf_err_report() {
14+
error_code=${?}
15+
local error_code
16+
echo "Error (code=${error_code}) in ${__file} in function ${1} on line ${2}." >&2
17+
false
18+
return ${error_code}
19+
}
20+
# Always provide an error backtrace
21+
trap '__caf_err_report "${FUNCNAME:-.}" ${LINENO}' ERR
22+
23+
if [[ -n "${TRAVIS_TAG}" ]] && ${TRAVIS_SECURE_ENV_VARS} ; then
24+
brew update > /dev/null
25+
brew ls --versions gpg2 >/dev/null || brew install gpg2
26+
brew outdated gpg2 || brew upgrade gpg2
27+
type -P openssl || brew install openssl
28+
curl https://izaakbeekman.com/izaak.pubkey.txt | gpg --import
29+
git tag -v "${TRAVIS_TAG}"
30+
fi
31+
gfortran --version
32+
gcc --version
33+
g++ --version

developer-scripts/travis/install.linux.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ if [[ "${BUILD_TYPE:-}" != InstallScript ]]; then # Ubuntu on Travis-CI, NOT tes
2828
# could use prerequisites/build instead...
2929
wget "${MPICH_URL_HEAD}/${MPICH_URL_TAIL}"
3030
tar -xzvf "${MPICH_URL_TAIL}"
31+
export CC=gcc-${GCC}
32+
export FC=gfortran-${GCC}
3133
(
3234
cd "${MPICH_URL_TAIL%.tar.gz}"
3335
./configure --prefix="${CACHE}"

developer-scripts/travis/install.osx.sh

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,20 +25,17 @@ echo "Performing Travis-CI installation phase on macOS..."
2525
# Update and install via Homebrew on macOS
2626
brew update > /dev/null
2727

28-
brew ls --versions shellcheck >/dev/null || brew install --force-bottle shellcheck
29-
brew outdated shellcheck || brew upgrade --force-bottle shellcheck
3028
for pkg in ${OSX_PACKAGES}; do
31-
brew ls --versions "${pkg}" >/dev/null || brew install "${pkg}" || brew link --overwrite "${pkg}"
32-
brew outdated "${pkg}" || brew upgrade "${pkg}"
29+
brew ls --versions "${pkg}" >/dev/null || brew install --force-bottle "${pkg}" || brew link --overwrite "${pkg}"
30+
brew outdated "${pkg}" || brew upgrade --force-bottle "${pkg}"
3331
done
32+
33+
# Uninstall mpich and openmpi so that we can install our own version
34+
brew uninstall --force --ignore-dependencies openmpi || true
35+
brew uninstall --force --ignore-dependencies mpich || true
36+
3437
if [[ "${BUILD_TYPE:-}" == InstallScript ]]; then # uninstall some stuff if present
3538
brew uninstall --force --ignore-dependencies cmake || true
36-
brew uninstall --force --ignore-dependencies mpich || true
37-
brew uninstall --force --ignore-dependencies openmpi || true
38-
else
39-
wget "${!MPICH_BOT_URL_HEAD}${MPICH_BOT_URL_TAIL}"
40-
brew install --force-bottle "${MPICH_BOT_URL_TAIL}"
41-
brew ls --versions mpich >/dev/null || brew install --force-bottle mpich
4239
fi
4340

4441
{

developer-scripts/travis/test-script.InstallScript.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ __caf_err_report() {
2121
trap '__caf_err_report "${FUNCNAME:-.}" ${LINENO}' ERR
2222

2323
echo "Performing Travis-CI script phase for the OpenCoarrays installation script..."
24-
24+
export FC=gfortran-${GCC}
25+
export CC=gcc-${GCC}
2526
./install.sh --yes-to-all -i "${HOME}/opencoarrays" -j 4 -f "$(type -P "${FC}")" -c "$(type -P "${CC}")" -C "$(type -P "${CXX}")"
2627
BUILD_LOC=(prerequisites/builds/opencoarrays/*/)
2728
BUILD_LOC_DIR="${BUILD_LOC[${#BUILD_LOC[@]}-1]}"

developer-scripts/travis/test-script.cmake.sh

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,36 @@ trap '__caf_err_report "${FUNCNAME:-.}" ${LINENO}' ERR
2323
echo "Performing Travis-CI script phase for the OpenCoarrays direct cmake build..."
2424

2525
mkdir cmake-build
26-
# shellcheck disable=SC2153
27-
for BUILD_TYPE in ${BUILD_TYPES}; do
28-
rm -rf cmake-build/* || true
29-
(
30-
cd cmake-build
31-
cmake -DCMAKE_INSTALL_PREFIX:PATH="${HOME}/OpenCoarrays" -DCMAKE_BUILD_TYPE="${BUILD_TYPE}" ..
32-
make -j 4
33-
ctest --output-on-failure --schedule-random --repeat-until-fail "${NREPEAT:-5}" --timeout "${TEST_TIMEOUT:-200}"
34-
make install
35-
make uninstall
36-
)
37-
done
3826

27+
for version in ${GCC}; do
28+
export FC=gfortran-${version}
29+
export CC=gcc-${version}
30+
${FC} --version
31+
${CC} --verions
32+
if [[ ${OS_TYPE} == [Dd]arwin* ]]; then
33+
# Ideally this stuff would be in the `install:` section
34+
# but puting it here simplifies the Travis code a lot
35+
MPICH_BOT_URL_HEAD=MPICH_GCC${version}_BOT_URL_HEAD
36+
brew uninstall --force --ignore-dependencies mpich || true
37+
wget "${!MPICH_BOT_URL_HEAD}${MPICH_BOT_URL_TAIL}"
38+
brew install --force-bottle "${MPICH_BOT_URL_TAIL}"
39+
brew ls --versions mpich >/dev/null || brew install --force-bottle mpich
40+
rm "${MPICH_BOT_URL_TAIL}"
41+
fi
42+
mpif90 --version && mpif90 -show
43+
mpicc --version && mpicc -show
44+
45+
# shellcheck disable=SC2153
46+
for BUILD_TYPE in ${BUILD_TYPES}; do
47+
rm -rf cmake-build/* || true
48+
(
49+
cd cmake-build
50+
cmake -DCMAKE_INSTALL_PREFIX:PATH="${HOME}/OpenCoarrays" -DCMAKE_BUILD_TYPE="${BUILD_TYPE}" ..
51+
make -j 4
52+
ctest --output-on-failure --schedule-random --repeat-until-fail "${NREPEAT:-5}" --timeout "${TEST_TIMEOUT:-200}"
53+
make install
54+
make uninstall
55+
)
56+
done
57+
done
3958
echo "Done."

0 commit comments

Comments
 (0)