ci: Add .travis.yml for trusty

Build with gcc-5 (whatever the ubuntu toolchain ppa uses - currently
gcc-5.2), gcc-4.9 and clang-3.7.

Instead of adding everything into the yml file, I've split off most of
the work into a separate shell script. It's easier to maintain and
extend that way, and Travis CI also recommends to do it this way.
This commit is contained in:
Jonathan Li 2015-11-26 11:22:21 +00:00
parent d9591b819d
commit 332995096b
2 changed files with 102 additions and 0 deletions

23
.travis.yml Normal file
View File

@ -0,0 +1,23 @@
language: cpp
sudo: required
dist: trusty
matrix:
include:
# Version 5 seems to be whatever is latest - for now it's 5.2
- env: VERSION=5
compiler: gcc
os: linux
- env: VERSION=4.9
compiler: gcc
os: linux
- env: VERSION=3.7
compiler: clang
os: linux
before_install:
- ./travis.sh before_install
script:
- ./travis.sh script

79
travis.sh Executable file
View File

@ -0,0 +1,79 @@
#!/bin/sh
set -ex
linux_before_install() {
# Build worker is 64-bit only by default it seems.
sudo dpkg --add-architecture i386
# Compilers
if [ "${CXX}" = "clang++" ]; then
sudo apt-key adv --fetch-keys http://llvm.org/apt/llvm-snapshot.gpg.key
sudo add-apt-repository -y "deb http://llvm.org/apt/trusty/ llvm-toolchain-trusty-${VERSION} main"
# g++-4.8-multilib is necessary for compiler dependencies. Well, I think
# the specific dependency is probably lib32gcc-4.8-dev.
COMPILER_PACKAGE="clang-${VERSION} g++-4.8-multilib"
fi
if [ "${CXX}" = "g++" ]; then
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
COMPILER_PACKAGE="g++-${VERSION}-multilib"
fi
sudo apt-get -qq update
# The 64-bit versions of the first 7 dependencies are part of the initial
# build image. libgtk2.0-dev:i386 and libsdl2-dev:i386 require the 32-bit
# versions of the dependencies, and the 2 versions conflict. So those
# dependencies must be explicitly installed.
sudo apt-get -qq -y install \
gir1.2-freedesktop:i386 \
gir1.2-gdkpixbuf-2.0:i386 \
gir1.2-glib-2.0:i386 \
libcairo2-dev:i386 \
libgdk-pixbuf2.0-dev:i386 \
libgirepository-1.0-1:i386 \
libglib2.0-dev:i386 \
libaio-dev:i386 \
libasound2-dev:i386 \
libgl1-mesa-dev:i386 \
libgtk2.0-dev:i386 \
liblzma-dev:i386 \
libpng12-dev:i386 \
libsdl2-dev:i386 \
libsoundtouch-dev:i386 \
libwxgtk3.0-dev:i386 \
libxext-dev:i386 \
portaudio19-dev:i386 \
zlib1g-dev:i386 \
${COMPILER_PACKAGE}
# libpng++-dev is noarch but doesn't install nicely.
apt-get download libpng++-dev
sudo dpkg --force-all -i $(ls | grep 'libpng++-dev')
}
linux_script() {
mkdir build
cd build
export CC=${CC}-${VERSION} CXX=${CXX}-${VERSION}
cmake \
-DCMAKE_TOOLCHAIN_FILE=cmake/linux-compiler-i386-multilib.cmake \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_REPLAY_LOADERS=TRUE \
-DCMAKE_BUILD_PO=FALSE \
..
# Documentation says 1.5 cores, so 2 or 3 threads should work ok.
make -j3 install
}
# Just in case I do manual testing and accidentally insert "rm -rf /"
case "${1}" in
before_install|script)
${TRAVIS_OS_NAME}_${1}
;;
*)
echo "Unknown command" && false
;;
esac