Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Addresses issue: Update HDF5 format compatibility #951 #1931

Merged
merged 11 commits into from
Mar 30, 2021

Conversation

brtnfld
Copy link
Contributor

@brtnfld brtnfld commented Jan 11, 2021

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

… than HDF5 1.8, which

may require to have a superblock greater than v2.

Ref: Update HDF5 format compatibility Unidata#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 Unidata#951
@brtnfld brtnfld requested a review from WardF as a code owner January 11, 2021 16:00
@brtnfld
Copy link
Contributor Author

brtnfld commented Jan 11, 2021

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.

@Dave-Allured
Copy link
Contributor

@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.

@Dave-Allured
Copy link
Contributor

P.S. Thanks for correcting my wishful thinking mistake with H5_VERSION_LT, which does not exist.

@brtnfld
Copy link
Contributor Author

brtnfld commented Jan 11, 2021

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.

@Dave-Allured
Copy link
Contributor

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.

@Dave-Allured
Copy link
Contributor

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.

@brtnfld
Copy link
Contributor Author

brtnfld commented Jan 11, 2021

The tests are filtering out that data:

# Remove the version information from _NCProperties
cleanncprops() {
  src="$1"
  dst="$2"
  rm -f $dst
  | sed -e '/:_Endianness/d' \
  | sed -e 's/_SuperblockVersion = 1/_SuperblockVersion = 0/' \
  | sed -e 's/\(netcdflibversion\|netcdf\)=.*|/\1=NNNN|/' \
  | sed -e 's/\(hdf5libversion\|hdf5\)=.*"/\1=HHHH"/' \
  | grep -v '_NCProperties' \
  | cat >$dst
}

I think I can modify this to use the HDf5 version number to sed the correct Superblock version.

@Dave-Allured
Copy link
Contributor

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:

  | sed -e 's/_SuperblockVersion = 1/_SuperblockVersion = 0/' \
  | sed -e 's/_SuperblockVersion = [12]/_SuperblockVersion = 0/' \

Both original and new versions presume that the reference files are always superblock version 0. This too can be changed if desired.

@DennisHeimbigner
Copy link
Collaborator

The point of the filtering is to convert the info to some consistent value.
So, the PR is incorrect wrt to the changes to ncdump/ref_tst_ncf213.cdl
and ncdump/ref_tst_special_atts.cdl and these should be left unchanged.
The correct solution is the change above #1931 (comment)
although I think the more general change is to use this:
| sed -e 's/_SuperblockVersion = [0-9]/_SuperblockVersion = 0/' \

@DennisHeimbigner
Copy link
Collaborator

As far as I know, there are not changes that look for a specific superblock number,
so the filtering above is just to force the expected output to be consistent
independent of the superblock number.
Do you plan to add tests that actually look-at/check the superblock number?

@Dave-Allured
Copy link
Contributor

@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 sed -e 's/_SuperblockVersion = [12]/ is that you get a free test for unwanted superblock numbers >= 3, which are not universally readable. 'Tis a cheap trick, but would be valuable for unexpected circumstances.

@brtnfld
Copy link
Contributor Author

brtnfld commented Jan 11, 2021

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.
@DennisHeimbigner
Copy link
Collaborator

you get a free test for unwanted superblock numbers >= 3, which are not universally readable.

Had not considered that; It is a good idea.

@WardF WardF self-assigned this Jan 27, 2021
@WardF WardF added this to the 4.8.0 milestone Jan 27, 2021
@WardF
Copy link
Member

WardF commented Mar 22, 2021

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!

@WardF
Copy link
Member

WardF commented Mar 22, 2021

Merging in to 4.8.0-wellspring.wif which will percolate back into the main branch after v4.8.0 is released.

@Dave-Allured
Copy link
Contributor

@WardF, please clarify. Does this mean that this #951 HDF5 compatibility update will be postponed until after 4.8.0 release? I am not objecting, I just want to understand the timing.

@WardF
Copy link
Member

WardF commented Mar 22, 2021

@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 main and also into the v4.8.0-prep branch; it's essentially the 'staging grounds' branch. This way we are able to accommodate changes that aren't meant to go into a particular release, and also makes it easier to avoid polluting the main branch with release-specific files.

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.

@Dave-Allured
Copy link
Contributor

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)
netCDF Tests / nc-cmake (1.10.1, nc4, dap_off)

It is possible that HDF5 1.10.1 will cause some unrelated failures which should then be ignored.

@WardF
Copy link
Member

WardF commented Mar 26, 2021

@Dave-Allured I've added the 1.10.1 entry to the test matrix, thanks!

@WardF WardF merged commit ffa8a70 into Unidata:master Mar 30, 2021
clrpackages pushed a commit to clearlinux-pkgs/netcdf that referenced this pull request Jun 24, 2021
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
Dave-Allured added a commit to Dave-Allured/netcdf-c that referenced this pull request Jan 8, 2022
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.
Dave-Allured added a commit to Dave-Allured/netcdf-c that referenced this pull request Jan 8, 2022
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants