sudo: required
dist: trusty
language: c
-install:
- - ./tools/ci-install.sh
script:
+ - ./tools/ci-install.sh
# python-dbus and python-gi aren't available to Travis's version of
# Python in /opt, which it uses as a default
- PYTHON=/usr/bin/python ci_parallel=2 ci_sudo=yes ./tools/ci-build.sh
- ci_host=mingw
- ci_host=mingw ci_variant=debug
- ci_host=mingw ci_buildsys=cmake
+ - ci_docker=ubuntu:xenial ci_distro=ubuntu ci_suite=xenial
+ - ci_docker=debian:jessie-slim ci_distro=debian ci_suite=jessie
+ - ci_docker=debian:stretch-slim ci_distro=debian ci_suite=stretch
# vim:set sw=2 sts=2 et:
NULL=
: "${ci_buildsys:=autotools}"
+: "${ci_docker:=}"
: "${ci_host:=native}"
: "${ci_parallel:=1}"
: "${ci_sudo:=no}"
: "${ci_test_fatal:=yes}"
: "${ci_variant:=production}"
+if [ -n "$ci_docker" ]; then
+ exec docker run \
+ --env=ci_buildsys="${ci_buildsys}" \
+ --env=ci_docker="" \
+ --env=ci_host="${ci_host}" \
+ --env=ci_parallel="${ci_parallel}" \
+ --env=ci_sudo=yes \
+ --env=ci_test="${ci_test}" \
+ --env=ci_test_fatal="${ci_test_fatal}" \
+ --env=ci_variant="${ci_variant}" \
+ --privileged \
+ ci-image \
+ tools/ci-build.sh
+fi
+
maybe_fail_tests () {
if [ "$ci_test_fatal" = yes ]; then
exit 1
NULL=
: "${ci_distro:=ubuntu}"
+: "${ci_docker:=}"
: "${ci_host:=native}"
+: "${ci_in_docker:=}"
: "${ci_suite:=trusty}"
if [ $(id -u) = 0 ]; then
sudo=sudo
fi
+if [ -n "$ci_docker" ]; then
+ sed \
+ -e "s/@ci_distro@/${ci_distro}/" \
+ -e "s/@ci_docker@/${ci_docker}/" \
+ -e "s/@ci_suite@/${ci_suite}/" \
+ < tools/ci-Dockerfile.in > Dockerfile
+ exec docker build -t ci-image .
+fi
+
case "$ci_distro" in
(debian|ubuntu)
+ # Don't ask questions, just do it
+ sudo="$sudo env DEBIAN_FRONTEND=noninteractive"
+
+ # Debian Docker images use httpredir.debian.org but it seems to be
+ # unreliable; use a CDN instead
+ $sudo sed -i -e 's/httpredir\.debian\.org/deb.debian.org/g' \
+ /etc/apt/sources.list
+
# travis-ci has a sources list for Chrome which doesn't support i386
: | $sudo tee /etc/apt/sources.list.d/google-chrome.list
${NULL}
fi
- $sudo apt-get -qq -y build-dep dbus
-
$sudo apt-get -qq -y install \
+ autoconf-archive \
automake \
autotools-dev \
debhelper \
dh-autoreconf \
+ dh-exec \
doxygen \
dpkg-dev \
gnome-desktop-testing \
python-dbus \
python-gi \
valgrind \
+ wget \
xauth \
xmlto \
xsltproc \
xvfb \
${NULL}
+ case "$ci_suite" in
+ (trusty)
+ $sudo apt-get -qq -y install libsystemd-daemon-dev
+ ;;
+ (*)
+ $sudo apt-get -qq -y install libsystemd-dev
+ ;;
+ esac
+
+ if [ -n "$ci_in_docker" ]; then
+ # Add the user that we will use to do the build inside the
+ # Docker container, and let them use sudo
+ adduser --disabled-password user </dev/null
+ apt-get -y install sudo
+ echo "user ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/nopasswd
+ chmod 0440 /etc/sudoers.d/nopasswd
+ fi
+
case "$ci_suite" in
(trusty|jessie)
# Ubuntu 14.04's autoconf-archive is too old