[freeimage] Add patch for libtiff 4.0 API changes
Tom Lane
tgl at fedoraproject.org
Fri Aug 3 15:05:02 UTC 2012
commit 980a5258c46d071e22c18dcdd8cc4a7e2bbf049f
Author: Tom Lane <tgl at redhat.com>
Date: Fri Aug 3 11:04:51 2012 -0400
Add patch for libtiff 4.0 API changes
FreeImage-3.10.0-libtiff4.patch | 160 +++++++++++++++++++++++++++++++++++++++
freeimage.spec | 8 ++-
2 files changed, 167 insertions(+), 1 deletions(-)
---
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 <tgl at redhat.com> 3.10.0-11
+- Add patch for libtiff 4.0 API changes
+Resolves: #845407
+
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 3.10.0-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
More information about the scm-commits
mailing list