File hdf5-1.10.8-pr1494-fix-release-check-version.patch of Package hdf5.28370
From 5595f1be4085006f62ebc603bf3fa52020205e48 Mon Sep 17 00:00:00 2001
From: Allen Byrne <byrn@hdfgroup.org>
Date: Fri, 11 Mar 2022 14:11:31 -0600
Subject: [PATCH 1/2] Fix release check version logic #1438
---
config/cmake/scripts/HDF5config.cmake | 2 +-
release_docs/RELEASE.txt | 17 +++++++++++++++++
src/H5.c | 14 ++++++--------
test/CMakeTests.cmake | 2 +-
4 files changed, 25 insertions(+), 10 deletions(-)
Index: hdf5-1.10.8/release_docs/RELEASE.txt
===================================================================
--- hdf5-1.10.8.orig/release_docs/RELEASE.txt
+++ hdf5-1.10.8/release_docs/RELEASE.txt
@@ -274,7 +274,23 @@ New Features
(ADB - 2020/09/24)
Library:
- --------
+ - Issue #1436 identified a problem with the H5_VERS_RELEASE check in the
+ H5check_version function.
+
+ Investigating the original fix, #812, we discovered some inconsistencies
+ with a new block added to check H5_VERS_RELEASE for incompatibilities.
+ This new block was not using the new warning text dealing with the
+ H5_VERS_RELEASE check and would cause the warning to be duplicated.
+
+ By removing the H5_VERS_RELEASE argument in the first check for
+ H5_VERS_MAJOR and H5_VERS_MINOR, the second check would only check
+ the H5_VERS_RELEASE for incompatible release versions. This adheres
+ to the statement that except for the develop branch, all release versions
+ in a major.minor maintenance branch should be compatible. The prerequisite
+ is that an application will not use any APIs not present in all release versions.
+
+ (ADB - 2022/03/11, #1438)
+
- Change how the release part of version, in major.minor.release is checked
for compatibility
Index: hdf5-1.10.8/src/H5.c
===================================================================
--- hdf5-1.10.8.orig/src/H5.c
+++ hdf5-1.10.8/src/H5.c
@@ -821,6 +821,7 @@ H5check_version(unsigned majnum, unsigne
static int checked = 0; /* If we've already checked the version info */
static unsigned int disable_version_check = 0; /* Set if the version check should be disabled */
static const char * version_mismatch_warning = VERSION_MISMATCH_WARNING;
+ static const char * release_mismatch_warning = RELEASE_MISMATCH_WARNING;
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_API_NOINIT_NOERR_NOFS
@@ -841,10 +842,7 @@ H5check_version(unsigned majnum, unsigne
}
/* H5_VERS_MAJOR and H5_VERS_MINOR must match */
- /* Cast relnum to int to avoid warning for unsigned < 0 comparison
- * in first release versions */
- if (H5_VERS_MAJOR != majnum || H5_VERS_MINOR != minnum || H5_VERS_RELEASE > (int)relnum) {
-
+ if (H5_VERS_MAJOR != majnum || H5_VERS_MINOR != minnum) {
switch (disable_version_check) {
case 0:
HDfprintf(stderr, "%s%s", version_mismatch_warning,
@@ -879,7 +877,7 @@ H5check_version(unsigned majnum, unsigne
break;
} /* end switch */
- } /* end if (H5_VERS_MAJOR != majnum || H5_VERS_MINOR != minnum || H5_VERS_RELEASE > relnum) */
+ } /* end if (H5_VERS_MAJOR != majnum || H5_VERS_MINOR != minnum) */
/* H5_VERS_RELEASE should be compatible, we will only add checks for exceptions */
if (H5_VERS_RELEASE != relnum) {
@@ -889,7 +887,7 @@ H5check_version(unsigned majnum, unsigne
switch (disable_version_check) {
case 0:
HDfprintf(
- stderr, "%s%s", version_mismatch_warning,
+ stderr, "%s%s", release_mismatch_warning,
"You can, at your own risk, disable this warning by setting the environment\n"
"variable 'HDF5_DISABLE_VERSION_CHECK' to a value of '1'.\n"
"Setting it to 2 or higher will suppress the warning messages totally.\n");
@@ -908,7 +906,7 @@ H5check_version(unsigned majnum, unsigne
"%s'HDF5_DISABLE_VERSION_CHECK' "
"environment variable is set to %d, application will\n"
"continue at your own risk.\n",
- version_mismatch_warning, disable_version_check);
+ release_mismatch_warning, disable_version_check);
/* Mention the versions we are referring to */
HDfprintf(stderr, "Headers are %u.%u.%u, library is %u.%u.%u\n", majnum, minnum,
relnum, (unsigned)H5_VERS_MAJOR, (unsigned)H5_VERS_MINOR,
@@ -986,7 +984,7 @@ done:
/*-------------------------------------------------------------------------
* Function: H5close
*
- * Purpose: Terminate the library and release all resources.
+ * Purpose: Terminate the library and release all resources.
*
* Return: Non-negative on success/Negative on failure
*
Index: hdf5-1.10.8/test/CMakeTests.cmake
===================================================================
--- hdf5-1.10.8.orig/test/CMakeTests.cmake
+++ hdf5-1.10.8/test/CMakeTests.cmake
@@ -704,7 +704,7 @@ set_tests_properties (H5TEST-tcheck_vers
WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST
WILL_FAIL "true"
)
-# release + 1 should pass
+# release + 1 should pass on non-develop branches
add_test (NAME H5TEST-tcheck_version-release COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:tcheck_version> "-tr")
set_tests_properties (H5TEST-tcheck_version-release PROPERTIES
WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST
Index: hdf5-1.10.8/config/cmake/scripts/HDF5config.cmake
===================================================================
--- hdf5-1.10.8.orig/config/cmake/scripts/HDF5config.cmake
+++ hdf5-1.10.8/config/cmake/scripts/HDF5config.cmake
@@ -163,7 +163,7 @@ if (NOT DEFINED HPC)
set (SITE_COMPILER_NAME "vs2012")
set (SITE_COMPILER_VERSION "11")
else ()
- message (FATAL_ERROR "Invalid BUILD_GENERATOR must be - Unix, VS2017, or VS201764, VS2015, VS201564, VS2013, VS201364")
+ message (FATAL_ERROR "Invalid BUILD_GENERATOR must be - Unix, VS2017, VS201764, VS2015, VS201564, VS2013, VS201364")
endif ()
## Set the following to unique id your computer ##
set (CTEST_SITE "WIN7${BUILD_GENERATOR}.XXXX")