highfive/highfive.spec

191 lines
5.6 KiB
RPMSpec
Raw Normal View History

2021-04-19 10:28:31 +00:00
%global pretty_name HighFive
%global _description %{expand:
HighFive is a modern header-only C++11 friendly interface for libhdf5.
HighFive supports STL vector/string, Boost::UBLAS, Boost::Multi-array, Eigen
and Xtensor. It handles C++ from/to HDF5 with automatic type mapping. HighFive
does not require additional libraries (see dependencies) and supports both HDF5
thread safety and Parallel HDF5 (contrary to the official hdf5 cpp)
It integrates nicely with other CMake projects by defining (and exporting) a
HighFive target.
Design:
- Simple C++-ish minimalist interface
- No other dependency than libhdf5
- Zero overhead
- Support C++11
Feature support:
- create/read/write files, datasets, attributes, groups, dataspaces.
- automatic memory management / ref counting
- automatic conversion of std::vector and nested std::vector from/to any
dataset with basic types
- automatic conversion of std::string to/from variable length string dataset
- selection() / slice support
- parallel Read/Write operations from several nodes with Parallel HDF5
- Advanced types: Compound, Enum, Arrays of Fixed-length strings, References
etc... (see ChangeLog)
}
%bcond_without tests
%bcond_without docs
# Header only, so no debuginfo is generated
%global debug_package %{nil}
Name: highfive
Version: 2.3.1
Release: 3%{?dist}
2021-04-19 10:28:31 +00:00
Summary: Header-only C++ HDF5 interface
License: Boost
URL: https://bluebrain.github.io/HighFive/
Source0: https://github.com/BlueBrain/HighFive/archive/v%{version}/%{name}-%{version}.tar.gz
# Does not build on 32 bit architectures
# Issue filed upstream: https://github.com/BlueBrain/HighFive/issues/443
# https://bugzilla.redhat.com/show_bug.cgi?id=1952348
#
# Partially patched, fixing i686; see upstream bug for armv7hl status. We can
# work around this by disabling OpenCV on armv7hl until a patch is available.
Patch0: 0001-fix-32bit-arches-use-explicit-casts.patch
Patch1: 0001-Fix-compiling-invalid-reinterpret_cast-on-32-bit.patch
2021-04-19 10:28:31 +00:00
BuildRequires: cmake
BuildRequires: gcc-c++
BuildRequires: git-core
BuildRequires: hdf5-devel
# Technically optional, enabled by default
BuildRequires: boost-devel
# Our choice vs. make
2021-04-19 10:28:31 +00:00
BuildRequires: ninja-build
# Optional but included in Fedora, so we use these
BuildRequires: cmake(eigen3)
BuildRequires: cmake(xtensor)
%ifnarch %{arm32}
BuildRequires: cmake(opencv)
%endif
# The -static versions are required by guidelines for tracking header-only
# libraries
BuildRequires: eigen3-static
BuildRequires: xtensor-static
2021-04-19 10:28:31 +00:00
%if %{with docs}
BuildRequires: doxygen
%endif
%description %_description
%package devel
Summary: Development files for %{name}
Provides: %{name}%{?_isa} = %{version}-%{release}
Provides: %{name}-static%{?_isa} = %{version}-%{release}
# Unarched version is needed since arched BuildRequires must not be used
Provides: %{name}-static = %{version}-%{release}
2021-04-19 10:28:31 +00:00
%description devel
The %{name}-devel package contains libraries and header files for
developing applications that use %{name}.
%if %{with docs}
%package doc
Summary: Documentation for %{name}
BuildArch: noarch
%description doc
Documentation for %{name}
%endif
%prep
%autosetup -n %{pretty_name}-%{version} -S git -p1
2021-04-19 10:28:31 +00:00
%build
%if %{with tests}
%set_build_flags
# The unit tests intentionally test deprecated APIs; silence these warnings so
# we are more likely to notice any real problems.
CXXFLAGS="${CXXFLAGS} -Wno-deprecated-declarations"
%endif
%cmake \
-DHIGHFIVE_USE_BOOST:BOOL=TRUE \
-DHIGHFIVE_USE_XTENSOR:BOOL=TRUE \
-DHIGHFIVE_USE_EIGEN:BOOL=TRUE \
%ifnarch %{arm32}
-DHIGHFIVE_USE_OPENCV:BOOL=TRUE \
%endif
-DHIGHFIVE_EXAMPLES:BOOL=TRUE \
-DHIGHFIVE_UNIT_TESTS:BOOL=%{?with_tests:TRUE}%{?!with_tests:FALSE} \
-DHIGHFIVE_BUILD_DOCS:BOOL=%{?with_docs:TRUE}%{?!with_docs:FALSE} \
-GNinja
2021-04-19 10:28:31 +00:00
%cmake_build
%if %{with docs}
%cmake_build --target doc
2021-04-19 10:28:31 +00:00
%endif
2021-04-19 10:28:31 +00:00
%install
%cmake_install
# Move the CMake configurations to the correct location
[ ! -d '%{buildroot}/%{_libdir}/cmake/%{pretty_name}' ]
install -d '%{buildroot}/%{_libdir}/cmake'
mv -v '%{buildroot}/%{_datadir}/%{pretty_name}/CMake' \
'%{buildroot}/%{_libdir}/cmake/%{pretty_name}'
2021-04-19 10:28:31 +00:00
%check
%if %{with tests}
%ctest
2021-04-19 10:28:31 +00:00
%endif
2021-04-19 10:28:31 +00:00
%files devel
%license LICENSE
%doc README.md VERSION CHANGELOG.md
%{_includedir}/%{name}
2021-04-19 10:28:31 +00:00
%{_libdir}/cmake/%{pretty_name}
2021-04-19 10:28:31 +00:00
%if %{with docs}
%files doc
%license LICENSE
%doc %{_vpath_builddir}/doc/html
%endif
2021-04-19 10:28:31 +00:00
%changelog
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
2021-11-22 19:18:07 +00:00
* Mon Nov 22 2021 Orion Poplawski <orion@nwra.com> - 2.3.1-2
- Rebuild for hdf5 1.12.1
* Fri Aug 27 2021 Benjamin A. Beasley <code@musicinmybrain.net> - 2.3.1-1
- Update to 2.3.1
- Drop patches, which were all upstreamed
- Switch BRs to cmake(…) where appropriate
- Add -static BRs for header-only library dependencies
- Add unarched -static virtual Provides since arched BRs must not be used
- Use ninja cmake backend (which was already BRd)
- Enable OpenCV (except on armv7hl, for now)
- Fix ExcludeArch
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Thu Apr 22 2021 Ankur Sinha <ankursinha AT fedoraproject DOT org> - 2.2.2-2
- Make note of excludearch bug
* Mon Apr 19 2021 Ankur Sinha <ankursinha AT fedoraproject DOT org> - 2.2.2-2
- Carry patch to fix failing test: https://github.com/BlueBrain/HighFive/issues/444
2021-04-19 10:28:31 +00:00
* Sun Apr 18 2021 Ankur Sinha <ankursinha AT fedoraproject DOT org> - 2.2.2-1
- Enable doc build
- include complete doc package in conditional