diff --git a/.github/workflows/cmake-ctest.yml b/.github/workflows/cmake-ctest.yml index 20a121c29ff..2579fce6596 100644 --- a/.github/workflows/cmake-ctest.yml +++ b/.github/workflows/cmake-ctest.yml @@ -413,9 +413,6 @@ jobs: compiler: intel version: '2024.1' - - name: Enable Developer Command Prompt - uses: ilammy/msvc-dev-cmd@v1.13.0 - - name: Set file base name (Windows_intel) id: set-file-base run: | diff --git a/.github/workflows/vol_log.yml b/.github/workflows/vol_log.yml index 3f4c0a133d1..e256771a14b 100644 --- a/.github/workflows/vol_log.yml +++ b/.github/workflows/vol_log.yml @@ -58,7 +58,7 @@ jobs: - name: Checkout Log-based VOL uses: actions/checkout@v4.1.1 with: - repository: DataLib-ECP/vol-log-based + repository: HDFGroup/vol-log-based path: vol-log-based - name: Build HDF5 Log-based VOL connector and test with external tests diff --git a/ACKNOWLEDGMENTS b/ACKNOWLEDGMENTS index f1b5b45b94a..c38e60c8d41 100644 --- a/ACKNOWLEDGMENTS +++ b/ACKNOWLEDGMENTS @@ -1,18 +1,20 @@ -Acknowledgments - November 2010 -------------------------------- +Acknowledgments +--------------- We would like to thank the following people who have contributed directly or indirectly to HDF5: -Werner Benger, for contributing code used to add support for the Windows +Werner Benger, for contributing code used to add support for the Windows Threading library included in the 1.8.6 release. John A. Biddiscombe, Mike Jackson, and Sean McBride for contributing and testing CMake code included in the HDF5 1.8.5 distribution. +NVIDIA, for contributing multithreaded concurrency support. + The HDF5 community for helping shape the development of HDF5 by contributing bug reports and patches, joining in on forum discussions, and continually supporting our software. -Finally, we'd like to thank all organizations whose funding has made HDF5 +Finally, we'd like to thank all organizations whose funding has made HDF5 possible. diff --git a/CMakeFilters.cmake b/CMakeFilters.cmake index dbd68fd110d..514365d616d 100644 --- a/CMakeFilters.cmake +++ b/CMakeFilters.cmake @@ -71,20 +71,20 @@ if (HDF5_ENABLE_Z_LIB_SUPPORT) if (NOT H5_ZLIB_HEADER) if (NOT ZLIB_USE_EXTERNAL) find_package (ZLIB NAMES ${ZLIB_PACKAGE_NAME}${HDF_PACKAGE_EXT} COMPONENTS static shared) - if (NOT ZLIB_FOUND) + if (NOT H5_ZLIB_FOUND) find_package (ZLIB) # Legacy find endif () - if (ZLIB_FOUND) + if (H5_ZLIB_FOUND) set (H5_ZLIB_HEADER "zlib.h") - set (ZLIB_INCLUDE_DIR_GEN ${ZLIB_INCLUDE_DIR}) - set (ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIR}) - set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${ZLIB_LIBRARIES}) + set (H5_ZLIB_INCLUDE_DIR_GEN ${H5_ZLIB_INCLUDE_DIR}) + set (H5_ZLIB_INCLUDE_DIRS ${H5_ZLIB_INCLUDE_DIRS} ${H5_ZLIB_INCLUDE_DIR}) + set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${H5_ZLIB_LIBRARIES}) endif () else () if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") EXTERNAL_ZLIB_LIBRARY (${HDF5_ALLOW_EXTERNAL_SUPPORT}) message (VERBOSE "Filter HDF5_ZLIB is built") - set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${ZLIB_STATIC_LIBRARY}) + set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${H5_ZLIB_STATIC_LIBRARY}) endif () endif () else () @@ -93,14 +93,14 @@ if (HDF5_ENABLE_Z_LIB_SUPPORT) set (H5_HAVE_ZLIB_H 1) set (H5_HAVE_LIBZ 1) endif () - if (ZLIB_FOUND) + if (H5_ZLIB_FOUND) set (H5_HAVE_FILTER_DEFLATE 1) set (H5_HAVE_ZLIB_H 1) set (H5_HAVE_LIBZ 1) if (H5_HAVE_FILTER_DEFLATE) set (EXTERNAL_FILTERS "${EXTERNAL_FILTERS} DEFLATE") endif () - set (HDF5_COMP_INCLUDE_DIRECTORIES "${HDF5_COMP_INCLUDE_DIRECTORIES};${ZLIB_INCLUDE_DIRS}") + set (HDF5_COMP_INCLUDE_DIRECTORIES "${HDF5_COMP_INCLUDE_DIRECTORIES};${H5_ZLIB_INCLUDE_DIRS}") message (VERBOSE "Filter HDF5_ZLIB is ON") else () set (HDF5_ENABLE_Z_LIB_SUPPORT OFF CACHE BOOL "" FORCE) @@ -115,36 +115,36 @@ option (HDF5_ENABLE_SZIP_SUPPORT "Use SZip Filter" ON) if (HDF5_ENABLE_SZIP_SUPPORT) option (HDF5_ENABLE_SZIP_ENCODING "Use SZip Encoding" ON) if (NOT SZIP_USE_EXTERNAL) - set(SZIP_FOUND FALSE) + set(H5_SZIP_FOUND FALSE) set(libaec_USE_STATIC_LIBS ${USE_LIBAEC_STATIC}) find_package (libaec 1.0.5 CONFIG) - if (SZIP_FOUND) - set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${SZIP_LIBRARIES}) + if (H5_SZIP_FOUND) + set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${H5_SZIP_LIBRARIES}) endif () - if (NOT SZIP_FOUND) + if (NOT H5_SZIP_FOUND) find_package (SZIP NAMES ${LIBAEC_PACKAGE_NAME}${HDF_PACKAGE_EXT} COMPONENTS static shared) - if (NOT SZIP_FOUND) + if (NOT H5_SZIP_FOUND) find_package (SZIP) # Legacy find endif () endif () - if (SZIP_FOUND) - set (SZIP_INCLUDE_DIR_GEN ${SZIP_INCLUDE_DIR}) - set (SZIP_INCLUDE_DIRS ${SZIP_INCLUDE_DIRS} ${SZIP_INCLUDE_DIR}) - set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${SZIP_LIBRARIES}) + if (H5_SZIP_FOUND) + set (H5_SZIP_INCLUDE_DIR_GEN ${H5_SZIP_INCLUDE_DIR}) + set (H5_SZIP_INCLUDE_DIRS ${H5_SZIP_INCLUDE_DIRS} ${H5_SZIP_INCLUDE_DIR}) + set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${H5_SZIP_LIBRARIES}) endif () else () if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") EXTERNAL_SZIP_LIBRARY (${HDF5_ALLOW_EXTERNAL_SUPPORT} ${HDF5_ENABLE_SZIP_ENCODING}) message (VERBOSE "Filter SZIP is built") message (VERBOSE "... with library AEC") - set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${SZIP_STATIC_LIBRARY}) + set (LINK_COMP_LIBS ${LINK_COMP_LIBS} ${H5_SZIP_STATIC_LIBRARY}) endif () endif () - if (SZIP_FOUND) + if (H5_SZIP_FOUND) set (H5_HAVE_FILTER_SZIP 1) set (H5_HAVE_SZLIB_H 1) set (H5_HAVE_LIBSZ 1) - set (HDF5_COMP_INCLUDE_DIRECTORIES "${HDF5_COMP_INCLUDE_DIRECTORIES};${SZIP_INCLUDE_DIRS}") + set (HDF5_COMP_INCLUDE_DIRECTORIES "${HDF5_COMP_INCLUDE_DIRECTORIES};${H5_SZIP_INCLUDE_DIRS}") message (VERBOSE "Filter SZIP is ON") if (H5_HAVE_FILTER_SZIP) set (EXTERNAL_FILTERS "${EXTERNAL_FILTERS} DECODE") diff --git a/CMakeInstallation.cmake b/CMakeInstallation.cmake index 9229c4e1a7e..10e4036ca34 100644 --- a/CMakeInstallation.cmake +++ b/CMakeInstallation.cmake @@ -454,20 +454,20 @@ The HDF5 data model, file format, API, library, and tools are open and distribut if (HDF5_PACKAGE_EXTLIBS) if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - if (ZLIB_FOUND AND ZLIB_USE_EXTERNAL) + if (H5_ZLIB_FOUND AND ZLIB_USE_EXTERNAL) if (WIN32) - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${ZLIB_INCLUDE_DIR_GEN};HDF5_ZLIB;ALL;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_ZLIB_INCLUDE_DIR_GEN};HDF5_ZLIB;ALL;/") else () - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${ZLIB_INCLUDE_DIR_GEN};HDF5_ZLIB;libraries;/") - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${ZLIB_INCLUDE_DIR_GEN};HDF5_ZLIB;configinstall;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_ZLIB_INCLUDE_DIR_GEN};HDF5_ZLIB;libraries;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_ZLIB_INCLUDE_DIR_GEN};HDF5_ZLIB;configinstall;/") endif () endif () - if (SZIP_FOUND AND SZIP_USE_EXTERNAL) + if (H5_SZIP_FOUND AND SZIP_USE_EXTERNAL) if (WIN32) - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${SZIP_INCLUDE_DIR_GEN};SZIP;ALL;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_SZIP_INCLUDE_DIR_GEN};SZIP;ALL;/") else () - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${SZIP_INCLUDE_DIR_GEN};SZIP;libraries;/") - set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${SZIP_INCLUDE_DIR_GEN};SZIP;configinstall;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_SZIP_INCLUDE_DIR_GEN};SZIP;libraries;/") + set (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${H5_SZIP_INCLUDE_DIR_GEN};SZIP;configinstall;/") endif () endif () if (PLUGIN_FOUND AND PLUGIN_USE_EXTERNAL) diff --git a/CMakeLists.txt b/CMakeLists.txt index f170001d545..368159123d9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -105,8 +105,8 @@ mark_as_advanced (HDF5_LIB_INFIX) # else () # set (H5_ZLIB_HEADER "vtk_zlib.h") # # Set vars that FindZlib would have set if used in sub project -# set (ZLIB_INCLUDE_DIRS "${VTK_ZLIB_INCLUDE_DIRS}") -# set (ZLIB_LIBRARIES vtkzlib) +# set (H5_ZLIB_INCLUDE_DIRS "${VTK_H5_ZLIB_INCLUDE_DIRS}") +# set (H5_ZLIB_LIBRARIES vtkzlib) # endif () # endif () # @@ -950,7 +950,7 @@ endif () add_subdirectory (src) if (HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ") - if ((ZLIB_FOUND AND ZLIB_USE_EXTERNAL) OR (SZIP_FOUND AND SZIP_USE_EXTERNAL)) + if ((H5_ZLIB_FOUND AND ZLIB_USE_EXTERNAL) OR (H5_SZIP_FOUND AND SZIP_USE_EXTERNAL)) if (BUILD_STATIC_LIBS) add_dependencies (${HDF5_LIB_TARGET} ${LINK_COMP_LIBS}) endif () diff --git a/CMakePresets.json b/CMakePresets.json index 61afadd7b92..de1229d57c4 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -46,6 +46,8 @@ "BLOSC_PACKAGE_NAME": {"type": "STRING", "value": "blosc"}, "BLOSC_ZLIB_TGZ_NAME": {"type": "STRING", "value": "zlib-1.3.tar.gz"}, "BLOSC_ZLIB_PACKAGE_NAME": {"type": "STRING", "value": "zlib"}, + "BLOSC2_TGZ_NAME": {"type": "STRING", "value": "c-blosc2-2.14.4.tar.gz"}, + "BLOSC2_PACKAGE_NAME": {"type": "STRING", "value": "blosc2"}, "BZ2_TGZ_NAME": {"type": "STRING", "value": "bzip2-bzip2-1.0.8.tar.gz"}, "BZ2_PACKAGE_NAME": {"type": "STRING", "value": "bz2"}, "FPZIP_TGZ_NAME": {"type": "STRING", "value": "fpzip-1.3.0.tar.gz"}, diff --git a/HDF5Examples/C/H5FLT/CMakeLists.txt b/HDF5Examples/C/H5FLT/CMakeLists.txt index 9345b662565..79c7e794685 100644 --- a/HDF5Examples/C/H5FLT/CMakeLists.txt +++ b/HDF5Examples/C/H5FLT/CMakeLists.txt @@ -24,6 +24,14 @@ else () set (BLOSC_AVAILABLE 0) endif () +option (ENABLE_BLOSC2 "Enable Library Building for blosc2 plugin" ON) +if (ENABLE_BLOSC2) + set (BLOSC_AVAILABLE 1) + set (dyn_examples ${dyn_examples} h5ex_d_blosc2) +else () + set (BLOSC_AVAILABLE 0) +endif () + option (ENABLE_BSHUF "Enable Library Building for bshuf plugin" ON) if (ENABLE_BSHUF) if (NOT CMAKE_C_COMPILER_ID STREQUAL "Intel") diff --git a/HDF5Examples/C/H5FLT/h5ex_d_blosc2.c b/HDF5Examples/C/H5FLT/h5ex_d_blosc2.c new file mode 100644 index 00000000000..dae0becb4a2 --- /dev/null +++ b/HDF5Examples/C/H5FLT/h5ex_d_blosc2.c @@ -0,0 +1,234 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * All rights reserved. * + * * + * This file is part of the HDF5 BLOSC2 filter plugin source. The full * + * copyright notice, including terms governing use, modification, and * + * terms governing use, modification, and redistribution, is contained in * + * the file COPYING, which can be found at the root of the BLOSC2 source code * + * distribution tree. If you do not have access to this file, you may * + * request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/************************************************************ + + This example shows how to write data and read it from a dataset + using blosc2 compression. + blosc2 filter is not available in HDF5. + The example uses a new feature available in HDF5 version 1.8.11 + to discover, load and register filters at run time. + + ************************************************************/ + +#include "hdf5.h" +#include +#include + +#define FILE "h5ex_d_blosc2.h5" +#define DATASET "DS1" +#define DIM0 32 +#define DIM1 64 +#define CHUNK0 4 +#define CHUNK1 8 +#define H5Z_FILTER_BLOSC2 32026 + +int +main(void) +{ + hid_t file_id = H5I_INVALID_HID; /* Handles */ + hid_t space_id = H5I_INVALID_HID; /* Handles */ + hid_t dset_id = H5I_INVALID_HID; /* Handles */ + hid_t dcpl_id = H5I_INVALID_HID; /* Handles */ + herr_t status; + htri_t avail; + H5Z_filter_t filter_id = 0; + char filter_name[128]; + hsize_t dims[2] = {DIM0, DIM1}, chunk[2] = {CHUNK0, CHUNK1}; + size_t nelmts = 10; /* number of elements in cd_values */ + unsigned int flags; + unsigned filter_config; + const unsigned int cd_values[10] = {0, 0, 0, 0, 4, 1, 2, 2, 4, 8}; /* blosc parameters */ + unsigned int values_out[10] = {99, 99, 99, 99, 99, 99, 99, 99, 99, 99}; + int wdata[DIM0][DIM1], /* Write buffer */ + rdata[DIM0][DIM1], /* Read buffer */ + max; + hsize_t i, j; + int ret_value = 1; + + /* + * Initialize data. + */ + for (i = 0; i < DIM0; i++) + for (j = 0; j < DIM1; j++) + wdata[i][j] = i * j - j; + + /* + * Create a new file using the default properties. + */ + file_id = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + if (file_id < 0) + goto done; + + /* + * Create dataspace. Setting maximum size to NULL sets the maximum + * size to be the current size. + */ + space_id = H5Screate_simple(2, dims, NULL); + if (space_id < 0) + goto done; + + /* + * Create the dataset creation property list, add the gzip + * compression filter and set the chunk size. + */ + dcpl_id = H5Pcreate(H5P_DATASET_CREATE); + if (dcpl_id < 0) + goto done; + + status = H5Pset_filter(dcpl_id, H5Z_FILTER_BLOSC2, H5Z_FLAG_OPTIONAL, nelmts, cd_values); + if (status < 0) + goto done; + + /* + * Check that filter is registered with the library now. + * If it is registered, retrieve filter's configuration. + */ + avail = H5Zfilter_avail(H5Z_FILTER_BLOSC2); + if (avail) { + status = H5Zget_filter_info(H5Z_FILTER_BLOSC2, &filter_config); + if ((filter_config & H5Z_FILTER_CONFIG_ENCODE_ENABLED) && + (filter_config & H5Z_FILTER_CONFIG_DECODE_ENABLED)) + printf("blosc2 filter is available for encoding and decoding.\n"); + } + else { + printf("H5Zfilter_avail - not found.\n"); + goto done; + } + status = H5Pset_chunk(dcpl_id, 2, chunk); + if (status < 0) + printf("failed to set chunk.\n"); + + /* + * Create the dataset. + */ + printf("....Create dataset ................\n"); + dset_id = H5Dcreate(file_id, DATASET, H5T_STD_I32LE, space_id, H5P_DEFAULT, dcpl_id, H5P_DEFAULT); + if (dset_id < 0) { + printf("failed to create dataset.\n"); + goto done; + } + + /* + * Write the data to the dataset. + */ + printf("....Writing blosc2 compressed data ................\n"); + status = H5Dwrite(dset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata[0]); + if (status < 0) + printf("failed to write data.\n"); + + /* + * Close and release resources. + */ + H5Dclose(dset_id); + dset_id = -1; + H5Pclose(dcpl_id); + dcpl_id = -1; + H5Sclose(space_id); + space_id = -1; + H5Fclose(file_id); + file_id = -1; + status = H5close(); + if (status < 0) { + printf("/nFAILED to close library/n"); + goto done; + } + + printf("....Close the file and reopen for reading ........\n"); + /* + * Now we begin the read section of this example. + */ + + /* + * Open file and dataset using the default properties. + */ + file_id = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT); + if (file_id < 0) + goto done; + + dset_id = H5Dopen(file_id, DATASET, H5P_DEFAULT); + if (dset_id < 0) + goto done; + + /* + * Retrieve dataset creation property list. + */ + dcpl_id = H5Dget_create_plist(dset_id); + if (dcpl_id < 0) + goto done; + + /* + * Retrieve and print the filter id, compression level and filter's name for blosc. + */ + filter_id = H5Pget_filter2(dcpl_id, (unsigned)0, &flags, &nelmts, values_out, sizeof(filter_name), + filter_name, NULL); + printf("Filter info is available from the dataset creation property\n "); + printf(" Filter identifier is "); + switch (filter_id) { + case H5Z_FILTER_BLOSC2: + printf("%d\n", filter_id); + printf(" Number of parameters is %d with the value %u %u %u\n", nelmts, values_out[4], + values_out[5], values_out[6]); + printf(" To find more about the filter check %s\n", filter_name); + break; + default: + printf("Not expected filter\n"); + break; + } + + /* + * Read the data using the default properties. + */ + printf("....Reading blosc2 compressed data ................\n"); + status = H5Dread(dset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata[0]); + if (status < 0) + printf("failed to read data.\n"); + + /* + * Find the maximum value in the dataset, to verify that it was + * read correctly. + */ + max = rdata[0][0]; + for (i = 0; i < DIM0; i++) + for (j = 0; j < DIM1; j++) { + /*printf("%d \n", rdata[i][j]); */ + if (max < rdata[i][j]) + max = rdata[i][j]; + } + /* + * Print the maximum value. + */ + printf("Maximum value in %s is %d\n", DATASET, max); + /* + * Check that filter is registered with the library now. + */ + avail = H5Zfilter_avail(H5Z_FILTER_BLOSC2); + if (avail) + printf("blosc2 filter is available now since H5Dread triggered loading of the filter.\n"); + + ret_value = 0; + +done: + /* + * Close and release resources. + */ + if (dcpl_id >= 0) + H5Pclose(dcpl_id); + if (dset_id >= 0) + H5Dclose(dset_id); + if (space_id >= 0) + H5Sclose(space_id); + if (file_id >= 0) + H5Fclose(file_id); + + return ret_value; +} diff --git a/HDF5Examples/C/H5FLT/tfiles/h5ex_d_blosc2.ddl b/HDF5Examples/C/H5FLT/tfiles/h5ex_d_blosc2.ddl new file mode 100644 index 00000000000..df86cd05ef3 --- /dev/null +++ b/HDF5Examples/C/H5FLT/tfiles/h5ex_d_blosc2.ddl @@ -0,0 +1,209 @@ +HDF5 "h5ex_d_blosc2.h5" { +GROUP "/" { + DATASET "DS1" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 32, 64 ) / ( 32, 64 ) } + STORAGE_LAYOUT { + CHUNKED ( 4, 8 ) + SIZE 21247 (0.386:1 COMPRESSION) + } + FILTERS { + USER_DEFINED_FILTER { + FILTER_ID 32026 + COMMENT HDF5 blosc2 filter; see https://github.com/HDFGroup/hdf5_plugins/blob/master/docs/RegisteredFilterPlugins.md + PARAMS { 1 0 4 128 4 1 2 2 4 8 } + } + } + FILLVALUE { + FILL_TIME H5D_FILL_TIME_IFSET + VALUE H5D_FILL_VALUE_DEFAULT + } + ALLOCATION_TIME { + H5D_ALLOC_TIME_INCR + } + DATA { + (0,0): 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, + (0,15): -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, + (0,27): -27, -28, -29, -30, -31, -32, -33, -34, -35, -36, -37, -38, + (0,39): -39, -40, -41, -42, -43, -44, -45, -46, -47, -48, -49, -50, + (0,51): -51, -52, -53, -54, -55, -56, -57, -58, -59, -60, -61, -62, + (0,63): -63, + (1,0): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,21): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,42): 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + (1,63): 0, + (2,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + (2,18): 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + (2,34): 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + (2,50): 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + (3,0): 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, + (3,17): 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, + (3,33): 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, + (3,49): 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, + (3,62): 124, 126, + (4,0): 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, + (4,17): 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, + (4,33): 99, 102, 105, 108, 111, 114, 117, 120, 123, 126, 129, 132, 135, + (4,46): 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, + (4,58): 174, 177, 180, 183, 186, 189, + (5,0): 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, + (5,17): 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, + (5,31): 124, 128, 132, 136, 140, 144, 148, 152, 156, 160, 164, 168, + (5,43): 172, 176, 180, 184, 188, 192, 196, 200, 204, 208, 212, 216, + (5,55): 220, 224, 228, 232, 236, 240, 244, 248, 252, + (6,0): 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, + (6,16): 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, + (6,29): 145, 150, 155, 160, 165, 170, 175, 180, 185, 190, 195, 200, + (6,41): 205, 210, 215, 220, 225, 230, 235, 240, 245, 250, 255, 260, + (6,53): 265, 270, 275, 280, 285, 290, 295, 300, 305, 310, 315, + (7,0): 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, + (7,16): 96, 102, 108, 114, 120, 126, 132, 138, 144, 150, 156, 162, 168, + (7,29): 174, 180, 186, 192, 198, 204, 210, 216, 222, 228, 234, 240, + (7,41): 246, 252, 258, 264, 270, 276, 282, 288, 294, 300, 306, 312, + (7,53): 318, 324, 330, 336, 342, 348, 354, 360, 366, 372, 378, + (8,0): 0, 7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98, 105, + (8,16): 112, 119, 126, 133, 140, 147, 154, 161, 168, 175, 182, 189, + (8,28): 196, 203, 210, 217, 224, 231, 238, 245, 252, 259, 266, 273, + (8,40): 280, 287, 294, 301, 308, 315, 322, 329, 336, 343, 350, 357, + (8,52): 364, 371, 378, 385, 392, 399, 406, 413, 420, 427, 434, 441, + (9,0): 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, + (9,16): 128, 136, 144, 152, 160, 168, 176, 184, 192, 200, 208, 216, + (9,28): 224, 232, 240, 248, 256, 264, 272, 280, 288, 296, 304, 312, + (9,40): 320, 328, 336, 344, 352, 360, 368, 376, 384, 392, 400, 408, + (9,52): 416, 424, 432, 440, 448, 456, 464, 472, 480, 488, 496, 504, + (10,0): 0, 9, 18, 27, 36, 45, 54, 63, 72, 81, 90, 99, 108, 117, 126, + (10,15): 135, 144, 153, 162, 171, 180, 189, 198, 207, 216, 225, 234, + (10,27): 243, 252, 261, 270, 279, 288, 297, 306, 315, 324, 333, 342, + (10,39): 351, 360, 369, 378, 387, 396, 405, 414, 423, 432, 441, 450, + (10,51): 459, 468, 477, 486, 495, 504, 513, 522, 531, 540, 549, 558, + (10,63): 567, + (11,0): 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, + (11,15): 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, + (11,27): 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, + (11,39): 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, + (11,51): 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, + (11,63): 630, + (12,0): 0, 11, 22, 33, 44, 55, 66, 77, 88, 99, 110, 121, 132, 143, 154, + (12,15): 165, 176, 187, 198, 209, 220, 231, 242, 253, 264, 275, 286, + (12,27): 297, 308, 319, 330, 341, 352, 363, 374, 385, 396, 407, 418, + (12,39): 429, 440, 451, 462, 473, 484, 495, 506, 517, 528, 539, 550, + (12,51): 561, 572, 583, 594, 605, 616, 627, 638, 649, 660, 671, 682, + (12,63): 693, + (13,0): 0, 12, 24, 36, 48, 60, 72, 84, 96, 108, 120, 132, 144, 156, + (13,14): 168, 180, 192, 204, 216, 228, 240, 252, 264, 276, 288, 300, + (13,26): 312, 324, 336, 348, 360, 372, 384, 396, 408, 420, 432, 444, + (13,38): 456, 468, 480, 492, 504, 516, 528, 540, 552, 564, 576, 588, + (13,50): 600, 612, 624, 636, 648, 660, 672, 684, 696, 708, 720, 732, + (13,62): 744, 756, + (14,0): 0, 13, 26, 39, 52, 65, 78, 91, 104, 117, 130, 143, 156, 169, + (14,14): 182, 195, 208, 221, 234, 247, 260, 273, 286, 299, 312, 325, + (14,26): 338, 351, 364, 377, 390, 403, 416, 429, 442, 455, 468, 481, + (14,38): 494, 507, 520, 533, 546, 559, 572, 585, 598, 611, 624, 637, + (14,50): 650, 663, 676, 689, 702, 715, 728, 741, 754, 767, 780, 793, + (14,62): 806, 819, + (15,0): 0, 14, 28, 42, 56, 70, 84, 98, 112, 126, 140, 154, 168, 182, + (15,14): 196, 210, 224, 238, 252, 266, 280, 294, 308, 322, 336, 350, + (15,26): 364, 378, 392, 406, 420, 434, 448, 462, 476, 490, 504, 518, + (15,38): 532, 546, 560, 574, 588, 602, 616, 630, 644, 658, 672, 686, + (15,50): 700, 714, 728, 742, 756, 770, 784, 798, 812, 826, 840, 854, + (15,62): 868, 882, + (16,0): 0, 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, + (16,14): 210, 225, 240, 255, 270, 285, 300, 315, 330, 345, 360, 375, + (16,26): 390, 405, 420, 435, 450, 465, 480, 495, 510, 525, 540, 555, + (16,38): 570, 585, 600, 615, 630, 645, 660, 675, 690, 705, 720, 735, + (16,50): 750, 765, 780, 795, 810, 825, 840, 855, 870, 885, 900, 915, + (16,62): 930, 945, + (17,0): 0, 16, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, + (17,14): 224, 240, 256, 272, 288, 304, 320, 336, 352, 368, 384, 400, + (17,26): 416, 432, 448, 464, 480, 496, 512, 528, 544, 560, 576, 592, + (17,38): 608, 624, 640, 656, 672, 688, 704, 720, 736, 752, 768, 784, + (17,50): 800, 816, 832, 848, 864, 880, 896, 912, 928, 944, 960, 976, + (17,62): 992, 1008, + (18,0): 0, 17, 34, 51, 68, 85, 102, 119, 136, 153, 170, 187, 204, 221, + (18,14): 238, 255, 272, 289, 306, 323, 340, 357, 374, 391, 408, 425, + (18,26): 442, 459, 476, 493, 510, 527, 544, 561, 578, 595, 612, 629, + (18,38): 646, 663, 680, 697, 714, 731, 748, 765, 782, 799, 816, 833, + (18,50): 850, 867, 884, 901, 918, 935, 952, 969, 986, 1003, 1020, 1037, + (18,62): 1054, 1071, + (19,0): 0, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198, 216, 234, + (19,14): 252, 270, 288, 306, 324, 342, 360, 378, 396, 414, 432, 450, + (19,26): 468, 486, 504, 522, 540, 558, 576, 594, 612, 630, 648, 666, + (19,38): 684, 702, 720, 738, 756, 774, 792, 810, 828, 846, 864, 882, + (19,50): 900, 918, 936, 954, 972, 990, 1008, 1026, 1044, 1062, 1080, + (19,61): 1098, 1116, 1134, + (20,0): 0, 19, 38, 57, 76, 95, 114, 133, 152, 171, 190, 209, 228, 247, + (20,14): 266, 285, 304, 323, 342, 361, 380, 399, 418, 437, 456, 475, + (20,26): 494, 513, 532, 551, 570, 589, 608, 627, 646, 665, 684, 703, + (20,38): 722, 741, 760, 779, 798, 817, 836, 855, 874, 893, 912, 931, + (20,50): 950, 969, 988, 1007, 1026, 1045, 1064, 1083, 1102, 1121, 1140, + (20,61): 1159, 1178, 1197, + (21,0): 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, + (21,14): 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, + (21,26): 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, + (21,38): 760, 780, 800, 820, 840, 860, 880, 900, 920, 940, 960, 980, + (21,50): 1000, 1020, 1040, 1060, 1080, 1100, 1120, 1140, 1160, 1180, + (21,60): 1200, 1220, 1240, 1260, + (22,0): 0, 21, 42, 63, 84, 105, 126, 147, 168, 189, 210, 231, 252, 273, + (22,14): 294, 315, 336, 357, 378, 399, 420, 441, 462, 483, 504, 525, + (22,26): 546, 567, 588, 609, 630, 651, 672, 693, 714, 735, 756, 777, + (22,38): 798, 819, 840, 861, 882, 903, 924, 945, 966, 987, 1008, 1029, + (22,50): 1050, 1071, 1092, 1113, 1134, 1155, 1176, 1197, 1218, 1239, + (22,60): 1260, 1281, 1302, 1323, + (23,0): 0, 22, 44, 66, 88, 110, 132, 154, 176, 198, 220, 242, 264, 286, + (23,14): 308, 330, 352, 374, 396, 418, 440, 462, 484, 506, 528, 550, + (23,26): 572, 594, 616, 638, 660, 682, 704, 726, 748, 770, 792, 814, + (23,38): 836, 858, 880, 902, 924, 946, 968, 990, 1012, 1034, 1056, + (23,49): 1078, 1100, 1122, 1144, 1166, 1188, 1210, 1232, 1254, 1276, + (23,59): 1298, 1320, 1342, 1364, 1386, + (24,0): 0, 23, 46, 69, 92, 115, 138, 161, 184, 207, 230, 253, 276, 299, + (24,14): 322, 345, 368, 391, 414, 437, 460, 483, 506, 529, 552, 575, + (24,26): 598, 621, 644, 667, 690, 713, 736, 759, 782, 805, 828, 851, + (24,38): 874, 897, 920, 943, 966, 989, 1012, 1035, 1058, 1081, 1104, + (24,49): 1127, 1150, 1173, 1196, 1219, 1242, 1265, 1288, 1311, 1334, + (24,59): 1357, 1380, 1403, 1426, 1449, + (25,0): 0, 24, 48, 72, 96, 120, 144, 168, 192, 216, 240, 264, 288, 312, + (25,14): 336, 360, 384, 408, 432, 456, 480, 504, 528, 552, 576, 600, + (25,26): 624, 648, 672, 696, 720, 744, 768, 792, 816, 840, 864, 888, + (25,38): 912, 936, 960, 984, 1008, 1032, 1056, 1080, 1104, 1128, 1152, + (25,49): 1176, 1200, 1224, 1248, 1272, 1296, 1320, 1344, 1368, 1392, + (25,59): 1416, 1440, 1464, 1488, 1512, + (26,0): 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 250, 275, 300, + (26,13): 325, 350, 375, 400, 425, 450, 475, 500, 525, 550, 575, 600, + (26,25): 625, 650, 675, 700, 725, 750, 775, 800, 825, 850, 875, 900, + (26,37): 925, 950, 975, 1000, 1025, 1050, 1075, 1100, 1125, 1150, 1175, + (26,48): 1200, 1225, 1250, 1275, 1300, 1325, 1350, 1375, 1400, 1425, + (26,58): 1450, 1475, 1500, 1525, 1550, 1575, + (27,0): 0, 26, 52, 78, 104, 130, 156, 182, 208, 234, 260, 286, 312, + (27,13): 338, 364, 390, 416, 442, 468, 494, 520, 546, 572, 598, 624, + (27,25): 650, 676, 702, 728, 754, 780, 806, 832, 858, 884, 910, 936, + (27,37): 962, 988, 1014, 1040, 1066, 1092, 1118, 1144, 1170, 1196, + (27,47): 1222, 1248, 1274, 1300, 1326, 1352, 1378, 1404, 1430, 1456, + (27,57): 1482, 1508, 1534, 1560, 1586, 1612, 1638, + (28,0): 0, 27, 54, 81, 108, 135, 162, 189, 216, 243, 270, 297, 324, + (28,13): 351, 378, 405, 432, 459, 486, 513, 540, 567, 594, 621, 648, + (28,25): 675, 702, 729, 756, 783, 810, 837, 864, 891, 918, 945, 972, + (28,37): 999, 1026, 1053, 1080, 1107, 1134, 1161, 1188, 1215, 1242, + (28,47): 1269, 1296, 1323, 1350, 1377, 1404, 1431, 1458, 1485, 1512, + (28,57): 1539, 1566, 1593, 1620, 1647, 1674, 1701, + (29,0): 0, 28, 56, 84, 112, 140, 168, 196, 224, 252, 280, 308, 336, + (29,13): 364, 392, 420, 448, 476, 504, 532, 560, 588, 616, 644, 672, + (29,25): 700, 728, 756, 784, 812, 840, 868, 896, 924, 952, 980, 1008, + (29,37): 1036, 1064, 1092, 1120, 1148, 1176, 1204, 1232, 1260, 1288, + (29,47): 1316, 1344, 1372, 1400, 1428, 1456, 1484, 1512, 1540, 1568, + (29,57): 1596, 1624, 1652, 1680, 1708, 1736, 1764, + (30,0): 0, 29, 58, 87, 116, 145, 174, 203, 232, 261, 290, 319, 348, + (30,13): 377, 406, 435, 464, 493, 522, 551, 580, 609, 638, 667, 696, + (30,25): 725, 754, 783, 812, 841, 870, 899, 928, 957, 986, 1015, 1044, + (30,37): 1073, 1102, 1131, 1160, 1189, 1218, 1247, 1276, 1305, 1334, + (30,47): 1363, 1392, 1421, 1450, 1479, 1508, 1537, 1566, 1595, 1624, + (30,57): 1653, 1682, 1711, 1740, 1769, 1798, 1827, + (31,0): 0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330, 360, + (31,13): 390, 420, 450, 480, 510, 540, 570, 600, 630, 660, 690, 720, + (31,25): 750, 780, 810, 840, 870, 900, 930, 960, 990, 1020, 1050, 1080, + (31,37): 1110, 1140, 1170, 1200, 1230, 1260, 1290, 1320, 1350, 1380, + (31,47): 1410, 1440, 1470, 1500, 1530, 1560, 1590, 1620, 1650, 1680, + (31,57): 1710, 1740, 1770, 1800, 1830, 1860, 1890 + } + } +} +} diff --git a/HDF5Examples/C/H5FLT/tfiles/h5ex_d_blosc2.h5 b/HDF5Examples/C/H5FLT/tfiles/h5ex_d_blosc2.h5 new file mode 100644 index 00000000000..27339367f5d Binary files /dev/null and b/HDF5Examples/C/H5FLT/tfiles/h5ex_d_blosc2.h5 differ diff --git a/HDF5Examples/C/H5FLT/tfiles/h5ex_d_blosc2.tst b/HDF5Examples/C/H5FLT/tfiles/h5ex_d_blosc2.tst new file mode 100644 index 00000000000..de97edfa1b6 --- /dev/null +++ b/HDF5Examples/C/H5FLT/tfiles/h5ex_d_blosc2.tst @@ -0,0 +1,11 @@ +blosc2 filter is available for encoding and decoding. +....Create dataset ................ +....Writing blosc2 compressed data ................ +....Close the file and reopen for reading ........ +Filter info is available from the dataset creation property + Filter identifier is 32026 + Number of parameters is 10 with the value 4 1 2 + To find more about the filter check HDF5 blosc2 filter; see https://github.com/HDFGroup/hdf5_plugins/blob/master/docs/RegisteredFilterPlugins.md +....Reading blosc2 compressed data ................ +Maximum value in DS1 is 1890 +blosc2 filter is available now since H5Dread triggered loading of the filter. diff --git a/c++/src/H5Attribute.cpp b/c++/src/H5Attribute.cpp index e629a800c76..a79d7c3a024 100644 --- a/c++/src/H5Attribute.cpp +++ b/c++/src/H5Attribute.cpp @@ -610,9 +610,7 @@ Attribute::~Attribute() Attribute & Attribute::operator=(const Attribute &original) { - if (&original != this) { - setId(original.id); - } + IdComponent::operator=(original); return *this; } diff --git a/c++/src/H5Group.cpp b/c++/src/H5Group.cpp index 248e71f9571..48358b3a5cb 100644 --- a/c++/src/H5Group.cpp +++ b/c++/src/H5Group.cpp @@ -279,9 +279,7 @@ Group::~Group() Group & Group::operator=(const Group &original) { - if (&original != this) { - setId(original.id); - } + IdComponent::operator=(original); return *this; } diff --git a/config/cmake/HDF5PluginCache.cmake b/config/cmake/HDF5PluginCache.cmake index e96c45db371..8c667077b88 100644 --- a/config/cmake/HDF5PluginCache.cmake +++ b/config/cmake/HDF5PluginCache.cmake @@ -6,7 +6,7 @@ # examples are the tests for plugins set (H5PL_BUILD_TESTING ON CACHE BOOL "Enable H5PL testing" FORCE) -set (BUILD_EXAMPLES ${HDF5_BUILD_EXAMPLES} CACHE BOOL "Build H5PL Examples" FORCE) +set (H5PL_BUILD_EXAMPLES ${HDF5_BUILD_EXAMPLES} CACHE BOOL "Build H5PL Examples" FORCE) #preset HDF5 cache vars to this projects libraries instead of searching set (H5PL_HDF5_HEADER "H5pubconf.h" CACHE STRING "Name of HDF5 header" FORCE) diff --git a/config/cmake/HDFLibMacros.cmake b/config/cmake/HDFLibMacros.cmake index 4039a503825..8a8813c3036 100644 --- a/config/cmake/HDFLibMacros.cmake +++ b/config/cmake/HDFLibMacros.cmake @@ -34,13 +34,13 @@ macro (EXTERNAL_ZLIB_LIBRARY compress_type) endif() add_library(${HDF_PACKAGE_NAMESPACE}zlib-static ALIAS zlib-static) - set (ZLIB_STATIC_LIBRARY "${HDF_PACKAGE_NAMESPACE}zlib-static") - set (ZLIB_LIBRARIES ${ZLIB_STATIC_LIBRARY}) + set (H5_ZLIB_STATIC_LIBRARY "${HDF_PACKAGE_NAMESPACE}zlib-static") + set (H5_ZLIB_LIBRARIES ${H5_ZLIB_STATIC_LIBRARY}) - set (ZLIB_INCLUDE_DIR_GEN "${hdf5_zlib_BINARY_DIR}") - set (ZLIB_INCLUDE_DIR "${hdf5_zlib_SOURCE_DIR}") - set (ZLIB_FOUND 1) - set (ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR_GEN} ${ZLIB_INCLUDE_DIR}) + set (H5_ZLIB_INCLUDE_DIR_GEN "${hdf5_zlib_BINARY_DIR}") + set (H5_ZLIB_INCLUDE_DIR "${hdf5_zlib_SOURCE_DIR}") + set (H5_ZLIB_FOUND 1) + set (H5_ZLIB_INCLUDE_DIRS ${H5_ZLIB_INCLUDE_DIR_GEN} ${H5_ZLIB_INCLUDE_DIR}) endmacro () #------------------------------------------------------------------------------- @@ -70,11 +70,11 @@ macro (EXTERNAL_SZIP_LIBRARY compress_type encoding) add_library (${HDF_PACKAGE_NAMESPACE}szaec-static ALIAS szaec-static) add_library (${HDF_PACKAGE_NAMESPACE}aec-static ALIAS aec-static) - set (SZIP_STATIC_LIBRARY "${HDF_PACKAGE_NAMESPACE}szaec-static;${HDF_PACKAGE_NAMESPACE}aec-static") - set (SZIP_LIBRARIES ${SZIP_STATIC_LIBRARY}) + set (H5_SZIP_STATIC_LIBRARY "${HDF_PACKAGE_NAMESPACE}szaec-static;${HDF_PACKAGE_NAMESPACE}aec-static") + set (H5_SZIP_LIBRARIES ${H5_SZIP_STATIC_LIBRARY}) - set (SZIP_INCLUDE_DIR_GEN "${szip_BINARY_DIR}") - set (SZIP_INCLUDE_DIR "${szip_SOURCE_DIR}/include") - set (SZIP_FOUND 1) - set (SZIP_INCLUDE_DIRS ${SZIP_INCLUDE_DIR_GEN} ${SZIP_INCLUDE_DIR}) + set (H5_SZIP_INCLUDE_DIR_GEN "${szip_BINARY_DIR}") + set (H5_SZIP_INCLUDE_DIR "${szip_SOURCE_DIR}/include") + set (H5_SZIP_FOUND 1) + set (H5_SZIP_INCLUDE_DIRS ${H5_SZIP_INCLUDE_DIR_GEN} ${H5_SZIP_INCLUDE_DIR}) endmacro () diff --git a/config/cmake/cacheinit.cmake b/config/cmake/cacheinit.cmake index c91f98a5d74..89d814dfc32 100644 --- a/config/cmake/cacheinit.cmake +++ b/config/cmake/cacheinit.cmake @@ -110,6 +110,18 @@ set (BLOSC_ZLIB_TGZ_NAME "zlib-1.3.tar.gz" CACHE STRING "Use ZLib from compresse set (BLOSC_ZLIB_PACKAGE_NAME "zlib" CACHE STRING "Name of BLOSC_ZLIB package" FORCE) +######## +# blosc2 +######## + +set (BLOSC2_GIT_URL "https://github.com/Blosc/c-blosc2.git" CACHE STRING "Use BLOSC2 from Github repository" FORCE) +set (BLOSC2_GIT_BRANCH "main" CACHE STRING "" FORCE) + +set (BLOSC2_TGZ_ORIGPATH "https://github.com/Blosc/c-blosc2/archive/refs/tags" CACHE STRING "Use PLUGINS from original location" FORCE) +set (BLOSC2_TGZ_NAME "c-blosc2-2.14.4.tar.gz" CACHE STRING "Use BLOSC2 from compressed file" FORCE) + +set (BLOSC2_PACKAGE_NAME "blosc2" CACHE STRING "Name of BLOSC2 package" FORCE) + ######## # bzip2 ######## diff --git a/config/cmake/scripts/HDF5options.cmake b/config/cmake/scripts/HDF5options.cmake index 5d078461be9..179c91f59e9 100644 --- a/config/cmake/scripts/HDF5options.cmake +++ b/config/cmake/scripts/HDF5options.cmake @@ -62,9 +62,9 @@ set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRIN ### ext libs on system #set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING=NO") #set(ENV{ZLIB_ROOT} "some_location") -#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DZLIB_LIBRARY:FILEPATH=some_location/lib/zlib.lib -DZLIB_INCLUDE_DIR:PATH=some_location/include") +#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DH5_ZLIB_LIBRARY:FILEPATH=some_location/lib/zlib.lib -DH5_ZLIB_INCLUDE_DIR:PATH=some_location/include") #set(ENV{SZIP_ROOT} "some_location") -#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DSZIP_LIBRARY:FILEPATH=some_location/lib/szlib.lib -DSZIP_INCLUDE_DIR:PATH=some_location/include") +#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DH5_SZIP_LIBRARY:FILEPATH=some_location/lib/szlib.lib -DH5_SZIP_INCLUDE_DIR:PATH=some_location/include") ### disable using ext zlib #set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_Z_LIB_SUPPORT:BOOL=OFF") diff --git a/doxygen/dox/IntroParHDF5.dox b/doxygen/dox/IntroParHDF5.dox index 414a186af89..884d9d254b2 100644 --- a/doxygen/dox/IntroParHDF5.dox +++ b/doxygen/dox/IntroParHDF5.dox @@ -23,8 +23,13 @@ Implementation requirements were to: \li Not have a reserved process, as this might interfere with parallel algorithms. \li Not spawn any processes, as this is not even commonly supported now. -The following shows the Parallel HDF5 implementation layers. +The following shows the Parallel HDF5 implementation layers: + + +
+\image html pimplayer.gif +
\subsection subsec_pintro_prog Parallel Programming with HDF5 This tutorial assumes that you are somewhat familiar with parallel programming with MPI (Message Passing Interface). diff --git a/doxygen/img/pimplayer.gif b/doxygen/img/pimplayer.gif new file mode 100755 index 00000000000..7413b697ae6 Binary files /dev/null and b/doxygen/img/pimplayer.gif differ diff --git a/fortran/src/CMakeLists.txt b/fortran/src/CMakeLists.txt index 1b23c94a976..855310879ef 100644 --- a/fortran/src/CMakeLists.txt +++ b/fortran/src/CMakeLists.txt @@ -406,7 +406,7 @@ if (BUILD_STATIC_LIBS) endif () if (BUILD_SHARED_LIBS) - if(WIN32) + if(MSVC) set(DLLDEF ${HDF5_F90_SRC_BINARY_DIR}/hdf5_fortrandll.def) else() set(DLLDEF "") diff --git a/fortran/src/Makefile.am b/fortran/src/Makefile.am index 8d8396fcbff..2fdf085f4b9 100644 --- a/fortran/src/Makefile.am +++ b/fortran/src/Makefile.am @@ -155,7 +155,7 @@ H5Iff.lo: $(srcdir)/H5Iff.F90 H5f90global.lo H5Lff.lo: $(srcdir)/H5Lff.F90 H5f90global.lo H5Off.lo: $(srcdir)/H5Off.F90 H5f90global.lo H5Pff.lo: $(srcdir)/H5Pff.F90 H5f90global.lo H5fortkit.lo -H5Rff.lo: $(srcdir)/H5Rff.F90 H5f90global.lo +H5Rff.lo: $(srcdir)/H5Rff.F90 H5f90global.lo H5fortkit.lo H5Sff.lo: $(srcdir)/H5Sff.F90 H5f90global.lo H5Tff.lo: $(srcdir)/H5Tff.F90 H5f90global.lo H5VLff.lo: $(srcdir)/H5VLff.F90 H5f90global.lo H5fortkit.lo diff --git a/hl/fortran/src/CMakeLists.txt b/hl/fortran/src/CMakeLists.txt index f225eb8f3b4..a9361ad5029 100644 --- a/hl/fortran/src/CMakeLists.txt +++ b/hl/fortran/src/CMakeLists.txt @@ -193,7 +193,7 @@ if (BUILD_STATIC_LIBS) add_dependencies(${HDF5_HL_F90_LIB_TARGET} H5HLgen) endif () if (BUILD_SHARED_LIBS) - if(WIN32) + if(MSVC) set(DLLDEF ${HDF5_HL_F90_SRC_BINARY_DIR}/hdf5_hl_fortrandll.def) else() set(DLLDEF "") diff --git a/java/lib/junit.jar b/java/lib/junit.jar index aaf74448492..6da55d8b852 100644 Binary files a/java/lib/junit.jar and b/java/lib/junit.jar differ diff --git a/java/test/junit.sh.in b/java/test/junit.sh.in index 072edb4ff95..edae8d0848c 100644 --- a/java/test/junit.sh.in +++ b/java/test/junit.sh.in @@ -351,8 +351,6 @@ TESTING JUnit-TestH5 sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5.ext > JUnit-TestH5.out if diff JUnit-TestH5.out JUnit-TestH5.txt > /dev/null; then @@ -372,8 +370,6 @@ TESTING JUnit-TestH5Eparams sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Eparams.ext > JUnit-TestH5Eparams.out if diff JUnit-TestH5Eparams.out JUnit-TestH5Eparams.txt > /dev/null; then @@ -393,8 +389,6 @@ TESTING JUnit-TestH5Eregister sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Eregister.ext > JUnit-TestH5Eregister.out if diff JUnit-TestH5Eregister.out JUnit-TestH5Eregister.txt > /dev/null; then @@ -414,8 +408,6 @@ TESTING JUnit-TestH5Fparams sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Fparams.ext > JUnit-TestH5Fparams.out if diff JUnit-TestH5Fparams.out JUnit-TestH5Fparams.txt > /dev/null; then @@ -435,8 +427,6 @@ TESTING JUnit-TestH5Fbasic sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Fbasic.ext > JUnit-TestH5Fbasic.out if diff JUnit-TestH5Fbasic.out JUnit-TestH5Fbasic.txt > /dev/null; then @@ -456,8 +446,6 @@ TESTING JUnit-TestH5F sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5F.ext > JUnit-TestH5F.out if diff JUnit-TestH5F.out JUnit-TestH5F.txt > /dev/null; then @@ -477,8 +465,6 @@ TESTING JUnit-TestH5Fswmr sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Fswmr.ext > JUnit-TestH5Fswmr.out if diff JUnit-TestH5Fswmr.out JUnit-TestH5Fswmr.txt > /dev/null; then @@ -498,8 +484,6 @@ TESTING JUnit-TestH5Gbasic sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Gbasic.ext > JUnit-TestH5Gbasic.out if diff JUnit-TestH5Gbasic.out JUnit-TestH5Gbasic.txt > /dev/null; then @@ -519,8 +503,6 @@ TESTING JUnit-TestH5G sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5G.ext > JUnit-TestH5G.out if diff JUnit-TestH5G.out JUnit-TestH5G.txt > /dev/null; then @@ -540,8 +522,6 @@ TESTING JUnit-TestH5Sbasic sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Sbasic.ext > JUnit-TestH5Sbasic.out if diff JUnit-TestH5Sbasic.out JUnit-TestH5Sbasic.txt > /dev/null; then @@ -561,8 +541,6 @@ TESTING JUnit-TestH5S sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5S.ext > JUnit-TestH5S.out if diff JUnit-TestH5S.out JUnit-TestH5S.txt > /dev/null; then @@ -582,8 +560,6 @@ TESTING JUnit-TestH5Tparams sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Tparams.ext > JUnit-TestH5Tparams.out if diff JUnit-TestH5Tparams.out JUnit-TestH5Tparams.txt > /dev/null; then @@ -603,8 +579,6 @@ TESTING JUnit-TestH5Tbasic sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Tbasic.ext > JUnit-TestH5Tbasic.out if diff JUnit-TestH5Tbasic.out JUnit-TestH5Tbasic.txt > /dev/null; then @@ -624,8 +598,6 @@ TESTING JUnit-TestH5T sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5T.ext > JUnit-TestH5T.out if diff JUnit-TestH5T.out JUnit-TestH5T.txt > /dev/null; then @@ -645,8 +617,6 @@ TESTING JUnit-TestH5Dparams sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Dparams.ext > JUnit-TestH5Dparams.out if diff JUnit-TestH5Dparams.out JUnit-TestH5Dparams.txt > /dev/null; then @@ -666,8 +636,6 @@ TESTING JUnit-TestH5D sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5D.ext > JUnit-TestH5D.out if diff JUnit-TestH5D.out JUnit-TestH5D.txt > /dev/null; then @@ -687,8 +655,6 @@ TESTING JUnit-TestH5Drw sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Drw.ext > JUnit-TestH5Drw.out if diff JUnit-TestH5Drw.out JUnit-TestH5Drw.txt > /dev/null; then @@ -708,8 +674,6 @@ TESTING JUnit-TestH5Dplist sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Dplist.ext > JUnit-TestH5Dplist.out if diff JUnit-TestH5Dplist.out JUnit-TestH5Dplist.txt > /dev/null; then @@ -729,8 +693,6 @@ TESTING JUnit-TestH5Lparams sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Lparams.ext > JUnit-TestH5Lparams.out if diff JUnit-TestH5Lparams.out JUnit-TestH5Lparams.txt > /dev/null; then @@ -750,8 +712,6 @@ TESTING JUnit-TestH5Lbasic sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Lbasic.ext > JUnit-TestH5Lbasic.out if diff JUnit-TestH5Lbasic.out JUnit-TestH5Lbasic.txt > /dev/null; then @@ -771,8 +731,6 @@ TESTING JUnit-TestH5Lcreate sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Lcreate.ext > JUnit-TestH5Lcreate.out if diff JUnit-TestH5Lcreate.out JUnit-TestH5Lcreate.txt > /dev/null; then @@ -792,8 +750,6 @@ TESTING JUnit-TestH5R sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5R.ext > JUnit-TestH5R.out if diff JUnit-TestH5R.out JUnit-TestH5R.txt > /dev/null; then @@ -813,8 +769,6 @@ TESTING JUnit-TestH5Rref sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Rref.ext > JUnit-TestH5Rref.out if diff JUnit-TestH5Rref.out JUnit-TestH5Rref.txt > /dev/null; then @@ -834,8 +788,6 @@ TESTING JUnit-TestH5P sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5P.ext > JUnit-TestH5P.out if diff JUnit-TestH5P.out JUnit-TestH5P.txt > /dev/null; then @@ -855,8 +807,6 @@ TESTING JUnit-TestH5PData sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5PData.ext > JUnit-TestH5PData.out if diff JUnit-TestH5PData.out JUnit-TestH5PData.txt > /dev/null; then @@ -876,8 +826,6 @@ TESTING JUnit-TestH5Pfapl sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Pfapl.ext > JUnit-TestH5Pfapl.out if diff JUnit-TestH5Pfapl.out JUnit-TestH5Pfapl.txt > /dev/null; then @@ -897,8 +845,6 @@ TESTING JUnit-TestH5Pvirtual sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Pvirtual.ext > JUnit-TestH5Pvirtual.out if diff JUnit-TestH5Pvirtual.out JUnit-TestH5Pvirtual.txt > /dev/null; then @@ -918,8 +864,6 @@ TESTING JUnit-TestH5Plist sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Plist.ext > JUnit-TestH5Plist.out if diff JUnit-TestH5Plist.out JUnit-TestH5Plist.txt > /dev/null; then @@ -939,8 +883,6 @@ TESTING JUnit-TestH5A sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5A.ext > JUnit-TestH5A.out if diff JUnit-TestH5A.out JUnit-TestH5A.txt > /dev/null; then @@ -960,8 +902,6 @@ TESTING JUnit-TestH5Arw sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Arw.ext > JUnit-TestH5Arw.out if diff JUnit-TestH5Arw.out JUnit-TestH5Arw.txt > /dev/null; then @@ -981,8 +921,6 @@ TESTING JUnit-TestH5Oparams sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Oparams.ext > JUnit-TestH5Oparams.out if diff JUnit-TestH5Oparams.out JUnit-TestH5Oparams.txt > /dev/null; then @@ -1002,8 +940,6 @@ TESTING JUnit-TestH5Obasic sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Obasic.ext > JUnit-TestH5Obasic.out if diff JUnit-TestH5Obasic.out JUnit-TestH5Obasic.txt > /dev/null; then @@ -1023,8 +959,6 @@ TESTING JUnit-TestH5Ocreate sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Ocreate.ext > JUnit-TestH5Ocreate.out if diff JUnit-TestH5Ocreate.out JUnit-TestH5Ocreate.txt > /dev/null; then @@ -1044,8 +978,6 @@ TESTING JUnit-TestH5OcopyOld sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5OcopyOld.ext > JUnit-TestH5OcopyOld.out if diff JUnit-TestH5OcopyOld.out JUnit-TestH5OcopyOld.txt > /dev/null; then @@ -1065,8 +997,6 @@ TESTING JUnit-TestH5Ocopy sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Ocopy.ext > JUnit-TestH5Ocopy.out if diff JUnit-TestH5Ocopy.out JUnit-TestH5Ocopy.txt > /dev/null; then @@ -1086,8 +1016,6 @@ TESTING JUnit-TestH5PL sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5PL.ext > JUnit-TestH5PL.out if diff JUnit-TestH5PL.out JUnit-TestH5PL.txt > /dev/null; then @@ -1107,8 +1035,6 @@ TESTING JUnit-TestH5VL sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5VL.ext > JUnit-TestH5VL.out if diff JUnit-TestH5VL.out JUnit-TestH5VL.txt > /dev/null; then @@ -1128,8 +1054,6 @@ TESTING JUnit-TestH5Z sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Z.ext > JUnit-TestH5Z.out if diff JUnit-TestH5Z.out JUnit-TestH5Z.txt > /dev/null; then @@ -1149,8 +1073,6 @@ TESTING JUnit-TestH5E sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5E.ext > JUnit-TestH5E.out if diff JUnit-TestH5E.out JUnit-TestH5E.txt > /dev/null; then @@ -1170,8 +1092,6 @@ TESTING JUnit-TestH5Edefault sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Edefault.ext > JUnit-TestH5Edefault.out if diff JUnit-TestH5Edefault.out JUnit-TestH5Edefault.txt > /dev/null; then @@ -1192,8 +1112,6 @@ if test $USE_FILTER_SZIP = "yes"; then sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*[\.,[0-9]*]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Giterate.ext > JUnit-TestH5Giterate.out if diff JUnit-TestH5Giterate.out JUnit-TestH5Giterate.txt > /dev/null; then @@ -1214,8 +1132,6 @@ if test "X$ROS3_VFD" = "Xyes"; then sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*\.,[0-9]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Pfapls3.ext > JUnit-TestH5Pfapls3.out if diff JUnit-TestH5Pfapls3.out JUnit-TestH5Pfapls3.txt > /dev/null; then @@ -1236,8 +1152,6 @@ if test "X$HAVE_LIBHDFS" = "Xyes"; then sed -e 's/ thread [0-9]*//' -e 's/: .*\.c /: (file name) /' \ -e 's/line [0-9]*/line (number)/' \ -e 's/Time: [0-9]*\.,[0-9]*/Time: XXXX/' \ - -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ - -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ JUnit-TestH5Pfaplhdfs.ext > JUnit-TestH5Pfaplhdfs.out if diff JUnit-TestH5Pfaplhdfs.out JUnit-TestH5Pfaplhdfs.txt > /dev/null; then diff --git a/java/test/testfiles/JUnit-TestH5.txt b/java/test/testfiles/JUnit-TestH5.txt index b282a9138c5..a8d3b963972 100644 --- a/java/test/testfiles/JUnit-TestH5.txt +++ b/java/test/testfiles/JUnit-TestH5.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5get_libversion_null_param .testJ2C .testIsSerializable diff --git a/java/test/testfiles/JUnit-TestH5A.txt b/java/test/testfiles/JUnit-TestH5A.txt index f31c86c6f4a..9661285eca1 100644 --- a/java/test/testfiles/JUnit-TestH5A.txt +++ b/java/test/testfiles/JUnit-TestH5A.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Acreate2_nullname .testH5Acreate_by_name .testH5Aget_name_by_idx diff --git a/java/test/testfiles/JUnit-TestH5Arw.txt b/java/test/testfiles/JUnit-TestH5Arw.txt index 49d3b1c3db4..7f3904222de 100644 --- a/java/test/testfiles/JUnit-TestH5Arw.txt +++ b/java/test/testfiles/JUnit-TestH5Arw.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Aread_128bit_floats .testH5Aread_64bit_floats .testH5Aread_8bit_ints diff --git a/java/test/testfiles/JUnit-TestH5D.txt b/java/test/testfiles/JUnit-TestH5D.txt index 4c306213450..1651176c1ee 100644 --- a/java/test/testfiles/JUnit-TestH5D.txt +++ b/java/test/testfiles/JUnit-TestH5D.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5DArrayenum_rw .testH5DVLwrVL .testH5Dget_storage_size diff --git a/java/test/testfiles/JUnit-TestH5Dparams.txt b/java/test/testfiles/JUnit-TestH5Dparams.txt index 9acedd7e19a..127c9ea29d9 100644 --- a/java/test/testfiles/JUnit-TestH5Dparams.txt +++ b/java/test/testfiles/JUnit-TestH5Dparams.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Dget_space_status_invalid .testH5Dget_access_plist_invalid .testH5Dget_type_invalid diff --git a/java/test/testfiles/JUnit-TestH5Dplist.txt b/java/test/testfiles/JUnit-TestH5Dplist.txt index 64e924a9860..5f0f15b2e66 100644 --- a/java/test/testfiles/JUnit-TestH5Dplist.txt +++ b/java/test/testfiles/JUnit-TestH5Dplist.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5P_dset_no_attrs_hint .testH5Dset_extent diff --git a/java/test/testfiles/JUnit-TestH5Drw.txt b/java/test/testfiles/JUnit-TestH5Drw.txt index 6b854cf3570..4453bbde866 100644 --- a/java/test/testfiles/JUnit-TestH5Drw.txt +++ b/java/test/testfiles/JUnit-TestH5Drw.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Dread_32bit_floats .testH5Dread_32bit_ints .testH5Dread_64bit_ints diff --git a/java/test/testfiles/JUnit-TestH5E.txt b/java/test/testfiles/JUnit-TestH5E.txt index 8c5e5e41606..172c6d79957 100644 --- a/java/test/testfiles/JUnit-TestH5E.txt +++ b/java/test/testfiles/JUnit-TestH5E.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Eget_msg_major .testH5Eget_msg_minor .testH5Epush diff --git a/java/test/testfiles/JUnit-TestH5Edefault.txt b/java/test/testfiles/JUnit-TestH5Edefault.txt index bb43c643e8a..04e724aa83c 100644 --- a/java/test/testfiles/JUnit-TestH5Edefault.txt +++ b/java/test/testfiles/JUnit-TestH5Edefault.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Eset_current_stack_invalid_stkid .testH5Eset_current_stack .testH5Eget_num diff --git a/java/test/testfiles/JUnit-TestH5Eparams.txt b/java/test/testfiles/JUnit-TestH5Eparams.txt index 92f80685560..08a24667030 100644 --- a/java/test/testfiles/JUnit-TestH5Eparams.txt +++ b/java/test/testfiles/JUnit-TestH5Eparams.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5EprintInt .testH5Eget_msg .testH5Eget_num diff --git a/java/test/testfiles/JUnit-TestH5Eregister.txt b/java/test/testfiles/JUnit-TestH5Eregister.txt index 132e123b700..223104ffd89 100644 --- a/java/test/testfiles/JUnit-TestH5Eregister.txt +++ b/java/test/testfiles/JUnit-TestH5Eregister.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Eregister_class_lib_name_null .testH5Eregister_class_version_null .testH5Eunregister_class_invalid_classid diff --git a/java/test/testfiles/JUnit-TestH5F.txt b/java/test/testfiles/JUnit-TestH5F.txt index f79ac40ee1d..d408fa18a8d 100644 --- a/java/test/testfiles/JUnit-TestH5F.txt +++ b/java/test/testfiles/JUnit-TestH5F.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Fget_access_plist .testH5Fget_fileno_diff .testH5Fget_fileno_same diff --git a/java/test/testfiles/JUnit-TestH5Fbasic.txt b/java/test/testfiles/JUnit-TestH5Fbasic.txt index cd4e2826f92..7626c1415af 100644 --- a/java/test/testfiles/JUnit-TestH5Fbasic.txt +++ b/java/test/testfiles/JUnit-TestH5Fbasic.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Fget_mdc_size .testH5Fget_mdc_hit_rate .testH5F_dset_no_attrs_hint diff --git a/java/test/testfiles/JUnit-TestH5Fparams.txt b/java/test/testfiles/JUnit-TestH5Fparams.txt index 91a843517b7..b7ce871ce63 100644 --- a/java/test/testfiles/JUnit-TestH5Fparams.txt +++ b/java/test/testfiles/JUnit-TestH5Fparams.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Fis_accessible_null .testH5Fcreate_null .testH5Fflush_local diff --git a/java/test/testfiles/JUnit-TestH5Fswmr.txt b/java/test/testfiles/JUnit-TestH5Fswmr.txt index f943892de53..14a301e3a1b 100644 --- a/java/test/testfiles/JUnit-TestH5Fswmr.txt +++ b/java/test/testfiles/JUnit-TestH5Fswmr.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Fstart_swmr_write .testH5Fswmr_read_attempts diff --git a/java/test/testfiles/JUnit-TestH5G.txt b/java/test/testfiles/JUnit-TestH5G.txt index cbcea1d7ac3..331b7755354 100644 --- a/java/test/testfiles/JUnit-TestH5G.txt +++ b/java/test/testfiles/JUnit-TestH5G.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Gget_info_by_name .testH5Gget_create_plist .testH5Gopen diff --git a/java/test/testfiles/JUnit-TestH5Gbasic.txt b/java/test/testfiles/JUnit-TestH5Gbasic.txt index 35216965b5b..b2dff333ca5 100644 --- a/java/test/testfiles/JUnit-TestH5Gbasic.txt +++ b/java/test/testfiles/JUnit-TestH5Gbasic.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Gget_info_by_name_not_exists .testH5Gget_info_by_idx_not_exists .testH5Gget_info_by_name diff --git a/java/test/testfiles/JUnit-TestH5Giterate.txt b/java/test/testfiles/JUnit-TestH5Giterate.txt index 38402afcbf1..057a023b348 100644 --- a/java/test/testfiles/JUnit-TestH5Giterate.txt +++ b/java/test/testfiles/JUnit-TestH5Giterate.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Gget_obj_info_all Time: XXXX diff --git a/java/test/testfiles/JUnit-TestH5Lbasic.txt b/java/test/testfiles/JUnit-TestH5Lbasic.txt index b9b580c2fb9..50419b942a3 100644 --- a/java/test/testfiles/JUnit-TestH5Lbasic.txt +++ b/java/test/testfiles/JUnit-TestH5Lbasic.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Lget_info_by_idx_not_exist_name .testH5Lget_name_by_idx_not_exist .testH5Lvisit diff --git a/java/test/testfiles/JUnit-TestH5Lcreate.txt b/java/test/testfiles/JUnit-TestH5Lcreate.txt index cbd5d36c88c..aac49fb4177 100644 --- a/java/test/testfiles/JUnit-TestH5Lcreate.txt +++ b/java/test/testfiles/JUnit-TestH5Lcreate.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Lget_info_by_idx_n0_create .testH5Ldelete_soft_link_dangle .testH5Lget_value_by_idx_external_create diff --git a/java/test/testfiles/JUnit-TestH5Lparams.txt b/java/test/testfiles/JUnit-TestH5Lparams.txt index a22741c360a..33b2161b621 100644 --- a/java/test/testfiles/JUnit-TestH5Lparams.txt +++ b/java/test/testfiles/JUnit-TestH5Lparams.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Lcopy_invalid .testH5Lget_value_by_idx_null .testH5Lcreate_external_invalid diff --git a/java/test/testfiles/JUnit-TestH5Obasic.txt b/java/test/testfiles/JUnit-TestH5Obasic.txt index c39c01d4937..6aaa4b45e3a 100644 --- a/java/test/testfiles/JUnit-TestH5Obasic.txt +++ b/java/test/testfiles/JUnit-TestH5Obasic.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Oexists_by_name .testH5Oget_native_info_dataset .testH5Oopen_by_token diff --git a/java/test/testfiles/JUnit-TestH5Ocopy.txt b/java/test/testfiles/JUnit-TestH5Ocopy.txt index 7f66410e109..a070bbcb979 100644 --- a/java/test/testfiles/JUnit-TestH5Ocopy.txt +++ b/java/test/testfiles/JUnit-TestH5Ocopy.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5OcopyRefsDatasettosameFile .testH5OcopyNullRef .testH5OcopyRefsDatasettodiffFile diff --git a/java/test/testfiles/JUnit-TestH5OcopyOld.txt b/java/test/testfiles/JUnit-TestH5OcopyOld.txt index 7f66410e109..a070bbcb979 100644 --- a/java/test/testfiles/JUnit-TestH5OcopyOld.txt +++ b/java/test/testfiles/JUnit-TestH5OcopyOld.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5OcopyRefsDatasettosameFile .testH5OcopyNullRef .testH5OcopyRefsDatasettodiffFile diff --git a/java/test/testfiles/JUnit-TestH5Ocreate.txt b/java/test/testfiles/JUnit-TestH5Ocreate.txt index 5bc9e077222..ad1a31f8da5 100644 --- a/java/test/testfiles/JUnit-TestH5Ocreate.txt +++ b/java/test/testfiles/JUnit-TestH5Ocreate.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Oget_info_by_idx_n0_create .testH5Oget_info_softlink_dangle .testH5Oget_info_softlink diff --git a/java/test/testfiles/JUnit-TestH5Oparams.txt b/java/test/testfiles/JUnit-TestH5Oparams.txt index b756bcf784c..1a6533f8275 100644 --- a/java/test/testfiles/JUnit-TestH5Oparams.txt +++ b/java/test/testfiles/JUnit-TestH5Oparams.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Oget_comment_by_name_null .testH5Oget_native_info_by_name_invalid .testH5Ovisit_by_name_nullname diff --git a/java/test/testfiles/JUnit-TestH5P.txt b/java/test/testfiles/JUnit-TestH5P.txt index 01acadd200f..429a83a8bbb 100644 --- a/java/test/testfiles/JUnit-TestH5P.txt +++ b/java/test/testfiles/JUnit-TestH5P.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Pset_nbit .testH5Pset_shared_mesg_index_InvalidFlag .testH5Pset_shared_mesg_phase_change diff --git a/java/test/testfiles/JUnit-TestH5PData.txt b/java/test/testfiles/JUnit-TestH5PData.txt index 6356d69997c..5ae27f26a6f 100644 --- a/java/test/testfiles/JUnit-TestH5PData.txt +++ b/java/test/testfiles/JUnit-TestH5PData.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5P_buffer .testH5Pdata_transform diff --git a/java/test/testfiles/JUnit-TestH5PL.txt b/java/test/testfiles/JUnit-TestH5PL.txt index fb78bb534ec..fa848300f9e 100644 --- a/java/test/testfiles/JUnit-TestH5PL.txt +++ b/java/test/testfiles/JUnit-TestH5PL.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .TestH5PLplugins .TestH5PLpaths diff --git a/java/test/testfiles/JUnit-TestH5Pfapl.txt b/java/test/testfiles/JUnit-TestH5Pfapl.txt index c34ac1c28de..d48e89f19ea 100644 --- a/java/test/testfiles/JUnit-TestH5Pfapl.txt +++ b/java/test/testfiles/JUnit-TestH5Pfapl.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5P_elink_fapl .testH5P_fapl_direct .testH5P_alignment diff --git a/java/test/testfiles/JUnit-TestH5Pfaplhdfs.txt b/java/test/testfiles/JUnit-TestH5Pfaplhdfs.txt index 47a00a4eb92..7c66937697f 100644 --- a/java/test/testfiles/JUnit-TestH5Pfaplhdfs.txt +++ b/java/test/testfiles/JUnit-TestH5Pfaplhdfs.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Pget_fapl_hdfs_invalid_fapl_id .testH5Pget_fapl_hdfs_fapl_id_of_wrong_driver_type .testHDFS_fapl diff --git a/java/test/testfiles/JUnit-TestH5Pfapls3.txt b/java/test/testfiles/JUnit-TestH5Pfapls3.txt index 3f46342cca4..232ff961a6d 100644 --- a/java/test/testfiles/JUnit-TestH5Pfapls3.txt +++ b/java/test/testfiles/JUnit-TestH5Pfapls3.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Pset_fapl_ros3_specified .testH5Pset_fapl_ros3 .testH5Pget_fapl_ros3_invalid_fapl_id diff --git a/java/test/testfiles/JUnit-TestH5Plist.txt b/java/test/testfiles/JUnit-TestH5Plist.txt index ed9843a9a2e..037615a86f7 100644 --- a/java/test/testfiles/JUnit-TestH5Plist.txt +++ b/java/test/testfiles/JUnit-TestH5Plist.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5P_genprop_basic_class .testH5P_genprop_class_iter .testH5P_genprop_basic_class_prop diff --git a/java/test/testfiles/JUnit-TestH5Pvirtual.txt b/java/test/testfiles/JUnit-TestH5Pvirtual.txt index e57f6832d8b..1c90ecf5517 100644 --- a/java/test/testfiles/JUnit-TestH5Pvirtual.txt +++ b/java/test/testfiles/JUnit-TestH5Pvirtual.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Pget_source_datasetname .testH5Pvirtual_storage .testH5Pget_selection_source_dataset diff --git a/java/test/testfiles/JUnit-TestH5R.txt b/java/test/testfiles/JUnit-TestH5R.txt index 2420d62cd96..728adfa692b 100644 --- a/java/test/testfiles/JUnit-TestH5R.txt +++ b/java/test/testfiles/JUnit-TestH5R.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Ropen_attr_Nullref .testH5Rget_attr_name_Nullref .testH5Ropen_region_Nullref diff --git a/java/test/testfiles/JUnit-TestH5Rref.txt b/java/test/testfiles/JUnit-TestH5Rref.txt index 05019c03561..7695c9231af 100644 --- a/java/test/testfiles/JUnit-TestH5Rref.txt +++ b/java/test/testfiles/JUnit-TestH5Rref.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Rget_region_dataset .testH5Rget_object .testH5Rget_region_attribute diff --git a/java/test/testfiles/JUnit-TestH5S.txt b/java/test/testfiles/JUnit-TestH5S.txt index 6bde487845b..2a177179a05 100644 --- a/java/test/testfiles/JUnit-TestH5S.txt +++ b/java/test/testfiles/JUnit-TestH5S.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Sget_select_npoints .testH5Sget_select_type .testH5Sset_extent_simple diff --git a/java/test/testfiles/JUnit-TestH5Sbasic.txt b/java/test/testfiles/JUnit-TestH5Sbasic.txt index 34224429f3f..459f2b1accd 100644 --- a/java/test/testfiles/JUnit-TestH5Sbasic.txt +++ b/java/test/testfiles/JUnit-TestH5Sbasic.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Sclose_invalid .testH5Screate_simple_max_default .testH5Screate_simple_dims_null diff --git a/java/test/testfiles/JUnit-TestH5T.txt b/java/test/testfiles/JUnit-TestH5T.txt index 446adcb63bd..06e7a9cbb5b 100644 --- a/java/test/testfiles/JUnit-TestH5T.txt +++ b/java/test/testfiles/JUnit-TestH5T.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Tvlen_create .testH5Tenum_create_functions .testH5Tenum_functions diff --git a/java/test/testfiles/JUnit-TestH5Tbasic.txt b/java/test/testfiles/JUnit-TestH5Tbasic.txt index 131c4f58677..9023a4f702e 100644 --- a/java/test/testfiles/JUnit-TestH5Tbasic.txt +++ b/java/test/testfiles/JUnit-TestH5Tbasic.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Tequal_not .testH5Tcopy .testH5Tequal diff --git a/java/test/testfiles/JUnit-TestH5Tparams.txt b/java/test/testfiles/JUnit-TestH5Tparams.txt index 9f725ac0386..fba219dd235 100644 --- a/java/test/testfiles/JUnit-TestH5Tparams.txt +++ b/java/test/testfiles/JUnit-TestH5Tparams.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Tget_member_type_invalid .testH5Treclaim_invalid .testH5Tenum_insert_null diff --git a/java/test/testfiles/JUnit-TestH5VL.txt b/java/test/testfiles/JUnit-TestH5VL.txt index ff949693535..7e05fd79e0a 100644 --- a/java/test/testfiles/JUnit-TestH5VL.txt +++ b/java/test/testfiles/JUnit-TestH5VL.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5VLget_connector_id_by_name .testH5VLget_connector_id_by_value .testH5VLget_connector_id diff --git a/java/test/testfiles/JUnit-TestH5Z.txt b/java/test/testfiles/JUnit-TestH5Z.txt index 63fc2277f42..c299507145e 100644 --- a/java/test/testfiles/JUnit-TestH5Z.txt +++ b/java/test/testfiles/JUnit-TestH5Z.txt @@ -1,4 +1,4 @@ -JUnit version 4.11 +JUnit version 4.13.2 .testH5Zfilter_avail .testH5Zunregister_predefined .testH5Zget_filter_info diff --git a/release_docs/INSTALL_CMake.txt b/release_docs/INSTALL_CMake.txt index bb5d85fae92..e2671039819 100644 --- a/release_docs/INSTALL_CMake.txt +++ b/release_docs/INSTALL_CMake.txt @@ -283,11 +283,11 @@ IV. Further considerations A. Download the binary packages and install them in a central location. For example on Windows, create a folder extlibs and install the packages there. Add the following CMake options: - -DZLIB_LIBRARY:FILEPATH=some_location/lib/zlib.lib - -DZLIB_INCLUDE_DIR:PATH=some_location/include + -DH5_ZLIB_LIBRARY:FILEPATH=some_location/lib/zlib.lib + -DH5_ZLIB_INCLUDE_DIR:PATH=some_location/include -DZLIB_USE_EXTERNAL:BOOL=OFF - -DSZIP_LIBRARY:FILEPATH=some_location/lib/szlib.lib - -DSZIP_INCLUDE_DIR:PATH=some_location/include + -DH5_SZIP_LIBRARY:FILEPATH=some_location/lib/szlib.lib + -DH5_SZIP_INCLUDE_DIR:PATH=some_location/include -DSZIP_USE_EXTERNAL:BOOL=OFF where "some_location" is the full path to the extlibs folder. Also the appropriate environment variable must be set; @@ -499,10 +499,10 @@ These five steps are described in detail below. * Visual Studio 17 2022 is: - * SZIP_INCLUDE_DIR:PATH= - * SZIP_LIBRARY:FILEPATH= - * ZLIB_INCLUDE_DIR:PATH= - * ZLIB_LIBRARY:FILEPATH= + * H5_SZIP_INCLUDE_DIR:PATH= + * H5_SZIP_LIBRARY:FILEPATH= + * H5_ZLIB_INCLUDE_DIR:PATH= + * H5_ZLIB_LIBRARY:FILEPATH= * :BOOL=[ON | OFF] is: @@ -574,6 +574,14 @@ These five steps are described in detail below. set (BLOSC_ZLIB_TGZ_NAME "zlib-1.3.tar.gz" CACHE STRING "Use ZLib from compressed file" FORCE) set (BLOSC_ZLIB_PACKAGE_NAME "zlib" CACHE STRING "Name of BLOSC_ZLIB package" FORCE) ######## + # blosc2 + ######## + set (BLOSC2_GIT_URL "https://github.com/Blosc/c-blosc2.git" CACHE STRING "Use BLOSC2 from Github repository" FORCE) + set (BLOSC2_GIT_BRANCH "main" CACHE STRING "" FORCE) + set (BLOSC2_TGZ_ORIGPATH "https://github.com/Blosc/c-blosc2/archive/refs/tags" CACHE STRING "Use PLUGINS from original location" FORCE) + set (BLOSC2_TGZ_NAME "c-blosc2-2.14.4.tar.gz" CACHE STRING "Use BLOSC2 from compressed file" FORCE) + set (BLOSC2_PACKAGE_NAME "blosc2" CACHE STRING "Name of BLOSC2 package" FORCE) + ######## # bzip2 ######## set (BZ2_GIT_URL "https://github.com/libarchive/bzip2.git" CACHE STRING "Use BZ2 from GitHub repository" FORCE) diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt index 51fddcb854b..3bbb3a891da 100644 --- a/release_docs/RELEASE.txt +++ b/release_docs/RELEASE.txt @@ -761,6 +761,22 @@ Bug Fixes since HDF5-1.14.0 release =================================== Library ------- + - Fixed a leak of datatype IDs created internally during datatype conversion + + Fixed an issue where the library could leak IDs that it creates internally + for compound datatype members during datatype conversion. When the library's + table of datatype conversion functions is modified (such as when a new + conversion function is registered with the library from within an application), + the compound datatype conversion function has to recalculate data that it + has cached. When recalculating that data, the library was registering new + IDs for each of the members of the source and destination compound datatypes + involved in the conversion process and was overwriting the old cached IDs + without first closing them. This would result in use-after-free issues due + to multiple IDs pointing to the same internal H5T_t structure, as well as + crashes due to the library not gracefully handling partially initialized or + partially freed datatypes on library termination. + + Fixes h5py GitHub #2419 - Fixed function H5Requal actually to compare the reference pointers diff --git a/src/H5Apublic.h b/src/H5Apublic.h index 7960efd546b..256d19cf355 100644 --- a/src/H5Apublic.h +++ b/src/H5Apublic.h @@ -115,7 +115,7 @@ H5_DLL herr_t H5Aclose_async(hid_t attr_id, hid_t es_id); * \acpl_id * \aapl_id * - * \return \hid_tv{attribute} + * \return \hid_ti{attribute} * * \details H5Acreate2() creates an attribute, \p attr_name, which is attached * to the object specified by the identifier \p loc_id. @@ -173,7 +173,7 @@ H5_DLL hid_t H5Acreate_async(hid_t loc_id, const char *attr_name, hid_t type_id * \aapl_id * \lapl_id * - * \return \hid_tv{attribute} + * \return \hid_ti{attribute} * * \details H5Acreate_by_name() creates an attribute, \p attr_name, which is * attached to the object specified by \p loc_id and \p obj_name. @@ -389,7 +389,7 @@ H5_DLL herr_t H5Aexists_by_name_async(hid_t loc_id, const char *obj_name, const * * \attr_id * - * \return \hid_tv{attribute's creation property list} + * \return \hid_ti{attribute's creation property list} * * \details H5Aget_create_plist() returns an identifier for the attribute * creation property list associated with the attribute specified @@ -567,7 +567,7 @@ H5_DLL ssize_t H5Aget_name_by_idx(hid_t loc_id, const char *obj_name, H5_index_t * * \attr_id * - * \return \hid_tv{attribute dataspace} + * \return \hid_ti{attribute dataspace} * * \details H5Aget_space() retrieves a copy of the dataspace for an * attribute. The dataspace identifier returned from this @@ -747,7 +747,7 @@ H5_DLL herr_t H5Aiterate_by_name(hid_t loc_id, const char *obj_name, H5_index_t * \param[in] attr_name Name of attribute to open * \aapl_id * - * \return \hid_tv{attribute} + * \return \hid_ti{attribute} * * \details H5Aopen() opens an existing attribute, \p attr_name, that is * attached to the object specified by an object identifier, \p obj_id. @@ -795,7 +795,7 @@ H5_DLL hid_t H5Aopen_async(hid_t obj_id, const char *attr_name, hid_t aapl_id, * \aapl_id * \lapl_id * - * \return \hid_tv{attribute} + * \return \hid_ti{attribute} * * \details H5Aopen_by_idx() opens an existing attribute that is attached * to an object specified by location and name, \p loc_id and @@ -850,7 +850,7 @@ H5_DLL hid_t H5Aopen_by_idx_async(hid_t loc_id, const char *obj_name, H5_index_ * \aapl_id * \lapl_id * - * \return \hid_tv{attribute} + * \return \hid_ti{attribute} * * \details H5Aopen_by_name() opens an existing attribute, \p attr_name, * that is attached to an object specified by location and name, @@ -1128,7 +1128,7 @@ typedef herr_t (*H5A_operator1_t)(hid_t location_id /*in*/, const char *attr_nam * \space_id * \acpl_id * - * \return \hid_tv{attribute} + * \return \hid_ti{attribute} * * \deprecation_note{H5Acreate2()} * @@ -1215,7 +1215,7 @@ H5_DLL herr_t H5Aiterate1(hid_t loc_id, unsigned *idx, H5A_operator1_t op, void * \loc_id * \param[in] idx Index of the attribute to open * - * \return \hid_tv{attribute} + * \return \hid_ti{attribute} * * \deprecation_note{H5Aopen_by_idx()} * @@ -1241,7 +1241,7 @@ H5_DLL hid_t H5Aopen_idx(hid_t loc_id, unsigned idx); * \loc_id * \param[in] name Attribute name * - * \return \hid_tv{attribute} + * \return \hid_ti{attribute} * * \deprecation_note{H5Aopen_by_name()} * diff --git a/src/H5Dmodule.h b/src/H5Dmodule.h index 27e5799968e..e791f7cf00e 100644 --- a/src/H5Dmodule.h +++ b/src/H5Dmodule.h @@ -2737,6 +2737,7 @@ allocated if necessary. * * * + * * * * diff --git a/src/H5FDpkg.h b/src/H5FDpkg.h index 02eb25588e1..0d0a7b706c9 100644 --- a/src/H5FDpkg.h +++ b/src/H5FDpkg.h @@ -48,7 +48,7 @@ H5_DLL herr_t H5FD__free_real(H5FD_t *file, H5FD_mem_t type, haddr_t addr, hsiz /* Testing functions */ #ifdef H5FD_TESTING -H5_DLL bool H5FD__supports_swmr_test(const char *vfd_name); +H5_DLL bool H5FD__supports_swmr_test(const char *vfd_name); #endif /* H5FD_TESTING */ #endif /* H5FDpkg_H */ diff --git a/src/H5FDtest.c b/src/H5FDtest.c index 15b7961351f..2a48fb5b8cd 100644 --- a/src/H5FDtest.c +++ b/src/H5FDtest.c @@ -30,8 +30,8 @@ /***********/ /* Headers */ /***********/ -#include "H5private.h" /* Generic Functions */ -#include "H5FDpkg.h" /* File Drivers */ +#include "H5private.h" /* Generic Functions */ +#include "H5FDpkg.h" /* File Drivers */ /****************/ /* Local Macros */ diff --git a/src/H5Fpkg.h b/src/H5Fpkg.h index 7e12ff111d0..06d13ebffdd 100644 --- a/src/H5Fpkg.h +++ b/src/H5Fpkg.h @@ -131,6 +131,10 @@ (H5F_SUPERBLOCK_FIXED_SIZE + \ H5F_SUPERBLOCK_VARLEN_SIZE((s)->super_vers, (s)->sizeof_addr, (s)->sizeof_size)) +/* Optimistic read size for superblock */ +/* Size of a v2+ superblock, w/8-byte addresses & lengths */ +#define H5F_SUPERBLOCK_SPEC_READ_SIZE (H5F_SUPERBLOCK_FIXED_SIZE + H5F_SUPERBLOCK_VARLEN_SIZE(2, 8, 8)) + /* For superblock version 0 & 1: Offset to the file consistency flags (status_flags) in the superblock (excluding H5F_SUPERBLOCK_FIXED_SIZE) */ diff --git a/src/H5Fsuper.c b/src/H5Fsuper.c index 6eb465ed9d1..5a32fc0ce68 100644 --- a/src/H5Fsuper.c +++ b/src/H5Fsuper.c @@ -416,8 +416,7 @@ H5F__super_read(H5F_t *f, H5P_genplist_t *fa_plist, bool initial_read) HGOTO_ERROR(H5E_FILE, H5E_BADTYPE, FAIL, "can't get property list"); /* Make certain we can read the fixed-size portion of the superblock */ - if (H5F__set_eoa(f, H5FD_MEM_SUPER, - (haddr_t)(H5F_SUPERBLOCK_FIXED_SIZE + H5F_SUPERBLOCK_MINIMAL_VARLEN_SIZE)) < 0) + if (H5F__set_eoa(f, H5FD_MEM_SUPER, (haddr_t)H5F_SUPERBLOCK_SPEC_READ_SIZE) < 0) HGOTO_ERROR(H5E_FILE, H5E_CANTSET, FAIL, "set end of space allocation request failed"); /* Set up the user data for cache callbacks */ @@ -583,13 +582,10 @@ H5F__super_read(H5F_t *f, H5P_genplist_t *fa_plist, bool initial_read) if (H5F_INTENT(f) & H5F_ACC_SWMR_READ) { /* - * When the file is opened for SWMR read access, skip the check if: - * --the file is already marked for SWMR writing and - * --the file has version 3 superblock for SWMR support + * When the file is opened for SWMR read access, skip the check if + * the file has a version 3 superblock capable of SWMR support */ - if ((sblock->status_flags & H5F_SUPER_SWMR_WRITE_ACCESS) && - (sblock->status_flags & H5F_SUPER_WRITE_ACCESS) && - sblock->super_vers >= HDF5_SUPERBLOCK_VERSION_3) + if (sblock->super_vers >= HDF5_SUPERBLOCK_VERSION_3) skip_eof_check = true; } if (!skip_eof_check && initial_read) { diff --git a/src/H5Fsuper_cache.c b/src/H5Fsuper_cache.c index 9c475ab26a2..2a425099b47 100644 --- a/src/H5Fsuper_cache.c +++ b/src/H5Fsuper_cache.c @@ -306,8 +306,7 @@ H5F__cache_superblock_get_initial_load_size(void H5_ATTR_UNUSED *_udata, size_t assert(image_len); /* Set the initial image length size */ - *image_len = H5F_SUPERBLOCK_FIXED_SIZE + /* Fixed size of superblock */ - H5F_SUPERBLOCK_MINIMAL_VARLEN_SIZE; + *image_len = H5F_SUPERBLOCK_SPEC_READ_SIZE; FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5F__cache_superblock_get_initial_load_size() */ diff --git a/src/H5Gint.c b/src/H5Gint.c index 8630be1b444..a7268adcbba 100644 --- a/src/H5Gint.c +++ b/src/H5Gint.c @@ -506,7 +506,8 @@ static herr_t H5G__open_oid(H5G_t *grp) { bool obj_opened = false; - herr_t ret_value = SUCCEED; + htri_t msg_exists; + herr_t ret_value = SUCCEED; FUNC_ENTER_PACKAGE @@ -523,8 +524,14 @@ H5G__open_oid(H5G_t *grp) obj_opened = true; /* Check if this object has the right message(s) to be treated as a group */ - if ((H5O_msg_exists(&(grp->oloc), H5O_STAB_ID) <= 0) && (H5O_msg_exists(&(grp->oloc), H5O_LINFO_ID) <= 0)) - HGOTO_ERROR(H5E_SYM, H5E_CANTOPENOBJ, FAIL, "not a group"); + if ((msg_exists = H5O_msg_exists(&(grp->oloc), H5O_STAB_ID)) < 0) + HGOTO_ERROR(H5E_SYM, H5E_CANTGET, FAIL, "can't check if symbol table message exists"); + if (!msg_exists) { + if ((msg_exists = H5O_msg_exists(&(grp->oloc), H5O_LINFO_ID)) < 0) + HGOTO_ERROR(H5E_SYM, H5E_CANTGET, FAIL, "can't check if link info message exists"); + if (!msg_exists) + HGOTO_ERROR(H5E_SYM, H5E_CANTOPENOBJ, FAIL, "not a group"); + } done: if (ret_value < 0) { diff --git a/src/H5Odbg.c b/src/H5Odbg.c index 78bace66392..cfdff270e40 100644 --- a/src/H5Odbg.c +++ b/src/H5Odbg.c @@ -87,6 +87,10 @@ H5O__assert(const H5O_t *oh) FUNC_ENTER_PACKAGE_NOERR + assert(oh); + assert(oh->chunk || oh->nchunks == 0); + assert(oh->mesg || oh->nmesgs == 0); + /* Initialize the tracking variables */ hdr_size = 0; meta_space = (size_t)H5O_SIZEOF_HDR(oh) + (size_t)(H5O_SIZEOF_CHKHDR_OH(oh) * (oh->nchunks - 1)); @@ -140,6 +144,8 @@ H5O__assert(const H5O_t *oh) uint8_t H5_ATTR_NDEBUG_UNUSED *curr_hdr; /* Start of current message header */ size_t curr_tot_size; /* Total size of current message (including header) */ + assert(curr_msg->type); + curr_hdr = curr_msg->raw - H5O_SIZEOF_MSGHDR_OH(oh); curr_tot_size = curr_msg->raw_size + (size_t)H5O_SIZEOF_MSGHDR_OH(oh); diff --git a/src/H5Oint.c b/src/H5Oint.c index e02ded4b87d..5d4694d021c 100644 --- a/src/H5Oint.c +++ b/src/H5Oint.c @@ -1113,7 +1113,9 @@ H5O_protect(const H5O_loc_t *loc, unsigned prot_flags, bool pin_all_chunks) if (cont_msg_info.msgs) cont_msg_info.msgs = (H5O_cont_t *)H5FL_SEQ_FREE(H5O_cont_t, cont_msg_info.msgs); - if (H5O_unprotect(loc, oh, H5AC__NO_FLAGS_SET) < 0) + /* Unprotect the ohdr and delete it from cache since if we failed to load it it's in an inconsistent + * state */ + if (H5O_unprotect(loc, oh, H5AC__DELETED_FLAG) < 0) HDONE_ERROR(H5E_OHDR, H5E_CANTUNPROTECT, NULL, "unable to release object header"); } @@ -1234,10 +1236,21 @@ H5O_unprotect(const H5O_loc_t *loc, H5O_t *oh, unsigned oh_flags) } /* end if */ } /* end for */ - /* Reet the flag from the unprotect */ + /* Reset the flag from the unprotect */ oh->chunks_pinned = false; } /* end if */ + /* Remove the other chunks if we're removing the ohdr (due to a failure) */ + if (oh_flags & H5AC__DELETED_FLAG) { + unsigned u; /* Local index variable */ + + /* Iterate over chunks > 0 */ + for (u = 1; u < oh->nchunks; u++) + /* Expunge chunk proxy from cache */ + if (H5AC_expunge_entry(loc->file, H5AC_OHDR_CHK, oh->chunk[u].addr, H5AC__NO_FLAGS_SET) < 0) + HGOTO_ERROR(H5E_OHDR, H5E_CANTUNPIN, FAIL, "unable to expunge object header chunk"); + } /* end if */ + /* Unprotect the object header */ if (H5AC_unprotect(loc->file, H5AC_OHDR, oh->chunk[0].addr, oh, oh_flags) < 0) HGOTO_ERROR(H5E_OHDR, H5E_CANTUNPROTECT, FAIL, "unable to release object header"); diff --git a/src/H5Opublic.h b/src/H5Opublic.h index 23c4e4eb59b..28954d4cb45 100644 --- a/src/H5Opublic.h +++ b/src/H5Opublic.h @@ -234,7 +234,7 @@ extern "C" { * \param[in] name Path to the object; relative to \p loc_id * \lapl_id * - * \return \hid_tv{object} + * \return \hid_ti{object} * * \details H5Oopen() opens a group, dataset, or committed (named) datatype * specified by a location, \p loc_id, and a path name, \p name, in an HDF5 file. @@ -311,7 +311,7 @@ H5_DLL hid_t H5Oopen_by_token(hid_t loc_id, H5O_token_t token); * \param[in] n Object to open * \lapl_id * - * \return \hid_tv{object} + * \return \hid_ti{object} * * \details H5Oopen_by_idx() opens the nth object in the group specified by \p loc_id * and \p group_name. @@ -1769,7 +1769,7 @@ typedef herr_t (*H5O_iterate1_t)(hid_t obj, const char *name, const H5O_info1_t * \fgdta_loc_obj_id{loc_id} * \param[in] addr Object's address in the file * - * \return \hid_tv{object} + * \return \hid_ti{object} * * \deprecated As of HDF5-1.12 this function has been deprecated in favor of * the function H5Oopen_by_token(). diff --git a/src/H5Ppublic.h b/src/H5Ppublic.h index cf1eedcc397..e3d574fc9a4 100644 --- a/src/H5Ppublic.h +++ b/src/H5Ppublic.h @@ -882,7 +882,7 @@ H5_DLL hid_t H5Pcreate_class(hid_t parent, const char *name, H5P_cls_create_func * * \param[in] buf Buffer holding the encoded property list * - * \return \hid_tv{object} + * \return \hid_ti{object} * * \details Given a binary property list description in a buffer, H5Pdecode() * reconstructs the HDF5 property list and returns an identifier diff --git a/src/H5Spublic.h b/src/H5Spublic.h index a05b8c56437..3697374d49c 100644 --- a/src/H5Spublic.h +++ b/src/H5Spublic.h @@ -179,7 +179,7 @@ H5_DLL herr_t H5Sclose(hid_t space_id); * \param[in] count Number of blocks included in the hyperslab * \param[in] block Size of a block in the hyperslab * - * \return \hid_tv{dataspace} + * \return \hid_t{dataspace} * * \details H5Scombine_hyperslab() combines a hyperslab selection specified * by \p start, \p stride, \p count and \p block with the current @@ -224,7 +224,7 @@ H5_DLL hid_t H5Scombine_select(hid_t space1_id, H5S_seloper_t op, hid_t space2_i * * \space_id * - * \return \hid_tv{dataspace} + * \return \hid_t{dataspace} * * \details H5Scopy() creates a new dataspace which is an exact copy of the * dataspace identified by \p space_id. The dataspace identifier diff --git a/src/H5T.c b/src/H5T.c index b8e568198f7..23993b3d639 100644 --- a/src/H5T.c +++ b/src/H5T.c @@ -1655,12 +1655,11 @@ H5T__unlock_cb(void *_dt, hid_t H5_ATTR_UNUSED id, void *_udata) FUNC_ENTER_PACKAGE_NOERR assert(dt); - assert(dt->shared); - if (H5T_STATE_IMMUTABLE == dt->shared->state) { + if (dt->shared && (H5T_STATE_IMMUTABLE == dt->shared->state)) { dt->shared->state = H5T_STATE_RDONLY; (*n)++; - } /* end if */ + } FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5T__unlock_cb() */ @@ -1874,7 +1873,6 @@ H5T__close_cb(H5T_t *dt, void **request) /* Sanity check */ assert(dt); - assert(dt->shared); /* If this datatype is VOL-managed (i.e.: has a VOL object), * close it through the VOL connector. @@ -4154,10 +4152,10 @@ H5T_close_real(H5T_t *dt) FUNC_ENTER_NOAPI(FAIL) /* Sanity check */ - assert(dt && dt->shared); + assert(dt); /* Clean up resources, depending on shared state */ - if (dt->shared->state != H5T_STATE_OPEN) { + if (dt->shared && (dt->shared->state != H5T_STATE_OPEN)) { if (H5T__free(dt) < 0) HGOTO_ERROR(H5E_DATATYPE, H5E_CANTFREE, FAIL, "unable to free datatype"); @@ -4194,10 +4192,9 @@ H5T_close(H5T_t *dt) /* Sanity check */ assert(dt); - assert(dt->shared); /* Named datatype cleanups */ - if (dt->shared->state == H5T_STATE_OPEN) { + if (dt->shared && (dt->shared->state == H5T_STATE_OPEN)) { /* Decrement refcount count on open named datatype */ dt->shared->fo_count--; diff --git a/src/H5Tconv_compound.c b/src/H5Tconv_compound.c index 3e988b33f18..9495fbc621e 100644 --- a/src/H5Tconv_compound.c +++ b/src/H5Tconv_compound.c @@ -264,21 +264,32 @@ H5T__conv_struct_init(const H5T_t *src, const H5T_t *dst, H5T_cdata_t *cdata, co if (need_ids) { hid_t tid; - if ((tid = H5I_register(H5I_DATATYPE, priv->src_memb[i], false)) < 0) { - H5T__conv_struct_free(priv); - cdata->priv = NULL; - HGOTO_ERROR(H5E_DATATYPE, H5E_CANTREGISTER, FAIL, - "can't register ID for source compound member datatype"); + /* Only register new IDs for the source and destination member datatypes + * if IDs weren't already registered for them. If the cached conversion + * information has to be recalculated (in the case where the library's + * table of conversion functions is modified), the same IDs can be reused + * since the only information that needs to be recalculated is the conversion + * paths used. + */ + if (priv->src_memb_id[i] == H5I_INVALID_HID) { + if ((tid = H5I_register(H5I_DATATYPE, priv->src_memb[i], false)) < 0) { + H5T__conv_struct_free(priv); + cdata->priv = NULL; + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTREGISTER, FAIL, + "can't register ID for source compound member datatype"); + } + priv->src_memb_id[i] = tid; } - priv->src_memb_id[i] = tid; - if ((tid = H5I_register(H5I_DATATYPE, priv->dst_memb[src2dst[i]], false)) < 0) { - H5T__conv_struct_free(priv); - cdata->priv = NULL; - HGOTO_ERROR(H5E_DATATYPE, H5E_CANTREGISTER, FAIL, - "can't register ID for destination compound member datatype"); + if (priv->dst_memb_id[src2dst[i]] == H5I_INVALID_HID) { + if ((tid = H5I_register(H5I_DATATYPE, priv->dst_memb[src2dst[i]], false)) < 0) { + H5T__conv_struct_free(priv); + cdata->priv = NULL; + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTREGISTER, FAIL, + "can't register ID for destination compound member datatype"); + } + priv->dst_memb_id[src2dst[i]] = tid; } - priv->dst_memb_id[src2dst[i]] = tid; } } /* end if */ } /* end for */ diff --git a/src/H5win32defs.h b/src/H5win32defs.h index 05d291ec03b..a996f60ab01 100644 --- a/src/H5win32defs.h +++ b/src/H5win32defs.h @@ -57,7 +57,7 @@ struct timezone { * MinGW and the newer, conforming MSVC preprocessor do not exhibit this * behavior. */ -#if (defined(_MSC_VER) && !defined(_MSVC_TRADITIONAL)) || _MSVC_TRADITIONAL +#if (defined(_MSC_VER) && !defined(_MSVC_TRADITIONAL)) || defined(_MSVC_TRADITIONAL) /* Using the MSVC traditional preprocessor */ #define HDopen(S, F, ...) Wopen(S, F, __VA_ARGS__) #else diff --git a/test/dtypes.c b/test/dtypes.c index cebc1b525b5..ce8ee747b57 100644 --- a/test/dtypes.c +++ b/test/dtypes.c @@ -3913,6 +3913,214 @@ test_user_compound_conversion(void) return 1; } /* end test_user_compound_conversion() */ +/*------------------------------------------------------------------------- + * Function: test_compound_member_convert_id_leak_func1 + * + * Purpose: Datatype conversion function for the + * test_compound_member_convert_id_leak test that just + * converts a float value to a double value with a cast. + * + * Return: Success: 0 + * Failure: number of errors + * + *------------------------------------------------------------------------- + */ +static herr_t +test_compound_member_convert_id_leak_func1(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts, + size_t H5_ATTR_UNUSED buf_stride, size_t H5_ATTR_UNUSED bkg_stride, + void *buf, void H5_ATTR_UNUSED *bkg, + hid_t H5_ATTR_UNUSED dset_xfer_plist) +{ + float tmp_val; + double tmp_val2; + + switch (cdata->command) { + case H5T_CONV_INIT: + if (!H5Tequal(src_id, H5T_NATIVE_FLOAT) || !H5Tequal(dst_id, H5T_NATIVE_DOUBLE)) + return FAIL; + break; + case H5T_CONV_CONV: + if (nelmts != 1) + return FAIL; + + memcpy(&tmp_val, buf, sizeof(float)); + tmp_val2 = (double)tmp_val; + memcpy(buf, &tmp_val2, sizeof(double)); + + break; + case H5T_CONV_FREE: + break; + default: + return FAIL; + } + + return SUCCEED; +} + +/*------------------------------------------------------------------------- + * Function: test_compound_member_convert_id_leak_func2 + * + * Purpose: Datatype conversion function for the + * test_compound_member_convert_id_leak test that just + * returns the double value 0.1. + * + * Return: Success: 0 + * Failure: number of errors + * + *------------------------------------------------------------------------- + */ +static herr_t +test_compound_member_convert_id_leak_func2(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts, + size_t H5_ATTR_UNUSED buf_stride, size_t H5_ATTR_UNUSED bkg_stride, + void *buf, void H5_ATTR_UNUSED *bkg, + hid_t H5_ATTR_UNUSED dset_xfer_plist) +{ + double tmp_val = 0.1; + + switch (cdata->command) { + case H5T_CONV_INIT: + if (!H5Tequal(src_id, H5T_NATIVE_FLOAT) || !H5Tequal(dst_id, H5T_NATIVE_DOUBLE)) + return FAIL; + break; + case H5T_CONV_CONV: + if (nelmts != 1) + return FAIL; + + memcpy(buf, &tmp_val, sizeof(double)); + + break; + case H5T_CONV_FREE: + break; + default: + return FAIL; + } + + return SUCCEED; +} + +/*------------------------------------------------------------------------- + * Function: test_compound_member_convert_id_leak + * + * Purpose: Tests for an issue where IDs that are registered for + * compound datatype members during datatype conversion were + * leaked when the library's conversion path table is modified + * and the compound conversion path recalculates its cached + * data. + * + * Return: Success: 0 + * Failure: number of errors + * + *------------------------------------------------------------------------- + */ +static int +test_compound_member_convert_id_leak(void) +{ + int64_t num_dtype_ids = 0; + float val1; + double val2; + double bkg; + hid_t tid1 = H5I_INVALID_HID; + hid_t tid2 = H5I_INVALID_HID; + + TESTING("compound conversion member ID leak"); + + if ((tid1 = H5Tcreate(H5T_COMPOUND, sizeof(float))) < 0) + TEST_ERROR; + if ((tid2 = H5Tcreate(H5T_COMPOUND, sizeof(double))) < 0) + TEST_ERROR; + + if (H5Tinsert(tid1, "mem", 0, H5T_NATIVE_FLOAT) < 0) + TEST_ERROR; + if (H5Tinsert(tid2, "mem", 0, H5T_NATIVE_DOUBLE) < 0) + TEST_ERROR; + + /* Store the current number of datatype IDs registered */ + if ((num_dtype_ids = H5I_nmembers(H5I_DATATYPE)) < 0) + TEST_ERROR; + + /* Convert a value from float to double */ + val1 = 3.0f; + val2 = 0.0; + memcpy(&val2, &val1, sizeof(float)); + if (H5Tconvert(tid1, tid2, 1, &val2, &bkg, H5P_DEFAULT) < 0) + TEST_ERROR; + + /* Make sure the number of datatype IDs registered didn't change */ + if (num_dtype_ids != H5I_nmembers(H5I_DATATYPE)) + TEST_ERROR; + + /* Register a custom conversion function from float to double + * and convert the value again + */ + if (H5Tregister(H5T_PERS_HARD, "myflttodbl", H5T_NATIVE_FLOAT, H5T_NATIVE_DOUBLE, + test_compound_member_convert_id_leak_func1) < 0) + TEST_ERROR; + + val1 = 3.0f; + val2 = 0.0; + memcpy(&val2, &val1, sizeof(float)); + if (H5Tconvert(tid1, tid2, 1, &val2, &bkg, H5P_DEFAULT) < 0) + TEST_ERROR; + + /* Since an application conversion function was used, two IDs should + * have been registered, one for the source type and one for the + * destination type + */ + num_dtype_ids += 2; + + /* Make sure the number of datatype IDs registered is correct */ + if (num_dtype_ids != H5I_nmembers(H5I_DATATYPE)) + TEST_ERROR; + + if (H5Tunregister(H5T_PERS_HARD, "myflttodbl", H5T_NATIVE_FLOAT, H5T_NATIVE_DOUBLE, + test_compound_member_convert_id_leak_func1) < 0) + TEST_ERROR; + + /* Register a different custom conversion function from float to double + * and convert the value again + */ + if (H5Tregister(H5T_PERS_HARD, "myflttodbl", H5T_NATIVE_FLOAT, H5T_NATIVE_DOUBLE, + test_compound_member_convert_id_leak_func2) < 0) + TEST_ERROR; + + val1 = 3.0f; + val2 = 0.0; + memcpy(&val2, &val1, sizeof(float)); + if (H5Tconvert(tid1, tid2, 1, &val2, &bkg, H5P_DEFAULT) < 0) + TEST_ERROR; + + /* Make sure the number of datatype IDs registered didn't change */ + if (num_dtype_ids != H5I_nmembers(H5I_DATATYPE)) + TEST_ERROR; + + if (H5Tunregister(H5T_PERS_HARD, "myflttodbl", H5T_NATIVE_FLOAT, H5T_NATIVE_DOUBLE, + test_compound_member_convert_id_leak_func2) < 0) + TEST_ERROR; + + if (H5Tclose(tid1) < 0) + TEST_ERROR; + if (H5Tclose(tid2) < 0) + TEST_ERROR; + + PASSED(); + + return 0; + +error: + H5E_BEGIN_TRY + { + H5Tunregister(H5T_PERS_HARD, "myflttodbl", H5T_NATIVE_FLOAT, H5T_NATIVE_DOUBLE, + test_compound_member_convert_id_leak_func1); + H5Tunregister(H5T_PERS_HARD, "myflttodbl", H5T_NATIVE_FLOAT, H5T_NATIVE_DOUBLE, + test_compound_member_convert_id_leak_func2); + H5Tclose(tid1); + H5Tclose(tid2); + } + H5E_END_TRY; + + return 1; +} /* end test_compound_member_convert_id_leak() */ + /*------------------------------------------------------------------------- * Function: test_query * @@ -10198,6 +10406,7 @@ main(void) nerrors += test_compound_17(); nerrors += test_compound_18(); nerrors += test_user_compound_conversion(); + nerrors += test_compound_member_convert_id_leak(); nerrors += test_conv_enum_1(); nerrors += test_conv_enum_2(); nerrors += test_conv_bitfield(); diff --git a/testpar/t_vfd.c b/testpar/t_vfd.c index 9c78efbf8a0..3b924784ee3 100644 --- a/testpar/t_vfd.c +++ b/testpar/t_vfd.c @@ -4675,7 +4675,7 @@ test_selection_io_read_verify(hid_t dxpl, int mpi_rank, hsize_t start[], hsize_t /* Issue read call */ if (H5FDread_selection(lf, type, dxpl, count, mem_spaces, file_spaces, offsets, element_sizes, - (void **)rbufs) < 0) + (void **)rbufs) < 0) goto error; /* Verify result */
FilterSetFilter Params
BLOSCUD=32001,0,0
BLOSC2UD=32026,0,0
BSHUFUD=32004,0,0
BZIP2UD=307,0,1,9
JPEGUD=32019,0,4,q,c,r,t