Plea to fix the [ parallel | serial ] HDF5 problem

Gilles Filippini pini at debian.org
Thu May 29 09:26:39 UTC 2014


Hi,

Gilles Filippini a écrit , Le 24/05/2014 11:58:
> Alastair McKinstry a écrit , Le 21/05/2014 15:40:
>> The best solution I can think of is:
>> (1) make the packages install into
>>     /usr/lib/$MPIV/...
>> with $MPIV equalling either mpiversion (openmpi, mpich2, ...) or
>> 'serial', or 'any'.
>> (2) Use alternatives to set a default.
>> (3) Mangle the libnames as follows:
>>         /usr/lib/openmpi/lib/libhdf5.so -->
>> /usr/lib/$(DEB_HOST_MULTIARCH)/libhdf5_openmpi.so.7.1.1
>> ie. adding _$(MPIV) to the libname.
>> This results in a library that uses it being hard-coded to use that
>> particular version, but
>> (4) the version in /usr/lib/any/ does _not_ mangle the libname, but
>> points to a version with
>> libhdf5.so.7.1.1 with SONAME 'libhdf5.so.7', which is just a shell for
>> linking against, but which itself
>> is linked against a version (any, default serial) of the HDF5 libs.
>> Hence any application which does not
>> care of the given features (threadsafe, compression, parallelism) can
>> use this version.
>> Binaries built with it will resolve /usr/lib/*/libhdf5.so.7.1.1 pointing
>> to the default version on the system.
>>
>> This will enable the building of a libnetcdf-$mpi version, for parallel
>> writes, and other libraries.
>>
>> Any comments?
> 
> I like the idea, especially part [3] which is the clever trick I was
> missing. But then do we actually need the /alternatives/ + /any/ stuff?
> Shouldn't [1] and [3] be sufficient? Application which do not care could
> just go with the serial version.

Following Alastair's proposal I've adapted my previous try on this
topic. Here is a summary of the proposed changes from my local git log:
    Make serial and $mpi flavors co-installable

    * Patch autotools configuration to add option --with-flavor which
      append _<flavor-name> to the libraries' names
    * Configure $mpi builds with flavor-name=$mpi
    * link $mpi flavor development libs to
      /usr/lib/$MULTIARCH/$mpi/libhdf5-<legacy-names> (so that existing
      makefiles still work using -L/usr/lib/$MULTIARCH/$mpi)
    * install $mpi flavor include files into /usr/include/$mpi (so
      that existing makefiles still work using -I/usr/include/$mpi)
    * Use alternatives to choose default h5p{cf}c
    * Deactivate patch skip_cxx_inclusion.diff
    * Remove related Conflicts / Provides from debian/control*

I've successfully tested the co-installation with all packages and the
build of an example using each flavor.

All this work was done against upstream release 1.8.13. I've had to bump
the soname to 8 because of the MPI-POSIX driver removal [1].

Of course this will require a transition.

Any comments before I upload to experimental?

Thanks in advance,

[1] <http://www.hdfgroup.org/HDF5/doc/ADGuide/Changes.html>

_g.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: OpenPGP digital signature
URL: <http://lists.alioth.debian.org/pipermail/pkg-grass-devel/attachments/20140529/5c6aca44/attachment.sig>


More information about the Pkg-grass-devel mailing list