Bug#699155: hdf5: dependencies can be satisfied interchangeably with libraries providing different ABIs

Ana Guerrero ana at debian.org
Mon Jan 28 10:04:09 UTC 2013


Package: src:hdf5
Version: 1.8.8-9
Severity: serious

In Squeeze there are two virtual packages libhdf5-1.8 and libhdf5-1.8.4, that
allow to install either libhdf5-serial-1.8.4, libhdf5-openmpi-1.8.4,
libhdf5-mpich-1.8.4 or libhdf5-lam-1.8.4 to satisfy the dependency on
libhdf5-1.8.4. (Usually packages are depending on: libhdf5-serial-1.8.4 | libhdf5-1.8.4)

In Wheezy those libraries are not longer ABI compatible, therefore
the serial version was renamed libhdf5-7 and also the packages of the others
versions, for example libhdf5-openmpi-7, has a provides line:
Provides: libhdf5-1.8, libhdf5-7

So you can install for example, r-cran-hdf5 and it will install by default
the serial version (libhdf5-7), but you can also install it at the
same time than libhdf5-openmpi-7 (or you might have it installed already)
and then you will get it installed with the openMPI version despite being built
against the serial version, that as said isn't ABI compatible.

Some packages, such as slepc, have their build dependencies explicitly against
the openMPI version and those are OK.

Due the ABI incompatibility we can not longer use the same scheme than in
Squeeze, but I think having the serial version named libhdf5-7 is confusing.

Possible solutions... given the proximity of the release I'm aware some of
them might not be possible but I'm listing everything for the sake of
completeness, don't jump in your chair when reading some of the possibilities
listed :-)

a) Have libhdf5-7 renamed back with the *serial* label (libhdf5-serial-1.8.4) 
and also the -dev packages. Then have the packages using hdf5 depending on 
the supported implementation(s), that is if they support several implementation
provide a binary for implementation: r-cran-hdf5-serial r-cran-hdf5-openMPI

b)  Switch all the packages to use only one of the implementation except
those that only work in of the implementations, depending explicitly in
*-serial-*  or *-openmpi-* (or mpich in those archs that don't support
openMPI).
 b.1) make this implementation by default to be the serial version
 b.2) make this implementation by default to be the openMPI version. Which doesn't
sound like a crazy idea if you look at the popcon [1] and think the context
hdf5 is widely used (supercomputing).

c) Remove the provides from libhdf5-openmpi-7 and libhdf5-mpich-7 and keep
the status quo. You either install libhdf5-openmpi-7 with the packages
needing this implementation or you install libhdf5-7 with the packages
depending on this one. If you go to decide for the openmpi version
and you need a package only built for the serial version, you would
need to rebuild it.
(This is somehow a variation of b.1) because all the stuff is built against
the serial version unless the maintainer explicitily puts the openmpi one )

d) ? :)

In any case, how to switch or handle the different implementation would be nice
to have documented in a README file.

Ana

[1] http://qa.debian.org/popcon.php?package=hdf5
If you look at the amout of installations of libhdf5-openmpi-dev installations
it is the same that libhdf5-dev and growing faster.
As curiosity note: after the rename of the serial version to be the *default*
version was uploaded to unstable around January 2012, you can see libhdf5-7
rocketed in the popcon graph.



More information about the Pkg-grass-devel mailing list