Subject: CVS commit: pkgsrc/devel/hdf5
From: Wen Heping
Date: 2018-05-16 04:37:06
Message id: 20180516023706.97DC2FBEC@cvs.NetBSD.org

Log Message:
Update to 1.10.2

Upstream changes:
HDF5 version 1.10.2 released on 2018-03-29
================================================================================
CONTENTS

- New Features
- Support for new platforms and languages
- Bug Fixes since HDF5-1.10.1
- Supported Platforms
- Tested Configuration Features Summary
- More Tested Platforms
- Known Problems

New Features
============

    Configuration and Build Systems:
    --------------------------------
    - CMake builds
    --------------

      - Changed minimum CMake required version to 3.10.

      This change removed the need to support a copy of the FindMPI.cmake module,
      which has been removed, along with its subfolder in the config/cmake_ext_mod
      location.

      (ADB - 2018/03/09)

      - Added pkg-config file generation

      Added pkg-config file generation for the C, C++, HL, and HL C++ libraries.
      In addition, builds on Linux will create h5cc, h5c++, h5hlcc, and h5hlc++ \ 
scripts in the bin
      directory that use the pkg-config files. The scripts can be used to build \ 
HDF5 C and C++
      applications (i.e, similar to the compiler scripts produced by the \ 
Autotools builds).

      (ADB - 2018/03/08, HDFFV-4359)

       - Refactored use of CMAKE_BUILD_TYPE for new variable, which understands
      the type of generator in use.

      Added new configuration macros to use new HDF_BUILD_TYPE variable. This
      variable is set correctly for the type of generator being used for the build.

      (ADB - 2018/01/08, HDFFV-10385, HDFFV-10296)

    - Autotools builds
    ------------------

       - Removed version-specific gcc/gfortran flags for version 4.0 (inclusive)
      and earlier.

      The config/gnu-flags file, which is sourced as a part of the configure
      process, adds version-specific flags for use when building HDF5. Most of
      these flags control warnings and do not affect the final product.

      Flags for older versions of the compiler were consolidated into the
      common flags section. Moving these flags simplifies maintenance of
      the file.

      The upshot of this is that building with ancient versions of gcc
      (<= 4.0) will possibly no longer work without hand-hacking the file
      to remove the flags not understood by that version of the compiler.
      Nothing should change when building with gcc >= 4.1.

      (DER - 2017/05/31, HDFFV-9937)

       - -fno-omit-frame-pointer was added when building with debugging symbols
      enabled.

      Debugging symbols can be enabled independently of the overall build
      mode in both the autotools and CMake. This allows (limited) debugging
      of optimized code. Since many debuggers rely on the frame pointer,
      we've disabled this optimization when debugging symbols are requested
      (e.g.: via building with --enable-symbols).

      (DER - 2017/05/31, HDFFV-10226)

    Library:
    --------
    - Added an enumerated value to H5F_libver_t for H5Pset_libver_bounds().

      Currently, the library defines two values for H5F_libver_t and supports
      only two pairs of (low, high) combinations as derived from these values.
      Thus the bounds setting via H5Pset_libver_bounds() is rather restricted.

      Added an enumerated value (H5F_LIBVER_V18) to H5F_libver_t and
      H5Pset_libver_bounds() now supports five pairs of (low, high) combinations
      as derived from these values.  This addition provides the user more
      flexibility in setting bounds for object creation.

      (VC - 2018/03/14)

    - Added prefix option to VDS files.

      Currently, VDS source files must be in the active directory to be
      found by the virtual file. Adding the option of a prefix to be set
      on the virtual file, using a data access property list (DAPL),
      allows the source files to locate at an absolute or relative path
      to the virtual file.
      Private utility functions in H5D and H5L packages merged into single
      function in H5F package.

      New public APIs:
            herr_t H5Pset_virtual_prefix(hid_t dapl_id, const char* prefix);
            ssize_t H5Pget_virtual_prefix(hid_t dapl_id, char* prefix /*out*/, \ 
size_t size);
      The prefix can also be set with an environment variable, HDF5_VDS_PREFIX.

      (ADB - 2017/12/12, HDFFV-9724, HDFFV-10361)

    - H5FDdriver_query() API call added to the C library.

      This new library call allows the user to query a virtual file driver
      (VFD) for the feature flags it supports (listed in H5FDpublic.h).
      This can be useful to determine if a VFD supports SWMR, for example.

      Note that some VFDs have feature flags that may only be present
      after a file has been created or opened (e.g.: the core VFD will
      have the H5FD_FEAT_POSIX_COMPAT_HANDLE flag set if the backing
      store is switched on). Since the new API call queries a generic VFD
      unassociated with a file, these flags will never be returned.

      (DER - 2017/05/31, HDFFV-10215)

    - H5FD_FEAT_DEFAULT_VFD_COMPATIBLE VFD feature flag added to the C library.

      This new feature flag indicates that the VFD is compatible with the
      default VFD. VFDs that set this flag create single files that follow
      the canonical HDF5 file format.

      (DER - 2017/05/31, HDFFV-10214)

    - The H5I_REFERENCE value in the H5I_type_t enum (defined in H5Ipublic.h)
      has been marked as deprectated.

      This ID type value is not used in the C library. i.e.: There are no
      hid_t values that are of ID type H5I_REFERENCE.

      This enum value will be removed in a future major version of the library.
      The code will remain unchanged in the HDF5 1.10.x  releases and branches.

      (DER - 2017/04/05, HDFFV-10252)

    Parallel Library:
    -----------------
    - Enabled compression for parallel applications.

      With this release parallel applications can create and write compressed
      datasets (or the datasets with the filters such as Fletcher32 applied).

      (EIP - 2018/03/29)

    - Addressed slow file close on some Lustre file systems.

      Slow file close has been reported on some Lustre file systems.
      While the ultimate cause is not understood fully, the proximate
      cause appears to be long delays in MPI_File_set_size() calls at
      file close and flush.

      To minimize this problem pending a definitive diagnosis and fix,
      PHDF5 has been modified to avoid MPI_File_set_size() calls when
      possible.  This is done by comparing the library's EOA (End of
      Allocation) with the file systems EOF, and skipping the
      MPI_File_set_size() call if the two match.

      (JRM - 2018/03/29)

    - Optimized parallel open/location of the HDF5 super-block.

      Previous releases of PHDF5 required all parallel ranks to
      search for the HDF5 superblock signature when opening the
      file. As this is accomplished more or less as a synchronous
      operation, a large number of processes can experience a
      slowdown in the file open due to filesystem contention.

      As a first step in improving the startup/file-open performance,
      we allow MPI rank 0 of the associated MPI communicator to locate
      the base offset of the super-block and then broadcast that result
      to the remaining ranks in the parallel group.  Note that this
      approach is utilized ONLY during file opens which employ the MPIO
      file driver in HDF5 by previously having called H5Pset_fapl_mpio().

      HDF5 parallel file operations which do not employ multiple ranks
      e.g. specifiying MPI_COMM_SELF (whose MPI_Comm_size == 1)
      as opposed to MPI_COMM_WORLD, will not be affected by this
      optimization.  Conversely, parallel file operations on subgroups
      of MPI_COMM_WORLD are allowed to be run in parallel with each
      subgroup operating as an independant collection of processes.

      (RAW - 2017/10/10, HDFFV-10294)

    - Added large (>2GB)  MPI-IO transfers.

      Previous releases of PHDF5 would fail when attempting to
      read or write greater than 2GB of data in a single IO operation.
      This issue stems principally from an MPI API whose definitions
      utilize 32 bit integers to describe the number of data elements
      and datatype that MPI should use to effect a data transfer.
      Historically, HDF5 has invoked MPI-IO with the number of
      elements in a contiguous buffer represented as the length
      of that buffer in bytes.

      Resolving the issue and thus enabling larger MPI-IO transfers
      is accomplished first, by detecting when a user IO request would
      exceed the 2GB limit as described above.  Once a transfer request
      is identified as requiring special handling, PHDF5 now creates a
      derived datatype consisting of a vector of fixed sized blocks
      which is in turn wrapped within a single MPI_Type_struct to
      contain the vector and any remaining data.   The newly created
      datatype is then used in place of MPI_BYTE and can be used to
      fulfill the original user request without encountering API
      errors.

      (RAW - 2017/09/10, HDFFV-8839)

    C++ Library:
    ------------
    - The following C++ API wrappers have been added to the C++ Library:
      + H5Lcreate_soft:
        // Creates a soft link from link_name to target_name.
        void link(const char *target_name, const char *link_name,...)
        void link(const H5std_string& target_name,...)

      + H5Lcreate_hard:
        // Creates a hard link from new_name to curr_name.
        void link(const char *curr_name, const Group& new_loc,...)
        void link(const H5std_string& curr_name, const Group& new_loc,...)

        // Creates a hard link from new_name to curr_name in same location.
        void link(const char *curr_name, const hid_t same_loc,...)
        void link(const H5std_string& curr_name, const hid_t same_loc,...)

        Note: previous version of H5Location::link will be deprecated.

      + H5Lcopy:
        // Copy an object from a group of file to another.
        void copyLink(const char *src_name, const Group& dst,...)
        void copyLink(const H5std_string& src_name, const Group& dst,...)

        // Copy an object from a group of file to the same location.
        void copyLink(const char *src_name, const char *dst_name,...)
        void copyLink(const H5std_string& src_name,...)

      + H5Lmove:
        // Rename an object in a group or file to a new location.
        void moveLink(const char* src_name, const Group& dst,...)
        void moveLink(const H5std_string& src_name, const Group& dst,...)

        // Rename an object in a group or file to the same location.
        void moveLink(const char* src_name, const char* dst_name,...)
        void moveLink(const H5std_string& src_name,...)

        Note: previous version H5Location::move will be deprecated.

      + H5Ldelete:
        // Removes the specified link from this location.
        void unlink(const char *link_name,
            const LinkAccPropList& lapl = LinkAccPropList::DEFAULT)
        void unlink(const H5std_string& link_name,
            const LinkAccPropList& lapl = LinkAccPropList::DEFAULT)

        Note: additional parameter is added to previous H5Location::unlink.

      + H5Tencode and H5Tdecode:
        // Creates a binary object description of this datatype.
        void DataType::encode() - C API H5Tencode()

        // Returns the decoded type from the binary object description.
        DataType::decode() - C API H5Tdecode()
        ArrayType::decode() - C API H5Tdecode()
        CompType::decode() - C API H5Tdecode()
        DataType::decode() - C API H5Tdecode()
        EnumType::decode() - C API H5Tdecode()
        FloatType::decode() - C API H5Tdecode()
        IntType::decode() - C API H5Tdecode()
        StrType::decode() - C API H5Tdecode()
        VarLenType::decode() - C API H5Tdecode()

      + H5Lget_info:
        // Returns the information of the named link.
        H5L_info_t getLinkInfo(const H5std_string& link_name,...)

      (BMR - 2018/03/11, HDFFV-10149)

    - Added class LinkCreatPropList for link create property list.

      (BMR - 2018/03/11, HDFFV-10149)

    - Added overloaded functions H5Location::createGroup to take a link
      creation property list.
        Group createGroup(const char* name, const LinkCreatPropList& lcpl)
        Group createGroup(const H5std_string& name, const \ 
LinkCreatPropList& lcpl)

      (BMR - 2018/03/11, HDFFV-10149)

    - A document is added to the HDF5 C++ API Reference Manual to show the
      mapping from a C API to C++ wrappers.  It can be found from the main
      page of the C++ API Reference Manual.

      (BMR - 2017/10/17, HDFFV-10151)

    Java Library:
    ----------------
    - Wrapper added for enabling the error stack.

      H5error_off would disable the error stack reporting. In order
      to re-enable the reporting, the error stack info needs to be
      saved so that H5error_on can revert state.

      (ADB - 2018/03/13, HDFFV-10412)

    - Wrappers were added for the following C APIs:
      H5Pset_evict_on_close
      H5Pget_evict_on_close
      H5Pset_chunk_opts
      H5Pget_chunk_opts
      H5Pset_efile_prefix
      H5Pget_efile_prefix
      H5Pset_virtual_prefix
      H5Pget_virtual_prefix

      (ADB - 2017/12/20)

    - The H5I_REFERENCE value in the H5I_type_t enum (defined in H5Ipublic.h)
      has been marked as deprectated.

      JNI code which refers to this value will be removed in a future
      major version of the library. The code will remain unchanged in the
      1.10.x releases and branches.

      See the C library section, above, for further information.

      (HDFFV-10252, DER, 2017/04/05)

    Tools:
    ------
    - h5diff has a new option to display error stack.

      Updated h5diff with the --enable-error-stack argument, which
      enables the display of the hdf5 error stack. This completes the
      improvement to the main tools: h5copy, h5diff, h5dump, h5ls and
      h5repack.

      (ADB - 2017/08/30, HDFFV-9774)

Support for new platforms, languages and compilers.
=======================================
    - None

Files:
RevisionActionfile
1.50modifypkgsrc/devel/hdf5/Makefile
1.17modifypkgsrc/devel/hdf5/Makefile.common
1.26modifypkgsrc/devel/hdf5/PLIST
1.41modifypkgsrc/devel/hdf5/distinfo