diff --git a/FreeImage-3.10.0-libtiff4.patch b/FreeImage-3.10.0-libtiff4.patch new file mode 100644 index 0000000..9dfbe16 --- /dev/null +++ b/FreeImage-3.10.0-libtiff4.patch @@ -0,0 +1,160 @@ +This patch depends on functions that will appear in upstream libtiff in +4.0.3. In Fedora, it will only build against libtiff 4.0.2-5 or later. + + +diff -Naur FreeImage-3.10.0-syslibs/Source/Metadata/XTIFF.cpp FreeImage-3.10.0/Source/Metadata/XTIFF.cpp +--- FreeImage-3.10.0-syslibs/Source/Metadata/XTIFF.cpp 2012-07-29 14:15:00.057023161 -0400 ++++ FreeImage-3.10.0/Source/Metadata/XTIFF.cpp 2012-07-29 14:21:35.278415039 -0400 +@@ -214,7 +214,7 @@ + count = (short) TIFFGetTagListCount(tif); + for(i = 0; i < count; i++) { + ttag_t tag = TIFFGetTagListEntry(tif, i); +- const TIFFFieldInfo *fip; ++ const TIFFField *fip; + uint32 value_count; + int mem_alloc = 0; + void *raw_data; +@@ -229,29 +229,30 @@ + if(fip == NULL) + continue; + +- if(fip->field_passcount) { ++ if(TIFFFieldPassCount(fip)) { + if(TIFFGetField(tif, tag, &value_count, &raw_data) != 1) + continue; + } else { +- if (fip->field_readcount == TIFF_VARIABLE || fip->field_readcount == TIFF_VARIABLE2) ++ if (TIFFFieldReadCount(fip) == TIFF_VARIABLE || ++ TIFFFieldReadCount(fip) == TIFF_VARIABLE2) + value_count = 1; +- else if (fip->field_readcount == TIFF_SPP) { ++ else if (TIFFFieldReadCount(fip) == TIFF_SPP) { + uint16 spp; + TIFFGetFieldDefaulted(tif, + TIFFTAG_SAMPLESPERPIXEL, &spp); + value_count = spp; + } + else +- value_count = fip->field_readcount; +- if (fip->field_type == TIFF_ASCII +- || fip->field_readcount == TIFF_VARIABLE +- || fip->field_readcount == TIFF_VARIABLE2 +- || fip->field_readcount == TIFF_SPP ++ value_count = TIFFFieldReadCount(fip); ++ if (TIFFFieldDataType(fip) == TIFF_ASCII ++ || TIFFFieldReadCount(fip) == TIFF_VARIABLE ++ || TIFFFieldReadCount(fip) == TIFF_VARIABLE2 ++ || TIFFFieldReadCount(fip) == TIFF_SPP + || value_count > 1) { + if(TIFFGetField(tif, tag, &raw_data) != 1) + continue; + } else { +- raw_data = _TIFFmalloc(_TIFFDataSize(fip->field_type) * value_count); ++ raw_data = _TIFFmalloc(_TIFFDataSize(TIFFFieldDataType(fip)) * value_count); + mem_alloc = 1; + if(TIFFGetField(tif, tag, raw_data) != 1) { + _TIFFfree(raw_data); +@@ -271,59 +272,59 @@ + FreeImage_SetTagID(fitag, (WORD)tag); + FreeImage_SetTagKey(fitag, key); + +- switch(fip->field_type) { ++ switch(TIFFFieldDataType(fip)) { + case TIFF_BYTE: + FreeImage_SetTagType(fitag, FIDT_BYTE); +- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count); ++ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count); + FreeImage_SetTagCount(fitag, value_count); + FreeImage_SetTagValue(fitag, raw_data); + break; + + case TIFF_UNDEFINED: + FreeImage_SetTagType(fitag, FIDT_UNDEFINED); +- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count); ++ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count); + FreeImage_SetTagCount(fitag, value_count); + FreeImage_SetTagValue(fitag, raw_data); + break; + + case TIFF_SBYTE: + FreeImage_SetTagType(fitag, FIDT_SBYTE); +- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count); ++ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count); + FreeImage_SetTagCount(fitag, value_count); + FreeImage_SetTagValue(fitag, raw_data); + break; + + case TIFF_SHORT: + FreeImage_SetTagType(fitag, FIDT_SHORT); +- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count); ++ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count); + FreeImage_SetTagCount(fitag, value_count); + FreeImage_SetTagValue(fitag, raw_data); + break; + + case TIFF_SSHORT: + FreeImage_SetTagType(fitag, FIDT_SSHORT); +- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count); ++ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count); + FreeImage_SetTagCount(fitag, value_count); + FreeImage_SetTagValue(fitag, raw_data); + break; + + case TIFF_LONG: + FreeImage_SetTagType(fitag, FIDT_LONG); +- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count); ++ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count); + FreeImage_SetTagCount(fitag, value_count); + FreeImage_SetTagValue(fitag, raw_data); + break; + + case TIFF_IFD: + FreeImage_SetTagType(fitag, FIDT_IFD); +- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count); ++ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count); + FreeImage_SetTagCount(fitag, value_count); + FreeImage_SetTagValue(fitag, raw_data); + break; + + case TIFF_SLONG: + FreeImage_SetTagType(fitag, FIDT_SLONG); +- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count); ++ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count); + FreeImage_SetTagCount(fitag, value_count); + FreeImage_SetTagValue(fitag, raw_data); + break; +@@ -339,7 +340,7 @@ + rvalue[2*i+1] = rational.getDenominator(); + } + FreeImage_SetTagType(fitag, FIDT_RATIONAL); +- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count); ++ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count); + FreeImage_SetTagCount(fitag, value_count); + FreeImage_SetTagValue(fitag, rvalue); + free(rvalue); +@@ -357,7 +358,7 @@ + rvalue[2*i+1] = rational.getDenominator(); + } + FreeImage_SetTagType(fitag, FIDT_RATIONAL); +- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count); ++ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count); + FreeImage_SetTagCount(fitag, value_count); + FreeImage_SetTagValue(fitag, rvalue); + free(rvalue); +@@ -366,14 +367,14 @@ + + case TIFF_FLOAT: + FreeImage_SetTagType(fitag, FIDT_FLOAT); +- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count); ++ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count); + FreeImage_SetTagCount(fitag, value_count); + FreeImage_SetTagValue(fitag, raw_data); + break; + + case TIFF_DOUBLE: + FreeImage_SetTagType(fitag, FIDT_DOUBLE); +- FreeImage_SetTagLength(fitag, TIFFDataWidth(fip->field_type) * value_count); ++ FreeImage_SetTagLength(fitag, TIFFDataWidth(TIFFFieldDataType(fip)) * value_count); + FreeImage_SetTagCount(fitag, value_count); + FreeImage_SetTagValue(fitag, raw_data); + break; diff --git a/freeimage.spec b/freeimage.spec index 2b2c58c..9c67e62 100644 --- a/freeimage.spec +++ b/freeimage.spec @@ -3,7 +3,7 @@ Name: freeimage Version: 3.10.0 -Release: 10%{?dist} +Release: 11%{?dist} Summary: Multi-format image decoder library Group: System Environment/Libraries # freeimage is dual-licensed, see Whatsnew.txt (search for license) or: @@ -14,6 +14,7 @@ Source0: http://downloads.sourceforge.net/%{name}/FreeImage%{_version}.zi Patch0: FreeImage-3.10.0-syslibs.patch Patch1: FreeImage-3.10.0-doxygen.patch Patch2: FreeImage-3.10.0-libpng15.patch +Patch3: FreeImage-3.10.0-libtiff4.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: libjpeg-devel libpng-devel libtiff-devel OpenEXR-devel BuildRequires: libmng-devel openjpeg-devel doxygen @@ -39,6 +40,7 @@ developing applications that use %{name}. %patch0 -p1 -z .syslibs %patch1 -p1 %patch2 -p0 +%patch3 -p1 touch -r Source/FreeImage.h.syslibs Source/FreeImage.h # remove all included libs to make sure these don't get used during compile @@ -116,6 +118,10 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Fri Aug 3 2012 Tom Lane 3.10.0-11 +- Add patch for libtiff 4.0 API changes +Resolves: #845407 + * Thu Jul 19 2012 Fedora Release Engineering - 3.10.0-10 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild