diff --git a/_multibuild b/_multibuild
new file mode 100644
index 0000000..744e503
--- /dev/null
+++ b/_multibuild
@@ -0,0 +1,3 @@
+
+ ilmbase
+
diff --git a/baselibs.conf b/baselibs.conf
index 2116423..e582e93 100644
--- a/baselibs.conf
+++ b/baselibs.conf
@@ -1,3 +1,9 @@
libIlmImf-2_5-25
libIlmImfUtil-2_5-25
obsoletes "OpenEXR- < "
+libHalf-2_5-25
+libImath-2_5-25
+libIlmThread-2_5-25
+libIexMath-2_5-25
+libIex-2_5-25
+ obsoletes "IlmBase- < "
diff --git a/openexr.changes b/openexr.changes
index 483c21b..47cd063 100644
--- a/openexr.changes
+++ b/openexr.changes
@@ -1,3 +1,24 @@
+-------------------------------------------------------------------
+Thu Jan 7 11:00:00 UTC 2021 - pgajdos@suse.com
+
+- merge also baselibs.conf
+- modified sources
+ % baselibs.conf
+
+-------------------------------------------------------------------
+Tue Jan 5 13:09:22 UTC 2021 - pgajdos@suse.com
+
+- merge ilmbase and openexr source packages into one _multibuild
+- added sources
+ + _multibuild
+
+-------------------------------------------------------------------
+Tue Jan 5 09:03:28 UTC 2021 - pgajdos@suse.com
+
+- version update to 2.5.4
+ * Patch release with various bug/sanitizer/security fixes, primarily
+ related to reading corrupted input files.
+
-------------------------------------------------------------------
Wed Sep 30 06:55:23 UTC 2020 - pgajdos@suse.com
diff --git a/openexr.spec b/openexr.spec
index 4e8994c..c8fdb34 100644
--- a/openexr.spec
+++ b/openexr.spec
@@ -1,7 +1,7 @@
#
# spec file for package openexr
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,30 +16,54 @@
#
+%define prjname openexr
+%define flavor @BUILD_FLAVOR@%{nil}
+%if "%{flavor}" == ""
+%define flavor openexr
+%endif
+
# perhaps you want to build against corresponding ilmbase build
%define asan_build 0
%define debug_build 0
%define sonum 25
%global so_suffix -2_5
-Name: openexr
-Version: 2.5.3
+Name: %{flavor}
+Version: 2.5.4
Release: 0
+%if "%{flavor}" == "openexr"
Summary: Utilities for working with HDR images in OpenEXR format
License: BSD-3-Clause
-Group: Productivity/Graphics/Other
+Group: Development/Libraries/C and C++
+%endif
+%if "%{flavor}" == "ilmbase"
+Summary: Base library for ILM software (OpenEXR)
+License: BSD-3-Clause
+Group: Development/Libraries/C and C++
+%endif
URL: http://www.openexr.com/
Source0: https://github.com/openexr/openexr/archive/v%{version}.tar.gz
Source2: baselibs.conf
Patch1: 0001-Use-absolute-CMAKE_INSTALL_FULL_LIBDIR-for-libdir-in.patch
BuildRequires: cmake
-BuildRequires: fltk-devel
-BuildRequires: freeglut-devel
BuildRequires: gcc-c++
BuildRequires: pkgconfig
+%if "%{flavor}" == "openexr"
+BuildRequires: fltk-devel
+BuildRequires: freeglut-devel
BuildRequires: pkgconfig(IlmBase) == %{version}
BuildRequires: pkgconfig(zlib)
+%endif
+%if "%{flavor}" == "ilmbase"
+BuildRequires: libtool
+%endif
+%if "%{flavor}" == "openexr"
Obsoletes: OpenEXR <= 1.6.1
Provides: OpenEXR = %{version}
+%endif
+%if "%{flavor}" == "ilmbase"
+Obsoletes: IlmBase <= 1.0.1
+Provides: IlmBase = %{version}
+%endif
%if %{asan_build} || %{debug_build}
BuildRequires: ilmbase-debugsource
BuildRequires: libHalf%{so_suffix}-%{sonum}-debuginfo
@@ -49,6 +73,8 @@ BuildRequires: libIlmThread%{so_suffix}-%{sonum}-debuginfo
BuildRequires: libImath%{so_suffix}-%{sonum}-debuginfo
%endif
+%if "%{flavor}" == "openexr"
+
%description
OpenEXR is a high dynamic-range (HDR) image file format developed by
Industrial Light & Magic for use in computer imaging applications. This package
@@ -64,6 +90,7 @@ contains a set of utilities to work with this format.
%package -n libIlmImf%{so_suffix}-%{sonum}
Summary: Library to Handle EXR Pictures in 16-Bit Floating-Point Format
+License: BSD-3-Clause
Group: System/Libraries
%description -n libIlmImf%{so_suffix}-%{sonum}
@@ -74,6 +101,7 @@ This package contains shared library libIlmImf
%package -n libIlmImfUtil%{so_suffix}-%{sonum}
Summary: Library to simplify development of OpenEXR utilities
+License: BSD-3-Clause
Group: System/Libraries
%description -n libIlmImfUtil%{so_suffix}-%{sonum}
@@ -84,6 +112,7 @@ This package contains shared library libIlmImfUtil
%package devel
Summary: Development files for the 16-bit FP EXR picture handling library
+License: BSD-3-Clause AND GPL-2.0-or-later
Group: Development/Libraries/C and C++
Requires: ilmbase-devel >= 2.3.0
Requires: libIlmImf%{so_suffix}-%{sonum} = %{version}
@@ -103,6 +132,7 @@ This package contains header files.
%package doc
Summary: Documentation for the 16-bit FP EXR picture handling library
+License: BSD-3-Clause
Group: Documentation/Other
Obsoletes: OpenEXR-doc <= 1.6.1
Provides: OpenEXR-doc = %{version}
@@ -113,11 +143,89 @@ Industrial Light & Magic for use in computer imaging applications.
This package contains documentation.
+%endif
+
+%if %{flavor} == "ilmbase"
+
+%description
+Base library for Industrial Light & Magic software (OpenEXR).
+
+* Half is a class that encapsulates our 16-bit floating-point
+ format.
+
+* IlmThread is a thread abstraction library for use with OpenEXR and
+ other software packages. It currently supports pthreads and
+ Windows threads.
+
+* Imath implements 2D and 3D vectors, 3x3 and 4x4 matrices,
+ quaternions and other useful 2D and 3D math functions.
+
+* Iex is an exception-handling library.
+
+%package devel
+Summary: Base library for ILM software (OpenEXR)
+# Renamed to libilmbase6 to met the Shared Library Policy
+License: BSD-3-Clause AND GPL-2.0-or-later
+Group: Development/Libraries/C and C++
+Requires: libHalf%{so_suffix}-%{sonum}
+Requires: libIex%{so_suffix}-%{sonum}
+Requires: libIexMath%{so_suffix}-%{sonum}
+Requires: libIlmThread%{so_suffix}-%{sonum}
+Requires: libImath%{so_suffix}-%{sonum}
+Requires: libstdc++-devel
+
+%description devel
+Devel files for ilmbase
+Base library for Industrial Light & Magic software (OpenEXR).
+
+%package -n libHalf%{so_suffix}-%{sonum}
+Summary: 16-bit floating-point encapsulation class for OpenEXR
+License: BSD-3-Clause
+Group: System/Libraries
+
+%description -n libHalf%{so_suffix}-%{sonum}
+%{summary}.
+
+%package -n libIexMath%{so_suffix}-%{sonum}
+Summary: Exception-based vector/matrix library for OpenEXR
+License: BSD-3-Clause
+Group: System/Libraries
+
+%description -n libIexMath%{so_suffix}-%{sonum}
+%{summary}.
+
+%package -n libIex%{so_suffix}-%{sonum}
+Summary: Exception handling library for OpenEXR
+License: BSD-3-Clause
+Group: System/Libraries
+
+%description -n libIex%{so_suffix}-%{sonum}
+%{summary}.
+
+%package -n libIlmThread%{so_suffix}-%{sonum}
+Summary: Thread abstraction library for OpenEXR
+License: BSD-3-Clause
+Group: System/Libraries
+
+%description -n libIlmThread%{so_suffix}-%{sonum}
+%{summary}.
+
+%package -n libImath%{so_suffix}-%{sonum}
+Summary: Vector/matrix library for OpenEXR
+License: BSD-3-Clause
+Group: System/Libraries
+
+%description -n libImath%{so_suffix}-%{sonum}
+%{summary}.
+
+%endif
+
%prep
-%setup -q
+%setup -q -n %{prjname}-%{version}
%patch1 -p1
%build
+%if "%{flavor}" == "openexr"
pushd OpenEXR
export PTHREAD_LIBS="-lpthread"
%if %{debug_build}
@@ -139,13 +247,42 @@ done
%endif
%cmake_build
popd
+%endif
+
+%if %{flavor} == "ilmbase"
+pushd IlmBase
+%cmake
+%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}
+popd
+%endif
%install
+%if "%{flavor}" == "openexr"
pushd OpenEXR
%cmake_install
popd
+%endif
+
+%if "%{flavor}" == "ilmbase"
+pushd IlmBase
+%cmake_install
+popd
+%endif
%check
+%if "%{flavor}" == "openexr"
%ifnarch i586 ppc ppc64 s390 s390x
pushd OpenEXR
export LD_LIBRARY_PATH="%{buildroot}/%{_libdir}"
@@ -159,13 +296,44 @@ export LD_LIBRARY_PATH="%{buildroot}/%{_libdir}"
%endif
popd
%endif
+%endif
+%if "%{flavor}" == "ilmbase"
+# https://github.com/openexr/openexr/issues/570
+%ifnarch i586
+pushd IlmBase
+export LD_LIBRARY_PATH="$PWD/build/Imath:$PWD/build/Iex:$PWD/build/Half:$LD_LIBRARY_PATH"
+%ctest
+popd
+%endif
+%endif
+
+%if "%{flavor}" == "openexr"
%post -n libIlmImf%{so_suffix}-%{sonum} -p /sbin/ldconfig
%postun -n libIlmImf%{so_suffix}-%{sonum} -p /sbin/ldconfig
%post -n libIlmImfUtil%{so_suffix}-%{sonum} -p /sbin/ldconfig
%postun -n libIlmImfUtil%{so_suffix}-%{sonum} -p /sbin/ldconfig
+%endif
+%if "%{flavor}" == "ilmbase"
+%post -n libHalf%{so_suffix}-%{sonum} -p /sbin/ldconfig
+%postun -n libHalf%{so_suffix}-%{sonum} -p /sbin/ldconfig
+
+%post -n libIexMath%{so_suffix}-%{sonum} -p /sbin/ldconfig
+%postun -n libIexMath%{so_suffix}-%{sonum} -p /sbin/ldconfig
+
+%post -n libIex%{so_suffix}-%{sonum} -p /sbin/ldconfig
+%postun -n libIex%{so_suffix}-%{sonum} -p /sbin/ldconfig
+
+%post -n libIlmThread%{so_suffix}-%{sonum} -p /sbin/ldconfig
+%postun -n libIlmThread%{so_suffix}-%{sonum} -p /sbin/ldconfig
+
+%post -n libImath%{so_suffix}-%{sonum} -p /sbin/ldconfig
+%postun -n libImath%{so_suffix}-%{sonum} -p /sbin/ldconfig
+%endif
+
+%if "%{flavor}" == "openexr"
%files
%license LICENSE.md
%doc CHANGES.md CODE_OF_CONDUCT.md CODEOWNERS CONTRIBUTING.md CONTRIBUTORS.md README.md SECURITY.md
@@ -199,5 +367,41 @@ popd
%files -n libIlmImfUtil%{so_suffix}-%{sonum}
%license LICENSE.md
%{_libdir}/libIlmImfUtil-*.so.*
+%endif
+
+%if "%{flavor}" == "ilmbase"
+%files devel
+%doc CHANGES.md CODE_OF_CONDUCT.md CODEOWNERS CONTRIBUTING.md CONTRIBUTORS.md README.md SECURITY.md
+%license LICENSE.md
+%{_includedir}/OpenEXR
+%{_libdir}/libHalf.so
+%{_libdir}/libHalf%{so_suffix}.so
+%{_libdir}/libIex.so
+%{_libdir}/libIex%{so_suffix}.so
+%{_libdir}/libImath.so
+%{_libdir}/libImath%{so_suffix}.so
+%{_libdir}/libIlmThread.so
+%{_libdir}/libIlmThread%{so_suffix}.so
+%{_libdir}/libIexMath.so
+%{_libdir}/libIexMath%{so_suffix}.so
+%{_libdir}/pkgconfig/IlmBase.pc
+%dir %{_libdir}/cmake/IlmBase/
+%{_libdir}/cmake/IlmBase/*.cmake
+
+%files -n libHalf%{so_suffix}-%{sonum}
+%{_libdir}/libHalf%{so_suffix}.so.*
+
+%files -n libIexMath%{so_suffix}-%{sonum}
+%{_libdir}/libIexMath%{so_suffix}.so.*
+
+%files -n libIex%{so_suffix}-%{sonum}
+%{_libdir}/libIex%{so_suffix}.so.*
+
+%files -n libIlmThread%{so_suffix}-%{sonum}
+%{_libdir}/libIlmThread%{so_suffix}.so.*
+
+%files -n libImath%{so_suffix}-%{sonum}
+%{_libdir}/libImath%{so_suffix}.so.*
+%endif
%changelog
diff --git a/v2.5.3.tar.gz b/v2.5.3.tar.gz
deleted file mode 100644
index 9660e58..0000000
--- a/v2.5.3.tar.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6a6525e6e3907715c6a55887716d7e42d09b54d2457323fcee35a0376960bebf
-size 27534825
diff --git a/v2.5.4.tar.gz b/v2.5.4.tar.gz
new file mode 100644
index 0000000..3d56a84
--- /dev/null
+++ b/v2.5.4.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dba19e9c6720c6f64fbc8b9d1867eaa75da6438109b941eefdc75ed141b6576d
+size 27535491