diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..79c3438
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+SOURCES/ilmbase-2.2.0.tar.gz
diff --git a/.ilmbase.metadata b/.ilmbase.metadata
new file mode 100644
index 0000000..9476a21
--- /dev/null
+++ b/.ilmbase.metadata
@@ -0,0 +1 @@
+70d864bc704f276942cb10479f2cb98646ce6ad4 SOURCES/ilmbase-2.2.0.tar.gz
diff --git a/SOURCES/ilmbase-1.0.3-pkgconfig.patch b/SOURCES/ilmbase-1.0.3-pkgconfig.patch
new file mode 100644
index 0000000..bbc704f
--- /dev/null
+++ b/SOURCES/ilmbase-1.0.3-pkgconfig.patch
@@ -0,0 +1,8 @@
+diff -up ilmbase-1.0.3/IlmBase.pc.in.pkgconfig ilmbase-1.0.3/IlmBase.pc.in
+--- ilmbase-1.0.3/IlmBase.pc.in.pkgconfig	2012-07-17 18:27:25.000000000 -0500
++++ ilmbase-1.0.3/IlmBase.pc.in	2012-09-08 11:11:15.913468312 -0500
+@@ -9,3 +9,4 @@ Description: Base math and exception lib
+ Version: @ILMBASE_VERSION@
+ Libs: -L${libdir} -lImath -lHalf -lIex -lIexMath -lIlmThread @PTHREAD_LIBS@
+ Cflags: @PTHREAD_CFLAGS@ -I${OpenEXR_includedir}
++Requires.private: gl glu
diff --git a/SOURCES/ilmbase-2.2.0-glibc_iszero.patch b/SOURCES/ilmbase-2.2.0-glibc_iszero.patch
new file mode 100644
index 0000000..16f303c
--- /dev/null
+++ b/SOURCES/ilmbase-2.2.0-glibc_iszero.patch
@@ -0,0 +1,93 @@
+diff -up ilmbase-2.2.0/Imath/ImathFun.h.glibc_iszero ilmbase-2.2.0/Imath/ImathFun.h
+--- ilmbase-2.2.0/Imath/ImathFun.h.glibc_iszero	2014-08-09 21:03:39.000000000 -0500
++++ ilmbase-2.2.0/Imath/ImathFun.h	2016-10-16 09:43:04.514932845 -0500
+@@ -132,7 +132,7 @@ cmpt (T a, T b, T t)
+ 
+ template <class T>
+ inline bool
+-iszero (T a, T t)
++(iszero) (T a, T t)
+ {
+     return (IMATH_INTERNAL_NAMESPACE::abs (a) <= t) ? 1 : 0;
+ }
+diff -up ilmbase-2.2.0/ImathTest/testFrustum.cpp.glibc_iszero ilmbase-2.2.0/ImathTest/testFrustum.cpp
+--- ilmbase-2.2.0/ImathTest/testFrustum.cpp.glibc_iszero	2014-08-09 21:03:40.000000000 -0500
++++ ilmbase-2.2.0/ImathTest/testFrustum.cpp	2016-10-16 09:44:45.466666479 -0500
+@@ -88,10 +88,10 @@ testFrustumPlanes  (IMATH_INTERNAL_NAMES
+                             IMATH_INTERNAL_NAMESPACE::V3f pt = (! ortho) ? o :
+                                 IMATH_INTERNAL_NAMESPACE::V3f (0.0f, frustum.top(), 0.0f);
+                             float d = planes0[0].distanceTo (pt);
+-                            assert (IMATH_INTERNAL_NAMESPACE::iszero (d, eps));
++                            assert ((IMATH_INTERNAL_NAMESPACE::iszero) (d, eps));
+                             pt = pt * mView;
+                             d = planes[0].distanceTo (pt);
+-                            assert (IMATH_INTERNAL_NAMESPACE::iszero (d, eps));
++                            assert ((IMATH_INTERNAL_NAMESPACE::iszero) (d, eps));
+ 
+                             IMATH_INTERNAL_NAMESPACE::V3f right = IMATH_INTERNAL_NAMESPACE::V3f(1, 0, 0);
+                             assert ((right ^ planes0[1].normal) > 0.0);
+@@ -101,10 +101,10 @@ testFrustumPlanes  (IMATH_INTERNAL_NAMES
+                             pt = (! ortho) ? o :
+                                 IMATH_INTERNAL_NAMESPACE::V3f (frustum.right(), 0.0f, 0.0f);
+                             d = planes0[1].distanceTo (pt);
+-                            assert (IMATH_INTERNAL_NAMESPACE::iszero (d, eps));
++                            assert ((IMATH_INTERNAL_NAMESPACE::iszero) (d, eps));
+                             pt = pt * mView;
+                             d = planes[1].distanceTo (pt);
+-                            assert (IMATH_INTERNAL_NAMESPACE::iszero (d, eps));
++                            assert ((IMATH_INTERNAL_NAMESPACE::iszero) (d, eps));
+ 
+                             IMATH_INTERNAL_NAMESPACE::V3f down = IMATH_INTERNAL_NAMESPACE::V3f(0, -1, 0);
+                             assert ((down ^ planes0[2].normal) > 0.0);
+@@ -114,10 +114,10 @@ testFrustumPlanes  (IMATH_INTERNAL_NAMES
+                             pt = (! ortho) ? o :
+                                 IMATH_INTERNAL_NAMESPACE::V3f (0.0f, frustum.bottom(), 0.0f);
+                             d = planes0[2].distanceTo (pt);
+-                            assert (IMATH_INTERNAL_NAMESPACE::iszero (d, eps));
++                            assert ((IMATH_INTERNAL_NAMESPACE::iszero) (d, eps));
+                             pt = pt * mView;
+                             d = planes[2].distanceTo (pt);
+-                            assert (IMATH_INTERNAL_NAMESPACE::iszero (d, eps));
++                            assert ((IMATH_INTERNAL_NAMESPACE::iszero) (d, eps));
+ 
+                             IMATH_INTERNAL_NAMESPACE::V3f left = IMATH_INTERNAL_NAMESPACE::V3f(-1, 0, 0);
+                             assert ((left ^ planes0[3].normal) > 0.0);
+@@ -127,10 +127,10 @@ testFrustumPlanes  (IMATH_INTERNAL_NAMES
+                             pt = (! ortho) ? o :
+                                 IMATH_INTERNAL_NAMESPACE::V3f (frustum.left(), 0.0f, 0.0f);
+                             d = planes0[3].distanceTo (pt);
+-                            assert (IMATH_INTERNAL_NAMESPACE::iszero (d, eps));
++                            assert ((IMATH_INTERNAL_NAMESPACE::iszero) (d, eps));
+                             pt = pt * mView;
+                             d = planes[3].distanceTo (pt);
+-                            assert (IMATH_INTERNAL_NAMESPACE::iszero (d, eps));
++                            assert ((IMATH_INTERNAL_NAMESPACE::iszero) (d, eps));
+ 
+                             IMATH_INTERNAL_NAMESPACE::V3f front = IMATH_INTERNAL_NAMESPACE::V3f(0, 0, 1);
+                             assert ((front ^ planes0[4].normal) > 0.0);
+@@ -139,10 +139,10 @@ testFrustumPlanes  (IMATH_INTERNAL_NAMES
+                             
+                             pt = IMATH_INTERNAL_NAMESPACE::V3f (0.0f, 0.0f, -frustum.nearPlane());
+                             d = planes0[4].distanceTo (pt);
+-                            assert (IMATH_INTERNAL_NAMESPACE::iszero (d, eps));
++                            assert ((IMATH_INTERNAL_NAMESPACE::iszero) (d, eps));
+                             pt = pt * mView;
+                             d = planes[4].distanceTo (pt);
+-                            assert (IMATH_INTERNAL_NAMESPACE::iszero (d, eps));
++                            assert ((IMATH_INTERNAL_NAMESPACE::iszero) (d, eps));
+ 
+                             IMATH_INTERNAL_NAMESPACE::V3f back = IMATH_INTERNAL_NAMESPACE::V3f(0, 0, -1);
+                             assert ((back ^ planes0[5].normal) > 0.0);
+@@ -151,10 +151,10 @@ testFrustumPlanes  (IMATH_INTERNAL_NAMES
+                             
+                             pt = IMATH_INTERNAL_NAMESPACE::V3f (0.0f, 0.0f, -frustum.farPlane());
+                             d = planes0[5].distanceTo (pt);
+-                            assert (IMATH_INTERNAL_NAMESPACE::iszero (d, eps));
++                            assert ((IMATH_INTERNAL_NAMESPACE::iszero) (d, eps));
+                             pt = pt * mView;
+                             d = planes[5].distanceTo (pt);
+-                            assert (IMATH_INTERNAL_NAMESPACE::iszero (d, eps));
++                            assert ((IMATH_INTERNAL_NAMESPACE::iszero) (d, eps));
+                         }
+                     }
+                 }
diff --git a/SOURCES/ilmbase-2.2.0-no_undefined.patch b/SOURCES/ilmbase-2.2.0-no_undefined.patch
new file mode 100644
index 0000000..d641907
--- /dev/null
+++ b/SOURCES/ilmbase-2.2.0-no_undefined.patch
@@ -0,0 +1,24 @@
+diff -up ilmbase-2.2.0/IlmThread/Makefile.am.no_undefined ilmbase-2.2.0/IlmThread/Makefile.am
+--- ilmbase-2.2.0/IlmThread/Makefile.am.no_undefined	2014-08-09 21:03:38.000000000 -0500
++++ ilmbase-2.2.0/IlmThread/Makefile.am	2014-11-20 07:44:27.913588030 -0600
+@@ -14,7 +14,7 @@ libIlmThread_la_LDFLAGS = -version-info
+ if LIB_SUFFIX_EXISTS
+ libIlmThread_la_LDFLAGS += -release @LIB_SUFFIX@
+ endif
+-libIlmThread_la_LIBADD = ../Iex/libIex.la
++libIlmThread_la_LIBADD = ../Iex/libIex.la $(PTHREAD_LIBS)
+ 
+ libIlmThreadincludedir = $(includedir)/OpenEXR
+ 
+diff -up ilmbase-2.2.0/IlmThread/Makefile.in.no_undefined ilmbase-2.2.0/IlmThread/Makefile.in
+--- ilmbase-2.2.0/IlmThread/Makefile.in.no_undefined	2014-08-09 23:37:24.000000000 -0500
++++ ilmbase-2.2.0/IlmThread/Makefile.in	2014-11-20 07:44:27.914587968 -0600
+@@ -251,7 +251,7 @@ libIlmThread_la_SOURCES = IlmThreadPool.
+ 
+ libIlmThread_la_LDFLAGS = -version-info @LIBTOOL_VERSION@ \
+ 	-no-undefined $(am__append_1)
+-libIlmThread_la_LIBADD = ../Iex/libIex.la
++libIlmThread_la_LIBADD = ../Iex/libIex.la $(PTHREAD_LIBS)
+ libIlmThreadincludedir = $(includedir)/OpenEXR
+ libIlmThreadinclude_HEADERS = IlmThreadPool.h IlmThread.h \
+ 			      IlmThreadSemaphore.h IlmThreadMutex.h \
diff --git a/SOURCES/ilmbase-config.h b/SOURCES/ilmbase-config.h
new file mode 100644
index 0000000..eaa5b05
--- /dev/null
+++ b/SOURCES/ilmbase-config.h
@@ -0,0 +1,10 @@
+#include <bits/wordsize.h>
+
+#if __WORDSIZE == 32
+#include "IlmBaseConfig-32.h"
+#elif __WORDSIZE == 64
+#include "IlmBaseConfig-64.h"
+#else
+#error "Unknown word size"
+#endif
+
diff --git a/SPECS/ilmbase.spec b/SPECS/ilmbase.spec
new file mode 100644
index 0000000..2c6959b
--- /dev/null
+++ b/SPECS/ilmbase.spec
@@ -0,0 +1,232 @@
+
+Name:    ilmbase
+Summary: Abstraction/convenience libraries
+Version: 2.2.0
+Release: 13%{?dist}
+
+License: BSD
+URL:	 http://www.openexr.com/
+Source0: http://download.savannah.nongnu.org/releases/openexr/ilmbase-%{version}.tar.gz
+Source1: ilmbase-config.h
+
+#BuildRequires: automake libtool
+BuildRequires: pkgconfig
+# silly rpm, won't pick up rpm dependencies for items not in it's buildroot
+# see http://bugzilla.redhat.com/866302
+BuildRequires: pkgconfig(gl) pkgconfig(glu)
+
+## upstreamable patches
+# explicitly add $(PTHREAD_LIBS) to libIlmThread linkage (helps PTHREAD_LIBS workaround in %%build)
+Patch51: ilmbase-2.2.0-no_undefined.patch
+# add Requires.private: gl glu to IlmBase.pc
+Patch53:  ilmbase-1.0.3-pkgconfig.patch
+# workaround glibc iszero macro
+# https://bugzilla.redhat.com/show_bug.cgi?id=1383552
+Patch54:  ilmbase-2.2.0-glibc_iszero.patch
+
+## upstream patches
+
+%description
+Half is a class that encapsulates the ilm 16-bit floating-point format.
+
+IlmThread is a thread abstraction library for use with OpenEXR
+and other software packages.
+
+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: Headers and libraries for building apps that use %{name} 
+Requires: %{name}%{?_isa} = %{version}-%{release}
+%description devel
+%{summary}.
+
+
+%prep
+%setup -q
+
+%patch51 -p1 -b .no_undefined
+%patch53 -p1 -b .pkgconfig
+#patch54 -p1 -b .glibc_iszero
+
+#/bootstrap
+
+
+%build
+%configure --disable-static
+
+# manually set PTHREAD_LIBS to include -lpthread until libtool bogosity is fixed,
+# https://bugzilla.redhat.com/show_bug.cgi?id=661333
+make %{?_smp_mflags} PTHREAD_LIBS="-pthread -lpthread"
+
+
+%install
+make install DESTDIR=%{buildroot}
+
+rm -fv %{buildroot}%{_libdir}/lib*.la
+# Fix multilibs header conflict
+%ifarch x86_64 i686
+%ifarch x86_64
+mv %{buildroot}%{_includedir}/OpenEXR/IlmBaseConfig.h \
+  %{buildroot}%{_includedir}/OpenEXR/IlmBaseConfig-64.h
+%else
+mv %{buildroot}%{_includedir}/OpenEXR/IlmBaseConfig.h \
+  %{buildroot}%{_includedir}/OpenEXR/IlmBaseConfig-32.h
+%endif
+install -pm 0644 %{SOURCE1} %{buildroot}%{_includedir}/OpenEXR/IlmBaseConfig.h
+%endif
+
+
+%check
+export PKG_CONFIG_PATH=%{buildroot}%{_libdir}/pkgconfig
+test "$(pkg-config --modversion IlmBase)" = "%{version}"
+# is the known-failure ix86-specific or 32bit specific? guess we'll find out -- rex
+# lt-ImathTest: testBoxAlgo.cpp:892: void {anonymous}::boxMatrixTransform(): Assertion `b21 == b2' failed.
+%ifarch %{ix86}
+make %{?_smp_mflags} check ||:
+%else
+make %{?_smp_mflags} check
+%endif
+
+
+%post -p /sbin/ldconfig
+%postun -p /sbin/ldconfig
+
+%files
+%doc AUTHORS ChangeLog COPYING NEWS README
+%{_libdir}/libHalf.so.12*
+%{_libdir}/libIex-2_2.so.12*
+%{_libdir}/libIexMath-2_2.so.12*
+%{_libdir}/libIlmThread-2_2.so.12*
+%{_libdir}/libImath-2_2.so.12*
+
+%files devel
+%{_includedir}/OpenEXR/
+%{_libdir}/lib*.so
+%{_libdir}/pkgconfig/IlmBase.pc
+
+
+%changelog
+* Wed Jan 13 2021 Josef Ridky <jridky@redhat.com> - 2.2.0-13
+- add gating.yaml file
+
+* Tue Jan 12 2021 Josef Ridky <jridky@redhat.com> - 2.2.0-12
+- fix multilib conflict (#1853147)
+
+* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.0-11
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.0-10
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
+
+* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.0-9
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.0-8
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Thu Oct 27 2016 Rex Dieter <rdieter@fedoraproject.org> - 2.2.0-7
+- drop iszero workaround, no longer needed (#1383552)
+
+* Sun Oct 16 2016 Rex Dieter <rdieter@fedoraproject.org> - 2.2.0-6
+- workaround glibc iszero macro (#1383552)
+
+* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.0-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
+
+* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.2.0-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Thu Apr 16 2015 Rex Dieter <rdieter@fedoraproject.org> 2.2.0-3
+- rebuild (gcc5)
+
+* Wed Feb 18 2015 Rex Dieter <rdieter@fedoraproject.org> 2.2.0-2
+- rebuild (gcc5)
+
+* Thu Nov 20 2014 Rex Dieter <rdieter@fedoraproject.org> 2.2.0-1
+- 2.2.0
+
+* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.1.0-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
+
+* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.1.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
+* Wed Nov 27 2013 Rex Dieter <rdieter@fedoraproject.org> 2.1.0-1
+- 2.1.0
+
+* Thu Aug 29 2013 Rex Dieter <rdieter@fedoraproject.org>  2.0.1-1
+- 2.0.1
+
+* Thu Aug 29 2013 Peter Robinson <pbrobinson@fedoraproject.org> 1.0.3-7
+- Fix spec issues, modernise spec
+
+* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.3-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
+
+* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.3-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
+
+* Mon Oct 15 2012 Rex Dieter <rdieter@fedoraproject.org> 1.0.3-4
+- ilmbase-devel missing dependency on libGLU-devel (#866302)
+
+* Sat Sep 08 2012 Rex Dieter <rdieter@fedoraproject.org> - 1.0.3-3
+- IlmBase.pc: +Requires.private: gl glu
+- -devel: drop hard-coded libGL/pkgconfig deps, let rpm autodetect now
+
+* Tue Sep 04 2012 Dan Horák <dan[at]danny.cz> 1.0.3-2
+- fix build on non-x86 arches
+
+* Sun Aug 05 2012 Rex Dieter <rdieter@fedoraproject.org> 1.0.3-1
+- ilmbase-1.0.3
+- ix86 fix courtesy of Nicolas Chauvet <kwizart@gmail.com>
+
+* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.2-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.2-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
+
+* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.2-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
+
+* Wed Dec 08 2010 Rex Dieter <rdieter@fedoraproject.org> - 1.0.2-2
+- libIlmThread missing -pthread linkage (#661115)
+- %%install: INSTALL="install -p"
+- -devel: tighten dep using %%?_isa
+
+* Wed Jul 28 2010 Rex Dieter <rdieter@fedoraproject.org> - 1.0.2-1
+- ilmbase-1.0.2
+
+* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.1-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
+
+* Mon May  4 2009 Ville Skyttä <ville.skytta at iki.fi> - 1.0.1-5
+- Fix spelling error in summary.
+
+* Tue Feb 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.1-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
+
+* Fri Dec 12 2008 Rex Dieter <rdieter@fedoraproject.org> 1.0.1-3
+- rebuild for pkgconfig deps
+
+* Fri Feb 08 2008 Rex Dieter <rdieter@fedoraproject.org> 1.0.1-2
+- respin (gcc43)
+
+* Mon Jan 07 2008 Rex Dieter <rdieter[AT]fedoraproject.org> 1.0.1-1
+- ilmbase-1.0.1
+
+* Fri Oct 12 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 1.0.0-3
+- include *.tar.sig in sources
+
+* Mon Oct 08 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 1.0.0-2
+- update %%summary
+- -devel: +Requires: libGL-devel libGLU-devel
+- make install ... INSTALL="install -p" to preserve timestamps
+
+
+* Thu Aug 09 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 1.0.0-1
+- ilmbase-1.0.0 (first try)
+