diff --git a/OpenImageIO-dcmtk.patch b/OpenImageIO-dcmtk.patch index ab22bd7..17a37dd 100644 --- a/OpenImageIO-dcmtk.patch +++ b/OpenImageIO-dcmtk.patch @@ -1,3 +1,143 @@ +From 9e1b3f343d9cc7c217d55a1630aab15e1956b17c Mon Sep 17 00:00:00 2001 +From: Larry Gritz +Date: Tue, 16 Jan 2018 22:24:04 -0800 +Subject: [PATCH 1/3] Fix dcmtk build errors on some platforms + +Fixes #1841 +--- + src/dicom.imageio/dicominput.cpp | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/dicom.imageio/dicominput.cpp b/src/dicom.imageio/dicominput.cpp +index aebbc0859..d5a9613e3 100644 +--- a/src/dicom.imageio/dicominput.cpp ++++ b/src/dicom.imageio/dicominput.cpp +@@ -297,13 +297,13 @@ DICOMInput::read_metadata () + m_spec.attribute (name, (float)val); + // N.B. we cast to float. Will anybody care? + } else if (evr == EVR_SL || evr == EVR_IS) { +- int val; ++ Sint32 val; + if (dataset->findAndGetSint32 (tag, val).good()) +- m_spec.attribute (name, val); ++ m_spec.attribute (name, static_cast(val)); + } else if (evr == EVR_UL) { +- unsigned int val; ++ Uint32 val; + if (dataset->findAndGetUint32 (tag, val).good()) +- m_spec.attribute (name, TypeDesc::UINT32, &val); ++ m_spec.attribute (name, static_cast(val)); + } else if (evr == EVR_US) { + unsigned short val; + if (dataset->findAndGetUint16 (tag, val).good()) + +From 533c1e71a7b3a984ddcca84a5c49f706027b6929 Mon Sep 17 00:00:00 2001 +From: Larry Gritz +Date: Tue, 16 Jan 2018 23:22:40 -0800 +Subject: [PATCH 2/3] DCMTK version enforcement + +Have CMake figure out the version of DCMTK found. +Reject anything older than 3.6.1. +Older versions botched some preprocessor symbols in ways that are painful +to deal with, so since the ones that work (>= 3.6.1) date from 2011 (!), +I don't think it's too stringent a requirement. +--- + src/cmake/externalpackages.cmake | 2 +- + src/cmake/modules/FindDCMTK.cmake | 31 +++++++++++++++++++++++++------ + 2 files changed, 26 insertions(+), 7 deletions(-) + +diff --git a/src/cmake/externalpackages.cmake b/src/cmake/externalpackages.cmake +index 4c8a1f9d3..a41d7fa1c 100644 +--- a/src/cmake/externalpackages.cmake ++++ b/src/cmake/externalpackages.cmake +@@ -478,7 +478,7 @@ endif() + ########################################################################### + # DCMTK + if (USE_DICOM) +- find_package (DCMTK) ++ find_package (DCMTK 3.6.1) + if (NOT DCMTK_FOUND) + set (DCMTK_INCLUDE_DIR "") + set (DCMTK_LIBRARIES "") +diff --git a/src/cmake/modules/FindDCMTK.cmake b/src/cmake/modules/FindDCMTK.cmake +index 9b2edca1b..83f395614 100644 +--- a/src/cmake/modules/FindDCMTK.cmake ++++ b/src/cmake/modules/FindDCMTK.cmake +@@ -1,6 +1,3 @@ +-# FIXME: CMake >= 3.5 has its own FindDCMTK.cmake, so when our minimum +-# cmake is at least that, we can remove this file. +- + # Module to find DCMTK + # + # This module will first look into the directories defined by the variables: +@@ -8,9 +5,11 @@ + # + # This module defines the following variables: + # +-# DCMTK_FOUND - True if DCMTK was found. +-# DCMTK_INCLUDES - where to find DCMTK headers +-# DCMTK_LIBRARIES - list of libraries to link against when using DCMTK ++# DCMTK_FOUND True if DCMTK was found. ++# DCMTK_INCLUDES Where to find DCMTK headers ++# DCMTK_LIBRARIES List of libraries to link against when using DCMTK ++# DCMTK_VERSION Version of DCMTK (e.g., 3.6.2) ++# DCMTK_VERSION_NUMBER Int version of DCMTK (e.g., 362 for 3.6.2) + + include (FindPackageHandleStandardArgs) + include (FindPackageMessage) +@@ -53,6 +52,13 @@ foreach (COMPONENT dcmimage dcmimgle dcmdata oflog ofstd iconv) + endif () + endforeach() + ++message (STATUS "DCMTK_INCLUDE_DIR = ${DCMTK_INCLUDE_DIR}") ++if (DCMTK_INCLUDE_DIR AND EXISTS "${DCMTK_INCLUDE_DIR}/dcmtk/config/osconfig.h") ++ file(STRINGS "${DCMTK_INCLUDE_DIR}/dcmtk/config/osconfig.h" TMP REGEX "^#define PACKAGE_VERSION[ \t].*$") ++ string(REGEX MATCHALL "[0-9.]+" DCMTK_VERSION ${TMP}) ++ file(STRINGS "${DCMTK_INCLUDE_DIR}/dcmtk/config/osconfig.h" TMP REGEX "^#define PACKAGE_VERSION_NUMBER[ \t].*$") ++ string(REGEX MATCHALL "[0-9.]+" DCMTK_VERSION_NUMBER ${TMP}) ++endif () + + if (DCMTK_INCLUDE_DIR AND DCMTK_LIBRARIES) + set(DCMTK_FOUND TRUE) +@@ -60,9 +66,22 @@ if (DCMTK_INCLUDE_DIR AND DCMTK_LIBRARIES) + if (NOT DCMTK_FIND_QUIETLY) + message(STATUS "Found DCMTK library ${DCMTK_LIBRARIES}") + message(STATUS "Found DCMTK includes ${DCMTK_INCLUDES}") ++ message(STATUS "Found DCMTK short version number ${DCMTK_VERSION_NUMBER}") + endif () + else() + set(DCMTK_FOUND FALSE) + message(STATUS "DCMTK not found. Specify DCMTK_PATH to locate it") + endif() + ++include (FindPackageHandleStandardArgs) ++find_package_handle_standard_args (DCMTK ++ REQUIRED_VARS DCMTK_INCLUDE_DIR DCMTK_LIBRARIES ++ VERSION_VAR DCMTK_VERSION ++ ) ++ ++mark_as_advanced ( ++ DCMTK_INCLUDE_DIR ++ DCMTK_LIBRARIES ++ DCMTK_VERSION ++ DCMTK_VERSION_NUMBER ++ ) + +From b1eb9c97eaa11b423b5bb279e1a60e0a30490ea2 Mon Sep 17 00:00:00 2001 +From: Larry Gritz +Date: Tue, 16 Jan 2018 23:26:27 -0800 +Subject: [PATCH 3/3] dcmtk: More conservative goards on certain symbols. + +EVR_OD, EVR_UC, EVR_UR were added part way through 3.6.1 releases. +So test for them with 3.6.2 minimum not 3.6.1. + +(Thanks, Richard Shaw, for the tip on this one.) +--- + src/dicom.imageio/dicominput.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/dicom.imageio/dicominput.cpp b/src/dicom.imageio/dicominput.cpp +index d5a9613e3..23294d346 100644 --- a/src/dicom.imageio/dicominput.cpp +++ b/src/dicom.imageio/dicominput.cpp @@ -288,7 +288,7 @@ DICOMInput::read_metadata () diff --git a/OpenImageIO.spec b/OpenImageIO.spec index 377da02..b504b29 100644 --- a/OpenImageIO.spec +++ b/OpenImageIO.spec @@ -1,21 +1,18 @@ -%global subname oiio -#global beta beta1 - Name: OpenImageIO Version: 1.8.7 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Library for reading and writing images Group: Development/Libraries License: BSD URL: https://sites.google.com/site/openimageio/home -Source0: https://github.com/%{name}/%{subname}/archive/Release-%{version}.tar.gz#/%{name}-%{version}.tar.gz +Source0: https://github.com/%{name}/oiio/archive/Release-%{version}.tar.gz#/%{name}-%{version}.tar.gz # Images for test suite #Source1: oiio-images.tar.gz Patch0: OpenImageIO-man.patch -#Patch1: OpenImageIO-dcmtk.patch +Patch1: OpenImageIO-dcmtk.patch Patch2: OpenImageIO-as_needed.patch Patch3: OpenImageIO-GLES.patch @@ -30,16 +27,14 @@ BuildRequires: boost-devel BuildRequires: glew-devel BuildRequires: OpenEXR-devel ilmbase-devel BuildRequires: python2-devel -BuildRequires: libpng-devel libtiff-devel libjpeg-turbo-devel giflib-devel +BuildRequires: libpng-devel libtiff-devel libjpeg-turbo-devel openjpeg2-devel +BuildRequires: giflib-devel %if ! 0%{?rhel} BuildRequires: libwebp-devel BuildRequires: Field3D-devel %endif BuildRequires: hdf5-devel -# Builds fail for 32bit systems. -%ifnarch i686 armv7hl BuildRequires: dcmtk-devel -%endif BuildRequires: zlib-devel BuildRequires: jasper-devel BuildRequires: pugixml-devel @@ -54,7 +49,7 @@ BuildRequires: OpenColorIO-devel # We don't want to provide private python extension libs %{?filter_setup: -%filter_provides_in %{python_sitearch}/.*\.so$ +%filter_provides_in %{python2_sitearch}/.*\.so$ %filter_setup } @@ -151,6 +146,8 @@ rm -rf build/linux && mkdir -p build/linux && pushd build/linux -DBOOST_INCLUDEDIR=%{_includedir}/boost148 \ -DBOOST_LIBRARYDIR=%{_libdir}/boost148 \ %endif + -DJPEG_INCLUDE_DIR=%{_includedir} \ + -DOPENJPEG_INCLUDE_DIR=$(pkgconf --variable=includedir libopenjp2) \ -DVERBOSE=TRUE \ ../../ @@ -182,7 +179,7 @@ cp -a src/doc/*.1 %{buildroot}%{_mandir}/man1 %{_libdir}/libOpenImageIO_Util.so.* %files -n python2-openimageio -%{python_sitearch}/OpenImageIO.so +%{python2_sitearch}/OpenImageIO.so %files utils %exclude %{_bindir}/iv @@ -202,6 +199,10 @@ cp -a src/doc/*.1 %{buildroot}%{_mandir}/man1 %changelog +* Thu Jan 18 2018 Richard Shaw - 1.8.7-3 +- Add openjpeg2 to build dependencies. +- Re-enable dcmtk for 32bit arches. + * Sat Jan 13 2018 Richard Shaw - 1.8.7-2 - Rebuild for OpenColorIO 1.1.0.