#!/bin/sh set -e TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment configarchitecture 'amd64' 'i386' 'armel' insertinstalledpackage 'build-essential' 'all' '0' 'Multi-Arch: foreign' insertpackage 'unstable' 'foo' 'all' '1.0' insertpackage 'unstable' 'bar' 'all' '1.0' insertsource 'unstable' 'buildprofiles' 'any' '1' 'Build-Depends: foo (>= 1.0) [i386 arm] <!stage1 !cross>, bar' # table from https://wiki.debian.org/BuildProfileSpec insertsource 'unstable' 'spec-1' 'any' '1' 'Build-Depends: foo <!stage1>' insertsource 'unstable' 'spec-2' 'any' '1' 'Build-Depends: foo <stage1>' insertsource 'unstable' 'spec-3' 'any' '1' 'Build-Depends: foo <!stage1 !notest>' insertsource 'unstable' 'spec-4' 'any' '1' 'Build-Depends: foo <stage1 notest>' insertsource 'unstable' 'spec-5' 'any' '1' 'Build-Depends: foo <!stage1 notest>' insertsource 'unstable' 'spec-6' 'any' '1' 'Build-Depends: foo <stage1 !notest>' insertsource 'unstable' 'spec-7' 'any' '1' 'Build-Depends: foo <stage1> <!notest>' setupaptarchive testsuccessequal 'Reading package lists... Reading package lists... Building dependency tree... The following NEW packages will be installed: bar 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Inst bar (1.0 unstable [all]) Conf bar (1.0 unstable [all])' aptget build-dep buildprofiles -s testsuccessequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: bar foo 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Inst bar (1.0 unstable [all]) Inst foo (1.0 unstable [all]) Conf bar (1.0 unstable [all]) Conf foo (1.0 unstable [all])' aptget build-dep buildprofiles -s -o APT::Architecture=i386 testsuccessequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: bar 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Inst bar (1.0 unstable [all]) Conf bar (1.0 unstable [all])' aptget build-dep buildprofiles -s -o APT::Architecture=armel testsuccessequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: bar 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Inst bar (1.0 unstable [all]) Conf bar (1.0 unstable [all])' aptget build-dep buildprofiles -s -o APT::Architecture=i386 -P stage1 KEEP='Reading package lists... Reading package lists... Building dependency tree... The following NEW packages will be installed: foo 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Inst foo (1.0 unstable [all]) Conf foo (1.0 unstable [all])' setdrop() { DROP="Reading package lists... $1 has no build depends. Reading package lists... Building dependency tree... 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." } msgtest 'Check if version of installed dpkg is high enough for' 'build profiles support' if dpkg --compare-versions "$(command dpkg-query --showformat='${Version}' --show dpkg)" 'ge' '1.17.14'; then msgpass testwithdpkg() { msgtest "Test with" "dpkg-checkbuilddeps -d '$1' -P '$2'" local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testwithdpkg.output" if dpkgcheckbuilddeps -d "$1" -P "$2" /dev/null >$OUTPUT 2>&1; then if [ "$3" = "$DROP" ]; then msgpass else cat $OUTPUT msgfail fi else if [ "$3" = "$KEEP" ]; then msgpass else cat $OUTPUT msgfail fi fi } else msgskip testwithdpkg() { msgtest "Test with" "dpkg-checkbuilddeps -d '$1' -P '$2'" msgskip } fi testprofile() { if [ -n "$3" ]; then testequal "$4" aptget build-dep "$1" -s -P "$3" export DEB_BUILD_PROFILES="$(echo "$3" | tr ',' ' ')" testequal "$4" aptget build-dep "$1" -s -o with::environment=1 unset DEB_BUILD_PROFILES else testequal "$4" aptget build-dep "$1" -s fi testwithdpkg "$2" "$3" "$4" } testsuccess aptcache gencaches setdrop 'spec-1' testprofile 'spec-1' 'foo <!stage1>' '' "$KEEP" testprofile 'spec-1' 'foo <!stage1>' 'stage1' "$DROP" testprofile 'spec-1' 'foo <!stage1>' 'notest' "$KEEP" testprofile 'spec-1' 'foo <!stage1>' 'stage1,notest' "$DROP" setdrop 'spec-2' testprofile 'spec-2' 'foo <stage1>' '' "$DROP" testprofile 'spec-2' 'foo <stage1>' 'stage1' "$KEEP" testprofile 'spec-2' 'foo <stage1>' 'notest' "$DROP" testprofile 'spec-2' 'foo <stage1>' 'stage1,notest' "$KEEP" setdrop 'spec-3' testprofile 'spec-3' 'foo <!stage1 !notest>' '' "$KEEP" testprofile 'spec-3' 'foo <!stage1 !notest>' 'stage1' "$DROP" testprofile 'spec-3' 'foo <!stage1 !notest>' 'notest' "$DROP" testprofile 'spec-3' 'foo <!stage1 !notest>' 'stage1,notest' "$DROP" setdrop 'spec-4' testprofile 'spec-4' 'foo <stage1 notest>' '' "$DROP" testprofile 'spec-4' 'foo <stage1 notest>' 'stage1' "$DROP" testprofile 'spec-4' 'foo <stage1 notest>' 'notest' "$DROP" testprofile 'spec-4' 'foo <stage1 notest>' 'stage1,notest' "$KEEP" setdrop 'spec-5' testprofile 'spec-5' 'foo <!stage1 notest>' '' "$DROP" testprofile 'spec-5' 'foo <!stage1 notest>' 'stage1' "$DROP" testprofile 'spec-5' 'foo <!stage1 notest>' 'notest' "$KEEP" testprofile 'spec-5' 'foo <!stage1 notest>' 'stage1,notest' "$DROP" setdrop 'spec-6' testprofile 'spec-6' 'foo <stage1 !notest>' '' "$DROP" testprofile 'spec-6' 'foo <stage1 !notest>' 'stage1' "$KEEP" testprofile 'spec-6' 'foo <stage1 !notest>' 'notest' "$DROP" testprofile 'spec-6' 'foo <stage1 !notest>' 'stage1,notest' "$DROP" setdrop 'spec-7' testprofile 'spec-7' 'foo <stage1> <!notest>' '' "$KEEP" testprofile 'spec-7' 'foo <stage1> <!notest>' 'stage1' "$KEEP" testprofile 'spec-7' 'foo <stage1> <!notest>' 'notest' "$DROP" testprofile 'spec-7' 'foo <stage1> <!notest>' 'stage1,notest' "$KEEP"