The version number in the Autotools is scraped from README.md in configure.ac, which makes README.md count as 'code', which is a problem since changes to markdown files are ignored in CI.
This change scrapes the version number from H5public.h instead
of README.md.
* Split CMake HDFCompileFlags into specific compiler files
* Separate out CXX Flags
* Add Fortran compiler specific files
* Merge in #4816 changes and close#4816
* fix hanging endif
---------
Co-authored-by: Larry Knox <lrknox@hdfgroup.org>
Since each API context is local to a thread, use the stack to
store the context instead of allocating & releasing it each time.
This improves performance (slightly), reduces alloc/free calls,
and eliminates the H5FL package from the push & pop operations,
which helps simplify threadsafe operation.
One effect of this change is that the H5VLstart_lib_state /
H5VLfinish_lib_state API routines for pass through connector
authors now require a parameter that can be used to store
the library's context. It was probably a mistake to assume
that these two routines would not do this previously, so this
is essentially a bug fix for them.
Some other minor things:
* Added API context push+pop operations to cache tests
(I'm not actually certain why this was working before) and
a few other places
* Cleaned up a bunch of warnings in test code (calloc args, mainly)
* Made header file inclusions more standard in some source files
- Reverts PR#1024, which (unnecessarily) switched from deferred
package initialization to centralized initialization of all packages
and introduced H5FDperform_init() to wrap an internal routine
to initialize VFD plugins.
- Went back to deferred package initialization (primarily), to
eliminate unnecessary resource use. (Performance has been
verified to be the same either way)
- Switched VFD plugins to use “#define (H5OPEN, )” pattern,
with registration of internal VFD plugins at library initialization
time. Eliminates calling API routine (H5FDperform_init) from
within the library, which was deadlocking threadsafe concurrency.
And also eliminates exposing internal library routines in a public
header file.
- Removed copy-and-paste replicas of the H5OPEN macro and put
a (better) single definition in H5public.h
- Separated API and internal routine calls in stdio and multi VFD
plugins into separate source files, so that the library doesn’t
invoke API routines internally (also a deadlock problem for
threadsafe concurrency). Also needed a “private” header for these
plugins.
- Separated registering/unregistering a VFD plugin from initializing
/finalizing the plugin, instead of blurring those ideas together.
Defers the VFD plugin init to when it’s actually used, which reduces
resource usage, especially for the MPI-based plugins like the subfiling,
etc.
- Refactored the copy-and-pasted check for locking into a central
location in the H5FD.c code.
- Fixed a bunch of compiler warnings, especially ones that trigger CI
failures with -Werror
A recent bugfix to the library changed the return value of an API call
and a Julia CI action expects the incorrect result. This patch
papers over this until the upstream Julia wrapper CI can be fixed.
Also cleans up the links test, which had a ton of copy-and-pasted incorrect negative error checks (Calling TEST_ERROR within H5E_BEGIN_TRY / H5E_END_TRY pairs will goto out of the pair, leaving errors suppressed).
PR #4968 fixes a bug that causes the Julia CI to fail due to buggy
HDF5 behavior. The Julia CI will need to be updated to properly test
the fixed feature.
This was an unsupported build script to make building the library
with CMake look like building it with the Autotools. It hasn't been
maintained in a long time and we've had it marked as deprecated for
years.
These files are infrequently updated and generating them adds an
annoying dependency on Perl. We're checking them in and will
probably add a GitHub action to check if anything is stale
when creating a PR.
Adds:
* H5Edefin.h
* H5Einit.h
* H5Emajdef.h
* H5Emindef.h
* H5Epubgen.h
* H5Eterm.h
* H5overflow.h
* H5version.h
Solaris Studio hasn't been updated in almost a decade and the last
version (12.4, circa 2015) doesn't seem to fully support C11.
This PR removes some work-arounds for things like __attribute__()
support.
The CMake compiler checks skip checking for things like __attribute__()
on Windows. Now that Visual Studio can use clang, we should be checking
for this, even on non-MinGW Windows.
This is where most people will expect to find license information. The
COPYING_LBNL_HDF5 file has also been renamed to LICENSE_LBNL_HDF5.
The licenses are unchanged.
The high-level GIF tools, h52gif and gif2h5, have unfixed CVE issues
(with no proof-of-concept files). They are not critical tools, are not
well maintained, and are an odd fit for building with the library.
Because of this, they have been removed. We may move them to a separate
repository in the future.
Ignores some of the older Autotools platform files, since the Autotools
will be dropped in the next major release (and we don't have
compilers on which to test, anyway).
Also drops support for the old, non-compliant MSVC
preprocessor.
Previously was hardcoding `-lzlib-static` which will result in the wrong
linker flags when built with system zlib. It looks like there was logic
to figure out the library name but the resulting `libname` was never used.
When we initialize the floating-point types at library startup, it's
possible to raise floating-point exceptions when we check which things
are supported. Normally, we clear these floating-point exceptions via
feclearexcept(FE_INVALID), but FE_INVALID may not be present on all
systems. Specifically, this was reported as being a problem when using
Emscripten 3.1.68 to compile HDF5 1.14.5 to WebAssembly.
We've added an #ifdef FE_INVALID block around the exception clearing
code to correct this.
Fixes#4952
* Fix for issue #4849 that settings in fapl libver bounds causes unexpected H5Fopen failures.
File with non-SWMR-write access can now be opened without regard for superblock version.
Due to the fix, H5Fstart_swmr_write() also needs to be modified as well as the tests for libver bounds.
The "RFC: Setting Bounds for Object Creation in HDF5 1.10.0" is also updated to reflect the changes.
* Fix c++ libver bound test failure.
Added setup and cleanup callback parameters to TestInit() to perform
setup and cleanup tasks once for whole test program
Removed TestCleanup() function since its functionality is covered by
PerformTests()
Added check of the HDF5_NOCLEANUP environment variable in
GetTestCleanup()