From f07285862fca93834c2f380771b86d8fe3a1d9a2 Mon Sep 17 00:00:00 2001 From: Martin Pitt Date: Wed, 28 Aug 2019 11:22:39 +0200 Subject: [PATCH] Run Ubuntu tests in container This simplifies them a lot and makes them more consistent with the Alpine/CentOS tests. --- .travis.yml | 10 ++--- tests/run-ubuntu | 56 ++++++++++++++++++++++++++ tests/run-ubuntu-chroot | 87 ----------------------------------------- 3 files changed, 61 insertions(+), 92 deletions(-) create mode 100755 tests/run-ubuntu delete mode 100755 tests/run-ubuntu-chroot diff --git a/.travis.yml b/.travis.yml index 2737db69..01fb688d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,10 +4,10 @@ sudo: true services: - docker env: -- TEST=tests/run-ubuntu-chroot RELEASE= -- TEST=tests/run-ubuntu-chroot RELEASE=bionic -- TEST=tests/run-ubuntu-chroot RELEASE=bionic ARCH=i386 -- TEST=tests/run-ubuntu-chroot RELEASE=xenial +- TEST=tests/run-ubuntu RELEASE=devel +- TEST=tests/run-ubuntu RELEASE=rolling +- TEST=tests/run-ubuntu RELEASE=latest +- TEST=tests/run-ubuntu RELEASE=latest ARCH=i386 - TEST=tests/run-alpine RELEASE=latest - TEST=tests/run-centos RELEASE=7 script: $TEST @@ -22,4 +22,4 @@ deploy: skip_cleanup: true on: tags: true - condition: -z "$RELEASE" + condition: "$RELEASE = latest" diff --git a/tests/run-ubuntu b/tests/run-ubuntu new file mode 100755 index 00000000..35ee879a --- /dev/null +++ b/tests/run-ubuntu @@ -0,0 +1,56 @@ +#!/bin/sh +set -eu + +# keep container around if $DEBUG is set +[ -n "${DEBUG:-}" ] || OPTS="--rm" + +if type podman >/dev/null 2>&1; then + RUNC=podman +else + RUNC="sudo docker" +fi + +$RUNC run --interactive ${OPTS:-} --volume `pwd`:/source ${ARCH:-amd64}/ubuntu:${RELEASE:-rolling} /bin/sh << EOF +set -ex + +# go-faster apt +echo 'Acquire::Languages "none";' > /etc/apt/apt.conf.d/90nolanguages + +# upgrade +export DEBIAN_FRONTEND=noninteractive +apt-get update +apt-get install -y eatmydata +eatmydata apt-get -y --purge dist-upgrade + +# install build dependencies +eatmydata apt-get install -y --no-install-recommends pkg-config dh-autoreconf autoconf-archive valac libglib2.0-dev libudev-dev libgudev-1.0-dev python3-gi gobject-introspection libgirepository1.0-dev gir1.2-glib-2.0 gir1.2-gudev-1.0 gtk-doc-tools udev xserver-xorg-video-dummy xserver-xorg-input-evdev xserver-xorg-input-synaptics xinput usbutils gphoto2 valgrind + +# run build as user +useradd build +su -s /bin/sh - build << EOG +set -ex +cp -r /source /tmp +cd /tmp/source +./autogen.sh --prefix=/usr +make -j$(nproc) +make check-valgrind +make -j$(nproc) distcheck +EOG + +# install and run check-installed +make -C /tmp/source install +ldconfig +su -c 'make -C /tmp/source check-installed' - build + +# check build without assertions +su - build < /etc/apt/sources.list -deb http://archive.ubuntu.com/ubuntu ${RELEASE} main universe -deb http://archive.ubuntu.com/ubuntu ${RELEASE}-updates main universe -EOU -if [ -n "${PROPOSED:-}" ]; then - echo "deb http://archive.ubuntu.com/ubuntu ${RELEASE}-proposed main universe" >> /etc/apt/sources.list -fi -apt-get update -$UPGRADE -apt-get install -y pkg-config dh-autoreconf autoconf-archive valac libglib2.0-dev libudev-dev libgudev-1.0-dev python3-gi gobject-introspection libgirepository1.0-dev gir1.2-glib-2.0 gir1.2-gudev-1.0 gtk-doc-tools udev xserver-xorg-video-dummy xserver-xorg-input-evdev xserver-xorg-input-synaptics xinput usbutils gphoto2 valgrind - -# run build and tests as user -chown -R buildd:buildd /build -su - buildd <