cling/.travis.yml

375 lines
10 KiB
YAML
Raw Normal View History

2016-08-03 15:16:39 +03:00
sudo: false
language: cpp
2016-08-03 15:16:39 +03:00
addons: &addons
apt:
packages: timeout
sources: &sources
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.5
- llvm-toolchain-precise-3.6
- llvm-toolchain-precise-3.7
- llvm-toolchain-precise-3.8
- llvm-toolchain-precise
2016-08-03 15:16:39 +03:00
cache:
2016-08-08 16:05:50 +03:00
apt: true
2016-08-03 15:16:39 +03:00
ccache: true
directories:
- $HOME/.ccache
- $CLING_BUILD_DEPS
env:
global:
- USE_CCACHE=1
- CCACHE_COMPRESS=1
- CCACHE_MAXSIZE=500M
- CCACHE_CPP2=1
2016-08-05 10:54:08 +03:00
- TIMEOUT=0
2017-06-22 22:01:43 +03:00
- secure: "MWXnhg939UrLRP7Jg5xLFxxquIgale0crNyP9Y2L2Pg+zINTgSExyykP/+s4uV1mj44uYLr4oEU7Ue72w3yGptanau90BUO+ZN5clC7QEUWsfJUDBc/ytilp+xhNRNLA+MJvaYLNOyXJOf9JKf/IzgRAR0m0PGAl9pMRG2vP5Sg="
2016-08-03 15:16:39 +03:00
2016-08-05 12:04:34 +03:00
# Do not build our sync branch.
branches:
except:
- /^__internal.*$/
only:
- master
- cling-nightlies
2016-08-05 12:04:34 +03:00
matrix:
2016-08-03 15:16:39 +03:00
# Abort all builds on a single failing matrix entry.
fast_finish: true
exclude:
# Note: Workaround travis-ci/travis-ci#4681
# Exclude default job which lacks our included environment variables.
- os: osx
- os: linux
include:
# There seems to be a hard limit to how many machines a Travis build will
# across all platforms. By interleaving OS X, the hope is to get in the
# queue faster while not blocking Linux builds from occuring.
- os: linux
2017-06-23 10:00:57 +03:00
env: DIST=pangolin COMPILER=g++-4.8 CCOMPILER=gcc-4.8 NIGHTLY_CRON_SYNC=1
addons:
apt:
sources: *sources
packages: g++-4.8
compiler: gcc-4.8
2016-08-03 15:16:39 +03:00
- os: linux
env: DIST=pangolin COMPILER=g++-4.9 CCOMPILER=gcc-4.9
addons:
2016-08-03 15:16:39 +03:00
apt:
sources: *sources
packages: g++-4.9
compiler: gcc-4.9
2016-08-03 15:16:39 +03:00
- os: osx
env: COMPILER=clang++ CCOMPILER=clang
osx_image: xcode6.4
compiler: clang
- os: linux
env: DIST=pangolin COMPILER=g++-5 CCOMPILER=gcc-5
addons:
apt:
sources: *sources
packages: g++-5
compiler: gcc-5
2016-08-03 15:16:39 +03:00
- os: linux
env: DIST=pangolin COMPILER=g++-6 CCOMPILER=gcc-6
addons:
apt:
sources: *sources
packages: g++-6
compiler: gcc-6
- os: osx
env: COMPILER=clang++ CCOMPILER=clang
osx_image: xcode7.3
compiler: clang
- os: linux
env: DIST=trusty COMPILER=g++-4.8 CCOMPILER=gcc-4.8
sudo: required
dist: trusty
addons:
apt:
sources: *sources
packages: g++-4.8
compiler: gcc-4.8
- os: linux
env: DIST=trusty COMPILER=g++-4.9 CCOMPILER=gcc-4.9
sudo: required
dist: trusty
addons:
2016-08-03 15:16:39 +03:00
apt:
sources: *sources
packages: g++-4.9
compiler: gcc-4.9
2016-08-03 15:16:39 +03:00
- os: osx
env: COMPILER=g++-6 CCOMPILER=gcc-6
osx_image: xcode7.3
compiler: gcc-6
2016-08-03 15:16:39 +03:00
- os: linux
env: DIST=trusty COMPILER=g++-5 CCOMPILER=gcc-5
sudo: required
dist: trusty
2016-08-08 16:05:03 +03:00
addons:
apt:
sources: *sources
packages: g++-5
compiler: gcc-5
- os: linux
env: DIST=trusty COMPILER=g++-6 CCOMPILER=gcc-6
sudo: required
dist: trusty
addons:
apt:
sources: *sources
packages: g++-6
compiler: gcc-6
- os: osx
env: COMPILER=clang++ CCOMPILER=clang
osx_image: xcode8.3
compiler: clang
- os: linux
env: DIST=trusty COMPILER=g++-7 CCOMPILER=gcc-7
sudo: required
dist: trusty
addons:
apt:
sources: *sources
packages: g++-7
compiler: gcc-7
- os: linux
env: CXXLIB=libstdc++ COMPILER=clang++-3.7 CCOMPILER=clang-3.7
addons:
apt:
sources: *sources
packages: ['clang-3.7', 'libstdc++-5-dev']
compiler: clang-3.7
2016-08-03 15:16:39 +03:00
- os: osx
2017-06-09 20:49:29 +03:00
env: COMPILER=g++-7 CCOMPILER=gcc-7
osx_image: xcode8.3
compiler: gcc-7
- os: linux
env: CXXLIB=libstdc++ COMPILER=clang++-3.8 CCOMPILER=clang-3.8
addons:
apt:
sources: *sources
packages: ['clang-3.8', 'libstdc++-6-dev']
compiler: clang-3.8
2016-08-03 15:16:39 +03:00
allow_failures:
# clang-3.5 crashes compiling clang-3.9 with libc++-3.9
- env: CXXLIB=libc++ COMPILER=clang++-3.5 CCOMPILER=clang-3.5
2016-08-03 15:16:39 +03:00
install:
# If cmake is not in the cache, download it.
- |
CLING_USER_ROOT=`dirname $TRAVIS_BUILD_DIR`
export CLING_BUILD_DEPS="$CLING_USER_ROOT/deps"
export CLING_LOCAL_BIN="$CLING_USER_ROOT/bin"
if [ $TRAVIS_OS_NAME == 'osx' ]; then
brew install ccache python coreutils
2016-09-05 19:09:35 +03:00
if [[ "$COMPILER" == g++-* ]]; then
2017-05-31 21:25:07 +03:00
brew install "gcc@${COMPILER##*++-}"
2017-06-09 20:49:29 +03:00
brew link --overwrite "gcc@${COMPILER##*++-}"
if [[ "$COMPILER" == "g++-6" ]]; then
export CXXFLAGS="-D__builtin_unreachable=__builtin_trap"
export CFLAGS="-D__builtin_unreachable=__builtin_trap"
fi
2016-09-05 19:09:35 +03:00
fi
PATH="/usr/local/opt/ccache/libexec:$PATH"
# This is where timeout is hiding now, is the above still neccessary?
PATH="$PATH:/usr/local/opt/coreutils/libexec/gnubin"
fi
if [ "$COMPILER" == "g++-6" ]; then
export CLING_BUILD_FLAGS="-DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_STANDARD_REQUIRED=ON"
# On OS X force the test to reproduce __float128 issues with libstdc++.
if [ $TRAVIS_OS_NAME != 'osx' ]; then
export CLING_BUILD_FLAGS="$CLING_BUILD_FLAGS -DCXX_EXTENSIONS=OFF"
fi
CMAKEREQ="3.8"
else
CMAKEREQ="3.6"
fi
# Containers need to timeout before the buildscript exits
TIMEOUT='37m' # Any more and Travis might cancel
2016-08-03 15:16:39 +03:00
# If we timeout, objects can be corrupted in the cache, causing link errors
# Turn this on to get the mapping to the cache.o to delete
# export CCACHE_LOGFILE="$CLING_USER_ROOT/ccache.log"
2016-08-05 10:54:08 +03:00
# Get installed CMake version and make sure its at least CMAKEREQ
CMKV=( `cmake --version` )
CMKV=${CMKV[2]}
if [ "${CMKV:0:1}" -lt "${CMAKEREQ:0:1}" ] || [ "${CMKV:2:1}" -lt "${CMAKEREQ:2:1}" ]; then
if [ $TRAVIS_OS_NAME == 'linux' ]; then
CMAKE_URL="https://cmake.org/files/v${CMAKEREQ}/cmake-${CMAKEREQ}.0-Linux-x86_64.tar.gz"
export CMAKE=$CLING_BUILD_DEPS/cmake/bin/cmake
else
CMAKE_URL="https://cmake.org/files/v${CMAKEREQ}/cmake-${CMAKEREQ}.0-Darwin-x86_64.tar.gz"
export CMAKE=$CLING_BUILD_DEPS/cmake/CMake.app/Contents/bin/cmake
fi
if [ ! -f $CMAKE ]; then
mkdir -pv $CLING_BUILD_DEPS/cmake
travis_retry curl -k $CMAKE_URL | tar --strip-components=1 -xz -C $CLING_BUILD_DEPS/cmake
fi
else
export CMAKE="cmake"
fi
2016-08-03 15:16:39 +03:00
before_script:
- $CMAKE --version
- export CXX="ccache $COMPILER"
- export CC="ccache $CCOMPILER"
2016-09-22 17:02:38 +03:00
- |
# If we are running our nightly cron job, sync.
2016-09-24 16:16:35 +03:00
if [ -n "$NIGHTLY_CRON_SYNC" ] && [ "$TRAVIS_EVENT_TYPE" = "cron" ] \
2016-09-22 17:02:38 +03:00
&& [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] \
2016-09-23 18:15:51 +03:00
&& [ "$TRAVIS_REPO_SLUG" == "vgvassilev/cling" ] ; then
2017-07-05 11:40:55 +03:00
# Override the default travis clone command to enable sync.
cd ../../ && rm -fr ${TRAVIS_REPO_SLUG}
git clone https://$OAUTH_TOKEN@github.com/${TRAVIS_REPO_SLUG} ${TRAVIS_REPO_SLUG}
cd ${TRAVIS_REPO_SLUG}
2016-09-23 18:15:51 +03:00
echo "Syncing repository."
git remote add alt http://root.cern.ch/git/cling.git
2017-07-16 14:44:19 +03:00
git pull alt master
# Move the tag to newest master
2017-07-05 11:40:55 +03:00
git tag --force cling-nightlies master
# Push to origin
git push --verbose origin master
2016-10-14 12:34:08 +03:00
git push --verbose --force origin cling-nightlies
2017-07-05 11:40:55 +03:00
# Some debug output.
git remote -v && git branch -a
2016-09-22 17:02:38 +03:00
fi
script:
- |
if [ -z $TRAVIS_TAG ]; then
timeout -s SIGTERM $TIMEOUT tools/packaging/cpt.py \
--current-dev=tar \
--with-cling-url=https://github.com/$TRAVIS_REPO_SLUG \
--with-clang-url=http://root.cern.ch/git/clang.git \
--with-llvm-url=http://root.cern.ch/git/llvm.git \
--with-cmake-flags="$CLING_BUILD_FLAGS" \
--skip-cleanup
else
tools/packaging/cpt.py \
--tarball-tag=$([[ $TRAVIS_TAG = cling-nightlies ]] && echo "master" || echo "$TRAVIS_TAG") \
--with-cling-url=https://github.com/$TRAVIS_REPO_SLUG \
--with-clang-url=http://root.cern.ch/git/clang.git \
--with-llvm-url=http://root.cern.ch/git/llvm.git \
--with-cmake-flags="$CLING_BUILD_FLAGS"
fi
RESULT="$?"
echo "Build Result: $RESULT"
ccache -s
if [ $RESULT -ne 124 ]; then
return $RESULT
fi
2016-08-05 10:54:08 +03:00
# Timout occured, pass that on to after_failure so as not to dump logs
export CLING_BUILD_TIMEOUT=1
TRAVIS_TEST_RESULT=124
return $TRAVIS_TEST_RESULT
notifications:
email:
2016-08-08 12:26:04 +03:00
recipients:
#- cling-dev@cern.ch
on_success: change
on_failure: always
2016-08-08 12:26:04 +03:00
template:
- "%{repository}/%{branch} (%{commit} - %{author}): %{message}"
- "Build details: %{build_url}"
- "Change view : %{compare_url}"
before_deploy:
2016-08-08 11:19:23 +03:00
- |
export RELEASE_TARBALL=$(ls $HOME/ci/build/cling*.tar.bz2)
if [[ $TRAVIS_TAG -eq "cling-nightlies" ]]; then
2016-08-08 15:19:45 +03:00
NIGHTLY="`dirname $RELEASE_TARBALL`/`date "+%Y-%b-%d-"``basename $RELEASE_TARBALL`"
echo "Renaming $RELEASE_TARBALL to $NIGHTLY"
mv $RELEASE_TARBALL $NIGHTLY
export RELEASE_TARBALL=$NIGHTLY
2016-08-08 11:19:23 +03:00
fi
echo "Deploying $RELEASE_TARBALL to GitHub releases"
deploy:
provider: releases
skip_cleanup: true
api_key: $OAUTH_TOKEN
file: '${RELEASE_TARBALL}'
on:
tags: true
2016-09-25 13:48:54 +03:00
all_branches: true
repo: $TRAVIS_REPO_SLUG
2016-08-03 15:16:39 +03:00
after_failure:
- |
if [ -n "$CCACHE_LOGFILE" ]; then
echo "ccache log stored to:"
cat "$CCACHE_LOGFILE" | curl -sT - chunk.io
fi
2016-08-10 12:04:27 +03:00
- |
if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then
echo "Dumping env."
find $CLING_LOCAL_BIN -type f -print0 -exec cat {} \;
$CMAKE --version
$CC --version
$CXX --version
ls -al `which ld` && ld -v
export
fi
2016-08-03 15:16:39 +03:00
- |
if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then
echo "Dumping CMakeOutput.log"
cat /home/travis/ci/build/builddir/CMakeFiles/CMakeOutput.log
fi
2016-08-09 11:59:08 +03:00
- |
if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then
echo "Dumping CMakeError.log"
cat /home/travis/ci/build/builddir/CMakeFiles/CMakeError.log
fi
2016-08-09 11:59:08 +03:00
- |
if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then
echo "Dumping cling-compiledata.h..."
COMPILE_DATA_H=$HOME/ci/build/builddir/tools/cling/lib/Interpreter/cling-compiledata.h
cat $COMPILE_DATA_H
echo "Running cling-compiledata compiler..."
COMPDATA_CXX=$(cat $COMPILE_DATA_H | cut -c 18- | sed "s,\",,g")
eval echo | LC_ALL=C $COMPDATA_CXX -xc++ -E -v -
fi
2016-08-10 12:04:27 +03:00
- |
if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then
echo "Dumping `which ccache`"
ccache -s
ls -la /usr/lib/ccache/ || ls -la /usr/local/opt/ccache/libexec
fi