]> git.saurik.com Git - apt.git/blobdiff - test/integration/test-multiarch-foreign
just-in-time creation for (implicit) Provides
[apt.git] / test / integration / test-multiarch-foreign
index 332466d96530d99d7f87cfea8d16f012d4554b79..a266e35eddabf9fe5d03cce2d8c1b5ea899d03e3 100755 (executable)
@@ -7,15 +7,25 @@ setupenvironment
 configarchitecture 'amd64' 'i386' 'armel'
 
 insertpackage 'unstable' 'cool-foo' 'amd64,i386' '1.0' 'Depends: foo'
 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' '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
 
 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:
   foo
 Building dependency tree...
 The following extra packages will be installed:
   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
 
 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
 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
 
 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
 Building dependency tree...
 The following NEW packages will be installed:
   cool-foo foo:armel
@@ -69,11 +57,7 @@ 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
 
 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:
   bar
 Building dependency tree...
 The following extra packages will be installed:
   bar
@@ -85,7 +69,61 @@ 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
 
 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 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
 Building dependency tree...
 The following extra packages will be installed:
   bar
@@ -97,7 +135,7 @@ 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 (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
 Building dependency tree...
 The following NEW packages will be installed:
   bar cool-bar
@@ -107,44 +145,98 @@ 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 (1.0 unstable [amd64])
 Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 bar:amd64 -s
 
-testequal 'Reading package lists...
+       testsuccessequal "Reading package lists...
 Building dependency tree...
 Building dependency tree...
+Note, selecting 'bar' instead of 'bar-provider'
 The following NEW packages will be installed:
 The following NEW packages will be installed:
-  bar:i386 cool-bar
+  bar cool-bar
 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
-Inst bar:i386 (1.0 unstable [i386])
+Inst bar (1.0 unstable [amd64])
 Inst cool-bar (1.0 unstable [amd64])
 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 bar (1.0 unstable [amd64])
+Conf cool-bar (1.0 unstable [amd64])" aptget install cool-bar bar-provider -s -q=0
 
 
-testequal 'Reading package lists...
+       testsuccessequal 'Reading package lists...
 Building dependency tree...
 Building dependency tree...
+The following extra packages will be installed:
+  foo
 The following NEW packages will be installed:
 The following NEW packages will be installed:
-  bar:armel cool-bar
+  cool-foo-x64 foo
 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
 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
+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
+}
 
 
-testequal "Reading package lists...
+hatersgonnahate() {
+       BADPREFIX='Reading package lists...
 Building dependency tree...
 Building dependency tree...
-Note, selecting 'bar' instead of 'bar-provider'
+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:
 The following NEW packages will be installed:
-  bar cool-bar
+  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])
 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])
+Inst cool-bar-x32 (1.0 unstable [amd64])
 Conf 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-x32 (1.0 unstable [amd64])' aptget install cool-bar-x32 -s -q=0
 
 
-testequal "Reading package lists...
+       testsuccessequal 'Reading package lists...
 Building dependency tree...
 Building dependency tree...
-Note, selecting 'bar:i386' instead of 'bar-provider:i386'
+The following extra packages will be installed:
+  bar
 The following NEW packages will be installed:
 The following NEW packages will be installed:
-  bar:i386 cool-bar
+  bar cool-bar-x64
 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
 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
+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