Package: libibverbs1
Version: 1.1.8-1
Severity: serious
Tags: patch
User: debian...@lists.debian.org
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 <a...@debian.org>  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

Attachment: libmed1.fail.log.gz
Description: application/gzip

Attachment: libmed1.pass.log.gz
Description: application/gzip

Reply via email to