From fa64309aace2b782029ef599d20e8e0f1dd72a83 Mon Sep 17 00:00:00 2001
From: James <jselby@jselby.net>
Date: Fri, 4 Aug 2017 20:11:47 +1000
Subject: [PATCH] Travis: Use Docker to build for Linux

---
 .travis-build-docker.sh | 20 ++++++++++++++++++++
 .travis-build.sh        | 10 +---------
 .travis-deps.sh         | 30 +-----------------------------
 .travis.yml             | 16 ++++------------
 4 files changed, 26 insertions(+), 50 deletions(-)
 create mode 100644 .travis-build-docker.sh

diff --git a/.travis-build-docker.sh b/.travis-build-docker.sh
new file mode 100644
index 0000000000..ca6fae42b3
--- /dev/null
+++ b/.travis-build-docker.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+set -e
+set -x
+
+cd /citra
+
+apt-get update
+apt-get install -y build-essential libsdl2-dev qtbase5-dev libqt5opengl5-dev libcurl4-openssl-dev libssl-dev wget git
+
+# Get a recent version of CMake
+wget https://cmake.org/files/v3.9/cmake-3.9.0-Linux-x86_64.sh
+echo y | sh cmake-3.9.0-Linux-x86_64.sh --prefix=cmake
+export PATH=/citra/cmake/cmake-3.9.0-Linux-x86_64/bin:$PATH
+
+mkdir build && cd build
+cmake .. -DCMAKE_BUILD_TYPE=Release
+make -j4
+
+ctest -VV -C Release
diff --git a/.travis-build.sh b/.travis-build.sh
index df6e236b69..64f5aed946 100755
--- a/.travis-build.sh
+++ b/.travis-build.sh
@@ -44,15 +44,7 @@ fi
 
 #if OS is linux or is not set
 if [ "$TRAVIS_OS_NAME" = "linux" -o -z "$TRAVIS_OS_NAME" ]; then
-    export CC=gcc-6
-    export CXX=g++-6
-    export PKG_CONFIG_PATH=$HOME/.local/lib/pkgconfig:$PKG_CONFIG_PATH
-
-    mkdir build && cd build
-    cmake ..
-    make -j4
-
-    ctest -VV -C Release
+    docker run -v $(pwd):/citra ubuntu:16.04 /bin/bash /citra/.travis-build-docker.sh
 elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
     set -o pipefail
 
diff --git a/.travis-deps.sh b/.travis-deps.sh
index 25a287c7fc..0cee68041b 100755
--- a/.travis-deps.sh
+++ b/.travis-deps.sh
@@ -5,35 +5,7 @@ set -x
 
 #if OS is linux or is not set
 if [ "$TRAVIS_OS_NAME" = "linux" -o -z "$TRAVIS_OS_NAME" ]; then
-    export CC=gcc-6
-    export CXX=g++-6
-    mkdir -p $HOME/.local
-
-    if [ ! -e $HOME/.local/bin/cmake ]; then
-        echo "CMake not found in the cache, get and extract it..."
-        curl -L http://www.cmake.org/files/v3.6/cmake-3.6.3-Linux-x86_64.tar.gz \
-            | tar -xz -C $HOME/.local --strip-components=1
-    else
-        echo "Using cached CMake"
-    fi
-
-    if [ ! -e $HOME/.local/lib/libSDL2.la ]; then
-        echo "SDL2 not found in cache, get and build it..."
-        wget http://libsdl.org/release/SDL2-2.0.5.tar.gz -O - | tar xz
-        cd SDL2-2.0.5
-        ./configure --prefix=$HOME/.local
-        make -j4 && make install
-    else
-        echo "Using cached SDL2"
-    fi
-
-    export DEBIAN_FRONTEND=noninteractive
-    # Amazing placebo security
-    curl http://apt.llvm.org/llvm-snapshot.gpg.key | sudo -E apt-key add -
-    sudo -E add-apt-repository "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.9 main"
-    sudo -E apt-get -yq update
-    sudo -E apt-get -yq install clang-format-3.9
-
+    docker pull ubuntu:16.04
 elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
     brew update
     brew install qt5 sdl2 dylibbundler p7zip
diff --git a/.travis.yml b/.travis.yml
index 3da22eb5d6..b92d7f2362 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -8,23 +8,15 @@ matrix:
       sudo: false
       osx_image: xcode7.3
 
+services:
+  - docker
+
 addons:
   apt:
-    sources:
-      - ubuntu-toolchain-r-test
     packages:
-      - gcc-6
-      - g++-6
-      - qt5-default
-      - libqt5opengl5-dev
-      - xorg-dev
-      - lib32stdc++6 # For CMake
+      - clang-format-3.9
       - p7zip-full
 
-cache:
-  directories:
-    - "$HOME/.local"
-
 install: "./.travis-deps.sh"
 script: "./.travis-build.sh"
 after_success: "./.travis-upload.sh"