X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/245dde96193702f7f51389d3583dee547f8ba366..HEAD:/test/integration/test-multiarch-foreign diff --git a/test/integration/test-multiarch-foreign b/test/integration/test-multiarch-foreign index 7870126f5..713b27bd4 100755 --- a/test/integration/test-multiarch-foreign +++ b/test/integration/test-multiarch-foreign @@ -1,19 +1,25 @@ #!/bin/sh set -e -TESTDIR=$(readlink -f $(dirname $0)) -. $TESTDIR/framework +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' @@ -21,7 +27,7 @@ setupaptarchive testsuccessequal 'Reading package lists... Building dependency tree... -The following extra packages will be installed: +The following additional packages will be installed: foo The following NEW packages will be installed: cool-foo:i386 foo @@ -53,7 +59,7 @@ 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: +The following additional packages will be installed: bar The following NEW packages will be installed: bar cool-bar:i386 @@ -92,12 +98,12 @@ The following NEW packages will be installed: 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 +Conf cool-bar (1.0 unstable [amd64])" aptget install cool-bar bar-provider:i386 -s satisfiable_in_singlearch() { testsuccessequal 'Reading package lists... Building dependency tree... -The following extra packages will be installed: +The following additional packages will be installed: foo The following NEW packages will be installed: cool-foo foo @@ -119,7 +125,7 @@ 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: +The following additional packages will be installed: bar The following NEW packages will be installed: bar cool-bar @@ -148,11 +154,11 @@ The following NEW packages will be installed: 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 +Conf cool-bar (1.0 unstable [amd64])" aptget install cool-bar bar-provider -s testsuccessequal 'Reading package lists... Building dependency tree... -The following extra packages will be installed: +The following additional packages will be installed: foo The following NEW packages will be installed: cool-foo-x64 foo @@ -163,34 +169,65 @@ Conf foo (1.0 unstable [amd64]) Conf cool-foo-x64 (1.0 unstable [amd64])' aptget install cool-foo-x64 -s } -#FIXME: do not work in single-arch as i386 isn't known at cache generation time +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: + $2 : Conflicts: foo:$4 +E: Unable to correct problems, you have held broken packages." aptget install $1 $2 -s + testsuccessequal "Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + $1 $3 +0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. +Inst $1 (1.0 unstable [$4]) +Inst $3 (1.0 unstable [amd64]) +Conf $1 (1.0 unstable [$4]) +Conf $3 (1.0 unstable [amd64])" aptget install $1 $3 -s +} +hatersgonnahate 'foo' 'hates-foo-x64' 'hates-foo-x32' 'amd64' +hatersgonnahate 'foo:i386' 'hates-foo-x32' 'hates-foo-x64' 'i386' + testsuccessequal 'Reading package lists... Building dependency tree... -The following extra packages will be installed: - foo +The following additional packages will be installed: + foo:i386 The following NEW packages will be installed: - cool-foo-x32 foo + cool-foo-x32 foo:i386 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. -Inst foo (1.0 unstable [amd64]) +Inst foo:i386 (1.0 unstable [i386]) Inst cool-foo-x32 (1.0 unstable [amd64]) -Conf foo (1.0 unstable [amd64]) +Conf foo:i386 (1.0 unstable [i386]) 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 additional packages will be installed: + bar:i386 The following NEW packages will be installed: - bar cool-bar-x32 + bar:i386 cool-bar-x32 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. -Inst bar (1.0 unstable [amd64]) +Inst bar:i386 (1.0 unstable [i386]) 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 +Conf bar:i386 (1.0 unstable [i386]) +Conf cool-bar-x32 (1.0 unstable [amd64])' aptget install cool-bar-x32 -s testsuccessequal 'Reading package lists... Building dependency tree... -The following extra packages will be installed: +The following additional packages will be installed: bar The following NEW packages will be installed: bar cool-bar-x64 @@ -198,7 +235,7 @@ The following NEW packages will be installed: 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 +Conf cool-bar-x64 (1.0 unstable [amd64])' aptget install cool-bar-x64 -s satisfiable_in_singlearch @@ -207,3 +244,44 @@ msgmsg 'switch to single architecture' configarchitecture 'amd64' satisfiable_in_singlearch + +msgmsg 'switch to multi-arch with barbarian architecture' + +insertinstalledpackage 'foo' 'armhf' '1.0' 'Multi-Arch: foreign' +insertinstalledpackage 'bar' 'armhf' '1.0' 'Provides: bar-provider +Multi-Arch: foreign' +insertinstalledpackage 'bar-needer' 'armhf' '1.0' 'Depends: bar-provider' + +testsuccess aptget check +testsuccessequal 'Reading package lists... +Building dependency tree... +The following additional packages will be installed: + foo +The following packages will be REMOVED: + foo:armhf +The following NEW packages will be installed: + cool-foo foo +0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded. +Remv foo:armhf [1.0] +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 -s +testsuccessequal 'Reading package lists... +Building dependency tree... +The following additional packages will be installed: + bar +The following packages will be REMOVED: + bar:armhf +The following NEW packages will be installed: + bar cool-bar +0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded. +Remv bar:armhf [1.0] [bar-needer:armhf ] +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 -s + +# a barbarian doesn't satisfy another either +insertinstalledpackage 'bar-needer2' 's390x' '1.0' 'Depends: bar-provider' +testfailure aptget check