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