From f42f60ac2c5d743e22d00359abcaa2b3a794a5a5 Mon Sep 17 00:00:00 2001 From: Jakub Bogusz Date: Tue, 22 Aug 2023 22:37:42 +0200 Subject: [PATCH] - updated to 2.4.14.0 (new sonames); field3d and socket plugins are gone, added openvdb --- OpenImageIO-system-libcineon.patch | 32 ++++++--- OpenImageIO.spec | 108 +++++++++++++++++------------ no-clang-format.patch | 66 +++--------------- 3 files changed, 95 insertions(+), 111 deletions(-) diff --git a/OpenImageIO-system-libcineon.patch b/OpenImageIO-system-libcineon.patch index 0cf62bf..61d6dd7 100644 --- a/OpenImageIO-system-libcineon.patch +++ b/OpenImageIO-system-libcineon.patch @@ -1,16 +1,19 @@ -diff -urNp -x '*.orig' oiio-Release-2.0.13.org/src/cineon.imageio/CMakeLists.txt oiio-Release-2.0.13/src/cineon.imageio/CMakeLists.txt ---- oiio-Release-2.0.13.org/src/cineon.imageio/CMakeLists.txt 2019-12-03 23:28:14.000000000 +0100 -+++ oiio-Release-2.0.13/src/cineon.imageio/CMakeLists.txt 2021-03-07 10:21:59.867138452 +0100 -@@ -1,4 +1,2 @@ +--- oiio-2.4.14.0/src/cineon.imageio/CMakeLists.txt.orig 2023-08-21 21:11:54.336404839 +0200 ++++ oiio-2.4.14.0/src/cineon.imageio/CMakeLists.txt 2023-08-21 21:26:52.004875084 +0200 +@@ -3,9 +3,7 @@ + # https://github.com/OpenImageIO/oiio + add_oiio_plugin (cineoninput.cpp - libcineon/Cineon.cpp libcineon/OutStream.cpp libcineon/Codec.cpp -- libcineon/Reader.cpp libcineon/Writer.cpp libcineon/CineonHeader.cpp +- libcineon/Reader.cpp libcineon/CineonHeader.cpp - libcineon/ElementReadStream.cpp libcineon/InStream.cpp) + LINK_LIBRARIES cineon) -diff -urNp -x '*.orig' oiio-Release-2.0.13.org/src/cineon.imageio/cineoninput.cpp oiio-Release-2.0.13/src/cineon.imageio/cineoninput.cpp ---- oiio-Release-2.0.13.org/src/cineon.imageio/cineoninput.cpp 2019-12-03 23:28:14.000000000 +0100 -+++ oiio-Release-2.0.13/src/cineon.imageio/cineoninput.cpp 2021-03-07 10:21:59.867138452 +0100 -@@ -28,7 +28,7 @@ + + # Note: OIIO doesn't support cineon output, so we don't compile + # libcineon/Writer.cpp +--- oiio-2.4.14.0/src/cineon.imageio/cineoninput.cpp.orig 2023-08-01 22:15:24.000000000 +0200 ++++ oiio-2.4.14.0/src/cineon.imageio/cineoninput.cpp 2023-08-22 17:46:26.265122755 +0200 +@@ -4,7 +4,7 @@ #include @@ -19,3 +22,14 @@ diff -urNp -x '*.orig' oiio-Release-2.0.13.org/src/cineon.imageio/cineoninput.cp #include #include +@@ -337,8 +337,8 @@ CineonInput::open(const std::string& nam + // FIXME: do something about the time zone + } + { +- char filmedge[17]; +- m_cin.header.FilmEdgeCode(filmedge, sizeof(filmedge)); ++ char filmedge[3+3+3+10+10+1]; // should be 17 (2+2+2+6+4+NUL), but be safe in case of out-of-range values ++ m_cin.header.FilmEdgeCode(filmedge); + if (filmedge[0]) + m_spec.attribute("cineon:FilmEdgeCode", filmedge); + } diff --git a/OpenImageIO.spec b/OpenImageIO.spec index ce57cc9..5c893df 100644 --- a/OpenImageIO.spec +++ b/OpenImageIO.spec @@ -1,6 +1,6 @@ # TODO: -# - OpenVDB >= 5.0 https://www.openvdb.org/ # - Nuke >= 7.0? https://www.foundry.com/products/nuke/ (proprietary) +# - R3DSDK? https://www.red.com/downloads/r3d-sdk (proprietary) # - package fonts? # /usr/share/fonts/OpenImageIO/DroidSans-Bold.ttf # /usr/share/fonts/OpenImageIO/DroidSans.ttf @@ -15,64 +15,78 @@ # Conditional build: %bcond_without ocio # OpenColorIO support in library %bcond_without opencv # OpenCV support in library -%bcond_with tbb # Threading Building Blocks +%bcond_without openvdb # OpenVDB plugin +%bcond_with qt6 # Qt6 instead of Qt5 +%bcond_without tbb # Threading Building Blocks # %ifarch i386 i486 # https://github.com/OpenImageIO/oiio/issues/583 %undefine with_tbb %endif -%ifnarch %{ix86} %{x8664} %{arm} ia64 ppc ppc64 +%ifnarch %{ix86} %{x8664} %{arm} aarch64 ia64 ppc ppc64 %undefine with_tbb %endif +%if %{without tbb} +%undefine with_openvdb +%endif # Summary: Library for reading and writing images Summary(pl.UTF-8): Biblioteka do odczytu i zapisu obrazów Name: OpenImageIO -Version: 2.3.21.0 -Release: 7 -License: BSD +Version: 2.4.14.0 +Release: 1 +License: Apache v2.0 Group: Libraries #Source0Download: https://github.com/OpenImageIO/oiio/releases Source0: https://github.com/OpenImageIO/oiio/archive/v%{version}/%{name}-%{version}.tar.gz -# Source0-md5: a5def3fc51a35b09f251bc32a11c24da +# Source0-md5: cc0e320302622783dfe16ac6ae1946b3 Patch2: %{name}-system-libcineon.patch Patch3: no-clang-format.patch URL: https://github.com/OpenImageIO/oiio -BuildRequires: Field3D-devel +BuildRequires: Imath-devel >= 3.0.0 %{?with_ocio:BuildRequires: OpenColorIO-devel} BuildRequires: OpenEXR-devel >= 3.0.0 BuildRequires: OpenGL-devel +%if %{with qt6} +BuildRequires: Qt6Core-devel >= 6 +BuildRequires: Qt6Gui-devel >= 6 +BuildRequires: Qt6OpenGLWidgets-devel >= 6 +BuildRequires: Qt6Widgets-devel >= 6 +%else BuildRequires: Qt5Core-devel >= 5.6 BuildRequires: Qt5Gui-devel >= 5.6 BuildRequires: Qt5OpenGL-devel >= 5.6 BuildRequires: Qt5Widgets-devel >= 5.6 +%endif # filesystem, regex, system, thread -BuildRequires: boost-devel >= 1.53 -BuildRequires: boost-python3-devel >= 1.53 +BuildRequires: boost-devel >= 1.66 +BuildRequires: boost-python3-devel >= 1.66 BuildRequires: bzip2-devel BuildRequires: cmake >= 3.12 BuildRequires: dcmtk-devel >= 3.6.1 -BuildRequires: ffmpeg-devel >= 2.6 +BuildRequires: ffmpeg-devel >= 3.0 BuildRequires: freetype-devel >= 2.0 -BuildRequires: giflib-devel +BuildRequires: giflib-devel >= 5.0 BuildRequires: glew-devel >= 1.5.1 BuildRequires: hdf5-devel BuildRequires: jasper-devel BuildRequires: libcineon-devel -BuildRequires: libheif-devel +BuildRequires: libfmt-devel >= 9.0 +BuildRequires: libheif-devel >= 1.7 BuildRequires: libjpeg-devel BuildRequires: libpng-devel BuildRequires: libraw-devel >= 0.18 BuildRequires: libstdc++-devel >= 6:4.7 -BuildRequires: libtiff-devel >= 3.9 +BuildRequires: libtiff-devel >= 4.0 BuildRequires: libwebp-devel -%{?with_opencv:BuildRequires: opencv-devel >= 2.0} +%{?with_opencv:BuildRequires: opencv-devel >= 3.0} BuildRequires: openjpeg2-devel >= 2.4 +%{?with_openvdb:BuildRequires: openvdb-devel >= 5.0} BuildRequires: ptex-devel >= 2.1 -BuildRequires: pugixml-devel +BuildRequires: pugixml-devel >= 1.8 BuildRequires: python3-devel >= 1:2.7 BuildRequires: python3-pybind11 >= 2.2.0 -BuildRequires: robin-map-devel +BuildRequires: robin-map-devel >= 0.6.2 BuildRequires: rpm-build >= 4.6 BuildRequires: rpmbuild(macros) >= 1.605 BuildRequires: squish-devel >= 1.10 @@ -80,6 +94,7 @@ BuildRequires: squish-devel >= 1.10 BuildRequires: txt2man BuildRequires: zlib-devel Requires: OpenEXR >= 3.0.0 +Obsoletes: OpenImageIO-plugin-field3d < 2.4 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %description @@ -91,7 +106,7 @@ implemented by DLL/DSO plugins. Currently there are format plugins for: TIFF, JPEG/JFIF, OpenEXR, PNG, HDR/RGBE, Targa, JPEG-2000, DPX, Cineon, FITS, BMP, ICO, RMan Zfile, -Softimage PIC, DDS, SGI, PNM/PPM/PGM/PBM, Field3d, WebP. +Softimage PIC, DDS, SGI, PNM/PPM/PGM/PBM, OpenVDB, WebP. %description -l pl.UTF-8 OpenImageIO to biblioteka do odczytu i zapisu obrazów oraz wiele @@ -102,13 +117,14 @@ są implementowane przez wtyczki DLL/DSO. Obecnie istnieją wtyczki obsługujące formaty: TIFF, JPEG/JFIF, OpenEXR, PNG, HDR/RGBE, Targa, JPEG-2000, DPX, Cineon, FITS, BMP, ICO, -RMan Zfile, Softimage PIC, DDS, SGI, PNM/PPM/PGM/PBM, Field3d, WebP. +RMan Zfile, Softimage PIC, DDS, SGI, PNM/PPM/PGM/PBM, OpenVDB, WebP. %package devel Summary: Header files for OpenImageIO library Summary(pl.UTF-8): Pliki nagłówkowe biblioteki OpenImageIO Group: Development/Libraries Requires: %{name} = %{version}-%{release} +Requires: libfmt-devel >= 9.0 Requires: libstdc++-devel >= 6:4.7 %description devel @@ -173,7 +189,7 @@ Summary: FFmpeg plugin for OpenImageIO library Summary(pl.UTF-8): Wtyczka FFmpeg dla biblioteki OpenImageIO Group: Libraries Requires: %{name} = %{version}-%{release} -Requires: ffmpeg-libs >= 2.6 +Requires: ffmpeg-libs >= 3.0 %description plugin-ffmpeg OpenImageIO plugin to read FFmpeg files. @@ -181,23 +197,12 @@ OpenImageIO plugin to read FFmpeg files. %description plugin-ffmpeg -l pl.UTF-8 Wtyczka biblioteki OpenImageIO czytająca pliki FFmpeg. -%package plugin-field3d -Summary: Field3D plugin for OpenImageIO library -Summary(pl.UTF-8): Wtyczka Field3D dla biblioteki OpenImageIO -Group: Libraries -Requires: %{name} = %{version}-%{release} - -%description plugin-field3d -OpenImageIO plugin to read Field3D files. - -%description plugin-field3d -l pl.UTF-8 -Wtyczka biblioteki OpenImageIO czytająca pliki Field3D. - %package plugin-gif Summary: Gif plugin for OpenImageIO library Summary(pl.UTF-8): Wtyczka Gif dla biblioteki OpenImageIO Group: Libraries Requires: %{name} = %{version}-%{release} +Requires: giflib >= 5.0 %description plugin-gif OpenImageIO plugin to read GIF files. @@ -210,6 +215,7 @@ Summary: HEIF plugin for OpenImageIO library Summary(pl.UTF-8): Wtyczka HEIF dla biblioteki OpenImageIO Group: Libraries Requires: %{name} = %{version}-%{release} +Requires: libheif >= 1.7 %description plugin-heif OpenImageIO plugin to read HEIF files. @@ -268,6 +274,19 @@ OpenImageIO plugin to read and write OpenEXR files. %description plugin-openexr -l pl.UTF-8 Wtyczka biblioteki OpenImageIO czytająca i zapisująca pliki OpenEXR. +%package plugin-openvdb +Summary: OpenVDB plugin for OpenImageIO library +Summary(pl.UTF-8): Wtyczka OpenVDB dla biblioteki OpenImageIO +Group: Libraries +Requires: %{name} = %{version}-%{release} +Requires: openvdb >= 5.0 + +%description plugin-openvdb +OpenImageIO plugin to read OpenVDB files. + +%description plugin-openvdb -l pl.UTF-8 +Wtyczka biblioteki OpenImageIO czytająca pliki OpenVDB. + %package plugin-png Summary: PNG plugin for OpenImageIO library Summary(pl.UTF-8): Wtyczka PNG dla biblioteki OpenImageIO @@ -335,7 +354,7 @@ Summary: TIFF plugin for OpenImageIO library Summary(pl.UTF-8): Wtyczka TIFF dla biblioteki OpenImageIO Group: Libraries Requires: %{name} = %{version}-%{release} -Requires: libtiff >= 3.9 +Requires: libtiff >= 4.0 %description plugin-tiff OpenImageIO plugin to read and write TIFF files. @@ -380,8 +399,6 @@ Wiązanie Pythona do biblioteki OpenImageIO. %patch2 -p1 %patch3 -p1 -%{__rm} -r src/dds.imageio/squish - %build install -d build cd build @@ -389,14 +406,12 @@ cd build -DCMAKE_INSTALL_MANDIR=%{_mandir}/man1 \ -DEMBEDPLUGINS=OFF \ -DINCLUDE_INSTALL_DIR=%{_includedir}/%{name} \ + -DINTERNALIZE_FMT=OFF \ -DLIB_INSTALL_DIR:PATH=%{_libdir} \ -DBUILD_TESTING=OFF \ %ifarch i386 i486 -DNOTHREADS=1 \ %endif - -DENABLE_FIELD3D=ON \ - -DPYBIND11_HOME:PATH=%{py_incdir} \ - -DPYLIB_INSTALL_DIR=%{py_sitedir} \ -DPYTHON_VERSION=%{py3_ver} \ -DUSE_EXTERNAL_PUGIXML=ON \ -DSTOP_ON_WARNING=OFF \ @@ -427,7 +442,7 @@ rm -rf $RPM_BUILD_ROOT %files %defattr(644,root,root,755) -%doc CHANGES.md CREDITS.md LICENSE.md README.md +%doc CHANGES.md CREDITS.md GOVERNANCE.md LICENSE-BSD.md README.md RELICENSING.md %attr(755,root,root) %{_bindir}/iconvert %attr(755,root,root) %{_bindir}/idiff %attr(755,root,root) %{_bindir}/igrep @@ -435,9 +450,9 @@ rm -rf $RPM_BUILD_ROOT %attr(755,root,root) %{_bindir}/maketx %attr(755,root,root) %{_bindir}/oiiotool %attr(755,root,root) %{_libdir}/libOpenImageIO.so.*.*.* -%attr(755,root,root) %ghost %{_libdir}/libOpenImageIO.so.2.3 +%attr(755,root,root) %ghost %{_libdir}/libOpenImageIO.so.2.4 %attr(755,root,root) %{_libdir}/libOpenImageIO_Util.so.*.*.* -%attr(755,root,root) %ghost %{_libdir}/libOpenImageIO_Util.so.2.3 +%attr(755,root,root) %ghost %{_libdir}/libOpenImageIO_Util.so.2.4 %attr(755,root,root) %{_libdir}/bmp.imageio.so %attr(755,root,root) %{_libdir}/fits.imageio.so %attr(755,root,root) %{_libdir}/hdr.imageio.so @@ -445,7 +460,6 @@ rm -rf $RPM_BUILD_ROOT %attr(755,root,root) %{_libdir}/pnm.imageio.so %attr(755,root,root) %{_libdir}/rla.imageio.so %attr(755,root,root) %{_libdir}/sgi.imageio.so -%attr(755,root,root) %{_libdir}/socket.imageio.so %attr(755,root,root) %{_libdir}/softimage.imageio.so %attr(755,root,root) %{_libdir}/targa.imageio.so %attr(755,root,root) %{_libdir}/zfile.imageio.so @@ -486,10 +500,6 @@ rm -rf $RPM_BUILD_ROOT %defattr(644,root,root,755) %attr(755,root,root) %{_libdir}/ffmpeg.imageio.so -%files plugin-field3d -%defattr(644,root,root,755) -%attr(755,root,root) %{_libdir}/field3d.imageio.so - %files plugin-gif %defattr(644,root,root,755) %attr(755,root,root) %{_libdir}/gif.imageio.so @@ -514,6 +524,12 @@ rm -rf $RPM_BUILD_ROOT %defattr(644,root,root,755) %attr(755,root,root) %{_libdir}/openexr.imageio.so +%if %{with openvdb} +%files plugin-openvdb +%defattr(644,root,root,755) +%attr(755,root,root) %{_libdir}/openvdb.imageio.so +%endif + %files plugin-png %defattr(644,root,root,755) %attr(755,root,root) %{_libdir}/png.imageio.so diff --git a/no-clang-format.patch b/no-clang-format.patch index a474243..3935380 100644 --- a/no-clang-format.patch +++ b/no-clang-format.patch @@ -1,57 +1,11 @@ ---- oiio-2.3.12.0/src/cmake/compiler.cmake.orig 2022-02-05 17:02:29.480576995 +0100 -+++ oiio-2.3.12.0/src/cmake/compiler.cmake 2022-02-05 17:03:59.121664048 +0100 -@@ -432,54 +432,6 @@ - - - ########################################################################### --# clang-format options --# --# clang-format is a source code reformatter that is part of the LLVM tools. --# It can be used to check adherence to project code formatting rules and --# correct any deviations. If clang-format is found on the system, a --# "clang-format" build target will trigger a reformatting. --# --# Note: skip all of this checking, setup, and cmake-format target if this --# is being built as a subproject. --if (PROJECT_IS_TOP_LEVEL) -- set (CLANG_FORMAT_EXE_HINT "" CACHE PATH "clang-format executable's directory (will search if not specified") -- set (CLANG_FORMAT_INCLUDES "src/*.h" "src/*.cpp" -- CACHE STRING "Glob patterns to include for clang-format") -- set (CLANG_FORMAT_EXCLUDES "*pugixml*" "*SHA1*" "*/farmhash.cpp" -- "src/dpx.imageio/libdpx/*" -- "src/cineon.imageio/libcineon/*" -- "src/dds.imageio/squish/*" -- "src/gif.imageio/gif.h" -- "src/hdr.imageio/rgbe.cpp" -- "src/libutil/stb_sprintf.h" -- CACHE STRING "Glob patterns to exclude for clang-format") -- find_program (CLANG_FORMAT_EXE -- NAMES clang-format bin/clang-format -- HINTS ${CLANG_FORMAT_EXE_HINT} ENV CLANG_FORMAT_EXE_HINT -- ENV LLVM_DIRECTORY -- NO_DEFAULT_PATH -- DOC "Path to clang-format executable") -- find_program (CLANG_FORMAT_EXE NAMES clang-format bin/clang-format) -- if (CLANG_FORMAT_EXE) -- message (STATUS "clang-format found: ${CLANG_FORMAT_EXE}") -- # Start with the list of files to include when formatting... -- file (GLOB_RECURSE FILES_TO_FORMAT ${CLANG_FORMAT_INCLUDES}) -- # ... then process any list of excludes we are given -- foreach (_pat ${CLANG_FORMAT_EXCLUDES}) -- file (GLOB_RECURSE _excl ${_pat}) -- list (REMOVE_ITEM FILES_TO_FORMAT ${_excl}) -- endforeach () -- #message (STATUS "clang-format file list: ${FILES_TO_FORMAT}") -- file (COPY ${CMAKE_CURRENT_SOURCE_DIR}/.clang-format -- DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) -- add_custom_target (clang-format -- COMMAND "${CLANG_FORMAT_EXE}" -i -style=file ${FILES_TO_FORMAT} ) -- else () -- message (STATUS "clang-format not found.") -- endif () --endif () -- --########################################################################### - # Another way to sneak in custom compiler and DSO linking flags. +--- oiio-2.4.14.0/src/cmake/compiler.cmake.orig 2023-08-21 21:27:17.401404166 +0200 ++++ oiio-2.4.14.0/src/cmake/compiler.cmake 2023-08-21 21:28:41.787613674 +0200 +@@ -508,7 +508,7 @@ endif () # - set (EXTRA_CPP_ARGS "" CACHE STRING "Extra C++ command line definitions") + # Note: skip all of this checking, setup, and cmake-format target if this + # is being built as a subproject. +-if (PROJECT_IS_TOP_LEVEL) ++if (FALSE) + set (CLANG_FORMAT_EXE_HINT "" CACHE PATH "clang-format executable's directory (will search if not specified") + set (CLANG_FORMAT_INCLUDES "src/*.h" "src/*.cpp" + CACHE STRING "Glob patterns to include for clang-format") -- 2.44.0