5d744e94c2
Fix sanitizer tests on buggy kernels Travis recently pushed an update to the Linux environments, namely the kernels that we're running on. This in turn caused some of the sanitizer tests we run to fail. We also apparently weren't the first to hit these failures! Detailed in google/sanitizers#837 these tests were failing due to a specific commit in the kernel which has since been backed out, but for now work around the buggy kernel that's deployed on Travis and eventually we should be able to remove these flags.
299 lines
10 KiB
YAML
299 lines
10 KiB
YAML
language: shell
|
|
sudo: required
|
|
dist: trusty
|
|
services:
|
|
- docker
|
|
|
|
git:
|
|
depth: 1
|
|
submodules: false
|
|
|
|
matrix:
|
|
fast_finish: true
|
|
include:
|
|
# Images used in testing PR and try-build should be run first.
|
|
- env: IMAGE=x86_64-gnu-llvm-3.7 ALLOW_PR=1 RUST_BACKTRACE=1
|
|
- env: IMAGE=dist-x86_64-linux DEPLOY=1 ALLOW_TRY=1
|
|
|
|
# "alternate" deployments, these are "nightlies" but don't have assertions
|
|
# turned on, they're deployed to a different location primarily for projects
|
|
# which are stuck on nightly and don't want llvm assertions in the artifacts
|
|
# that they use.
|
|
- env: IMAGE=dist-x86_64-linux DEPLOY_ALT=1
|
|
- env: >
|
|
RUST_CHECK_TARGET=dist
|
|
RUST_CONFIGURE_ARGS="--enable-extended --enable-profiler"
|
|
SRC=.
|
|
DEPLOY_ALT=1
|
|
RUSTC_RETRY_LINKER_ON_SEGFAULT=1
|
|
SCCACHE_ERROR_LOG=/tmp/sccache.log
|
|
MACOSX_DEPLOYMENT_TARGET=10.7
|
|
os: osx
|
|
osx_image: xcode7
|
|
|
|
# macOS builders. These are placed near the beginning because they are very
|
|
# slow to run.
|
|
|
|
# OSX builders running tests, these run the full test suite.
|
|
#
|
|
# Note that the compiler is compiled to target 10.8 here because the Xcode
|
|
# version that we're using, 8.2, cannot compile LLVM for OSX 10.7.
|
|
- env: >
|
|
RUST_CHECK_TARGET=check
|
|
RUST_CONFIGURE_ARGS="--build=x86_64-apple-darwin --enable-sanitizers --enable-profiler"
|
|
SRC=.
|
|
RUSTC_RETRY_LINKER_ON_SEGFAULT=1
|
|
SCCACHE_ERROR_LOG=/tmp/sccache.log
|
|
MACOSX_DEPLOYMENT_TARGET=10.8
|
|
MACOSX_STD_DEPLOYMENT_TARGET=10.7
|
|
os: osx
|
|
osx_image: xcode8.2
|
|
- env: >
|
|
RUST_CHECK_TARGET=check
|
|
RUST_CONFIGURE_ARGS=--build=i686-apple-darwin
|
|
SRC=.
|
|
RUSTC_RETRY_LINKER_ON_SEGFAULT=1
|
|
SCCACHE_ERROR_LOG=/tmp/sccache.log
|
|
MACOSX_DEPLOYMENT_TARGET=10.8
|
|
MACOSX_STD_DEPLOYMENT_TARGET=10.7
|
|
os: osx
|
|
osx_image: xcode8.2
|
|
|
|
# OSX builders producing releases. These do not run the full test suite and
|
|
# just produce a bunch of artifacts.
|
|
#
|
|
# Note that these are running in the `xcode7` image instead of the
|
|
# `xcode8.2` image as above. That's because we want to build releases for
|
|
# OSX 10.7 and `xcode7` is the latest Xcode able to compile LLVM for 10.7.
|
|
- env: >
|
|
RUST_CHECK_TARGET=dist
|
|
RUST_CONFIGURE_ARGS="--build=i686-apple-darwin --enable-extended --enable-profiler"
|
|
SRC=.
|
|
DEPLOY=1
|
|
RUSTC_RETRY_LINKER_ON_SEGFAULT=1
|
|
SCCACHE_ERROR_LOG=/tmp/sccache.log
|
|
MACOSX_DEPLOYMENT_TARGET=10.7
|
|
os: osx
|
|
osx_image: xcode7
|
|
- env: >
|
|
RUST_CHECK_TARGET=dist
|
|
RUST_CONFIGURE_ARGS="--target=aarch64-apple-ios,armv7-apple-ios,armv7s-apple-ios,i386-apple-ios,x86_64-apple-ios --enable-extended --enable-sanitizers --enable-profiler"
|
|
SRC=.
|
|
DEPLOY=1
|
|
RUSTC_RETRY_LINKER_ON_SEGFAULT=1
|
|
SCCACHE_ERROR_LOG=/tmp/sccache.log
|
|
MACOSX_DEPLOYMENT_TARGET=10.7
|
|
os: osx
|
|
osx_image: xcode7
|
|
|
|
# Linux builders, remaining docker images
|
|
- env: IMAGE=arm-android
|
|
- env: IMAGE=armhf-gnu
|
|
- env: IMAGE=cross DEPLOY=1
|
|
- env: IMAGE=dist-aarch64-linux DEPLOY=1
|
|
- env: IMAGE=dist-android DEPLOY=1
|
|
- env: IMAGE=dist-arm-linux DEPLOY=1
|
|
- env: IMAGE=dist-armhf-linux DEPLOY=1
|
|
- env: IMAGE=dist-armv7-linux DEPLOY=1
|
|
- env: IMAGE=dist-fuchsia DEPLOY=1
|
|
- env: IMAGE=dist-i586-gnu-i686-musl DEPLOY=1
|
|
- env: IMAGE=dist-i686-freebsd DEPLOY=1
|
|
- env: IMAGE=dist-i686-linux DEPLOY=1
|
|
- env: IMAGE=dist-mips-linux DEPLOY=1
|
|
- env: IMAGE=dist-mips64-linux DEPLOY=1
|
|
- env: IMAGE=dist-mips64el-linux DEPLOY=1
|
|
- env: IMAGE=dist-mipsel-linux DEPLOY=1
|
|
- env: IMAGE=dist-powerpc-linux DEPLOY=1
|
|
- env: IMAGE=dist-powerpc64-linux DEPLOY=1
|
|
- env: IMAGE=dist-powerpc64le-linux DEPLOY=1
|
|
- env: IMAGE=dist-s390x-linux DEPLOY=1
|
|
- env: IMAGE=dist-x86_64-freebsd DEPLOY=1
|
|
- env: IMAGE=dist-x86_64-musl DEPLOY=1
|
|
- env: IMAGE=dist-x86_64-netbsd DEPLOY=1
|
|
- env: IMAGE=asmjs
|
|
- env: IMAGE=i686-gnu
|
|
- env: IMAGE=i686-gnu-nopt
|
|
# - env: IMAGE=wasm32 issue 42646
|
|
- env: IMAGE=x86_64-gnu
|
|
- env: IMAGE=x86_64-gnu-full-bootstrap
|
|
- env: IMAGE=x86_64-gnu-aux
|
|
- env: IMAGE=x86_64-gnu-debug
|
|
- env: IMAGE=x86_64-gnu-nopt
|
|
- env: IMAGE=x86_64-gnu-distcheck
|
|
- env: IMAGE=x86_64-gnu-incremental
|
|
|
|
env:
|
|
global:
|
|
- SCCACHE_BUCKET=rust-lang-ci-sccache
|
|
- AWS_ACCESS_KEY_ID=AKIAJAMV3QAMMA6AXHFQ
|
|
# AWS_SECRET_ACCESS_KEY=...
|
|
- secure: "j96XxTVOSUf4s4r4htIxn/fvIa5DWbMgLqWl7r8z2QfgUwscmkMXAwXuFNc7s7bGTpV/+CgDiMFFM6BAFLGKutytIF6oA02s9b+usQYnM0th7YQ2AIgm9GtMTJCJp4AoyfFmh8F2faUICBZlfVLUJ34udHEe35vOklix+0k4WDo="
|
|
|
|
before_install:
|
|
# If we are building a pull request, do the build if $ALLOW_PR == 1
|
|
# Otherwise, do the build if we are on the auto branch, or the try branch and $ALLOW_TRY == 1
|
|
- >
|
|
if [[ "$TRAVIS_PULL_REQUEST" != "false" ]]; then
|
|
if [[ "$ALLOW_PR" == "1" ]]; then
|
|
export SKIP_BUILD=false;
|
|
else
|
|
export SKIP_BUILD=true;
|
|
fi;
|
|
elif [[ "$TRAVIS_BRANCH" == "auto" || ( "$ALLOW_TRY" == "1" && "$TRAVIS_BRANCH" == "try" ) ]]; then
|
|
export SKIP_BUILD=false;
|
|
else
|
|
export SKIP_BUILD=true;
|
|
fi
|
|
- >
|
|
if [[ "$SKIP_BUILD" == false ]]; then
|
|
zcat $HOME/docker/rust-ci.tar.gz | docker load || true
|
|
fi
|
|
- mkdir -p $HOME/rustsrc
|
|
|
|
install:
|
|
- >
|
|
if [[ "$SKIP_BUILD" == true ]]; then
|
|
echo echo skipping, not a full build > $HOME/stamp &&
|
|
chmod +x $HOME/stamp &&
|
|
export PATH=$PATH:$HOME;
|
|
else
|
|
case "$TRAVIS_OS_NAME" in
|
|
linux)
|
|
travis_retry curl -fo $HOME/stamp https://s3.amazonaws.com/rust-lang-ci/rust-ci-mirror/2017-03-17-stamp-x86_64-unknown-linux-musl &&
|
|
chmod +x $HOME/stamp &&
|
|
export PATH=$PATH:$HOME
|
|
;;
|
|
osx)
|
|
if [[ "$RUST_CHECK_TARGET" == dist ]]; then
|
|
travis_retry brew update &&
|
|
travis_retry brew install xz;
|
|
fi &&
|
|
travis_retry curl -fo /usr/local/bin/sccache https://s3.amazonaws.com/rust-lang-ci/rust-ci-mirror/2017-05-12-sccache-x86_64-apple-darwin &&
|
|
chmod +x /usr/local/bin/sccache &&
|
|
travis_retry curl -fo /usr/local/bin/stamp https://s3.amazonaws.com/rust-lang-ci/rust-ci-mirror/2017-03-17-stamp-x86_64-apple-darwin &&
|
|
chmod +x /usr/local/bin/stamp
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
before_script:
|
|
- >
|
|
echo "#### Disk usage before running script:";
|
|
df -h;
|
|
du . | sort -nr | head -n100
|
|
- >
|
|
RUN_SCRIPT="src/ci/init_repo.sh . $HOME/rustsrc";
|
|
if [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
|
export RUN_SCRIPT="$RUN_SCRIPT && src/ci/run.sh";
|
|
else
|
|
export RUN_SCRIPT="$RUN_SCRIPT && src/ci/docker/run.sh $IMAGE";
|
|
fi
|
|
|
|
# Log time information from this machine and an external machine for insight into possible
|
|
# clock drift. Timezones don't matter since relative deltas give all the necessary info.
|
|
script:
|
|
- >
|
|
date && (curl -fs --head https://google.com | grep ^Date: | sed 's/Date: //g' || true)
|
|
- stamp sh -x -c "$RUN_SCRIPT"
|
|
- >
|
|
date && (curl -fs --head https://google.com | grep ^Date: | sed 's/Date: //g' || true)
|
|
|
|
after_success:
|
|
- >
|
|
echo "#### Build successful; Disk usage after running script:";
|
|
df -h;
|
|
du . | sort -nr | head -n100
|
|
|
|
after_failure:
|
|
- >
|
|
echo "#### Build failed; Disk usage after running script:";
|
|
df -h;
|
|
du . | sort -nr | head -n100
|
|
|
|
# One of these is the linux sccache log, one is the OSX sccache log. Instead
|
|
# of worrying about what system we are just cat both. One of these commands
|
|
# will fail but that's ok, they'll both get executed.
|
|
- cat obj/tmp/sccache.log
|
|
- cat /tmp/sccache.log
|
|
|
|
# Random attempt at debugging currently. Just poking around in here to see if
|
|
# anything shows up.
|
|
- ls $HOME/Library/Logs/DiagnosticReports/
|
|
|
|
# attempt to debug anything killed by the oom killer on linux, just to see if
|
|
# it happened
|
|
- dmesg | grep -i kill
|
|
|
|
# Save tagged docker images we created and load them if they're available
|
|
# Travis saves caches whether the build failed or not, nuke rustsrc if
|
|
# the failure was while updating it (as it may be in a bad state)
|
|
# https://github.com/travis-ci/travis-ci/issues/4472
|
|
before_cache:
|
|
- docker history -q rust-ci |
|
|
grep -v missing |
|
|
xargs docker save |
|
|
gzip > $HOME/docker/rust-ci.tar.gz
|
|
|
|
notifications:
|
|
email: false
|
|
|
|
cache:
|
|
directories:
|
|
- $HOME/docker
|
|
|
|
before_deploy:
|
|
- mkdir -p deploy/$TRAVIS_COMMIT
|
|
- >
|
|
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
|
|
rm -rf build/dist/doc &&
|
|
cp -r build/dist/* deploy/$TRAVIS_COMMIT;
|
|
else
|
|
rm -rf obj/build/dist/doc &&
|
|
cp -r obj/build/dist/* deploy/$TRAVIS_COMMIT;
|
|
fi
|
|
|
|
deploy:
|
|
- provider: s3
|
|
bucket: rust-lang-ci
|
|
skip_cleanup: true
|
|
local_dir: deploy
|
|
upload_dir: rustc-builds
|
|
acl: public_read
|
|
region: us-east-1
|
|
access_key_id: AKIAJVBODR3IA4O72THQ
|
|
secret_access_key:
|
|
secure: "kUGd3t7JcVWFESgIlzvsM8viZgCA9Encs3creW0xLJaLSeI1iVjlJK4h/2/nO6y224AFrh/GUfsNr4/4AlxPuYb8OU5oC5Lv+Ff2JiRDYtuNpyQSKAQp+bRYytWMtrmhja91h118Mbm90cUfcLPwkdiINgJNTXhPKg5Cqu3VYn0="
|
|
on:
|
|
branch: auto
|
|
condition: $DEPLOY = 1
|
|
|
|
- provider: s3
|
|
bucket: rust-lang-ci
|
|
skip_cleanup: true
|
|
local_dir: deploy
|
|
upload_dir: rustc-builds-try
|
|
acl: public_read
|
|
region: us-east-1
|
|
access_key_id: AKIAJVBODR3IA4O72THQ
|
|
secret_access_key:
|
|
secure: "kUGd3t7JcVWFESgIlzvsM8viZgCA9Encs3creW0xLJaLSeI1iVjlJK4h/2/nO6y224AFrh/GUfsNr4/4AlxPuYb8OU5oC5Lv+Ff2JiRDYtuNpyQSKAQp+bRYytWMtrmhja91h118Mbm90cUfcLPwkdiINgJNTXhPKg5Cqu3VYn0="
|
|
on:
|
|
branch: try
|
|
condition: $DEPLOY = 1 && $ALLOW_TRY = 1
|
|
|
|
# this is the same as the above deployment provider except that it uploads to
|
|
# a slightly different directory and has a different trigger
|
|
- provider: s3
|
|
bucket: rust-lang-ci
|
|
skip_cleanup: true
|
|
local_dir: deploy
|
|
upload_dir: rustc-builds-alt
|
|
acl: public_read
|
|
region: us-east-1
|
|
access_key_id: AKIAJVBODR3IA4O72THQ
|
|
secret_access_key:
|
|
secure: "kUGd3t7JcVWFESgIlzvsM8viZgCA9Encs3creW0xLJaLSeI1iVjlJK4h/2/nO6y224AFrh/GUfsNr4/4AlxPuYb8OU5oC5Lv+Ff2JiRDYtuNpyQSKAQp+bRYytWMtrmhja91h118Mbm90cUfcLPwkdiINgJNTXhPKg5Cqu3VYn0="
|
|
on:
|
|
branch: auto
|
|
condition: $DEPLOY_ALT = 1
|