Skip to content

Commit f8e1148

Browse files
committed
Test fixes for CMake HDF5 detection from upstream
1 parent 5aa83d2 commit f8e1148

File tree

2 files changed

+89
-42
lines changed

2 files changed

+89
-42
lines changed

recipe/meta.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ source:
2323
- patches/prevent_MS_runtime_libs_being_installed_again.patch # [win]
2424
- patches/strdup.patch
2525
- patches/do_not_use_16_processes_in_tests.patch # [ppc64le]
26-
# Revert upstream change in 4.8.1--maybe unnecessary in 4.8.2
27-
- patches/fix_cmake.patch # [win]
26+
# Upstream fixes for hdf5 in 4.8.2
27+
- patches/fix_cmake.patch
2828
# Fix renaming file with multiple builds--will be in 4.8.2
2929
- patches/fix-rename.patch
3030

recipe/patches/fix_cmake.patch

Lines changed: 87 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,99 @@
1-
commit 793ae8c2b4cc651d9c6670bb03ebb0740987f4f6
2-
Author: Ryan May <rmay@ucar.edu>
3-
Date: Wed Aug 25 16:29:45 2021 -0600
1+
commit ebbe3b438edd54b801b6465b8ab1b36b013ff96d
2+
Author: Ward Fisher <wfisher@ucar.edu>
3+
Date: Mon Aug 30 09:10:14 2021 -0600
44

5-
Revert "Simply version check logic"
6-
7-
This reverts commit e755a08f11dc7a3b31039a912334505bdd90ecd8.
5+
Revamping the HDF5_VERSION logic.
86

97
diff --git a/CMakeLists.txt b/CMakeLists.txt
10-
index e1b620fee..dc95eeae9 100644
8+
index 498cf8975..7ecd7f576 100644
119
--- a/CMakeLists.txt
1210
+++ b/CMakeLists.txt
13-
@@ -818,11 +818,19 @@ IF(USE_HDF5)
11+
@@ -670,12 +670,28 @@ IF(USE_HDF5)
12+
##
13+
SET(HDF5_VERSION_REQUIRED 1.8.10)
1414

15-
# Check to see if HDF5 library is 1.10.6 or greater.
16-
# Used to control path name conversion
15+
+ # Some versions of HDF5 set HDF5_VERSION_STRING instead of HDF5_VERSION
16+
IF(HDF5_VERSION_STRING AND NOT HDF5_VERSION)
17+
SET(HDF5_VERSION ${HDF5_VERSION_STRING})
18+
ENDIF()
19+
+
20+
+
21+
+ ###
22+
+ # If HDF5_VERSION is undefined, attempt to determine it programatically.
23+
+ ###
24+
IF("${HDF5_VERSION}" STREQUAL "")
25+
- MESSAGE(STATUS "Unable to determine hdf5 version. NetCDF requires at least version ${HDF5_VERSION_REQUIRED}")
26+
- ELSE()
27+
+ MESSAGE(STATUS "HDF5_VERSION not detected. Attempting to determine programatically.")
28+
+ IF (EXISTS "${HDF5_INCLUDE_DIR}/H5pubconf.h")
29+
+ file(READ "${HDF5_INCLUDE_DIR}/H5pubconf.h" _hdf5_version_lines
30+
+ REGEX "#define[ \t]+H5_VERSION")
31+
+ string(REGEX REPLACE ".*H5_VERSION .*\"\(.*\)\".*" "\\1" _hdf5_version "${_hdf5_version_lines}")
32+
+ set(HDF5_VERSION "${_hdf5_version}")
33+
+ unset(_hdf5_version)
34+
+ unset(_hdf5_version_lines)
35+
+ MESSAGE(STATUS "Found HDF5 libraries version ${HDF5_VERSION}")
36+
+ ENDIF()
37+
+
38+
+ ELSE() # Original HDF5_VERSION blank check.
39+
IF(${HDF5_VERSION} VERSION_LESS ${HDF5_VERSION_REQUIRED})
40+
MESSAGE(FATAL_ERROR
41+
"netCDF requires at least HDF5 ${HDF5_VERSION_REQUIRED}. Found ${HDF5_VERSION}.")
42+
@@ -684,6 +700,29 @@ IF(USE_HDF5)
43+
ENDIF()
44+
ENDIF()
45+
46+
+
47+
+
48+
+ ###
49+
+ # If HDF5_VERSION is still empty, we have a problem.
50+
+ # Error out.
51+
+ ###
52+
+ IF("${HDF5_VERSION}" STREQUAL "")
53+
+ MESSAGE(FATAL_ERR "Unable to determine HDF5 version. NetCDF requires at least version ${HDF5_VERSION_REQUIRED}. Please ensure that libhdf5 is installed and accessible.")
54+
+ ENDIF()
55+
+
56+
+ ####
57+
+ # Check to see if HDF5 library is 1.10.6 or greater.
58+
+ # Used to control path name conversion
59+
+ ####
60+
+ IF(${HDF5_VERSION} VERSION_GREATER "1.10.5")
61+
+ SET(HDF5_UTF8_PATHS ON)
62+
+ ELSE()
63+
+ SET(HDF5_UTF8_PATHS OFF)
64+
+ ENDIF()
65+
+
66+
+ MESSAGE("-- HDF5_UTF8_PATHS (HDF5 version 1.10.6+): ${HDF5_UTF8_PATHS}")
67+
+
68+
+
69+
##
70+
# Include the HDF5 include directory.
71+
##
72+
@@ -718,6 +757,10 @@ IF(USE_HDF5)
73+
ENDIF(${HDF5_VERSION} VERSION_GREATER "1.8.15")
74+
75+
ELSE(MSVC)
76+
+ ####
77+
+ # Environmental variables in Windows when using MSVC
78+
+ # are a hot mess between versions.
79+
+ ####
80+
81+
IF(HDF5_hdf5_LIBRARY AND NOT HDF5_C_LIBRARY)
82+
SET(HDF5_C_LIBRARY ${HDF5_hdf5_LIBRARY})
83+
@@ -816,16 +859,6 @@ IF(USE_HDF5)
84+
SET(HAS_PAR_FILTERS no CACHE STRING "")
85+
ENDIF()
86+
87+
- # Check to see if HDF5 library is 1.10.6 or greater.
88+
- # Used to control path name conversion
1789
- IF(${HDF5_VERSION} VERSION_GREATER "1.10.5")
1890
- SET(HDF5_UTF8_PATHS ON)
1991
- ELSE()
2092
- SET(HDF5_UTF8_PATHS OFF)
2193
- ENDIF()
22-
+ # Check HDF5 version
23-
+ SET(HDF5_UTF8_PATHS OFF)
24-
+ CHECK_C_SOURCE_COMPILES("
25-
+ #include <H5public.h>
26-
+ int main() {
27-
+#if (H5_VERS_MAJOR*10000 + H5_VERS_MINOR*100 + H5_VERS_RELEASE < 11006)
28-
+ choke me;
29-
+#endif
30-
+ }" HDF5_VERSION_1106)
31-
+
32-
+ IF(HDF5_VERSION_1106)
33-
+ SET(HDF5_UTF8_PATHS ON)
34-
+ ENDIF(HDF5_VERSION_1106)
35-
36-
MESSAGE("-- Checking for HDF5 version 1.10.6 or later: ${HDF5_UTF8_PATHS}")
37-
38-
diff --git a/nc_test4/CMakeLists.txt b/nc_test4/CMakeLists.txt
39-
index c5c345005..d4f97bfd7 100644
40-
--- a/nc_test4/CMakeLists.txt
41-
+++ b/nc_test4/CMakeLists.txt
42-
@@ -47,10 +47,6 @@ ENDIF(ENABLE_FILTER_TESTING)
43-
44-
ENDIF(BUILD_UTILITIES)
45-
46-
-IF(${HDF5_VERSION} VERSION_GREATER "1.10.0")
47-
- SET(NC4_TESTS ${NC4_TESTS} tst_virtual_datasets)
48-
-ENDIF(${HDF5_VERSION} VERSION_GREATER "1.10.0")
4994
-
50-
##
51-
# The shell script, run_empty_vlen_test.sh,
52-
# depends on the 'tst_empty_vlen_unlim' binary.
95+
- MESSAGE("-- Checking for HDF5 version 1.10.6 or later: ${HDF5_UTF8_PATHS}")
96+
-
97+
FIND_PATH(HAVE_HDF5_H hdf5.h PATHS ${HDF5_INCLUDE_DIR} NO_DEFAULT_PATH)
98+
FIND_PATH(HAVE_HDF5_H hdf5.h)
99+
IF(NOT HAVE_HDF5_H)

0 commit comments

Comments
 (0)