#!/bin/sh # Copyright 2013 Michael Prokop # Copyright 2012 Christoph Berg # Licensed under the terms of the MIT License. if [ "${ADT:-}" = "skip" ]; then echo "Skipping autopkgtests as requested (ADT is set to 'skip')" exit 0 fi if [ "${ADT:-}" = "external" ]; then echo "Skipping internal autopkgtests as external testing was requested via ADT variable" exit 0 fi set -ex cd /tmp/buildd/*/debian/.. if [ ! -f debian/tests/control ]; then echo "Package does not have autopkgtest support, debian/tests/control is missing" exit 0 fi if [ ! -f debian/files ]; then echo "Package source is not built, debian/files is missing" >&2 exit 1 fi if [ -n "${ADT_OPTIONS:-}" ] ; then echo "*** Using provided ADT_OPTIONS $ADT_OPTIONS ***" fi # try to launch autopkgtest in a new PID namespace so several testsuites can run # in parallel, newpid exists in jessie and newer only though unset newpid_name if ! apt-cache policy newpid | grep -q 'newpid:' ; then echo "The newpid package doesn't seem to be available, not considering for installation" else echo "The newpid package seems to be available, considering for installation" newpid_name='newpid' fi # autopkgtest uses apt-utils's apt-ftparchive and # pbuilder's pbuilder-satisfydepends-classic apt-get install -y autopkgtest apt-utils pbuilder $newpid_name if [ -x /usr/bin/autopkgtest ]; then # starting with autopkgtest 5.0 there's only the dedicated autopkgtest CLI AUTOPKG_BINARY=autopkgtest elif [ -x /usr/bin/adt-run ] ; then # autopkgtest as in Debian/jessie (v3.6jessie1) and older doesn't provide # autopkgtest binary yet, but let's be backwards compatible AUTOPKG_BINARY=adt-run else echo "Error: neither autopkgtest nor adt-run binary found." >&2 exit 1 fi # since autopkgtest 3.16 the --tmp-dir option is gone, make sure # we've --output-dir available though before using it if "$AUTOPKG_BINARY" --help | grep -q -- --output-dir 2>/dev/null ; then OUTPUT_OPTION='--output-dir' else OUTPUT_OPTION='--tmp-dir' fi mkdir -p /tmp/buildd/autopkgtest.out if [ -x /usr/bin/autopkgtest ]; then # new autopkgtest interface $newpid_name "$AUTOPKG_BINARY" \ ${OUTPUT_OPTION} /tmp/buildd/autopkgtest.out \ --summary /tmp/buildd/autopkgtest.summary \ "${PWD}" \ /tmp/buildd/*.deb \ ${ADT_OPTIONS:-} -- null || EXIT=$? else # old adt interface $newpid_name "$AUTOPKG_BINARY" \ ${OUTPUT_OPTION} /tmp/buildd/autopkgtest.out \ --summary /tmp/buildd/autopkgtest.summary \ /tmp/buildd/*.deb \ --built-tree "${PWD}" \ ${ADT_OPTIONS:-} --- adt-virt-null || EXIT=$? fi # collect autopkgtest output in a single file so pbuilder automatically copies it tar acf /tmp/buildd/autopkgtest.tar.gz /tmp/buildd/autopkgtest.out case ${EXIT:-0} in 2|4|6|8) # let jdg-tap-adtsummary report the failure exit 0 ;; *) exit ${EXIT:-0} ;; esac