X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/286afa36886b60bea0a17d244f8bddad938f27cf..2a440328ea19e9646a93f847dd9eff21e03ad16d:/test/integration/test-multiarch-foreign diff --git a/test/integration/test-multiarch-foreign b/test/integration/test-multiarch-foreign index 332466d96..713b27bd4 100755 --- a/test/integration/test-multiarch-foreign +++ b/test/integration/test-multiarch-foreign @@ -1,23 +1,33 @@ #!/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' setupaptarchive -testequal 'Reading package lists... +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 @@ -27,29 +37,7 @@ 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 -testequal '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 - -testequal '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 - -testequal 'Reading package lists... +testsuccessequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: cool-foo foo:i386 @@ -59,7 +47,7 @@ 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 -testequal 'Reading package lists... +testsuccessequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: cool-foo foo:armel @@ -69,13 +57,9 @@ 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 - - - - -testequal 'Reading package lists... +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 @@ -85,49 +69,83 @@ 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 -testequal 'Reading package lists... +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 + bar:i386 cool-bar 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 (1.0 unstable [amd64]) -Conf bar (1.0 unstable [amd64]) -Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 -s +Conf bar:i386 (1.0 unstable [i386]) +Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 bar:i386 -s -testequal 'Reading package lists... +testsuccessequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: - bar cool-bar + bar:armel cool-bar 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. -Inst bar (1.0 unstable [amd64]) +Inst bar:armel (1.0 unstable [armel]) 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 +Conf bar:armel (1.0 unstable [armel]) +Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 bar:armel -s -testequal 'Reading package lists... +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:amd64 bar:i386 -s +Conf cool-bar (1.0 unstable [amd64])" aptget install cool-bar bar-provider:i386 -s -testequal 'Reading package lists... +satisfiable_in_singlearch() { + testsuccessequal 'Reading package lists... Building dependency tree... +The following additional packages will be installed: + foo The following NEW packages will be installed: - bar:armel cool-bar + cool-foo foo 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. -Inst bar:armel (1.0 unstable [armel]) +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 additional 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:armel (1.0 unstable [armel]) -Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 bar:armel -s +Conf bar (1.0 unstable [amd64]) +Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 -s -testequal "Reading package lists... + 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: @@ -136,15 +154,134 @@ 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 -testequal "Reading package lists... + testsuccessequal 'Reading package lists... Building dependency tree... -Note, selecting 'bar:i386' instead of 'bar-provider:i386' +The following additional packages will be installed: + foo The following NEW packages will be installed: - bar:i386 cool-bar + 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: + $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 additional packages will be installed: + foo:i386 +The following NEW packages will be installed: + cool-foo-x32 foo:i386 +0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. +Inst foo:i386 (1.0 unstable [i386]) +Inst cool-foo-x32 (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 additional packages will be installed: + bar:i386 +The following NEW packages will be installed: + bar:i386 cool-bar-x32 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]) +Inst cool-bar-x32 (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-x32 (1.0 unstable [amd64])' aptget install cool-bar-x32 -s + + testsuccessequal 'Reading package lists... +Building dependency tree... +The following additional 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 + + +satisfiable_in_singlearch + +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