From f068c62b0c56da6609c812d841694a790d9ba20e Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Thu, 19 Sep 2013 15:07:34 -0600 Subject: [PATCH] Add patch to fix FindHDF5 --- cmake-findhdf5.patch | 87 ++++++++++++++++++++++++++++++++++++++++++++ cmake.spec | 8 +++- 2 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 cmake-findhdf5.patch diff --git a/cmake-findhdf5.patch b/cmake-findhdf5.patch new file mode 100644 index 0000000..5cfd8ba --- /dev/null +++ b/cmake-findhdf5.patch @@ -0,0 +1,87 @@ +From: Brad King +Date: Thu, 19 Sep 2013 17:29:02 +0000 (-0400) +Subject: FindHDF5: Fix regression in per-configuration library selection +X-Git-Url: http://cmake.org/gitweb?p=cmake.git;a=commitdiff_plain;h=0f05961f + +FindHDF5: Fix regression in per-configuration library selection + +When FindHDF5 was first added in commit e6734068 (Add HDF5 find +module..., 2009-08-24) it contained a workaround for a bug in +SelectLibraryConfigurations that did not transform lists correctly. +That bug was fixed by commit 5797512c (SelectLibraryConfiguration: +generate correct output when input vars are lists, 2012-07-28). Then +refactoring in commit 04d4dc33 (SelectLibraryConfigurations: Use +-NOTFOUND instead of copying the vars, 2013-07-08) changed undocumented +behavior on which the original workaround relied. The result puts +entries like HDF5_hdf5_LIBRARY_DEBUG-NOTFOUND in HDF5_LIBRARIES. + +Fix this by dropping the original workaround since the underlying issue +has been fixed anyway. Use the HDF5_${LIB}_LIBRARY selected by the call +to select_library_configurations directly. +--- + +diff --git a/Modules/FindHDF5.cmake b/Modules/FindHDF5.cmake +index 8514164..0c246a1 100644 +--- a/Modules/FindHDF5.cmake ++++ b/Modules/FindHDF5.cmake +@@ -289,27 +289,13 @@ if( NOT HDF5_FOUND ) + ENV HDF5_ROOT + PATH_SUFFIXES lib Lib ) + select_library_configurations( HDF5_${LIB} ) +- # even though we adjusted the individual library names in +- # select_library_configurations, we still need to distinguish +- # between debug and release variants because HDF5_LIBRARIES will +- # need to specify different lists for debug and optimized builds. +- # We can't just use the HDF5_${LIB}_LIBRARY variable (which was set +- # up by the selection macro above) because it may specify debug and +- # optimized variants for a particular library, but a list of +- # libraries is allowed to specify debug and optimized only once. +- list( APPEND HDF5_${LANGUAGE}_LIBRARIES_DEBUG +- ${HDF5_${LIB}_LIBRARY_DEBUG} ) +- list( APPEND HDF5_${LANGUAGE}_LIBRARIES_RELEASE +- ${HDF5_${LIB}_LIBRARY_RELEASE} ) ++ list(APPEND HDF5_${LANGUAGE}_LIBRARIES ${HDF5_${LIB}_LIBRARY}) + endforeach() + list( APPEND HDF5_LIBRARY_DIRS ${HDF5_${LANGUAGE}_LIBRARY_DIRS} ) + + # Append the libraries for this language binding to the list of all + # required libraries. +- list( APPEND HDF5_LIBRARIES_DEBUG +- ${HDF5_${LANGUAGE}_LIBRARIES_DEBUG} ) +- list( APPEND HDF5_LIBRARIES_RELEASE +- ${HDF5_${LANGUAGE}_LIBRARIES_RELEASE} ) ++ list(APPEND HDF5_LIBRARIES ${HDF5_${LANGUAGE}_LIBRARIES}) + endforeach() + + # We may have picked up some duplicates in various lists during the above +@@ -329,30 +315,10 @@ if( NOT HDF5_FOUND ) + if( HDF5_INCLUDE_DIRS ) + _remove_duplicates_from_beginning( HDF5_INCLUDE_DIRS ) + endif() +- if( HDF5_LIBRARIES_DEBUG ) +- _remove_duplicates_from_beginning( HDF5_LIBRARIES_DEBUG ) +- endif() +- if( HDF5_LIBRARIES_RELEASE ) +- _remove_duplicates_from_beginning( HDF5_LIBRARIES_RELEASE ) +- endif() + if( HDF5_LIBRARY_DIRS ) + _remove_duplicates_from_beginning( HDF5_LIBRARY_DIRS ) + endif() + +- # Construct the complete list of HDF5 libraries with debug and optimized +- # variants when the generator supports them. +- if( CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE ) +- set( HDF5_LIBRARIES ) +- foreach( _lib ${HDF5_LIBRARIES_DEBUG} ) +- list( APPEND HDF5_LIBRARIES debug ${_lib} ) +- endforeach() +- foreach( _lib ${HDF5_LIBRARIES_RELEASE} ) +- list( APPEND HDF5_LIBRARIES optimized ${_lib} ) +- endforeach() +- else() +- set( HDF5_LIBRARIES ${HDF5_LIBRARIES_RELEASE} ) +- endif() +- + # If the HDF5 include directory was found, open H5pubconf.h to determine if + # HDF5 was compiled with parallel IO support + set( HDF5_IS_PARALLEL FALSE ) diff --git a/cmake.spec b/cmake.spec index 3abdd84..36fb4d8 100644 --- a/cmake.spec +++ b/cmake.spec @@ -13,7 +13,7 @@ Name: cmake Version: 2.8.12 -Release: 0.4.rc3%{?dist} +Release: 0.5.rc3%{?dist} Summary: Cross-platform make system Group: Development/Tools @@ -50,6 +50,8 @@ Patch6: cmake-strict_aliasing.patch # Patch away .png extension in icon name in desktop file. # http://www.cmake.org/Bug/view.php?id=14315 Patch7: cmake-desktop_icon.patch +# Patch to fix FindHDF5 +Patch8: cmake-findhdf5.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: gcc-gfortran @@ -115,6 +117,7 @@ The %{name}-gui package contains the Qt based GUI for CMake. %patch5 -p1 %patch6 -p1 %patch7 -p1 +%patch8 -p1 # Setup copyright docs for main package mkdir _doc find Source Utilities -type f -iname copy\* | while read f @@ -223,6 +226,9 @@ update-mime-database %{_datadir}/mime &> /dev/null || : %changelog +* Thu Sep 19 2013 Orion Poplawski - 2.8.12-0.5.rc3 +- Add patch to fix FindHDF5 + * Tue Sep 17 2013 Orion Poplawski - 2.8.12-0.4.rc3 - Update to 2.8.12-rc3