Addresses issue: Update HDF5 format compatibility #951#1931
Addresses issue: Update HDF5 format compatibility #951#1931WardF merged 11 commits intoUnidata:masterfrom brtnfld:951
Conversation
… than HDF5 1.8, which may require to have a superblock greater than v2. Ref: Update HDF5 format compatibility #951
than HDF5 1.8. This will allow for HDF5 features (VDS, SWMR, new references, etc...) which may require to have a superblock greater than v2. See for discussion Ref: Update HDF5 format compatibility #951
|
I'm not sure how to regenerate the test's *.nc reference files, I've not found a script that generated them and the ncdump reference files. |
|
@brtnfld, why is there a need to regenerate the *.nc reference files? If they contain a format requirement, then (hypothetically) the related test would fail with some HDF5 library versions, i.e. library version compatibility would be lost. |
|
P.S. Thanks for correcting my wishful thinking mistake with H5_VERSION_LT, which does not exist. |
|
It looks like ncdump dumps the superblock for some of the tests. Since we bumped the superblock to min v2, it fails when it compares it to the reference dump. I think there might be an issue with 1.10.0 and 1.10.1 since they will default back to v0. So we would need two different reference files? I'm not all that familiar with the intricacies of the testing framework. |
|
Yes, I too am not familiar. If there really are some superblock tests or whole-file tests in the netcdf test framework, then double reference files may be necessary. A possible alternate strategy would be to simply emit "Expected Fail" when the particular unit tests fail, and HDF5 library 1.10.0 or 1.10.1 is detected. |
|
Something is not right. The HDF5 version number is embedded in _NCProperties for all netcdf-4 formats, and the test suite must have a way of handling this. So varying superblock number should be handled in the same way as varying HDF5 version number. So there should already be an existing solution, and varying superblock should just be fitted into that solution, if you see what I mean. |
|
The tests are filtering out that data: I think I can modify this to use the HDf5 version number to sed the correct Superblock version. |
|
I think you are on the right track. Here is a simple thing that does not add more library version number checks, just in case you did not already try this. Old/new: Both original and new versions presume that the reference files are always superblock version 0. This too can be changed if desired. |
|
The point of the filtering is to convert the info to some consistent value. |
|
As far as I know, there are not changes that look for a specific superblock number, |
|
@DennisHeimbigner, agreed, this filtering is mainly to force consistent values. Now that I understand a little more, I agree, leave those two ref_tst.cdl's alone. However, an advantage of my constrained suggestion |
|
That is good if I can ignore the value of the superblock version. I was not planning on adding any tests where the superblock version is verified, but I like the idea of checking for >=3. |
…) since API function was introduced in 1.8.0 (and some tests used H5Pset_libver_bounds without checking HAVE_H5PSET_LIBVER_BOUNDS.
Had not considered that; It is a good idea. |
|
Reviewing this and other PR's now in preparation for the 4.8.0 release. Clearly, things have stacked up as we prepped the zarr-compatible release. Thanks all! |
|
Merging in to |
|
@Dave-Allured No problem. It will be part of the 4.8.0 release. The 'wellspring' branch contains changes that can be merged back into These release-specific files are another thing I'd like to sort out (or at least review to make sure our process is as sorted as it can currently be). Specifically, we include automake/autoconf-generated files. In the absence of these files, users would need to have a subset of the gnu build tools installed on their system. The downside is we are including generated files in revision control, which is not a great practice. But I digress, you asked about the inclusion of this patch in 4.8.0, and yes, barring any surprises during testing, 4.8.0 will include this patch. The PR will be marked as merged when #1961 is merged. |
|
If it is not too much trouble, would you please add two more auto-checks? Testing with HDF5 1.10.1 is needed to properly challenge these HDF5 format compatibility updates. I do not think that any other combinations such as nc3 or dap_on are needed for this purpose. netCDF Tests / nc-autotools (1.10.1, nc4, dap_off) It is possible that HDF5 1.10.1 will cause some unrelated failures which should then be ignored. |
|
@Dave-Allured I've added the 1.10.1 entry to the test matrix, thanks! |
Antonio Valentino (1):
Fix HDF5_ZLIB check
Bart Oldeman (1):
Add HAVE_MPI_INFO_F2C to cmake config.h input file
Brian McKenna (1):
parse projection functions
Dan Ibanez (3):
Ensure MPI header found without wrapper
more missing includes for MPI without wrapper
HAVE_MPI_INFO_F2C was missing from CMake config.h
Dave Allured (1):
Update RELEASE_NOTES.md
Dave-Allured (1):
Fix time zone parser bug, github #1417
Dennis Heimbigner (134):
Fix reclamation of the ->format_XXX_info fields
force github checks restart
Fix missing forward declarations
Update RELEASE_NOTES.md
Use proper CURLOPT values for VERIFYHOST and VERIFYPEER
Support no-op dispatch functions
Update release notes
ckp
updae
updae
updae
Allow redefinition of variable filters
uintptr for VS
Fix ncgen handling of big data sections
make ncdumpchunks conditional
handle missing H5Dread_chunks
ocdebug
restore
Expanded RELEASE_NOTES description
Fix undefined references when using Visual Studio
Make plugin noop1 be distcleaned
Condition XGetOpt on MSC_VER not WIN32
Fix some protocol differences between netcdf-c and the Hyrax server.
Fix windows \r problem
Add more dap4 tests for CMake
Make CMake tests work for dap4
Fix some memleaks in libdap4
Allow use of type keywords as identifier in formats that do not support that type.
Fix nccopy chunking to use default chunking
Update release notes
This PR adds EXPERIMENTAL support for accessing data in the
Fix LGTM detected errors
Fix LGTM errors
Fix LGTM errors and S3 mis-configuration
Semi-disable S3 tests.
turn on some tests
Fixed documentation
externl'ize
missinginclude
Fix nczarr-experimental to better support CMake and find AWS libraries
Conditional malloc.h on Windows
Move closer to getting S3 support work with CMake under Visual
Update parser/lexer build process for ncgen3
Malformed CMake
CMake fixes
Fix items in netcdf_meta.h
Define isnan and isinf for OSX
Disable all USE_PARALLEL code in libnczarr
cleanup some LOOK code
The big change for this commit is complete the
Fix nccopy -c dim/x to actually use the dim/x value.
Fix URL encoding in DAP2 url processing
Fix error where not converting fill data
force check retry
Fix issue 1839 -- missing symbols under OSX
Use the built-in HDF5 byte-range reader, if available.
Mostly revert the filter code to reduce its complexity of use.
Slight mod to the incompatibilities section
Revise filters.md to clarify
Fix missing casts of var->filters
Cleanup byterange test URLS
Prepare for the path management code
Improve the building of NCZARR S3 support in CMake and Autoconf
Update Release Notes
Support aligned access for selected Arm processors.
Revise the arm test per Unidata/netcdf-c#1854 (comment)
Suppress notused warnings
Yet another fix for DAP2 double URL encoding.
Add encode= tests
Remove trailing comma from _NCProperties attribute value.
Provide a Number of fixes/improvements to NCZarr
Update RELEASENOTES
Force re-check
Fix a number of CMake problems
missing ifdef
Create c-cpp.yml
actions1
remove bm_chunks3
remove nczarr_test/bm*
revert
Remove some file references in nczarr_test/Makefile.am
remove actions file
remove actions file
Enforce that !ENABLE_BYTERANGE => !ENABLE_HDF5_ROS3
Fix merge error from PR https://github.com/Unidata/netcdf-c/pull/1892/files
Fix minor Makefile.am warning
manual workflow
update workflows
rename
automake-dmh.yml
ignore.yml
manual.yml
ignore
update file permission
opendap2.oceanbrowser.net is temporarily unavailable
remove worflows and fix ifdef
unblock .dmh
unblock dmh appveyor
Make use of clock_gettime be conditional.
Additional Fixes to NCZarr
Update Release Notes
Remove some potentially harmful duplicate code
Fix some additional edges cases for mapping slices to chunks
retry2
debug
update workflows
update-workflows-again
rebuild
Add tests for filter order on read and write cases
Fix CMake bug
undebug workflow
Enable selected DAP tests previously disabled.
More NCZarr optimizations
remove lgtm alert
Make fillmismatch the default for DAP2 and DAP4
fix tst_fillmismatch.sh
fix test cases
Improve operation of the DAP4 code and fix bugs
turn off actions on push
Forgot baselinehyrax in the dist
Enable nczarr testing in github actions.
disable run_chunkcases
Add zip file support
appveyor fix
More fixes to the nccopy filter x chunking algorithm
Unify definition of NC_DISPATCH_VERSION
Fix duplicate BOOL definitions
Update Release Notes
FIx install of netcdf_dispatch.h
Update RELEASE_NOTES
Update RELEASE_NOTES
Fix memory leak in nccopy.c
Codify cross-platform file paths
Update RELEASE_NOTES
Douglas Dirks (1):
Ensure that the nav-tree extends to the full height of the content area. The footer must be enclosed in a div element with the id="nav-path" for this to work.
Edward Hartnett (97):
now testing that nc_inq_var_deflate() works for all formats and returns 0 deflate and deflate_level
updated release notes
dealing with nc_inq_var_szip(), testing, and release notes
documentation improvements
documentation improvements
documentation improvements
now testing nc_inq_var_deflate/nc_inq_var_szip after enddef too
cleanup
checking nc_inq_var_chunking() with classic formats
more testing after enddef
whitespace cleanup of test
added demonstration of nc_def_var_deflate() issue
adding internal function, plus some documentation
now properly setting HDF5 file cache for files created/opened sequentially on parallel IO builds
updated RELEASE_NOTES
whitespace cleanup
updated RELEASE_NOTES
fixed LDFLAFS in plugins Makefile.am, also fixed warning in tst_h_vars.c
changed to only MOSTLY dead
changed back to totally dead
readded NOTNC3 varm functions to dispatch
fixed the setting of AM_LDFLAGS
added tst_gfs_data1
starting to modify test
starting to modify test
starting to develop test
more test development
more test development
further test development
further test development
more test development
further test development
more test development
more test development
more test development
now reopening file and checking dim and var metadata
now checking pfull data
now checking more data
now checking more data
now checking more data
fixed warnings in tst_create_files.c
fixed warnings in bm_file.c
further benchmark development, moved to benchmark dir
better handling for multiple data vars
further test development
more benchmark development for tst_gfs_data_1.c
fixed Makefile to refrain from building nc_perf/tst_gfs_data_1 for non-parallel builds
move data decomposition calculations to decomp_4D() function
further development
now create metadata in a function with many parameters
added attributes
added attributes
more benchmark development
starting to add decomp for 36 tasks
starting to add test for unlimited dim
fixed problem setting szip on var with unlimited dim and added test
updated RELEASE_NOTES
added some ncdump tests for szip when it is present
added test cdl files to cleanfiles
cleanup of 2d decomposition
working on 2D decomposition code
code cleanup
cleaned up lat/lon code
cleaned up grid code
dealing with coord var cleanup
added new metadata writing function
starting to check metadata
more checking metadata
now checking some coord vars
more checking of metadata and coord vars
starting to use get_vara functions to check metadata
further checking of metadata
further checking of metadata
now checking lat/lon coord values
changed output to be more readable
updated RELEASE_NOTES
updated RELEASE_NOTES
starting to test repeated redefs
now dont return error on second redef call for netcdf/HDF5 files
updated release notes
fixed warning in hdf5filter.c
added new test tst_h_par_compress.c
fixed warning in tst_parallel5.c
changed tst_h_par_compress to use H5Dcreate2() just like code in nc4hdf5.c does
adding property list for dataset creation to tst_h_par_compress.c
adding other settings of dataset property list to match what is in nc4hdf5.c
turned off szip testing while HDF5 issue is resolved
took out timing code
added tst_h_par_compress to CMake build
updated RELEASE_NOTES
getting tst_gfs_data_1 ready to merge
fixed dispatch version number in CMakeLists.txt
fixed tst_h_par_compress.c
adding test for attributes
fixed up test
fixed comment
fixed comment
Greg Sjaardema (14):
Proof-of-Concept: Avoid N^2 behavior in NC4_inq_dim
Remove line that was missed in original patch
Different method of setting Parallel Filters variables
Remove duplicate references to error4.c
Fix CMake generation of netcdf_meta.h
Avoid potential integer overrun
Remove test since file was moved to nc_perf
Protect use of `H5Dread_chunk` function
Fix setting of use_szlib
Fix undefined struct member access
Fix CMake build so netcdf_meta.h has correct form
Fix detection and use of SZIP library
Fix so setting of NC_FORMATX_NC3 in parallel is kept
Fix if statement to apply to fflush
John Correira (1):
Fix typo postinstall.
Jorge López Fueyo (1):
Fix build on Windows with clang-cl
LProx2020 (6):
Update FAQ.md
Updated README.md Links
Copyediting Updates #1
Copyediting Updates #2
Update software.html
Email Removal
Magnus Ulimoen (4):
Generate m4 files out of tree
Configure netcdf_meta.h directly to BINARY_DIR
Move generated file to BINARY_DIR
H5Znoop1.c copied to BINARY_DIR instead of SOURCE_DIR
Mark Hansen (1):
Correcting dead link to installation
Orion Poplawski (1):
Fix wrong header include in testing HDF5 for zlib
Peter Hill (1):
Fix wrong header include in testing HDF5 for zlib
Rostislav Kouznetsov (1):
Fix for :60 seconds in ncdump
Ryan May (2):
Fix for cURL >7.69
Add fix to release notes.
Scot Breitenfeld (14):
Updated to use H5O_info2_t for HDF5 1.12 and the use of H5Oget_info3 instead of H5Gget_objinfo
fixed missing declaration
Replaced deprecated (in 1.8.0) H5Aopen_name with H5Aopen_by_name
fixed H5O_info_t incompatiblity with H5Oget_info_by_idx3
Allow for the HDF5 file format to be compatible with features greater than HDF5 1.8, which
reverted past fix
Allow for the HDF5 file format to be compatible with features greater
fixed #def
fixed syntax
removed the use of H5_VERSION_LT
Updated the superblock value for reference ncdumps
reverted changes superblock values
updated ncdump scripts to handle different versions of superblock values
removed the check for H5Pset_libver_bounds (HAVE_H5PSET_LIBVER_BOUNDS) since API
Sean Arms (6):
Test ncdump time unit name case-insensitivity
Treat time units as case-insensitive in ncdump
Define strncasecmp as _strnicmp on Windows
Update links to netCDF-java documentation.
Update links
Update d4ts.war and dts.war build instructions
Shreyas Ananthan (1):
Fix parallel NetCDF checks in configure.ac for spectrum MPI
Tim Gates (1):
docs: fix simple typo, maximim -> maximum
Ward Fisher (65):
Tweaked docs to fix dead references introduced as part of separating out NUG from netCDF-C.
Added hard failure to script, modified cmake default.
Corrected an issue with parallel filter test logic in cmake-based builds.
Corrected parallel (mpi) testing on cmake builds.
Correcting a formatting error for scalars when dumping with ncdump -f
Updated release notes.
Added a stand-alone user level doxygen configuration file. It must be used from the top-level netcdf-c directory, e.g. doxygen docs/Doxyfile.user.
Added a check for m4 and throw an error if m4 isn't on the path and the generated file isn't present (as it would be in a point release). In support of Unidata/netcdf-c#1739
More m4 fenceposting.
Revert "Fix nczarr-experimental: improve build support, disengage hdf5 vs netcdf4 flags, and find AWS libraries"
Revert "Revert "Fix nczarr-experimental: improve build support, disengage hdf5 vs netcdf4 flags, and find AWS libraries""
Removed unneeded code on OSX.
Modify isnan() operation
Added nc4print utility to cmake build infrastructure.
Ensured dependencies are linked against properly.
Working on autoconf-based build on OSX
Fixe szlib write status message for cmake-based builds.
Fix logic for determining if filter tests should be run when shared builds are turned off via autotools. See Unidata/netcdf-c#1829 for more information.
Corrected an accidental change.
Removed NUG files, added a README.md file directing people to the correct location.
Updated RELEASE_NOTES.md
Updated release notes to refer to Unidata/netcdf-c#1866
Updated release notes with reference to Unidata/netcdf-c#1871
Removed duplicated release note in support of Unidata/netcdf-c#1870
Remove --no-undefined which is causing problems when compiling with -fsanitize=address -fno-omit-frame-pointer in support of Unidata/netcdf-c#1878
Modified plugins/Makefile.am to add -no-undefined as required on cygwin.
Removed travis file in preparation for migration away from travis-ci and towards GitHub Actions.
Restoring .travis.yml file for convienence until Github Actions are integrated, but not restoring the requirement that they pass (due to throttled Travis runs) for PR's to be merged.
Adding github actions to netcdf-c for CI purposes.
Address link issue on github actions platform.
Correct previous 'fix' that wasn't.
Explicitly link rt library for github actions.
Github Action debugging.
Temporarily reducing test matrix.
Clean up, bring over a new action script. This one uses apt and cached builds instead of conda.
Temporarily disabled encoding test under cmake
Cleaned up orphaned github action files, modified GA to run on PR instead of push.
Removed dangling conflict info.
tweak m4 detection.
Fix logic error.
More tweaking.
Added an apt update stanza to the github action script.
Added more updates
Update number of threads used in doxygen developer config file.
Correct bash test failure on Windows in MSYS2 bash shell with Visual Studio-based build, in support of Unidata/netcdf-c#1940
More modification in support of #1940
Fix tst_filter.sh such that it returns an error immediately on failure.
Restored cleanup stanza in tst_filter.sh
Address a C99 forward-declaration issue.
Updated SO version in preparation for public release.
Updated SO version in cmakelists.txt in preparation for the 4.8.0 release.
Bumped version numbers to next development version.
Updated release version string.
Preparing to bundle in portable autoconf-generated files.
Adding in portable autconf-generated files.
Added additional generated files for deployment.
Added check for H5Literate in support of Unidata/netcdf-c#1965
Amend check for H5Literate to work with 1.10.x
Added check for H5Literate symbol (hdf5 1.8.x, 1.10.x) or macro (1.12.x)) in support of Unidata/netcdf-c#1965
Updated expected release date.
Added 1.0.1 to test matrix in support of Unidata/netcdf-c#1931 (comment)
Corrected release date in preparation for today's release.
Updated doxyfile to include libnczarr/zarr.c, also removed references to files that have been removed.
Corrected typo preventing success when running make dist or make distcheck
Update refactored and regenerated files.
Wojciech Śmigaj (1):
Fix name of the HDF5_C_LIBRARY_hdf5 CMake variable
bombipappoo (4):
Fix incorrect keywords.
Correct destination buffer size to strlcat
Convert filename from ANSI to UTF-8 before calling HDF5.
Fix format buffer size
neok-m4700 (1):
Fix build bug in debug mode
This PR selects the best HDF5 format compatibility options when re-opening an existing netCDF-4 file for writing, such as appending, or adding new groups or variables. This change selects the optimal HDF5 v1.8 compatibility when possible, and otherwise falls back to the adequate v1.6 compatibility. Format compatibility is a transient property of the HDF5 library, rather than baked in at file creation time. Therefore, format compatibility options must be re-selected every time a netCDF-4 file is re-opened for writing. This builds on the similar update for initial file creation, PR Unidata#1931, by @brtnfld, released in netcdf-c version 4.8.1. In particular, this PR moves the compatibility controls into a single central location, a new common function that is shared by both create and open functions. Fore more details, see issue Unidata#951, and documentation at the top of libhdf5/hdf5set_format_compatibility.c.
This commit selects the best HDF5 format compatibility options when re-opening an existing netCDF-4 file for writing, such as appending, or adding new groups or variables. The general objective is to make netCDF-4 files that can be read and written by all previous library versions. Optimal HDF5 v1.8 compatibility is selected whenever possible. Otherwise this falls back to the adequate v1.6 compatibility. Format compatibility is a transient property of the HDF5 library, rather than baked in at file creation time. Therefore, compatibility options must be re-selected every time a netCDF-4 file is re-opened for writing. This builds on the previous update for initial file creation, PR Unidata#1931, by @brtnfld, released in netcdf-c version 4.8.1. In particular, this commit moves compatibility controls into a single central location, a new common function that is shared by both create and open functions. For more details, see issue Unidata#951, also documentation at the top of libhdf5/hdf5set_format_compatibility.c. This commit also makes several corrections and cleanups to previous comments about the use of related property lists.
Allow for the HDF5 file format to be compatible with features greater than HDF5 1.8. This will allow for HDF5 features (VDS, SWMR, new references, etc...) which may require to have a superblock greater than v2.
See for discussion Ref: Update HDF5 format compatibility #951