diff --git a/.travis.yml b/.travis.yml index cc93b1127c3a7..87197a37f1d49 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,7 @@ language: generic sudo: required -dist: trusty +services: + - docker # LLVM takes awhile to check out and otherwise we'll manage the submodules in # our configure script, so disable auto submodule management. @@ -8,15 +9,15 @@ git: submodules: false before_install: - - echo 0 | sudo tee /proc/sys/net/ipv6/conf/lo/disable_ipv6 - - echo 'deb http://llvm.org/apt/trusty/ llvm-toolchain-trusty-3.7 main' | sudo tee -a /etc/apt/sources.list - - echo 'deb-src http://llvm.org/apt/trusty/ llvm-toolchain-trusty-3.7 main' | sudo tee -a /etc/apt/sources.list - - sudo apt-get update - - sudo apt-get --force-yes install curl make g++ python2.7 git zlib1g-dev libedit-dev llvm-3.7-tools + - docker build -t rust -f src/etc/Dockerfile src/etc script: - - ./configure --llvm-root=/usr/lib/llvm-3.7 - - make tidy && make check-notidy -j4 + - docker run -v `pwd`:/build rust + sh -c " + ./configure --llvm-root=/usr/lib/llvm-3.7 && + make tidy && + make check-notidy -j4 + " # Real testing happens on http://buildbot.rust-lang.org/ # diff --git a/src/etc/Dockerfile b/src/etc/Dockerfile new file mode 100644 index 0000000000000..58fa1474444a1 --- /dev/null +++ b/src/etc/Dockerfile @@ -0,0 +1,25 @@ +FROM ubuntu:xenial + +# curl +# Download stage0, see src/bootstrap/bootstrap.py +# g++ +# Compile LLVM binding in src/rustllvm +# git +# Get commit hash and commit date in version string +# make +# Run build scripts in mk +# libedit-dev zlib1g-dev +# LLVM dependencies as packaged in Ubuntu +# (They are optional, but Ubuntu package enables them) +# llvm-3.7-dev (installed by llvm-3.7-tools) +# LLVM +# llvm-3.7-tools +# FileCheck is used to run tests in src/test/codegen + +RUN apt-get update && apt-get -y install \ + curl g++ git make \ + libedit-dev zlib1g-dev \ + llvm-3.7-tools + +RUN mkdir /build +WORKDIR /build