science/hdf5 ABI broken

Steve Kargl sgk at troutmask.apl.washington.edu
Mon May 30 19:01:23 UTC 2016


The recent update from hdf5 1.8.16 to 1.10.0 has introduced
an issue with ABI incompatibility.  Thus, anyone that has
code written to the 1.8.16 ABI may find that their code no
longer functions with 1.10.0.  This should have been noted
in ports/UPDATING.

To fix the problem (currently under testin), one needs to
apply the following patches.


Index: Makefile
===================================================================
--- Makefile	(revision 415194)
+++ Makefile	(working copy)
@@ -23,7 +23,8 @@
 CONFIGURE_ARGS=	--enable-cxx \
 		--enable-hl \
 		--enable-instrument \
-		--enable-strict-format-checks
+		--enable-strict-format-checks \
+		--with-default-api-version=v18
 GNU_CONFIGURE=	yes
 INSTALL_TARGET=	install-strip
 MAKE_JOBS_UNSAFE=	yes

--- work/hdf5-1.10.0/fortran/src/H5_f.c.orig	2016-05-30 11:51:55.838813000 -0700
+++ work/hdf5-1.10.0/fortran/src/H5_f.c	2016-05-30 11:52:46.901739000 -0700
@@ -227,14 +227,14 @@
     /*
      * FIND H5T_NATIVE_REAL_C_LONG_DOUBLE
      */
-#if H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE!=0
+#if FORTRAN_C_LONG_DOUBLE_IS_UNIQUE!=0
     if (sizeof(real_C_LONG_DOUBLE_f) == sizeof(float)) {
       if ((types[12] = (hid_t_f)H5Tcopy(H5T_NATIVE_FLOAT)) < 0) return ret_value;
     } /*end if */
     else if (sizeof(real_C_LONG_DOUBLE_f) == sizeof(double)) {
       if ((types[12] = (hid_t_f)H5Tcopy(H5T_NATIVE_DOUBLE)) < 0) return ret_value;
     } /*end if */
-# if H5_FORTRAN_HAVE_C_LONG_DOUBLE!=0
+# if FORTRAN_HAVE_C_LONG_DOUBLE!=0
     else if (sizeof(real_C_LONG_DOUBLE_f) == sizeof(long double)) {
       if ( H5_PAC_C_MAX_REAL_PRECISION >= H5_PAC_FC_MAX_REAL_PRECISION) {
 	if ((types[12] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) return ret_value;

Please supply either a science/hdf5-1.8 port, revert the 1.10.0
update, or consider the above patches.

-- 
Steve


More information about the freebsd-ports mailing list