science/hdf5 ABI broken

Steve Kargl sgk at troutmask.apl.washington.edu
Thu Jun 2 17:50:21 UTC 2016


On Thu, Jun 02, 2016 at 10:17:18AM -0700, Don Lewis wrote:
> On  1 Jun, Steve Kargl wrote:
> > On Mon, May 30, 2016 at 09:12:46PM +0200, Alphons van Werven wrote:
> >> Steve Kargl wrote:
> >> 
> >> > Please supply either a science/hdf5-1.8 port, revert the 1.10.0
> >> > update, or consider the above patches.
> >> 
> >> Sounds like a job for the port's maintainer...
> >> 
> >> % make -C /usr/ports/science/hdf5 maintainer
> >> 
> > 
> > There is a patch for the Makefile, so I'm well aware of the
> > maintainer line.  I'm going under the assumption that if one
> > is a maintainer, then s/he will be reading this list.  I'm
> > also going on the assumption that users of the hdf5 port cannot
> > magically read the maintainer's email.  You can take my original
> > post as public service for the users of hdf5.  I'll note that
> > there are 2 bug reports about the breakage:
> > 
> > [Bug 209242] math/matio broken by science/hd5 upgrade to 1.10  
> > [Bug 209244] math/scilab broken by science/hd5 upgrade to 1.10 
> > 
> > I doubt that the patches proposed in these PR apply to any 
> > Fortran codes, but I'm too disinterested to investigate further. 
> > 
> > I suspect that the breakage is going to affect more ports, and for
> > the users of these port they may not even be aware of problem (i.e.,
> > they may produce corrupt data with no obvious warning or error).
> > 
> > The very first entry under "New Features" in the Release Notes
> > for HDF5 1.10.0 is
> > 
> >     - API Compatibility with HDF5 1.8 Flag Was Added
> > 
> >       The 1.10 version of the HDF5 Library can be configured to operate
> >       identically to the 1.8 library with the --with-default-api-version=v18
> >       configure flag. This allows existing code to be compiled with the 1.10
> >       library without requiring immediate changes to the application source
> >       code. For addtional configuration options and other details, see
> >       "API Compatibility Macros in HDF5" at
> >       https://www.hdfgroup.org/HDF5/doc/RM/APICompatMacros.html.
> > 
> > This doesn't give one too much confidence that the maintainer actually
> > looked at the documentation.  S/he simply assumed that a point release
> > update from 1.8.16 to 1.10.0 did not change the ABI/API.
> 
> The matio and scilab ports would not build after hdf5 was upgraded.  In
> addition to the configure flag that you mention, hdf5 can also be told
> to use one of its older API versions by specifying specific preprocessor
> defines when building software that pulls in its include files.  The
> matio and scilab ports were modified to use the H5_USE_18_API
> preprocessor flag to get the version 1.8 API and they now succesfully
> build.

The preprocessor flag may work for C (and C++).  It will
not work with Fortran.  The Fortran interface for HDF5 
will produce modules (e.g., /usr/local/include/hdf5.mod).
You can think of a Fortran module as a pre-compiled header
on steriods.

> That said, ports that use hdf5 should have been tested with new version
> and patches prepared to fix them before the new version was committed.

I agree that further testing should have been done.  But, building
other ports that consume HDF5 may not be sufficient.  There is
a difference between "does it build" and "does it produce correct
results". 

-- 
Steve


More information about the freebsd-ports mailing list