Blob Blame History Raw
%global python_version %(%{__python3} -c "import sys ; print(sys.version[:3])")
%{!?python3_sitearch: %global python3_sitearch %(%{__python3} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")}

# Set to 1 to enable testsuite. Fails everywhere with GCC 8+.
%global with_tests 0

Name:           openvdb
Version:        5.1.0
Release:        3%{?dist}
Summary:        C++ library for sparse volumetric data discretized on three-dimensional grids
License:        MPLv2.0
URL:            http://www.openvdb.org/

Source0:        https://github.com/dreamworksanimation/%{name}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz

BuildRequires:  blosc-devel >= 1.5.0
BuildRequires:  boost-devel >= 1.57.0
BuildRequires:  boost-python3-devel
BuildRequires:  cmake >= 2.8
BuildRequires:  cppunit-devel >= 1.10
BuildRequires:  doxygen >= 1.8.11
BuildRequires:  epydoc
BuildRequires:	gcc-c++
BuildRequires:  ghostscript >= 8.70
BuildRequires:  glfw-devel >= 2.7
BuildRequires:  ilmbase-devel
BuildRequires:  libXi-devel
BuildRequires:  log4cplus-devel >= 1.0
BuildRequires:  OpenEXR-devel
BuildRequires:  python3
BuildRequires:  python3-numpy
BuildRequires:  python3-devel
BuildRequires:  tbb-devel >= 3.0
BuildRequires:  zlib-devel

%description
OpenVDB is an Academy Award-winning open-source C++ library comprising a novel
hierarchical data structure and a suite of tools for the efficient storage and
manipulation of sparse volumetric data discretized on three-dimensional grids.
It is developed and maintained by DreamWorks Animation for use in volumetric
applications typically encountered in feature film production.

This package contains some graphical tools.

%package        libs
Summary:        Core OpenVDB libraries

%description    libs
OpenVDB is an Academy Award-winning open-source C++ library comprising a novel
hierarchical data structure and a suite of tools for the efficient storage and
manipulation of sparse volumetric data discretized on three-dimensional grids.
It is developed and maintained by DreamWorks Animation for use in volumetric
applications typically encountered in feature film production.

%package        devel
Summary:        Development files for %{name}
Requires:       %{name}-libs%{?_isa} = %{version}-%{release}

%description    devel
The %{name}-devel package contains libraries and header files for developing
applications that use %{name}.

%package        python3
Summary:        OpenVDB Python module
Requires:       %{name}-libs%{?_isa} = %{version}-%{release}
Obsoletes:      %{name}-python2 < 5.1.0-1
Provides:       %{name}-python2 = %{version}-%{release}

%description    python3
OpenVDB is an Academy Award-winning open-source C++ library comprising a novel
hierarchical data structure and a suite of tools for the efficient storage and
manipulation of sparse volumetric data discretized on three-dimensional grids.
It is developed and maintained by DreamWorks Animation for use in volumetric
applications typically encountered in feature film production.

This package contains the Python module.

%package        doc
Summary:        Documentation for %{name}
BuildArch:      noarch

%description    doc
The %{name}-doc package contains documentation for developing applications that
use %{name}.

%prep
%autosetup -p1

iconv -f iso8859-1 -t utf-8 %{name}/CHANGES > %{name}/CHANGES.conv && \
    mv -f %{name}/CHANGES.conv %{name}/CHANGES

# Hardcoded values for Python module
sed -i \
    -e 's|lib$|%{_lib}|g' -e 's|lib/python|%{_lib}/python|g' \
    -e 's|REQUIRED COMPONENTS python|REQUIRED COMPONENTS python3|g' \
    %{name}/CMakeLists.txt %{name}/python/CMakeLists.txt

# Save Makefile that contains doc building instructions, new cmake build system
# does not build docs yet
cp %{name}/Makefile %{name}/Makefile.docbuild

%build
export CXXFLAGS="%{optflags} -Wl,--as-needed"
%cmake \
    -DBLOSC_LOCATION=%{_prefix} \
    -DCPPUNIT_LOCATION=%{_prefix} \
    -DGLEW_LOCATION=%{_prefix} \
    -DGLFW3_LOCATION=%{_prefix} \
    -DILMBASE_NAMESPACE_VERSIONING=OFF \
    -DILMBASE_LOCATION=%{_prefix} \
    -DOPENEXR_LOCATION=%{_prefix} \
    -DOPENEXR_NAMESPACE_VERSIONING=OFF \
    -DOPENVDB_ENABLE_RPATH=OFF \
    -DOPENVDB_ABI_VERSION_NUMBER=3  \
    -DPYTHON_VERSION=%{python_version} \
    -DTBB_LOCATION=%{_prefix} \
    -DUSE_GLFW3=True

%make_build

# Build docs with previously saved Makefile
pushd %{name}
make -f Makefile.docbuild doc
popd

%if 0%{?with_tests}
%ifarch x86_64
%check
%make test
%endif
%endif

%install
%make_install

# Remove CMakeFiles from includes
rm -fr %{buildroot}/%{_includedir}/%{name}/CMakeFiles

# Let RPM pick up HTML documents in the files section
rm -fr %{buildroot}/%{_datadir}/doc

find %{buildroot} -name '*.a' -delete

%post libs -p /sbin/ldconfig

%postun libs -p /sbin/ldconfig

%files
%{_bindir}/vdb_view
%{_bindir}/vdb_print
%{_bindir}/vdb_render

%files libs
%license %{name}/LICENSE %{name}/COPYRIGHT
%doc README.md %{name}/CHANGES
%{_libdir}/*.so.*

%files python3
%{_libdir}/python%{python_version}/py%{name}.so

%files devel
%{_includedir}/*
%{_libdir}/*.so

%files doc
%doc %{name}/doc/html

%changelog
* Tue Jul 17 2018 Simone Caronni <negativo17@gmail.com> - 5.1.0-3
- Require libs subpackage for python3/devel.

* Tue Jul 17 2018 Simone Caronni <negativo17@gmail.com> - 5.1.0-2
- Fix Python 3 Boost link.

* Tue Jul 17 2018 Simone Caronni <negativo17@gmail.com> - 5.1.0-1
- Update to 5.1.0.
- Switch to Python 3.

* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 5.0.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild

* Tue May 01 2018 Jonathan Wakely <jwakely@redhat.com> - 5.0.0-3
- Add BuildRequires: boost-python2-devel to fix build with boost-1.66.0-7.fc29

* Sun Mar 04 2018 Luya Tshimbalanga <luya@fedoraproject.org> - 5.0.0-2
- Added gcc-c++ dependency
- Upstream patch for Boost compability

* Mon Feb 26 2018 Luya Tshimbalanga <luya@fedoraproject.org> - 5.0.0-1
- Update to 5.0.0
- Use new upstream macro for abi compatibility
- Rebuild for Boost 1.66

* Thu Feb 08 2018 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild

* Mon Sep 11 2017 Simone Caronni <negativo17@gmail.com> - 4.0.2-1
- Update to 4.0.2.

* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.1-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild

* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.1-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild

* Sun Jul 23 2017 Simone Caronni <negativo17@gmail.com> - 4.0.1-5
- Rename python subpackage (module) to python2.

* Wed Jul 19 2017 Jonathan Wakely <jwakely@redhat.com> - 4.0.1-4
- Rebuilt for s390x binutils bug

* Tue Jul 18 2017 Jonathan Wakely <jwakely@redhat.com> - 4.0.1-3
- Rebuilt for Boost 1.64

* Sat May 06 2017 Simone Caronni <negativo17@gmail.com> - 4.0.1-2
- Review fixes.

* Sat Apr 22 2017 Simone Caronni <negativo17@gmail.com> - 4.0.1-1
- Update to 4.0.1.
- Perform tests, build HTML documentation.
- Require main OpenVDB library for Python module.

* Wed Nov 23 2016 Simone Caronni <negativo17@gmail.com> - 4.0.0-2
- Update to 4.0.0.

* Sun Oct 16 2016 Simone Caronni <negativo17@gmail.com> - 4.0.0-1.20161015git40271e7
- First build.