1
0
Fork 0
apt/test/integration/test-multiarch-foreign
Daniel Baumann 1af95933dd
Adding upstream version 3.0.3.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-30 17:53:03 +02:00

299 lines
11 KiB
Bash
Executable file

#!/bin/sh
set -e
TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
allowremovemanual
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 additional 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 additional 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
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:
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 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 (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
testsuccessequal 'Reading package lists...
Building dependency tree...
The following additional 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:
'
testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions:
1. hates-foo:amd64=1.0 is selected for install
2. hates-foo:amd64 is not selected for install because:
1. ${1%:*}:$4=1.0 is selected for install
2. hates-foo:amd64 Conflicts foo
[selected ${1%:*}:$4=1.0]" aptget install $1 hates-foo -s --solver 3.0
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 --solver internal
testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions:
1. foo:$4=1.0 is selected for install
2. foo:$4=1.0 is not selected for install because:
1. $2:amd64=1.0 is selected for install
2. $2:amd64 Conflicts foo:$4" aptget install $1 $2 -s --solver 3.0
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 --solver internal
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-x32 (1.0 unstable [amd64])
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 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