]> git.saurik.com Git - apt.git/blob - test/integration/test-multiarch-allowed
just-in-time creation for (implicit) Provides
[apt.git] / test / integration / test-multiarch-allowed
1 #!/bin/sh
2 set -e
3
4 TESTDIR=$(readlink -f $(dirname $0))
5 . $TESTDIR/framework
6 setupenvironment
7 configarchitecture 'amd64' 'i386'
8
9 insertpackage 'unstable' 'foo' 'amd64,i386' '1' 'Multi-Arch: allowed'
10 insertpackage 'unstable' 'needsfoo' 'amd64,i386' '1' 'Depends: foo'
11 insertpackage 'unstable' 'needsfooany' 'amd64,i386' '1' 'Depends: foo:any'
12 insertpackage 'unstable' 'needsfoover1' 'amd64,i386' '1' 'Depends: foo:any (>= 1)'
13 insertpackage 'unstable' 'needsfoover2' 'amd64,i386' '1' 'Depends: foo:any (>= 2)'
14 insertpackage 'unstable' 'hatesfoo' 'amd64' '1' 'Conflicts: foo'
15 insertpackage 'unstable' 'hatesfooany' 'amd64' '1' 'Conflicts: foo:any' # this makes no senseā€¦
16 insertpackage 'unstable' 'hatesfoonative' 'amd64' '1' 'Conflicts: foo:amd64'
17
18 insertpackage 'unstable' 'coolfoo' 'amd64' '1' 'Multi-Arch:allowed
19 Provides: coolbar'
20 insertpackage 'unstable' 'coolfoover' 'amd64' '1' 'Multi-Arch:allowed
21 Provides: coolbar (= 2)'
22 insertpackage 'unstable' 'needscoolfoo' 'amd64' '1' 'Depends: coolfoo, coolbar'
23 insertpackage 'unstable' 'needscoolfooany' 'amd64' '1' 'Depends: coolfoo:any, coolbar:any'
24 insertpackage 'unstable' 'needscoolfoover0' 'amd64' '1' 'Depends: coolfoo:any (>= 1), coolbar'
25 insertpackage 'unstable' 'needscoolfoover1' 'amd64' '1' 'Depends: coolfoo:any (>= 1), coolbar (>= 1)'
26 insertpackage 'unstable' 'needscoolfoover2' 'amd64' '1' 'Depends: coolfoo:any (>= 2), coolbar (>= 1)'
27 insertpackage 'unstable' 'needscoolfoover3' 'amd64' '1' 'Depends: coolfoo:any (>= 2), coolbar (>= 3)'
28
29 setupaptarchive
30
31 BADPREFIX='Reading package lists...
32 Building dependency tree...
33 Some packages could not be installed. This may mean that you have
34 requested an impossible situation or if you are using the unstable
35 distribution that some required packages have not yet been created
36 or been moved out of Incoming.
37 The following information may help to resolve the situation:
38 '
39
40 solveableinsinglearch0() {
41 testsuccessequal 'Reading package lists...
42 Building dependency tree...
43 The following extra packages will be installed:
44 foo
45 The following NEW packages will be installed:
46 foo needsfoo
47 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
48 Inst foo (1 unstable [amd64])
49 Inst needsfoo (1 unstable [amd64])
50 Conf foo (1 unstable [amd64])
51 Conf needsfoo (1 unstable [amd64])' aptget install needsfoo -s
52 }
53 solveableinsinglearch0
54 testsuccessequal 'Reading package lists...
55 Building dependency tree...
56 The following extra packages will be installed:
57 foo:i386
58 The following NEW packages will be installed:
59 foo:i386 needsfoo:i386
60 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
61 Inst foo:i386 (1 unstable [i386])
62 Inst needsfoo:i386 (1 unstable [i386])
63 Conf foo:i386 (1 unstable [i386])
64 Conf needsfoo:i386 (1 unstable [i386])' aptget install needsfoo:i386 -s
65 testfailureequal "$BADPREFIX
66 The following packages have unmet dependencies:
67 needsfoo:i386 : Depends: foo:i386 but it is not going to be installed
68 E: Unable to correct problems, you have held broken packages." aptget install needsfoo:i386 foo:amd64 -s
69 testfailureequal "$BADPREFIX
70 The following packages have unmet dependencies:
71 needsfoo : Depends: foo but it is not going to be installed
72 E: Unable to correct problems, you have held broken packages." aptget install needsfoo foo:i386 -s
73
74 solveableinsinglearch1() {
75 testsuccessequal "Reading package lists...
76 Building dependency tree...
77 The following extra packages will be installed:
78 foo
79 The following NEW packages will be installed:
80 foo $1
81 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
82 Inst foo (1 unstable [amd64])
83 Inst $1 (1 unstable [amd64])
84 Conf foo (1 unstable [amd64])
85 Conf $1 (1 unstable [amd64])" aptget install $1 -s
86 }
87
88 testneedsfooallgood() {
89 solveableinsinglearch1 $1
90 testsuccessequal "Reading package lists...
91 Building dependency tree...
92 The following extra packages will be installed:
93 foo
94 The following NEW packages will be installed:
95 foo $1:i386
96 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
97 Inst foo (1 unstable [amd64])
98 Inst $1:i386 (1 unstable [i386])
99 Conf foo (1 unstable [amd64])
100 Conf $1:i386 (1 unstable [i386])" aptget install $1:i386 -s
101 testsuccessequal "Reading package lists...
102 Building dependency tree...
103 The following NEW packages will be installed:
104 foo:i386 $1:i386
105 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
106 Inst foo:i386 (1 unstable [i386])
107 Inst $1:i386 (1 unstable [i386])
108 Conf foo:i386 (1 unstable [i386])
109 Conf $1:i386 (1 unstable [i386])" aptget install $1:i386 foo:i386 -s
110 testsuccessequal "Reading package lists...
111 Building dependency tree...
112 The following NEW packages will be installed:
113 foo:i386 $1
114 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
115 Inst foo:i386 (1 unstable [i386])
116 Inst $1 (1 unstable [amd64])
117 Conf foo:i386 (1 unstable [i386])
118 Conf $1 (1 unstable [amd64])" aptget install $1 foo:i386 -s
119 }
120 testneedsfooallgood 'needsfooany'
121 testneedsfooallgood 'needsfoover1'
122
123 NEEDSFOO2NATIVE="$BADPREFIX
124 The following packages have unmet dependencies:
125 needsfoover2 : Depends: foo:any (>= 2)
126 E: Unable to correct problems, you have held broken packages."
127 NEEDSFOO2FOREIGN="$BADPREFIX
128 The following packages have unmet dependencies:
129 needsfoover2:i386 : Depends: foo:any:i386 (>= 2)
130 E: Unable to correct problems, you have held broken packages."
131 testfailureequal "$NEEDSFOO2NATIVE" aptget install needsfoover2 -s
132 testfailureequal "$NEEDSFOO2FOREIGN" aptget install needsfoover2:i386 -s
133 testfailureequal "$NEEDSFOO2FOREIGN" aptget install needsfoover2:i386 foo:i386 -s
134 testfailureequal "$NEEDSFOO2NATIVE" aptget install needsfoover2 foo:i386 -s
135
136 solveableinsinglearch2() {
137 testfailureequal "$BADPREFIX
138 The following packages have unmet dependencies:
139 hatesfoo : Conflicts: foo but 1 is to be installed
140 E: Unable to correct problems, you have held broken packages." aptget install foo hatesfoo -s
141 testfailureequal "$BADPREFIX
142 The following packages have unmet dependencies:
143 hatesfooany : Conflicts: foo:any
144 E: Unable to correct problems, you have held broken packages." aptget install foo hatesfooany -s
145 testfailureequal "$BADPREFIX
146 The following packages have unmet dependencies:
147 hatesfoonative : Conflicts: foo but 1 is to be installed
148 E: Unable to correct problems, you have held broken packages." aptget install foo hatesfoonative -s
149 }
150 solveableinsinglearch2
151 testfailureequal "$BADPREFIX
152 The following packages have unmet dependencies:
153 hatesfoo : Conflicts: foo:i386 but 1 is to be installed
154 E: Unable to correct problems, you have held broken packages." aptget install foo:i386 hatesfoo -s
155 testfailureequal "$BADPREFIX
156 The following packages have unmet dependencies:
157 hatesfooany : Conflicts: foo:any
158 E: Unable to correct problems, you have held broken packages." aptget install foo:i386 hatesfooany -s
159 testsuccessequal 'Reading package lists...
160 Building dependency tree...
161 The following NEW packages will be installed:
162 foo:i386 hatesfoonative
163 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
164 Inst foo:i386 (1 unstable [i386])
165 Inst hatesfoonative (1 unstable [amd64])
166 Conf foo:i386 (1 unstable [i386])
167 Conf hatesfoonative (1 unstable [amd64])' aptget install foo:i386 hatesfoonative -s
168
169 solveableinsinglearch3() {
170 testsuccessequal "Reading package lists...
171 Building dependency tree...
172 The following extra packages will be installed:
173 coolfoo
174 The following NEW packages will be installed:
175 coolfoo needscoolfoo
176 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
177 Inst coolfoo (1 unstable [amd64])
178 Inst needscoolfoo (1 unstable [amd64])
179 Conf coolfoo (1 unstable [amd64])
180 Conf needscoolfoo (1 unstable [amd64])" aptget install needscoolfoo -s
181 testsuccessequal "Reading package lists...
182 Building dependency tree...
183 The following extra packages will be installed:
184 coolfoo
185 The following NEW packages will be installed:
186 coolfoo coolfoover needscoolfoo
187 0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
188 Inst coolfoo (1 unstable [amd64])
189 Inst coolfoover (1 unstable [amd64])
190 Inst needscoolfoo (1 unstable [amd64])
191 Conf coolfoo (1 unstable [amd64])
192 Conf coolfoover (1 unstable [amd64])
193 Conf needscoolfoo (1 unstable [amd64])" aptget install needscoolfoo coolfoover -s
194 testfailureequal "$BADPREFIX
195 The following packages have unmet dependencies:
196 needscoolfooany : Depends: coolbar:any but it is not installable
197 E: Unable to correct problems, you have held broken packages." aptget install needscoolfooany -s
198 testsuccessequal 'Reading package lists...
199 Building dependency tree...
200 The following extra packages will be installed:
201 coolfoo
202 The following NEW packages will be installed:
203 coolfoo needscoolfoover0
204 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
205 Inst coolfoo (1 unstable [amd64])
206 Inst needscoolfoover0 (1 unstable [amd64])
207 Conf coolfoo (1 unstable [amd64])
208 Conf needscoolfoover0 (1 unstable [amd64])' aptget install needscoolfoover0 -s
209 testsuccessequal 'Reading package lists...
210 Building dependency tree...
211 The following extra packages will be installed:
212 coolfoo coolfoover
213 The following NEW packages will be installed:
214 coolfoo coolfoover needscoolfoover1
215 0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
216 Inst coolfoo (1 unstable [amd64])
217 Inst coolfoover (1 unstable [amd64])
218 Inst needscoolfoover1 (1 unstable [amd64])
219 Conf coolfoo (1 unstable [amd64])
220 Conf coolfoover (1 unstable [amd64])
221 Conf needscoolfoover1 (1 unstable [amd64])' aptget install needscoolfoover1 -s
222 testfailureequal "$BADPREFIX
223 The following packages have unmet dependencies:
224 needscoolfoover2 : Depends: coolfoo:any (>= 2)
225 E: Unable to correct problems, you have held broken packages." aptget install needscoolfoover2 -s
226 testfailureequal "$BADPREFIX
227 The following packages have unmet dependencies:
228 needscoolfoover3 : Depends: coolfoo:any (>= 2)
229 Depends: coolbar (>= 3)
230 E: Unable to correct problems, you have held broken packages." aptget install needscoolfoover3 -s
231 }
232 solveableinsinglearch3
233
234 msgmsg 'switch to single architecture'
235 configarchitecture 'amd64'
236
237 solveableinsinglearch0
238 testfailureequal 'Reading package lists...
239 Building dependency tree...
240 E: Unable to locate package needsfoo' aptget install needsfoo:i386 -s
241
242 solveableinsinglearch1 'needsfooany'
243 solveableinsinglearch1 'needsfoover1'
244 testfailureequal "$NEEDSFOO2NATIVE" aptget install needsfoover2 -s
245 solveableinsinglearch2
246 solveableinsinglearch3