[packages/libgdiplus] - updated to 3.6 - removed obsolete link,lt,libpng patches - added giflib patch (update for giflib 5

qboosh qboosh at pld-linux.org
Sun Aug 31 18:25:37 CEST 2014


commit 2a9682721087988a851da4092ab44df5ce8a7347
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Sun Aug 31 18:26:03 2014 +0200

    - updated to 3.6
    - removed obsolete link,lt,libpng patches
    - added giflib patch (update for giflib 5.1 API)

 libgdiplus-giflib.patch | 184 ++++++++++++++++++++++++++++++++++++++++++++++++
 libgdiplus-libpng.patch | 164 ------------------------------------------
 libgdiplus-link.patch   |  12 ----
 libgdiplus-lt.patch     |  31 --------
 libgdiplus.spec         |  47 +++++--------
 5 files changed, 200 insertions(+), 238 deletions(-)
---
diff --git a/libgdiplus.spec b/libgdiplus.spec
index 1b1a1f2..c993538 100644
--- a/libgdiplus.spec
+++ b/libgdiplus.spec
@@ -1,34 +1,26 @@
 #
 # Conditional build:
-%bcond_with	internal_cairo	# internal cairo 1.6.4 instead of system one
-%bcond_with	pango		# use pango for text rendering (experimental; system cairo only)
+%bcond_with	pango		# use pango for text rendering (experimental and unsupported)
 #
 # WARNING! libgdiplus will not work if compiled with -fomit-frame-pointer
 #
 Summary:	An Open Source implementation of the GDI+ API
 Summary(pl.UTF-8):	Otwarta implementacja API GDI+
 Name:		libgdiplus
-Version:	2.10.9
-Release:	2
-%if %{with internal_cairo}
-License:	LGPL v2.1 or MPL 1.1
-%else
-License:	MIT X11
-%endif
+Version:	3.6
+Release:	1
+License:	MIT
 Group:		Libraries
-# latest downloads summary at http://ftp.novell.com/pub/mono/sources-stable/
-Source0:	http://download.mono-project.com/sources/libgdiplus/%{name}-%{version}.tar.bz2
-# Source0-md5:	b4615c14584b5d73cbb9757c28887654
-Patch0:		%{name}-link.patch
-Patch1:		%{name}-lt.patch
-Patch2:		%{name}-libpng.patch
+Source0:	http://download.mono-project.com/sources/libgdiplus/%{name}-%{version}.tar.gz
+# Source0-md5:	c20ae43bdff075acadc7c345b20b7e02
+Patch0:		%{name}-giflib.patch
 URL:		http://www.mono-project.com/
 BuildRequires:	autoconf >= 2.54
 BuildRequires:	automake >= 1:1.7
-%{!?with_internal_cairo:BuildRequires:	cairo-devel >= 1.6.4}
+BuildRequires:	cairo-devel >= 1.6.4
 BuildRequires:	fontconfig-devel
 BuildRequires:	freetype-devel >= 2.0
-BuildRequires:	giflib-devel
+BuildRequires:	giflib-devel >= 5.1
 BuildRequires:	glib2-devel >= 1:2.2.3
 BuildRequires:	gtk+2-devel
 BuildRequires:	libexif-devel
@@ -38,8 +30,9 @@ BuildRequires:	libtiff-devel
 BuildRequires:	libtool
 %{?with_pango:BuildRequires:	pango-devel >= 1:1.10}
 BuildRequires:	pkgconfig
-BuildRequires:	xorg-lib-libXrender-devel
-%{!?with_internal_cairo:Requires:	cairo >= 1.6.4}
+BuildRequires:	sed >= 4.0
+BuildRequires:	xorg-lib-libX11-devel
+Requires:	cairo >= 1.6.4
 Requires:	glib2 >= 1:2.2.3
 %{?with_pango:Requires:	pango >= 1:1.10}
 BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
@@ -61,7 +54,7 @@ Summary:	Development files for libgdiplus
 Summary(pl.UTF-8):	Pliki programistyczne libgdiplus
 Group:		Development/Libraries
 Requires:	%{name} = %{version}-%{release}
-%{!?with_internal_cairo:Requires:	cairo-devel >= 1.4.12}
+Requires:	cairo-devel >= 1.6.4
 Requires:	fontconfig-devel
 Requires:	freetype-devel >= 2.0
 Requires:	giflib-devel
@@ -94,25 +87,17 @@ Statyczna biblioteka libgdiplus.
 %prep
 %setup -q
 %patch0 -p1
-%patch1 -p1
-%patch2 -p0
-%{__sed} -e 's/png14/png/g' -i configure.in
 
-%build
-cd cairo
-%{__aclocal}
-%{__autoconf}
-%{__autoheader}
-%{__automake}
-cd -
+# prefer default libpng instead of libpng14 > libpng12 > default
+%{__sed} -e 's/libpng14/libpng/g' -i configure.ac
 
+%build
 %{__libtoolize}
 %{__aclocal}
 %{__autoconf}
 %{__autoheader}
 %{__automake}
 %configure \
-	%{!?with_internal_cairo:--with-cairo=system} \
 	%{?with_pango:--with-pango}
 
 %{__make}
diff --git a/libgdiplus-giflib.patch b/libgdiplus-giflib.patch
new file mode 100644
index 0000000..d70376d
--- /dev/null
+++ b/libgdiplus-giflib.patch
@@ -0,0 +1,184 @@
+--- libgdiplus-3.6/src/gifcodec.c.orig	2014-08-27 18:45:05.000000000 +0200
++++ libgdiplus-3.6/src/gifcodec.c	2014-08-31 18:12:20.853094147 +0200
+@@ -39,9 +39,6 @@
+ 
+ #include "gifcodec.h"
+ 
+-/* giflib declares this incorrectly as EgifOpen */
+-extern GifFileType *EGifOpen(void *userData, OutputFunc writeFunc);
+-
+ /* Data structure used for callback */
+ typedef struct
+ {
+@@ -105,7 +102,7 @@
+ */
+ 
+ static int
+-AddExtensionBlockMono(SavedImage *New, int Len, BYTE ExtData[])
++AddExtensionBlockMono(SavedImage *New, int Function, int Len, BYTE ExtData[])
+ {
+ 	ExtensionBlock	*ep;
+ 
+@@ -121,15 +118,15 @@
+ 
+ 	ep = &New->ExtensionBlocks[New->ExtensionBlockCount++];
+ 
++	ep->Function = Function;
+ 	ep->ByteCount=Len;
+-	ep->Bytes = (char *)GdipAlloc(ep->ByteCount);
++	ep->Bytes = (GifByteType *)GdipAlloc(ep->ByteCount);
+ 	if (ep->Bytes == NULL) {
+ 		return (GIF_ERROR);
+ 	}
+ 
+ 	if (ExtData) {
+ 		memcpy(ep->Bytes, ExtData, Len);
+-		ep->Function = New->Function;
+ 	}
+ 
+ 	return (GIF_OK);
+@@ -166,6 +163,7 @@
+ DGifSlurpMono(GifFileType * GifFile, SavedImage *TrailingExtensions)
+ {
+ 	int		ImageSize;
++	int		Function;
+ 	GifRecordType	RecordType;
+ 	SavedImage	*sp;
+ 	GifByteType	*ExtData;
+@@ -232,20 +230,19 @@
+ 			}
+ 
+ 			case EXTENSION_RECORD_TYPE: {
+-				if (DGifGetExtension(GifFile, &temp_save.Function, &ExtData) == GIF_ERROR) {
++				if (DGifGetExtension(GifFile, &Function, &ExtData) == GIF_ERROR) {
+ 					return (GIF_ERROR);
+ 				}
+ 
+ 				while (ExtData != NULL) {
+ 					/* Create an extension block with our data */
+-					if (AddExtensionBlockMono(&temp_save, ExtData[0], &ExtData[1]) == GIF_ERROR) {
++					if (AddExtensionBlockMono(&temp_save, Function, ExtData[0], &ExtData[1]) == GIF_ERROR) {
+ 						return (GIF_ERROR);
+ 					}
+ 
+ 					if (DGifGetExtensionNext(GifFile, &ExtData) == GIF_ERROR) {
+ 						return (GIF_ERROR);
+ 					}
+-					temp_save.Function = 0;
+ 				}
+ 				break;
+ 			}
+@@ -304,9 +301,9 @@
+ 	loop_counter = FALSE;
+ 
+ 	if (from_file) {
+-		gif = DGifOpen(stream, &gdip_gif_fileinputfunc);
++		gif = DGifOpen(stream, &gdip_gif_fileinputfunc, NULL);
+ 	} else {
+-		gif = DGifOpen (stream, &gdip_gif_inputfunc);
++		gif = DGifOpen (stream, &gdip_gif_inputfunc, NULL);
+ 	}
+ 	
+ 	if (gif == NULL) {
+@@ -581,7 +578,7 @@
+ 	}
+ 
+ 	FreeExtensionMono(&global_extensions);
+-	DGifCloseFile (gif);
++	DGifCloseFile (gif, NULL);
+ 
+ 	*image = result;
+ 	return Ok;
+@@ -597,7 +594,7 @@
+ 
+ 	if (gif != NULL) {
+ 		FreeExtensionMono (&global_extensions);
+-		DGifCloseFile (gif);
++		DGifCloseFile (gif, NULL);
+ 	}
+ 
+ 	*image = NULL;
+@@ -661,9 +658,9 @@
+ 	}
+ 
+ 	if (from_file) {
+-		fp = EGifOpenFileName (stream, 0);
++		fp = EGifOpenFileName (stream, 0, NULL);
+ 	} else {
+-		fp = EGifOpen (stream, gdip_gif_outputfunc);
++		fp = EGifOpen (stream, gdip_gif_outputfunc, NULL);
+ 	}
+ 		
+ 	if (!fp) {
+@@ -702,7 +699,7 @@
+ 					goto error; 
+ 				}
+ 
+-				cmap = MakeMapObject(cmap_size, 0);
++				cmap = GifMakeMapObject(cmap_size, 0);
+ 
+ 				pixbuf = GdipAlloc(pixbuf_size);
+ 				if (pixbuf == NULL) {
+@@ -793,7 +790,7 @@
+ 				pixbuf = pixbuf_org;
+ 			} else {
+ 				cmap_size = 256;
+-				cmap  = MakeMapObject (cmap_size, 0);
++				cmap  = GifMakeMapObject (cmap_size, 0);
+ 
+ 				red = GdipAlloc(pixbuf_size);
+ 				green = GdipAlloc(pixbuf_size);
+@@ -824,13 +821,13 @@
+ 						v += 4;
+ 					}
+ 				}
+-				if (QuantizeBuffer(bitmap_data->width, bitmap_data->height, &cmap_size, 
++				if (GifQuantizeBuffer(bitmap_data->width, bitmap_data->height, &cmap_size, 
+ 						red,  green, blue, pixbuf, cmap->Colors) == GIF_ERROR) {
+ 					goto error;
+ 				}
+ 			}
+ 
+-			cmap->BitsPerPixel = BitSize (cmap_size);
++			cmap->BitsPerPixel = GifBitSize (cmap_size);
+ 			cmap->ColorCount = 1 << cmap->BitsPerPixel;
+ 
+ 			if ((frame == 0) && (k == 0)) {
+@@ -848,8 +845,10 @@
+ 						Buffer[0] = 1;
+ 						Buffer[1] = ptr[0];
+ 						Buffer[2] = ptr[1];
+-						EGifPutExtensionFirst(fp, APPLICATION_EXT_FUNC_CODE, 11, "NETSCAPE2.0");
+-						EGifPutExtensionLast(fp, APPLICATION_EXT_FUNC_CODE, 3, Buffer);
++						EGifPutExtensionLeader(fp, APPLICATION_EXT_FUNC_CODE);
++						EGifPutExtensionBlock(fp, 11, "NETSCAPE2.0");
++						EGifPutExtensionBlock(fp, 3, Buffer);
++						EGifPutExtensionTrailer(fp);
+ 					}
+ 				}
+ 
+@@ -901,7 +900,7 @@
+ 				pixbuf += bitmap_data->width;
+ 			}
+ 
+-			FreeMapObject (cmap);
++			GifFreeMapObject (cmap);
+ 			if (red != NULL) {
+ 				GdipFree (red);
+ 			}
+@@ -923,13 +922,13 @@
+ 		}
+ 	}
+ 
+-	EGifCloseFile (fp);	
++	EGifCloseFile (fp, NULL);	
+ 	
+ 	return Ok;
+ 
+ error:
+ 	if (cmap != NULL) {
+-		FreeMapObject (cmap);
++		GifFreeMapObject (cmap);
+ 	}
+ 
+ 	if (red != NULL) {
diff --git a/libgdiplus-libpng.patch b/libgdiplus-libpng.patch
deleted file mode 100644
index 31a1c01..0000000
--- a/libgdiplus-libpng.patch
+++ /dev/null
@@ -1,164 +0,0 @@
-$NetBSD: patch-aa,v 1.8 2011/01/21 10:21:51 wiz Exp $
-
-Fix build with png-1.5.
-
---- src/pngcodec.c.orig	2010-11-03 16:52:54.000000000 +0000
-+++ src/pngcodec.c
-@@ -116,10 +116,15 @@ gdip_load_png_properties (png_structp pn
- 	bitmap_data->dpi_horz = png_get_x_pixels_per_inch(png_ptr, info_ptr);
- 	bitmap_data->dpi_vert = png_get_y_pixels_per_inch(png_ptr, info_ptr);
- #elif defined(PNG_pHYs_SUPPORTED)
--	if ((info_ptr->valid & PNG_INFO_pHYs) && (info_ptr->phys_unit_type == PNG_RESOLUTION_METER)) {
--		bitmap_data->image_flags |= ImageFlagsHasRealDPI;
--		bitmap_data->dpi_horz = info_ptr->x_pixels_per_unit * 0.0254;
--		bitmap_data->dpi_vert = info_ptr->y_pixels_per_unit * 0.0254;
-+	if (png_get_valid (png_ptr, info_ptr, PNG_INFO_pHYs)) {
-+		png_uint_32 res_x, res_y;
-+		int unit_type;
-+		png_get_pHYs (png_ptr, info_ptr, &res_x, &res_y, &unit_type);
-+		if (unit_type == PNG_RESOLUTION_METER) {
-+			bitmap_data->image_flags |= ImageFlagsHasRealDPI;
-+			bitmap_data->dpi_horz = res_x * 0.0254;
-+			bitmap_data->dpi_vert = res_y * 0.0254;
-+		}
- 	}
- #endif
- 	/* default to screen resolution (if nothing was provided or available) */
-@@ -130,7 +135,7 @@ gdip_load_png_properties (png_structp pn
- #if defined(PNG_iCCP_SUPPORTED)
- 	{
- 		png_charp	name;
--		png_charp	profile;
-+		png_bytep	profile;
- 		png_uint_32	proflen;
- 		int		compression_type;
- 
-@@ -292,6 +297,11 @@ gdip_load_png_image_from_file_or_stream 
- 		ImageFlags	colourspace_flag;
- 		int		i;
- 		int		j;
-+		png_colorp	png_palette;
-+		int		png_num_palette;
-+		png_bytep	trans_alpha;
-+		int		num_trans;
-+		png_color_16p	trans_color;
- 
- 		width = png_get_image_width (png_ptr, info_ptr);
- 		height = png_get_image_height (png_ptr, info_ptr);
-@@ -309,6 +319,8 @@ gdip_load_png_image_from_file_or_stream 
- 		}
- 
- 		/* Copy palette. */
-+		png_get_PLTE (png_ptr, info_ptr, &png_palette, &png_num_palette);
-+
- 		num_colours = 1 << bit_depth;
- 
- 		if (png_get_color_type (png_ptr, info_ptr) == PNG_COLOR_TYPE_GRAY) {
-@@ -321,8 +333,8 @@ gdip_load_png_image_from_file_or_stream 
- 			colourspace_flag = ImageFlagsColorSpaceRGB;
- 
- 			palette_entries = num_colours;
--			if (palette_entries > info_ptr->num_palette) {
--				palette_entries = info_ptr->num_palette;
-+			if (palette_entries > png_num_palette) {
-+				palette_entries = png_num_palette;
- 			}
- 
- 			palette = GdipAlloc (sizeof(ColorPalette) + (num_colours - 1) * sizeof(ARGB));
-@@ -331,29 +343,30 @@ gdip_load_png_image_from_file_or_stream 
- 
- 			for (i=0; i < palette_entries; i++) {
- 				set_pixel_bgra (&palette->Entries[i], 0,
--						info_ptr->palette[i].blue,
--						info_ptr->palette[i].green,
--						info_ptr->palette[i].red,
-+						png_palette[i].blue,
-+						png_palette[i].green,
-+						png_palette[i].red,
- 						0xFF); /* alpha */
- 			}
- 		}
- 
-+		png_get_tRNS (png_ptr, info_ptr, &trans_alpha, &num_trans, &trans_color);
- 		/* Make sure transparency is respected. */
--		if (info_ptr->num_trans > 0) {
-+		if (num_trans > 0) {
- 			palette->Flags |= PaletteFlagsHasAlpha;
- 			colourspace_flag |= ImageFlagsHasAlpha;
- 
--			if (info_ptr->num_trans > info_ptr->num_palette) {
--				info_ptr->num_trans = info_ptr->num_palette;
-+			if (num_trans > png_num_palette) {
-+				num_trans = png_num_palette;
- 			}
- 
--			for (i=0; i < info_ptr->num_trans; i++) {
-+			for (i=0; i < num_trans; i++) {
- 				set_pixel_bgra(&palette->Entries[i], 0,
--						info_ptr->palette[i].blue,
--						info_ptr->palette[i].green,
--						info_ptr->palette[i].red,
-+						png_palette[i].blue,
-+						png_palette[i].green,
-+						png_palette[i].red,
- #if PNG_LIBPNG_VER > 10399
--						info_ptr->trans_alpha [i]); /* alpha */
-+						trans_alpha [i]); /* alpha */
- #else
- 						info_ptr->trans[i]); /* alpha */
- #endif
-@@ -398,6 +411,8 @@ gdip_load_png_image_from_file_or_stream 
- 		BYTE		bit_depth;
- 		int		stride;
- 		int		interlace;
-+		png_colorp	png_palette;
-+		int		png_num_palette;
- 		png_bytep *row_pointers;
- 		BYTE *rawptr;
- 		int i, j;
-@@ -490,32 +505,33 @@ gdip_load_png_image_from_file_or_stream 
- 							png_byte palette = 0;
- 							png_byte pix = *rowp++;
- 
-+							png_get_PLTE (png_ptr, info_ptr, &png_palette, &png_num_palette);
- 							palette = (pix >> 6) & 0x03;
- 							set_pixel_bgra (rawptr, 0,
--								info_ptr->palette[palette].blue,
--								info_ptr->palette[palette].green,
--								info_ptr->palette[palette].red,
-+								png_palette[palette].blue,
-+								png_palette[palette].green,
-+								png_palette[palette].red,
- 								0xFF); /* alpha */
- 
- 							palette = (pix >> 4) & 0x03;
- 							set_pixel_bgra (rawptr, 4,
--								info_ptr->palette[palette].blue,
--								info_ptr->palette[palette].green,
--								info_ptr->palette[palette].red,
-+								png_palette[palette].blue,
-+								png_palette[palette].green,
-+								png_palette[palette].red,
- 								0xFF); /* alpha */
- 
- 							palette = (pix >> 2) & 0x03;
- 							set_pixel_bgra (rawptr, 8,
--								info_ptr->palette[palette].blue,
--								info_ptr->palette[palette].green,
--								info_ptr->palette[palette].red,
-+								png_palette[palette].blue,
-+								png_palette[palette].green,
-+								png_palette[palette].red,
- 								0xFF); /* alpha */
- 
- 							palette = pix & 0x03;
- 							set_pixel_bgra (rawptr, 12,
--								info_ptr->palette[palette].blue,
--								info_ptr->palette[palette].green,
--								info_ptr->palette[palette].red,
-+								png_palette[palette].blue,
-+								png_palette[palette].green,
-+								png_palette[palette].red,
- 								0xFF); /* alpha */
- 							rawptr += 16;
- 						}
diff --git a/libgdiplus-link.patch b/libgdiplus-link.patch
deleted file mode 100644
index 67c3661..0000000
--- a/libgdiplus-link.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ruN libgdiplus-1.1.18./cairo/configure.in libgdiplus-1.1.18/cairo/configure.in
---- libgdiplus-1.1.18./cairo/configure.in	2006-10-16 20:09:54.000000000 +0200
-+++ libgdiplus-1.1.18/cairo/configure.in	2006-10-16 20:10:56.746805587 +0200
-@@ -233,7 +233,7 @@
- 		     if test "x$no_x" = xyes; then
- 		       use_xlib="no (requires X development libraries)"
- 		     else
--		       xlib_NONPKGCONFIG_LIBS="$X_PRE_LIBS $X_LIBS -lX11 $X_EXTRA_LIBS"
-+		       xlib_NONPKGCONFIG_LIBS="$X_LIBS -lX11 $X_EXTRA_LIBS"
- 		       xlib_NONPKGCONFIG_CFLAGS=$X_CFLAGS
- 		     fi])
- ])
diff --git a/libgdiplus-lt.patch b/libgdiplus-lt.patch
deleted file mode 100644
index dbf5a0f..0000000
--- a/libgdiplus-lt.patch
+++ /dev/null
@@ -1,31 +0,0 @@
---- libgdiplus-1.9/cairo/configure.in.orig	2008-03-21 20:24:11.115153000 +0100
-+++ libgdiplus-1.9/cairo/configure.in	2008-03-21 20:50:21.340632725 +0100
-@@ -22,23 +22,23 @@
- # libtool shared library version
- 
- # Increment if the interface has additions, changes, removals.
--LT_CURRENT=19
-+LTVER_CURRENT=19
- 
- # Increment any time the source changes; set to
- # 0 if you increment CURRENT
--LT_REVISION=5
-+LTVER_REVISION=5
- 
- # Increment if any interfaces have been added; set to 0
- # if any interfaces have been removed. removal has
- # precedence over adding, so set to 0 if both happened.
--LT_AGE=17
-+LTVER_AGE=17
- 
- dnl ===========================================================================
- 
--VERSION_INFO="$LT_CURRENT:$LT_REVISION:$LT_AGE"
-+VERSION_INFO="$LTVER_CURRENT:$LTVER_REVISION:$LTVER_AGE"
- AC_SUBST(VERSION_INFO)
- 
--LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
-+LT_CURRENT_MINUS_AGE=`expr $LTVER_CURRENT - $LTVER_AGE`
- AC_SUBST(LT_CURRENT_MINUS_AGE)
- 
- CAIRO_VERSION_MAJOR=cairo_version_major()
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/libgdiplus.git/commitdiff/2a9682721087988a851da4092ab44df5ce8a7347



More information about the pld-cvs-commit mailing list