1#!/bin/bash 2 3set -eu 4 5# keep container around if $DEBUG is set 6[ -n "${DEBUG:-}" ] || OPTS="--rm" 7 8if type podman >/dev/null 2>&1; then 9 RUNC=podman 10else 11 RUNC="sudo docker" 12fi 13 14MOUNT_MODE=":ro" 15 16$RUNC run --interactive ${RUNC_OPTIONS:-} ${OPTS:-} --volume `pwd`:/source${MOUNT_MODE:-} ${1:-docker.io/amd64/ubuntu:rolling} /bin/bash << EOF 17set -ex 18 19# avoid meson exit code 125; https://github.com/containers/podman/issues/11540 20trap '[ \$? -eq 0 ] || exit 1' EXIT 21 22# go-faster apt 23echo 'Acquire::Languages "none";' > /etc/apt/apt.conf.d/90nolanguages 24 25# upgrade 26export DEBIAN_FRONTEND=noninteractive 27apt-get update 28apt-get install -y eatmydata 29eatmydata apt-get -y --purge dist-upgrade 30 31# install build and test dependencies 32eatmydata apt-get install -y make libtool libudev-dev pkg-config umockdev libumockdev-dev 33 34# run build as user 35useradd build 36su -s /bin/bash - build << EOG 37set -ex 38 39mkdir "/tmp/builddir" 40cd "/tmp/builddir" 41 42CFLAGS="-O2" 43 44# enable extra warnings 45CFLAGS+=" -Winline" 46CFLAGS+=" -Wmissing-include-dirs" 47CFLAGS+=" -Wnested-externs" 48CFLAGS+=" -Wpointer-arith" 49CFLAGS+=" -Wredundant-decls" 50CFLAGS+=" -Wswitch-enum" 51export CFLAGS 52 53export CXXFLAGS="\${CFLAGS}" 54 55echo "" 56echo "Configuring ..." 57/source/configure --enable-examples-build --enable-tests-build 58 59echo "" 60echo "Building ..." 61make -j4 -k 62 63echo "" 64echo "Running umockdev tests ..." 65tests/umockdev 66EOG 67EOF 68