File openexr.spec of Package openexr.12771

#
# spec file for package openexr
#
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#

# perhaps you want to build against corresponding ilmbase build
%define asan_build  0
%define debug_build 0
%define sonum 23
%global so_suffix -2_2-23
Name:           openexr
Version:        2.2.1
Release:        0
Summary:        Utilities for work with HDR images in OpenEXR format
License:        BSD-3-Clause
Group:          Productivity/Graphics/Other
Url:            http://www.openexr.com/
Source0:        http://download.savannah.nongnu.org/releases/%{name}/%{name}-%{version}.tar.gz
Source1:        http://download.savannah.nongnu.org/releases/%{name}/%{name}-%{version}.tar.gz.sig
Source2:        baselibs.conf
Source3:        openexr.keyring
Patch0:         openexr-CVE-2018-18444.patch
# CVE-2017-9111 [bsc#1040109], CVE-2017-9113 [bsc#1040113], CVE-2017-9115 [bsc#1040115]
Patch1:         openexr-CVE-2017-9111,9113,9115.patch
# CVE-2017-14988 [bsc#1061305]
Patch2:         openexr-CVE-2017-14988.patch
# CVE-2020-11762 [bsc#1169549], out-of-bounds read and write in DwaCompressor:uncompress in ImfDwaCompressor.cpp when handling the UNKNOWN compression case|CVE-2020-11758 [bsc#1169573], out-of-bounds read in ImfOptimizedPixelReading.h.|CVE-2020-11764 [bsc#1169574], out-of-bounds write in copyIntoFrameBuffer in ImfMisc.cpp|CVE-2020-11765 [bsc#1169575], off-by-one error in use of the ImfXdr.h read function by DwaCompressor:Classifier:Classifier|CVE-2020-11763 [bsc#1169576], out-of-bounds read and write, as demonstrated by ImfTileOffsets.cpp|CVE-2020-11761 [bsc#1169578], out-of-bounds read during Huffman uncompression, as demonstrated by FastHufDecoder:refill in ImfFastHuf.cpp|CVE-2020-11760 [bsc#1169580], out-of-bounds read during RLE uncompression in rleUncompress in ImfRle.cpp
Patch3:         openexr-CVE-2020-11762,11758,11764,11765,11763,11761,11760.patch
BuildRequires:  automake
BuildRequires:  fltk-devel
BuildRequires:  freeglut-devel
BuildRequires:  gcc-c++
BuildRequires:  pkgconfig
BuildRequires:  pkgconfig(IlmBase) >= 2.2.0
BuildRequires:  pkgconfig(zlib)
%if %{asan_build} || %{debug_build}
BuildRequires:  ilmbase-debugsource
BuildRequires:  libHalf%{sonum}-debuginfo
BuildRequires:  libIex%{so_suffix}-debuginfo
BuildRequires:  libIexMath%{so_suffix}-debuginfo
BuildRequires:  libIlmThread%{so_suffix}-debuginfo
BuildRequires:  libImath%{so_suffix}-debuginfo
%endif
Obsoletes:      OpenEXR <= 1.6.1
Provides:       OpenEXR = %{version}

%description
OpenEXR is a high dynamic-range (HDR) image file format developed by
Industrial Light & Magic for use in computer imaging applications. This package
contains a set of utilities to work with this format.

* exrheader, a utility for dumping header information
* exrstdattr, a utility for modifying OpenEXR standard attributes
* exrmaketiled, for generating tiled and rip/mipmapped images
* exrenvmap, for creating OpenEXR environment maps
* exrmakepreview, for creating preview images for OpenEXR files
* exr2aces, converter to ACES format
* exrmultiview, combine two or more images into one multi-view

%package -n libIlmImf%{so_suffix}
Summary:        Library to Handle EXR Pictures in 16-Bit Floating-Point Format
Group:          Development/Libraries/C and C++

%description -n libIlmImf%{so_suffix}
OpenEXR is a high dynamic-range (HDR) image file format developed by
Industrial Light & Magic for use in computer imaging applications.

This package contains shared library libIlmImf

%post -n libIlmImf%{so_suffix} -p /sbin/ldconfig
%postun -n libIlmImf%{so_suffix} -p /sbin/ldconfig

%files -n libIlmImf%{so_suffix}
%doc COPYING
%{_libdir}/libIlmImf-*.so.*

%package -n libIlmImfUtil%{so_suffix}
Summary:        Library to simplify development of OpenEXR utilities
Group:          Development/Libraries/C and C++

%description -n libIlmImfUtil%{so_suffix}
OpenEXR is a high dynamic-range (HDR) image file format developed by
Industrial Light & Magic for use in computer imaging applications.

This package contains shared library libIlmImfUtil

%post -n libIlmImfUtil%{so_suffix} -p /sbin/ldconfig
%postun -n libIlmImfUtil%{so_suffix} -p /sbin/ldconfig

%files -n libIlmImfUtil%{so_suffix}
%doc COPYING
%{_libdir}/libIlmImfUtil-*.so.*

%package devel
Summary:        Library to Handle EXR Pictures (16-bit floating-point format)
Group:          Development/Libraries/C and C++
Requires:       libIlmImf%{so_suffix} = %{version}
Requires:       libIlmImfUtil%{so_suffix} = %{version}
Requires:       libilmbase-devel
Requires:       pkgconfig
Requires:       pkgconfig(zlib)
Obsoletes:      OpenEXR-devel <= 1.6.1
Provides:       OpenEXR-devel = %{version}
Obsoletes:      libopenexr-devel <= 1.7.0
Provides:       libopenexr-devel = %{version}

%description devel
OpenEXR is a high dynamic-range (HDR) image file format developed by
Industrial Light & Magic for use in computer imaging applications.

This package contains header files.

%package doc
Summary:        Library to Handle EXR Pictures in 16-Bit Floating-Point Format
Group:          Development/Libraries/C and C++
Obsoletes:      OpenEXR-doc <= 1.6.1
Provides:       OpenEXR-doc = %{version}

%description doc
OpenEXR is a high dynamic-range (HDR) image file format developed by
Industrial Light & Magic for use in computer imaging applications.

This package contains a documentation

%prep
%setup -q
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1

# poor man's fdupes
if cmp COPYING LICENSE; then
    rm -rf LICENSE
    ln -sf COPYING LICENSE
fi

# remove non-linux file
rm README.OSX

%build
export PTHREAD_LIBS="-lpthread"
%if %{debug_build}
export CXXFLAGS="%{optflags} -O0"
%endif
%configure \
   --disable-static \
   --with-pic \
%if %{asan_build}
   --disable-ilmbasetest \
%endif
   --enable-large-stack \
   --enable-imfexamples \
   --enable-imfhugetest
%if %{asan_build}
vmemlimit=$(ulimit -v)
if [ $vmemlimit != unlimited ]; then
  echo "ulimit -v has to be unlimited (currently $vmemlimit) to run ASAN build"
  exit 1
fi
for i in $(find -name Makefile); do
  sed -i -e 's/\(^CXXFLAGS.*\)/\1 -fsanitize=address/' \
         -e 's/\(^LIBS =.*\)/\1 -lasan/' \
         $i
done
%endif
make %{?_smp_mflags}

%install
%make_install
find %{buildroot} -type f -name "*.la" -delete -print

install -d -m 0755 %{buildroot}%{_defaultdocdir}/
mv %{buildroot}%{_datadir}/doc/OpenEXR-2* %{buildroot}%{_defaultdocdir}/%{name}-%{version}

%check
%ifarch x86_64
make %{?_smp_mflags} check
%endif

%files
%doc AUTHORS ChangeLog COPYING LICENSE NEWS README*
%{_bindir}/exrenvmap
%{_bindir}/exrheader
%{_bindir}/exrmakepreview
%{_bindir}/exrmaketiled
%{_bindir}/exrstdattr
%{_bindir}/exrmultiview
%{_bindir}/exrmultipart

%files devel
%{_includedir}/OpenEXR
%{_libdir}/libIlmImf.so
%{_libdir}/libIlmImfUtil.so
%{_libdir}/pkgconfig/OpenEXR.pc
%{_datadir}/aclocal/openexr.m4

%files doc
%{_docdir}/%{name}-%{version}

%changelog
openSUSE Build Service is sponsored by