#!/bin/sh set -e TESTDIR=$(readlink -f $(dirname $0)) . $TESTDIR/framework setupenvironment configarchitecture 'amd64' 'i386' 'armel' insertpackage 'unstable' 'cool-foo' 'amd64,i386' '1.0' 'Depends: foo' insertpackage 'unstable' 'cool-foo-x64' 'amd64' '1.0' 'Depends: foo:amd64' insertpackage 'unstable' 'cool-foo-x32' 'amd64' '1.0' 'Depends: foo:i386' insertpackage 'unstable' 'hates-foo' 'amd64,i386' '1.0' 'Conflicts: foo' insertpackage 'unstable' 'hates-foo-x64' 'amd64' '1.0' 'Conflicts: foo:amd64' insertpackage 'unstable' 'hates-foo-x32' 'amd64' '1.0' 'Conflicts: foo:i386' insertpackage 'unstable' 'foo' 'amd64,i386,armel' '1.0' 'Multi-Arch: foreign' insertpackage 'unstable' 'cool-bar' 'amd64,i386' '1.0' 'Depends: bar-provider' insertpackage 'unstable' 'cool-bar-x64' 'amd64' '1.0' 'Depends: bar-provider:amd64' insertpackage 'unstable' 'cool-bar-x32' 'amd64' '1.0' 'Depends: bar-provider:i386' insertpackage 'unstable' 'hates-bar' 'amd64,i386' '1.0' 'Conflicts: bar-provider' insertpackage 'unstable' 'hates-bar-x64' 'amd64' '1.0' 'Conflicts: bar-provider:amd64' insertpackage 'unstable' 'hates-bar-x32' 'amd64' '1.0' 'Conflicts: bar-provider:i386' insertpackage 'unstable' 'bar' 'amd64,i386,armel' '1.0' 'Provides: bar-provider Multi-Arch: foreign' setupaptarchive testsuccessequal 'Reading package lists... Building dependency tree... The following extra packages will be installed: foo The following NEW packages will be installed: cool-foo:i386 foo 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Inst foo (1.0 unstable [amd64]) Inst cool-foo:i386 (1.0 unstable [i386]) Conf foo (1.0 unstable [amd64]) Conf cool-foo:i386 (1.0 unstable [i386])' aptget install cool-foo:i386 -s testsuccessequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: cool-foo foo:i386 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Inst foo:i386 (1.0 unstable [i386]) Inst cool-foo (1.0 unstable [amd64]) Conf foo:i386 (1.0 unstable [i386]) Conf cool-foo (1.0 unstable [amd64])' aptget install cool-foo:amd64 foo:i386 -s testsuccessequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: cool-foo foo:armel 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Inst foo:armel (1.0 unstable [armel]) Inst cool-foo (1.0 unstable [amd64]) Conf foo:armel (1.0 unstable [armel]) Conf cool-foo (1.0 unstable [amd64])' aptget install cool-foo:amd64 foo:armel -s testsuccessequal 'Reading package lists... Building dependency tree... The following extra packages will be installed: bar The following NEW packages will be installed: bar cool-bar:i386 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Inst bar (1.0 unstable [amd64]) Inst cool-bar:i386 (1.0 unstable [i386]) Conf bar (1.0 unstable [amd64]) Conf cool-bar:i386 (1.0 unstable [i386])' aptget install cool-bar:i386 -s testsuccessequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: bar:i386 cool-bar 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Inst bar:i386 (1.0 unstable [i386]) Inst cool-bar (1.0 unstable [amd64]) Conf bar:i386 (1.0 unstable [i386]) Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 bar:i386 -s testsuccessequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: bar:armel cool-bar 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Inst bar:armel (1.0 unstable [armel]) Inst cool-bar (1.0 unstable [amd64]) Conf bar:armel (1.0 unstable [armel]) Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 bar:armel -s testsuccessequal "Reading package lists... Building dependency tree... Note, selecting 'bar:i386' instead of 'bar-provider:i386' The following NEW packages will be installed: bar:i386 cool-bar 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Inst bar:i386 (1.0 unstable [i386]) Inst cool-bar (1.0 unstable [amd64]) Conf bar:i386 (1.0 unstable [i386]) Conf cool-bar (1.0 unstable [amd64])" aptget install cool-bar bar-provider:i386 -s -q=0 satisfiable_in_singlearch() { testsuccessequal 'Reading package lists... Building dependency tree... The following extra packages will be installed: foo The following NEW packages will be installed: cool-foo foo 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Inst foo (1.0 unstable [amd64]) Inst cool-foo (1.0 unstable [amd64]) Conf foo (1.0 unstable [amd64]) Conf cool-foo (1.0 unstable [amd64])' aptget install cool-foo:amd64 -s testsuccessequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: cool-foo foo 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Inst foo (1.0 unstable [amd64]) Inst cool-foo (1.0 unstable [amd64]) Conf foo (1.0 unstable [amd64]) Conf cool-foo (1.0 unstable [amd64])' aptget install cool-foo:amd64 foo:amd64 -s testsuccessequal 'Reading package lists... Building dependency tree... The following extra packages will be installed: bar The following NEW packages will be installed: bar cool-bar 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Inst bar (1.0 unstable [amd64]) Inst cool-bar (1.0 unstable [amd64]) Conf bar (1.0 unstable [amd64]) Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 -s testsuccessequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: bar cool-bar 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Inst bar (1.0 unstable [amd64]) Inst cool-bar (1.0 unstable [amd64]) Conf bar (1.0 unstable [amd64]) Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 bar:amd64 -s testsuccessequal "Reading package lists... Building dependency tree... Note, selecting 'bar' instead of 'bar-provider' The following NEW packages will be installed: bar cool-bar 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Inst bar (1.0 unstable [amd64]) Inst cool-bar (1.0 unstable [amd64]) Conf bar (1.0 unstable [amd64]) Conf cool-bar (1.0 unstable [amd64])" aptget install cool-bar bar-provider -s -q=0 testsuccessequal 'Reading package lists... Building dependency tree... The following extra packages will be installed: foo The following NEW packages will be installed: cool-foo-x64 foo 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Inst foo (1.0 unstable [amd64]) Inst cool-foo-x64 (1.0 unstable [amd64]) Conf foo (1.0 unstable [amd64]) Conf cool-foo-x64 (1.0 unstable [amd64])' aptget install cool-foo-x64 -s } hatersgonnahate() { BADPREFIX='Reading package lists... Building dependency tree... Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: ' testfailureequal "$BADPREFIX The following packages have unmet dependencies: hates-foo : Conflicts: foo Conflicts: foo:i386 Conflicts: foo:armel E: Unable to correct problems, you have held broken packages." aptget install $1 hates-foo -s testfailureequal "$BADPREFIX The following packages have unmet dependencies: hates-foo-x64 : Conflicts: foo E: Unable to correct problems, you have held broken packages." aptget install $1 hates-foo-x64 -s testfailureequal "$BADPREFIX The following packages have unmet dependencies: hates-foo-x32 : Conflicts: foo:i386 E: Unable to correct problems, you have held broken packages." aptget install $1 hates-foo-x32 -s } hatersgonnahate 'foo' hatersgonnahate 'foo:i386' #FIXME: do not work in single-arch as i386 isn't known at cache generation time testsuccessequal 'Reading package lists... Building dependency tree... The following extra packages will be installed: foo The following NEW packages will be installed: cool-foo-x32 foo 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Inst foo (1.0 unstable [amd64]) Inst cool-foo-x32 (1.0 unstable [amd64]) Conf foo (1.0 unstable [amd64]) Conf cool-foo-x32 (1.0 unstable [amd64])' aptget install cool-foo-x32 -s testsuccessequal 'Reading package lists... Building dependency tree... The following extra packages will be installed: bar The following NEW packages will be installed: bar cool-bar-x32 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Inst bar (1.0 unstable [amd64]) Inst cool-bar-x32 (1.0 unstable [amd64]) Conf bar (1.0 unstable [amd64]) Conf cool-bar-x32 (1.0 unstable [amd64])' aptget install cool-bar-x32 -s -q=0 testsuccessequal 'Reading package lists... Building dependency tree... The following extra packages will be installed: bar The following NEW packages will be installed: bar cool-bar-x64 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Inst bar (1.0 unstable [amd64]) Inst cool-bar-x64 (1.0 unstable [amd64]) Conf bar (1.0 unstable [amd64]) Conf cool-bar-x64 (1.0 unstable [amd64])' aptget install cool-bar-x64 -s -q=0 satisfiable_in_singlearch msgmsg 'switch to single architecture' configarchitecture 'amd64' satisfiable_in_singlearch