Release of HDF5-1.10.0-pre1

Release of HDF5-1.10.0-pre1

···

===========================

The HDF5-1.10.0-pre1 release is now available.

We would highly appreciate any feedback regarding it, as we will be releasing
HDF5-1.10.0 at the end of March. PLEASE be aware that when building HDF5 the
SWMR feature is on by default. You must be on a local file system or a parallel
file system like GPFS to use the SWMR feature, as it requires write ordering
to be preserved. Most network file systems (NFS, SMB/Windows file share, etc.)
do not guarantee write ordering.

The HDF5-1.10.0-pre1 release can be obtained from The HDF Group Downloads page:

   https://www.hdfgroup.org/downloads/

It can also be obtained directly from:

   https://www.hdfgroup.org/HDF5/release/obtain5110.html

New Features in this release are described here:

   https://www.hdfgroup.org/HDF5/release/obtain5110.html#newfeat

The release notes include complete details on what is new in this release:

   https://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.0-pre1/src/hdf5-1.10.0-pre1-RELEASE.txt

HDF5-1.10.0-pre1 contains the following changes as well as those included in
the alpha0 and alpha1 releases:

o Integration of Java HDF5 JNI into HDF5

   The Java HDF5 JNI library has been integrated into the HDF5 source code repository.
   The configure option "--enable-java" has been added to build HDF5 with Java.
   The CMake option is HDF5_BUILD_JAVA:BOOL=ON.

   In addition, the package hierarchy has changed to "hdf.hdflib.hdf5" from
   "ncsa.hdf.hdflib.hdf5", as it was in the HDF5-1.8 JNI.

   Several new APIs have also been added, including those for VDS and SWMR.

o Many changes have been made to the HDF5 configuration, including:

   - The --with-default-api-version=v18 configure flag has been added to build
     HDF5-1.10 using the HDF5-1.8 APIs.

   - The autotools configuration options have been updated to allow more control over
     build options and to correct some bugs.

   - Changes were made in how autotools handles large file support (LFS).

HDF5-1.10-0-alpha1 included these features:

o The HDF5 Collective Metadata I/O feature
o A fix for the h5format_convert tool

HDF5-1.10-0-alpha0 included these features:

o Concurrent Access to an HDF5 File: Single Writer / Multiple Reader (SWMR)
o Virtual Dataset (VDS)
o Scalable Chunking indexing
o Persistent Free File Space Tracking

See the release notes for complete details on what is included in this release:

   https://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.0-pre1/src/hdf5-1.10.0-pre1-RELEASE.txt

Hi,

On Windows 7, building in msys shell with mingw-w64 port of gcc-4.9.2 I run:

./configure --disable-shared --enable-static CFLAGS=-DH5_HAVE_WIN32_API CPPFLAGS=-IC:/_64/msys_492/1.0/local/include LDFLAGS=-LC:/_64/msys_492/1.0/local/lib --prefix=C:/_64/msys_492/1.0/local

which was a configure command that worked fine for me with the last build (1.8.16-pre2) of hdf5 that I tried.

When running 'make', the first stumbling block is this section of code in src/H5Oprivate.h:

#ifdef OUT
/* Typedef for "internal library" iteration operations */
typedef herr_t (*H5O_lib_operator_t)(H5O_t *oh, H5O_mesg_t *mesg/*in,out*/,
    unsigned sequence, hbool_t *oh_modified/*out*/, void *operator_data/*in,out*/);
#endif
/* Typedef for "internal library" iteration operations */
typedef herr_t (*H5O_lib_operator_t)(H5O_t *oh, H5O_mesg_t *mesg/*in,out*/,
    unsigned sequence, unsigned *oh_modified/*out*/, void *operator_data/*in,out*/);

If OUT is defined (as is the case for me) then herr_t gets typedef'ed twice - which is a fatal error.

Second stumbling block is:

  CC external.o
  CCLD external.exe
external.o:external.c:(.text+0x3e4f): undefined reference to `setenv'
external.o:external.c:(.text+0x4d08): undefined reference to `setenv'
external.o:external.c:(.text+0x65ce): undefined reference to `setenv'
external.o:external.c:(.text+0x70a5): undefined reference to `setenv'
external.o:external.c:(.text+0x8828): undefined reference to `setenv'
external.o:external.c:(.text+0x9585): more undefined references to `setenv' follow
collect2.exe: error: ld returned 1 exit status

We need to link to libiberty.a to resolve 'setenv'.
To achieve this I simply changed each occurrence of "-lz $LIBS" in the configure script to "-lz $LIBS -liberty".

Next stumbling block:

  CC twriteorder.o
  CCLD twriteorder.exe
twriteorder.o:twriteorder.c:(.text+0x8e8): undefined reference to `fork'
twriteorder.o:twriteorder.c:(.text+0xa0a): undefined reference to `waitpid'
twriteorder.o:twriteorder.c:(.text+0xa37): undefined reference to `WIFEXITED'
twriteorder.o:twriteorder.c:(.text+0xa47): undefined reference to `WEXITSTATUS'
collect2.exe: error: ld returned 1 exit status

I couldn't find any library that resolves 'waitpid'. Do I therefore need to disable SWMR ?

How do I disable SWMR ? (I tried adding --disable-SWMR to configure, but it gets reported as an unknown option.)

Cheers,
Rob

···

-----Original Message----- From: help@hdfgroup.org
Sent: Friday, March 18, 2016 6:43 AM
To: hdf-forum@lists.hdfgroup.org
Subject: [Hdf-forum] Release of HDF5-1.10.0-pre1

Hi all,

- The OUT is easy to redefine to something like H5_OUT.

- We are using setenv for the first time in 1.10.0 and the Windows equivalent is probably wrapped in a Visual Studio #ifdef instead of a Win32 #ifdef. This should be easy to fix.

- SWMR cannot be disabled via configure since the changes are too ingrained into the library for that. fork and waitpid are just used in a few tests. The problem is most likely that the test is not protected by any Windows-specific #ifdefs since it's not in CMake. SWMR is only currently tested on POSIX systems that use the autotools for building since the testing makes heavy use of shell scripts, fork, etc. which are not available on Windows. I'll see if I can #ifdef around the problem.

Dana Robinson
Software Engineer
The HDF Group

···

-----Original Message-----
From: Hdf-forum [mailto:hdf-forum-bounces@lists.hdfgroup.org] On Behalf Of sisyphus1@optusnet.com.au
Sent: Friday, March 18, 2016 3:14 AM
To: hdf-forum@lists.hdfgroup.org
Subject: Re: [Hdf-forum] Release of HDF5-1.10.0-pre1

-----Original Message-----
From: help@hdfgroup.org
Sent: Friday, March 18, 2016 6:43 AM
To: hdf-forum@lists.hdfgroup.org
Subject: [Hdf-forum] Release of HDF5-1.10.0-pre1

Hi,

On Windows 7, building in msys shell with mingw-w64 port of gcc-4.9.2 I run:

./configure --disable-shared --enable-static CFLAGS=-DH5_HAVE_WIN32_API CPPFLAGS=-IC:/_64/msys_492/1.0/local/include
LDFLAGS=-LC:/_64/msys_492/1.0/local/lib --prefix=C:/_64/msys_492/1.0/local

which was a configure command that worked fine for me with the last build
(1.8.16-pre2) of hdf5 that I tried.

When running 'make', the first stumbling block is this section of code in
src/H5Oprivate.h:

#ifdef OUT
/* Typedef for "internal library" iteration operations */ typedef herr_t (*H5O_lib_operator_t)(H5O_t *oh, H5O_mesg_t *mesg/*in,out*/,
    unsigned sequence, hbool_t *oh_modified/*out*/, void *operator_data/*in,out*/); #endif
/* Typedef for "internal library" iteration operations */ typedef herr_t (*H5O_lib_operator_t)(H5O_t *oh, H5O_mesg_t *mesg/*in,out*/,
    unsigned sequence, unsigned *oh_modified/*out*/, void *operator_data/*in,out*/);

If OUT is defined (as is the case for me) then herr_t gets typedef'ed twice - which is a fatal error.

Second stumbling block is:

  CC external.o
  CCLD external.exe
external.o:external.c:(.text+0x3e4f): undefined reference to `setenv'
external.o:external.c:(.text+0x4d08): undefined reference to `setenv'
external.o:external.c:(.text+0x65ce): undefined reference to `setenv'
external.o:external.c:(.text+0x70a5): undefined reference to `setenv'
external.o:external.c:(.text+0x8828): undefined reference to `setenv'
external.o:external.c:(.text+0x9585): more undefined references to `setenv'
follow
collect2.exe: error: ld returned 1 exit status

We need to link to libiberty.a to resolve 'setenv'.
To achieve this I simply changed each occurrence of "-lz $LIBS" in the configure script to "-lz $LIBS -liberty".

Next stumbling block:

  CC twriteorder.o
  CCLD twriteorder.exe
twriteorder.o:twriteorder.c:(.text+0x8e8): undefined reference to `fork'
twriteorder.o:twriteorder.c:(.text+0xa0a): undefined reference to `waitpid'
twriteorder.o:twriteorder.c:(.text+0xa37): undefined reference to `WIFEXITED'
twriteorder.o:twriteorder.c:(.text+0xa47): undefined reference to `WEXITSTATUS'
collect2.exe: error: ld returned 1 exit status

I couldn't find any library that resolves 'waitpid'. Do I therefore need to disable SWMR ?

How do I disable SWMR ? (I tried adding --disable-SWMR to configure, but it gets reported as an unknown option.)

Cheers,
Rob

_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@lists.hdfgroup.org
http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
Twitter: https://twitter.com/hdf5

Is the bump of LT_VERS_INTERFACE to 100 just a placeholder for the
pre-releases?

--
Orion Poplawski

Hi Orion,

The 1.10.0 interface is not compatible with the latest 1.8.16 release, and
so an interface version bump is necessary.

Furthermore, we will be continuing to release new versions in the 1.8.x
maintenance release line (e.g. 1.8.17, 1.8.18, etc.) alongside future releases
in the 1.10.x release line (1.10.1, 1.10.2, etc.). Since the libraries have the
same names (libhdf5), we don't want a situation where the soname of the 1.8.x
series "catches up" to or surpasses the 1.10.x series, so we 've started the
1.10.x series of releases with LT_VERS_INTERFACE set to 100 (a number we feel
there is very little chance will be arrived at in the 1.8.x release line�s lifetime).

If you have an alternate suggestion for maintaining interface version numbers
for multiple concurrent maintenance release lines of the same software, we would
definitely entertain alternate solutions.

Thank you!