[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