4 # dpkg implements versioned provides in commit 5bb02fe80e9f40dcad9703a72f67cf615ff217b5
5 # but previous versions seem to allow parsing, working and ignoring it.
7 TESTDIR
="$(readlink -f "$(dirname "$0")")"
10 configarchitecture 'amd64' 'i386'
12 insertinstalledpackage 'webapp' 'all' '1' 'Depends: httpd'
13 insertinstalledpackage 'webserver' 'all' '1' 'Provides: httpd'
15 insertpackage 'unstable' 'webapp' 'all' '2' 'Depends: httpd (>= 2)'
16 insertpackage 'unstable' 'webserver' 'amd64' '2' 'Provides: httpd (= 2)'
17 insertpackage 'unstable' 'foreign-webserver' 'i386' '2' 'Multi-Arch: foreign
18 Provides: httpd (= 2)'
20 insertpackage 'experimental' 'webapp' 'all' '3' 'Depends: httpd (>= 1.5)'
21 insertpackage 'experimental' 'webserver' 'amd64' '3' 'Provides: httpd (= 3)'
23 insertpackage 'experimental' 'foreign-webserver' 'i386' '4' 'Multi-Arch: foreign
24 Provides: httpd (= 4)'
25 insertpackage 'experimental' 'cool-webapp' 'all' '4' 'Depends: httpd (>= 4)'
27 # arch-qualified provides, see #777071
28 insertpackage 'unstable' 'foo' 'all' '1' 'Provides: bar:i386'
29 insertpackage 'unstable' 'baz' 'i386,amd64' '1' 'Depends: bar'
30 insertpackage 'experimental' 'baz' 'i386,amd64' '2' 'Depends: bar:i386'
31 insertpackage 'experimental' 'baz-broken' 'i386' '2' 'Depends: bar:amd64'
33 insertpackage 'unstable' 'next' 'amd64' '1' 'Multi-Arch: foreign
35 insertpackage 'unstable' 'needsrealnext' 'amd64,i386' '2' 'Depends: next (>= 2)'
37 insertpackage 'unstable' 'virtualnext2' 'amd64' '1' 'Multi-Arch: foreign
38 Provides: next2 (= 2)'
39 insertpackage 'unstable' 'needsnext2' 'amd64,i386' '2' 'Depends: next2 (>= 2)'
41 insertpackage 'unstable' 'virtualnext3' 'amd64' '1' 'Multi-Arch: no
42 Provides: next3 (= 2)'
43 insertpackage 'unstable' 'needsnext3' 'amd64,i386' '2' 'Depends: next3 (>= 2)'
45 insertpackage 'unstable' 'selfprov' 'amd64' '2' 'Provides: selfprov (= 1)'
46 insertpackage 'unstable' 'needsselfprov1' 'amd64' '1' 'Depends: selfprov (= 1)'
47 insertpackage 'unstable' 'needsselfprov2' 'amd64' '1' 'Depends: selfprov (= 2)'
48 insertpackage 'unstable' 'needsselfprov12' 'amd64' '1' 'Depends: selfprov (= 1), selfprov (= 2)'
49 insertpackage 'unstable' 'needsselfprov123' 'amd64' '1' 'Depends: selfprov (= 1), selfprov (= 2), selfprov (= 3)'
53 SOMEPACKAGESCOULDNOT='Some packages could not be installed. This may mean that you have
54 requested an impossible situation or if you are using the unstable
55 distribution that some required packages have not yet been created
56 or been moved out of Incoming.
57 The following information may help to resolve the situation:
59 The following packages have unmet dependencies:'
61 for binary in 'aptget' 'apt'; do
62 for method in 'upgrade' 'dist-upgrade'; do
63 for solver in 'internal' 'apt'; do
64 if [ "$solver" = 'apt' ]; then
65 HEADER='Execute external solver...'
67 HEADER='Calculating upgrade...'
69 testsuccessequal "Reading package lists...
70 Building dependency tree...
72 The following packages will be upgraded
:
74 2 upgraded
, 0 newly installed
, 0 to remove and
0 not upgraded.
75 Inst webserver
[1] (2 unstable
[amd64
])
76 Inst webapp
[1] (2 unstable
[all
])
77 Conf webserver
(2 unstable
[amd64
])
78 Conf webapp
(2 unstable
[all
])" $binary $method -s --solver $solver
83 for solver in 'internal' 'apt'; do
84 msgmsg 'Testing with solver' "$solver"
85 HEADER_PRE='Reading package lists...
86 Building dependency tree...'
87 HEADER_POST='Execute external solver...'
88 HEADER="${HEADER_PRE}"
89 if [ "$solver" = 'apt' ]; then
93 testsuccessequal "$HEADER
94 The following packages will be upgraded
:
96 2 upgraded
, 0 newly installed
, 0 to remove and
0 not upgraded.
97 Inst webserver
[1] (2 unstable
[amd64
])
98 Inst webapp
[1] (2 unstable
[all
])
99 Conf webserver
(2 unstable
[amd64
])
100 Conf webapp
(2 unstable
[all
])" aptget install webapp webserver -s --solver $solver
102 testsuccessequal "$HEADER
103 The following packages will be upgraded
:
105 2 upgraded
, 0 newly installed
, 0 to remove and
0 not upgraded.
106 Inst webserver
[1] (2 unstable
[amd64
])
107 Inst webapp
[1] (3 experimental
[all
])
108 Conf webserver
(2 unstable
[amd64
])
109 Conf webapp
(3 experimental
[all
])" aptget install webapp=3 webserver -s --solver $solver
111 testsuccessequal "$HEADER
112 The following packages will be upgraded
:
114 2 upgraded
, 0 newly installed
, 0 to remove and
0 not upgraded.
115 Inst webserver
[1] (3 experimental
[amd64
])
116 Inst webapp
[1] (2 unstable
[all
])
117 Conf webserver
(3 experimental
[amd64
])
118 Conf webapp
(2 unstable
[all
])" aptget install webapp webserver=3 -s --solver $solver
120 testsuccessequal "$HEADER
121 The following NEW packages will be installed
:
122 foreign
-webserver:i386
123 The following packages will be upgraded
:
125 1 upgraded
, 1 newly installed
, 0 to remove and
1 not upgraded.
126 Inst foreign
-webserver:i386
(2 unstable
[i386
])
127 Inst webapp
[1] (2 unstable
[all
])
128 Conf foreign
-webserver:i386
(2 unstable
[i386
])
129 Conf webapp
(2 unstable
[all
])" aptget install webapp foreign-webserver:i386 -s --solver $solver
131 testsuccessequal "$HEADER
132 The following NEW packages will be installed
:
133 foreign
-webserver:i386
134 The following packages will be upgraded
:
136 1 upgraded
, 1 newly installed
, 0 to remove and
1 not upgraded.
137 Inst foreign
-webserver:i386
(2 unstable
[i386
])
138 Inst webapp
[1] (3 experimental
[all
])
139 Conf foreign
-webserver:i386
(2 unstable
[i386
])
140 Conf webapp
(3 experimental
[all
])" aptget install webapp=3 foreign-webserver:i386 -s --solver $solver
142 testsuccessequal "$HEADER
143 The following NEW packages will be installed
:
144 foreign
-webserver:i386
145 The following packages will be upgraded
:
147 1 upgraded
, 1 newly installed
, 0 to remove and
1 not upgraded.
148 Inst foreign
-webserver:i386
(4 experimental
[i386
])
149 Inst webapp
[1] (2 unstable
[all
])
150 Conf foreign
-webserver:i386
(4 experimental
[i386
])
151 Conf webapp
(2 unstable
[all
])" aptget install webapp foreign-webserver:i386=4 -s --solver $solver
153 if [ "$solver" = 'apt' ]; then
155 The solver encountered an error of
type: ERR_UNSOLVABLE
156 The following information might
help you to understand what is wrong
:
157 The following packages have unmet dependencies
:
158 cool
-webapp : Depends
: httpd
(>= 4)
160 $SOMEPACKAGESCOULDNOT
161 cool
-webapp : Depends
: httpd
(>= 4)
162 E
: External solver failed with
: The following packages have unmet dependencies
:"
165 $SOMEPACKAGESCOULDNOT
166 cool
-webapp : Depends
: httpd
(>= 4)
167 E
: Unable to correct problems
, you have held broken packages.
"
169 testfailureequal "$WEBAPP_ERR" aptget install cool-webapp -s --solver $solver
170 testfailureequal "$WEBAPP_ERR" aptget install cool-webapp foreign-webserver:i386 -s --solver $solver
172 testsuccessequal "$HEADER
173 The following NEW packages will be installed
:
174 cool
-webapp foreign
-webserver:i386
175 0 upgraded
, 2 newly installed
, 0 to remove and
2 not upgraded.
176 Inst foreign
-webserver:i386
(4 experimental
[i386
])
177 Inst cool
-webapp (4 experimental
[all
])
178 Conf foreign
-webserver:i386
(4 experimental
[i386
])
179 Conf cool
-webapp (4 experimental
[all
])" aptget install cool-webapp foreign-webserver:i386=4 -s --solver $solver
181 testsuccessequal "$HEADER
182 The following additional packages will be installed
:
184 The following NEW packages will be installed
:
186 0 upgraded
, 2 newly installed
, 0 to remove and
2 not upgraded.
187 Inst foo
(1 unstable
[all
])
188 Inst baz
:i386
(1 unstable
[i386
])
189 Conf foo
(1 unstable
[all
])
190 Conf baz
:i386
(1 unstable
[i386
])" aptget install baz:i386 -s --solver $solver
192 if [ "$solver" = 'apt' ]; then
193 testfailureequal "$HEADER
194 The solver encountered an error of
type: ERR_UNSOLVABLE
195 The following information might
help you to understand what is wrong
:
196 The following packages have unmet dependencies
:
197 baz
: Depends
: bar but it is not installable
199 $SOMEPACKAGESCOULDNOT
200 baz
: Depends
: bar but it is not installable
201 E
: External solver failed with
: The following packages have unmet dependencies
:" aptget install baz:amd64 -s --solver $solver
203 testfailureequal "$HEADER
204 $SOMEPACKAGESCOULDNOT
205 baz
: Depends
: bar but it is not installable
206 E
: Unable to correct problems
, you have held broken packages.
" aptget install baz:amd64 -s --solver $solver
209 HEADER="${HEADER_PRE}
210 Selected version
'2' (experimental
[amd64
]) for 'baz'"
211 if [ "$solver" = 'apt' ]; then
215 testsuccessequal "$HEADER
216 The following additional packages will be installed
:
218 The following NEW packages will be installed
:
220 0 upgraded
, 2 newly installed
, 0 to remove and
2 not upgraded.
221 Inst foo
(1 unstable
[all
])
222 Inst baz
(2 experimental
[amd64
])
223 Conf foo
(1 unstable
[all
])
224 Conf baz
(2 experimental
[amd64
])" aptget install baz/experimental -s --solver $solver
226 HEADER="${HEADER_PRE}
227 Selected version
'2' (experimental
[i386
]) for 'baz:i386'"
228 if [ "$solver" = 'apt' ]; then
232 testsuccessequal "$HEADER
233 The following additional packages will be installed
:
235 The following NEW packages will be installed
:
237 0 upgraded
, 2 newly installed
, 0 to remove and
2 not upgraded.
238 Inst foo
(1 unstable
[all
])
239 Inst baz
:i386
(2 experimental
[i386
])
240 Conf foo
(1 unstable
[all
])
241 Conf baz
:i386
(2 experimental
[i386
])" aptget install baz:i386/experimental -s --solver $solver
243 if [ "$solver" = 'apt' ]; then
244 HEADER="${HEADER_PRE}
247 HEADER="${HEADER_PRE}"
250 if [ "$solver" = 'apt' ]; then
251 testfailureequal "$HEADER
252 The solver encountered an error of
type: ERR_UNSOLVABLE
253 The following information might
help you to understand what is wrong
:
254 The following packages have unmet dependencies
:
255 baz
-broken:i386
: Depends
: bar
:amd64 but it is not installable
257 $SOMEPACKAGESCOULDNOT
258 baz
-broken:i386
: Depends
: bar
:amd64 but it is not installable
259 E
: External solver failed with
: The following packages have unmet dependencies
:" aptget install baz-broken -s --solver $solver
261 testfailureequal "$HEADER
262 $SOMEPACKAGESCOULDNOT
263 baz
-broken:i386
: Depends
: bar
:amd64 but it is not installable
264 E
: Unable to correct problems
, you have held broken packages.
" aptget install baz-broken -s --solver $solver
267 testsuccessequal "$HEADER
268 The following additional packages will be installed
:
270 The following NEW packages will be installed
:
272 0 upgraded
, 2 newly installed
, 0 to remove and
2 not upgraded.
273 Inst next
(1 unstable
[amd64
])
274 Inst needsrealnext
(2 unstable
[amd64
])
275 Conf next
(1 unstable
[amd64
])
276 Conf needsrealnext
(2 unstable
[amd64
])" aptget install needsrealnext -s --solver $solver
278 testsuccessequal "$HEADER
279 The following additional packages will be installed
:
281 The following NEW packages will be installed
:
282 needsrealnext
:i386 next
283 0 upgraded
, 2 newly installed
, 0 to remove and
2 not upgraded.
284 Inst next
(1 unstable
[amd64
])
285 Inst needsrealnext
:i386
(2 unstable
[i386
])
286 Conf next
(1 unstable
[amd64
])
287 Conf needsrealnext
:i386
(2 unstable
[i386
])" aptget install needsrealnext:i386 -s --solver $solver
289 testsuccessequal "$HEADER
290 The following additional packages will be installed
:
292 The following NEW packages will be installed
:
293 needsnext2 virtualnext2
294 0 upgraded
, 2 newly installed
, 0 to remove and
2 not upgraded.
295 Inst virtualnext2
(1 unstable
[amd64
])
296 Inst needsnext2
(2 unstable
[amd64
])
297 Conf virtualnext2
(1 unstable
[amd64
])
298 Conf needsnext2
(2 unstable
[amd64
])" aptget install needsnext2 -s --solver $solver
300 testsuccessequal "$HEADER
301 The following additional packages will be installed
:
303 The following NEW packages will be installed
:
304 needsnext2
:i386 virtualnext2
305 0 upgraded
, 2 newly installed
, 0 to remove and
2 not upgraded.
306 Inst virtualnext2
(1 unstable
[amd64
])
307 Inst needsnext2
:i386
(2 unstable
[i386
])
308 Conf virtualnext2
(1 unstable
[amd64
])
309 Conf needsnext2
:i386
(2 unstable
[i386
])" aptget install needsnext2:i386 -s --solver $solver
311 testsuccessequal "$HEADER
312 The following additional packages will be installed
:
314 The following NEW packages will be installed
:
315 needsnext3 virtualnext3
316 0 upgraded
, 2 newly installed
, 0 to remove and
2 not upgraded.
317 Inst virtualnext3
(1 unstable
[amd64
])
318 Inst needsnext3
(2 unstable
[amd64
])
319 Conf virtualnext3
(1 unstable
[amd64
])
320 Conf needsnext3
(2 unstable
[amd64
])" aptget install needsnext3 -s --solver $solver
322 if [ "$solver" = 'apt' ]; then
323 testfailureequal "$HEADER
324 The solver encountered an error of
type: ERR_UNSOLVABLE
325 The following information might
help you to understand what is wrong
:
326 The following packages have unmet dependencies
:
327 needsnext3
:i386
: Depends
: next3
:i386
(>= 2) but it is not installable
329 $SOMEPACKAGESCOULDNOT
330 needsnext3
:i386
: Depends
: next3
:i386
(>= 2) but it is not installable
331 E
: External solver failed with
: The following packages have unmet dependencies
:" aptget install needsnext3:i386 -s --solver $solver
333 testfailureequal "$HEADER
334 $SOMEPACKAGESCOULDNOT
335 needsnext3
:i386
: Depends
: next3
:i386
(>= 2) but it is not installable
336 E
: Unable to correct problems
, you have held broken packages.
" aptget install needsnext3:i386 -s --solver $solver
339 testsuccessequal "$HEADER
340 The following additional packages will be installed
:
342 The following NEW packages will be installed
:
343 needsselfprov1 selfprov
344 0 upgraded
, 2 newly installed
, 0 to remove and
2 not upgraded.
345 Inst selfprov
(2 unstable
[amd64
])
346 Inst needsselfprov1
(1 unstable
[amd64
])
347 Conf selfprov
(2 unstable
[amd64
])
348 Conf needsselfprov1
(1 unstable
[amd64
])" aptget install needsselfprov1 -s --solver $solver
349 testsuccessequal "$HEADER
350 The following additional packages will be installed
:
352 The following NEW packages will be installed
:
353 needsselfprov2 selfprov
354 0 upgraded
, 2 newly installed
, 0 to remove and
2 not upgraded.
355 Inst selfprov
(2 unstable
[amd64
])
356 Inst needsselfprov2
(1 unstable
[amd64
])
357 Conf selfprov
(2 unstable
[amd64
])
358 Conf needsselfprov2
(1 unstable
[amd64
])" aptget install needsselfprov2 -s --solver $solver
359 testsuccessequal "$HEADER
360 The following additional packages will be installed
:
362 The following NEW packages will be installed
:
363 needsselfprov12 selfprov
364 0 upgraded
, 2 newly installed
, 0 to remove and
2 not upgraded.
365 Inst selfprov
(2 unstable
[amd64
])
366 Inst needsselfprov12
(1 unstable
[amd64
])
367 Conf selfprov
(2 unstable
[amd64
])
368 Conf needsselfprov12
(1 unstable
[amd64
])" aptget install needsselfprov12 -s --solver $solver
369 if [ "$solver" = 'apt' ]; then
370 testfailureequal "$HEADER
371 The solver encountered an error of
type: ERR_UNSOLVABLE
372 The following information might
help you to understand what is wrong
:
373 The following packages have unmet dependencies
:
374 needsselfprov123
: Depends
: selfprov
(= 3)
376 $SOMEPACKAGESCOULDNOT
377 needsselfprov123
: Depends
: selfprov
(= 1)
378 Depends
: selfprov
(= 2)
379 Depends
: selfprov
(= 3)
380 E
: External solver failed with
: The following packages have unmet dependencies
:" aptget install needsselfprov123 -s --solver $solver
382 testfailureequal "$HEADER
383 $SOMEPACKAGESCOULDNOT
384 needsselfprov123
: Depends
: selfprov
(= 3)
385 E
: Unable to correct problems
, you have held broken packages.
" aptget install needsselfprov123 -s --solver $solver