From 4f1bb379dda490cb0d859e69d9b3e39a0c2a30b4 Mon Sep 17 00:00:00 2001 From: Neal Gompa Date: Sun, 4 Dec 2022 15:49:16 -0500 Subject: [PATCH] Add patches for upgraded dependency compatibility - Add patch for ImageMagick 7 compatibility - Add patch for OpenEXR 3+ compatibility --- ...-CMake-Config-Mode-files-for-OpenEXR.patch | 35 ++++++++++++ pfstools-ImageMagick7.patch | 56 +++++++++++++++++++ pfstools.spec | 23 ++++---- 3 files changed, 102 insertions(+), 12 deletions(-) create mode 100644 0001-Prefer-upstream-CMake-Config-Mode-files-for-OpenEXR.patch create mode 100644 pfstools-ImageMagick7.patch diff --git a/0001-Prefer-upstream-CMake-Config-Mode-files-for-OpenEXR.patch b/0001-Prefer-upstream-CMake-Config-Mode-files-for-OpenEXR.patch new file mode 100644 index 0000000..270269e --- /dev/null +++ b/0001-Prefer-upstream-CMake-Config-Mode-files-for-OpenEXR.patch @@ -0,0 +1,35 @@ +From 95c5e87b8fe19cc6d067e1c2ce6239a5ba413a1c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stefan=20Br=C3=BCns?= +Date: Mon, 3 Jan 2022 06:09:25 +0100 +Subject: [PATCH] Prefer upstream CMake Config Mode files for OpenEXR + +The bundled FindOpenEXR.cmake Find Module is quite outdated, import +the OpenEXR target from its upstream definition. +--- + CMakeLists.txt | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index b2923cf..a33293b 100755 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -106,7 +106,15 @@ OPTION(WITH_OpenEXR "Compile with OpenEXR library" ON) + + if( WITH_OpenEXR ) + +-find_package (OpenEXR) ++find_package (OpenEXR NO_MODULE) ++if( TARGET OpenEXR::OpenEXR ) ++ set( OPENEXR_FOUND TRUE ) ++ set( OPENEXR_LIBRARIES OpenEXR::OpenEXR ) ++ get_target_property( OPENEXR_INCLUDE_DIR OpenEXR::OpenEXR INTERFACE_INCLUDE_DIRECTORIES ) ++else () ++ find_package (OpenEXR MODULE) ++endif () ++ + if( NOT OPENEXR_FOUND ) + MESSAGE( STATUS "OpenEXR not found. The following command will not be + compiled: pfsinexr pfsoutexr. " ) +-- +2.34.1 + diff --git a/pfstools-ImageMagick7.patch b/pfstools-ImageMagick7.patch new file mode 100644 index 0000000..18e01ce --- /dev/null +++ b/pfstools-ImageMagick7.patch @@ -0,0 +1,56 @@ +diff --git a/src/fileformat/pfsinimgmagick.cpp b/src/fileformat/pfsinimgmagick.cpp +index 5dab440..f4358ce 100644 +--- a/src/fileformat/pfsinimgmagick.cpp ++++ b/src/fileformat/pfsinimgmagick.cpp +@@ -35,6 +35,7 @@ + + #define PROG_NAME "pfsinimgmagick" + ++using namespace Magick; + + class QuietException + { +@@ -114,7 +115,11 @@ void readFrames( int argc, char* argv[] ) + Magick::Image imImage( ff.fileName ); + + VERBOSE_STR << "input image gamma: " << imImage.gamma() << std::endl; ++#if MagickLibVersion >= 0x700 ++ bool hasAlpha = imImage.alpha(); ++#else + bool hasAlpha = imImage.matte(); ++#endif + if( hasAlpha ) + VERBOSE_STR << "alpha channel found" << std::endl; + +@@ -129,17 +134,30 @@ void readFrames( int argc, char* argv[] ) + + // Copy line by line to pfs::Frame + int pixInd = 0; +- const float maxValue = (float)(1<= 0x700 ++ const Magick::Quantum *pixels = ++#else + const Magick::PixelPacket *pixels = ++#endif + imImage.getConstPixels( 0, r, imImage.columns(), 1 ); + + for( int c = 0; c < imImage.columns(); c++ ) { ++#if MagickLibVersion >= 0x700 ++ (*X)(pixInd) = (float)MagickCore::GetPixelRed(imImage.image(), pixels) / maxValue; ++ (*Y)(pixInd) = (float)MagickCore::GetPixelGreen(imImage.image(), pixels) / maxValue; ++ (*Z)(pixInd) = (float)MagickCore::GetPixelBlue(imImage.image(), pixels) / maxValue; ++ if( alpha != NULL ) ++ (*alpha)(pixInd) = (float)MagickCore::GetPixelAlpha(imImage.image(), pixels) / maxValue; ++ pixels += MagickCore::GetPixelChannels(imImage.image()); ++#else + (*X)(pixInd) = (float)pixels[c].red / maxValue; + (*Y)(pixInd) = (float)pixels[c].green / maxValue; + (*Z)(pixInd) = (float)pixels[c].blue / maxValue; + if( alpha != NULL ) + (*alpha)(pixInd) = (float)pixels[c].opacity / maxValue; ++#endif + pixInd++; + } + } diff --git a/pfstools.spec b/pfstools.spec index 788801f..8b06198 100644 --- a/pfstools.spec +++ b/pfstools.spec @@ -1,27 +1,21 @@ Name: pfstools Version: 2.2.0 -Release: 6%{?dist} +Release: 7%{?dist} Summary: Programs for handling high-dynamic range images License: GPLv2+ URL: http://pfstools.sourceforge.net/ Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tgz Patch0: pfstools-freeglut.patch +# From https://sourceforge.net/p/pfstools/bugs/54 +Patch1: 0001-Prefer-upstream-CMake-Config-Mode-files-for-OpenEXR.patch +# From openSUSE +Patch2: pfstools-ImageMagick7.patch BuildRequires: make BuildRequires: cmake BuildRequires: libtiff-devel -# As of OpenEXR 3 upstream has significantly reorganized the libraries -# including splitting out imath as a standalone library (which this project may -# or may not need). Please see -# https://github.com/AcademySoftwareFoundation/Imath/blob/master/docs/PortingGuide2-3.md -# for porting details and encourage upstream to support it. For now a 2.x -# compat package is provided. -%if 0%{?fedora} > 33 -BuildRequires: cmake(OpenEXR) < 3 -%else -BuildRequires: OpenEXR-devel -%endif +BuildRequires: cmake(OpenEXR) BuildRequires: octave-devel BuildRequires: libGL-devel BuildRequires: ImageMagick-devel @@ -313,6 +307,11 @@ export CXXFLAGS="%{optflags} -std=gnu++11" %{_includedir}/pfs %changelog +* Sun Dec 04 2022 Neal Gompa - 2.2.0-7 +- Add patches for upgraded dependency compatibility + + Add patch for ImageMagick 7 compatibility + + Add patch for OpenEXR 3+ compatibility + * Tue Aug 23 2022 Mamoru TASAKA - 2.2.0-6 - Rebuild for gsl-2.7.1