Package: libibverbs1 Version: 1.1.8-1 Severity: serious Tags: patch User: [email protected] Usertags: piuparts Control: affects -1 + libopenmpi1.6 src:openmpi
Hi,
while analyzing some piuparts upgrade tests I noticed some cases where
the openmpi 1.3 -> 1.6 transition does not work out as expected. If this
happens, the scoring in apt generates a tie for the scores of
libopenmpi1.3 and libopenmpi1.6 which is resolved in favor of the
package already installed. This results in some packages not being
upgraded - which is not the intended result for a distupgrade.
To work around this, I suggest to add a Breaks: libopenmpi1.3 to any
dependency of libopenmpi1.6, e.g. libibverbs1. The dependency will
have a score slightly higher that that of the dependee, which is
sufficient to break the tie the other way around.
Since libopenmpi1.6 already has a 'Conflicts: libopenmpi1.3', there is
no wheezy -> jessie upgrade patch where the obsolete libopenmpi1.3
should survive. Adding more Breaks on libopenmpi1.3, e.g. to
libibverbs1, will only help to reach this goal.
Apt problemresolver debug output before the patch:
[...]
1 libibverbs1 [ amd64 ] < 1.1.6-1 -> 1.1.8-1 > ( libs )
[...]
-1 libhdf5-openmpi-8 [ amd64 ] < none -> 1.8.13+docs-15 > ( libs )
-1 libopenmpi1.3 [ amd64 ] < 1.4.5-1 > ( libs )
-1 libopenmpi1.6 [ amd64 ] < none -> 1.6.5-9.1 > ( libs )
-2 libhdf5-openmpi-7 [ amd64 ] < 1.8.8-9+b1 > ( libs )
[...]
Starting 2
Investigating (0) gcc-4.9-base [ amd64 ] < none -> 4.9.2-10 > ( libs )
Broken gcc-4.9-base:amd64 Breaks on gcc-4.7-base [ amd64 ] < 4.7.2-5 > ( libs
) (< 4.7.3)
Considering gcc-4.7-base:amd64 2 as a solution to gcc-4.9-base:amd64 39
Added gcc-4.7-base:amd64 to the remove list
Fixing gcc-4.9-base:amd64 via remove of gcc-4.7-base:amd64
Investigating (0) libopenmpi1.6 [ amd64 ] < none -> 1.6.5-9.1 > ( libs )
Broken libopenmpi1.6:amd64 Conflicts on libopenmpi1.3 [ amd64 ] < 1.4.5-1 > (
libs )
Considering libopenmpi1.3:amd64 -1 as a solution to libopenmpi1.6:amd64 -1
Holding Back libopenmpi1.6:amd64 rather than change libopenmpi1.3:amd64
Investigating (1) libhdf5-openmpi-8 [ amd64 ] < none -> 1.8.13+docs-15 > (
libs )
Broken libhdf5-openmpi-8:amd64 Depends on libopenmpi1.6 [ amd64 ] < none ->
1.6.5-9.1 > ( libs )
Considering libopenmpi1.6:amd64 -1 as a solution to libhdf5-openmpi-8:amd64
-1
Holding Back libhdf5-openmpi-8:amd64 rather than change libopenmpi1.6:amd64
Investigating (2) libmed1 [ amd64 ] < 3.0.3-3 -> 3.0.6-7 > ( libs )
Broken libmed1:amd64 Depends on libhdf5-openmpi-8 [ amd64 ] < none ->
1.8.13+docs-15 > ( libs ) (>= 1.8.13)
Considering libhdf5-openmpi-8:amd64 -1 as a solution to libmed1:amd64 0
Holding Back libmed1:amd64 rather than change libhdf5-openmpi-8:amd64
Try to Re-Instate (3) libmed1:amd64
Done
The following packages will be REMOVED:
gcc-4.7-base
The following NEW packages will be installed:
[...]
The following packages have been kept back:
libmed1
The following packages will be upgraded:
[...]
Apt problemresolver debug output after the patch:
[...]
1 libibverbs1 [ amd64 ] < 1.1.6-1 -> 1.1.8-2 > ( libs )
[...]
-1 libhdf5-openmpi-8 [ amd64 ] < none -> 1.8.13+docs-15 > ( libs )
-1 libopenmpi1.3 [ amd64 ] < 1.4.5-1 > ( libs )
-1 libopenmpi1.6 [ amd64 ] < none -> 1.6.5-9.1 > ( libs )
-2 libhdf5-openmpi-7 [ amd64 ] < 1.8.8-9+b1 > ( libs )
[...]
Starting 2
Investigating (0) gcc-4.9-base [ amd64 ] < none -> 4.9.2-10 > ( libs )
Broken gcc-4.9-base:amd64 Breaks on gcc-4.7-base [ amd64 ] < 4.7.2-5 > ( libs
) (< 4.7.3)
Considering gcc-4.7-base:amd64 2 as a solution to gcc-4.9-base:amd64 39
Added gcc-4.7-base:amd64 to the remove list
Fixing gcc-4.9-base:amd64 via remove of gcc-4.7-base:amd64
Investigating (0) libibverbs1 [ amd64 ] < 1.1.6-1 -> 1.1.8-2 > ( libs )
Broken libibverbs1:amd64 Breaks on libopenmpi1.3 [ amd64 ] < 1.4.5-1 > ( libs
)
Considering libopenmpi1.3:amd64 -1 as a solution to libibverbs1:amd64 1
Added libopenmpi1.3:amd64 to the remove list
Fixing libibverbs1:amd64 via remove of libopenmpi1.3:amd64
Investigating (0) libhdf5-openmpi-7 [ amd64 ] < 1.8.8-9+b1 > ( libs )
Broken libhdf5-openmpi-7:amd64 Depends on libopenmpi1.3 [ amd64 ] < 1.4.5-1 >
( libs )
Considering libopenmpi1.3:amd64 -1 as a solution to libhdf5-openmpi-7:amd64
-2
Removing libhdf5-openmpi-7:amd64 rather than change libopenmpi1.3:amd64
Done
The following packages will be REMOVED:
gcc-4.7-base libhdf5-openmpi-7 libopenmpi1.3
The following NEW packages will be installed:
[...]
The following packages will be upgraded:
[...]
Attached is the patch I used to verify my suggested fix as well as the
two full piuparts logfiles. I do *not* intend to NMU libibverbs1.
Andreas
diff -Nru libibverbs-1.1.8/debian/changelog libibverbs-1.1.8/debian/changelog --- libibverbs-1.1.8/debian/changelog 2014-05-05 20:45:06.000000000 +0200 +++ libibverbs-1.1.8/debian/changelog 2015-03-17 02:02:30.000000000 +0100 @@ -1,3 +1,10 @@ +libibverbs (1.1.8-2) UNRELEASED; urgency=medium + + * Add 'Breaks: libopenmpi1.3' to smoothen the openmpi transition on some + wheezy -> jessie upgrade paths. (Closes: #xxxxxx) + + -- Andreas Beckmann <[email protected]> Tue, 17 Mar 2015 02:01:00 +0100 + libibverbs (1.1.8-1) unstable; urgency=low * New upstream release. diff -Nru libibverbs-1.1.8/debian/control libibverbs-1.1.8/debian/control --- libibverbs-1.1.8/debian/control 2014-05-05 20:45:06.000000000 +0200 +++ libibverbs-1.1.8/debian/control 2015-03-17 02:00:58.000000000 +0100 @@ -10,6 +10,7 @@ Section: libs Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, adduser +Breaks: libopenmpi1.3 Description: Library for direct userspace use of RDMA (InfiniBand/iWARP) libibverbs is a library that allows userspace processes to use RDMA "verbs" as described in the InfiniBand Architecture Specification and
libmed1.fail.log.gz
Description: application/gzip
libmed1.pass.log.gz
Description: application/gzip

