summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /media-gfx/gimp
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'media-gfx/gimp')
-rw-r--r--media-gfx/gimp/Manifest2
-rw-r--r--media-gfx/gimp/files/gimp-2.6.11-file-uri.patch79
-rw-r--r--media-gfx/gimp/files/gimp-2.6.12-CVE-2012-2763.patch20
-rw-r--r--media-gfx/gimp/files/gimp-2.6.12-CVE-2012-3236.patch39
-rw-r--r--media-gfx/gimp/files/gimp-2.6.12-CVE-2012-3403.patch511
-rw-r--r--media-gfx/gimp/files/gimp-2.6.12-CVE-2012-3481.patch56
-rw-r--r--media-gfx/gimp/files/gimp-2.6.12-potfiles-skip.patch17
-rw-r--r--media-gfx/gimp/files/gimp-2.7.4-no-deprecation.patch36
-rw-r--r--media-gfx/gimp/files/gimp-2.8.10-CVE-2013-1913.patch31
-rw-r--r--media-gfx/gimp/files/gimp-2.8.10-CVE-2013-1978.patch151
-rw-r--r--media-gfx/gimp/files/gimp-2.8.10-clang.patch204
-rw-r--r--media-gfx/gimp/files/gimp-2.8.10-freetype251.patch26
-rw-r--r--media-gfx/gimp/files/gimp-2.8.6-uclibc.patch45
-rw-r--r--media-gfx/gimp/files/gimp-curl-headers.diff12
-rw-r--r--media-gfx/gimp/gimp-2.8.10-r1.ebuild165
-rw-r--r--media-gfx/gimp/gimp-2.8.10-r2.ebuild168
-rw-r--r--media-gfx/gimp/gimp-2.8.14.ebuild164
-rw-r--r--media-gfx/gimp/gimp-9999.ebuild170
-rw-r--r--media-gfx/gimp/metadata.xml12
19 files changed, 1908 insertions, 0 deletions
diff --git a/media-gfx/gimp/Manifest b/media-gfx/gimp/Manifest
new file mode 100644
index 000000000000..6a2af6b6fef1
--- /dev/null
+++ b/media-gfx/gimp/Manifest
@@ -0,0 +1,2 @@
+DIST gimp-2.8.10.tar.bz2 20343461 SHA256 e7fd8b19f989138d826003c75f56bd5b6f136eef597e86e3978ede0bba470ae6 SHA512 21c96832ce61ecb2dad5276b454e7965263b6733add7e4a95cfc5f308fca681bceab21c1b77921332e0725d0e514e06868a4698ca9d7e4b30a28a07c7356a3a8 WHIRLPOOL 16b0a7e8a4197db41da29832977bee917e65d5cbbf308dde1ba73c150742c70c52cd60d449d0fd0269b0ed5db0378461d3277a2350898c3a5e07b1f3cf8bdf47
+DIST gimp-2.8.14.tar.bz2 20440077 SHA256 d82a958641c9c752d68e35f65840925c08e314cea90222ad845892a40e05b22d SHA512 533f6b931624d36525cb2f3fbc27fe27565d761bbe26873bb5445c06c01523c044d1814363a8cd76b6e381440db4c6e302b0d3f7a9e5aac7f60072770552f1ba WHIRLPOOL 8fd7b0fd5f8627b2df83481f7956727acd42eafcdc9c9116713d60faf8578005c2fb1e1d729f3b2c836a90e9bab063e477f9da5285e5c43a79f2dbe441a0565b
diff --git a/media-gfx/gimp/files/gimp-2.6.11-file-uri.patch b/media-gfx/gimp/files/gimp-2.6.11-file-uri.patch
new file mode 100644
index 000000000000..2d3f161e064b
--- /dev/null
+++ b/media-gfx/gimp/files/gimp-2.6.11-file-uri.patch
@@ -0,0 +1,79 @@
+--- plug-ins/file-uri/uri-backend-libcurl.c.orig 2011-09-01 09:06:13.307741499 -0500
++++ plug-ins/file-uri/uri-backend-libcurl.c 2011-09-01 09:09:09.066152187 -0500
+@@ -62,7 +62,7 @@
+
+ vinfo = curl_version_info (CURLVERSION_NOW);
+
+- protocols = g_string_new ("http:,ftp:");
++ protocols = g_string_new ("http:,ftp:,gopher:");
+
+ if (vinfo->features & CURL_VERSION_SSL)
+ {
+@@ -153,6 +153,11 @@
+ CURL *curl_handle;
+ CURLcode result;
+ gint response_code;
++ gchar *eff_url = NULL;
++ gchar *proto = NULL;
++ gboolean is_http = FALSE;
++ gboolean is_ftp = FALSE;
++ gboolean is_gopher = FALSE;
+
+ gimp_progress_init (_("Connecting to server"));
+
+@@ -194,13 +199,52 @@
+
+ curl_easy_getinfo (curl_handle, CURLINFO_RESPONSE_CODE, &response_code);
+
+- if (response_code != 200)
++ /* protocol could be not specified in provided uri
++ get complete url guessed by curl */
++ curl_easy_getinfo (curl_handle, CURLINFO_EFFECTIVE_URL, &eff_url);
++
++ /* detect uri protocol */
++ if (! g_ascii_strncasecmp (eff_url, "http://", 7))
++ {
++ is_http = TRUE;
++ proto = "HTTP";
++ }
++ else
++ if (! g_ascii_strncasecmp (eff_url, "https://", 8))
++ {
++ is_http = TRUE;
++ proto = "HTTPS";
++ }
++ else
++ if (! g_ascii_strncasecmp (eff_url, "ftp://", 6))
++ {
++ is_ftp = TRUE;
++ proto = "FTP";
++ }
++ else
++ if (! g_ascii_strncasecmp (eff_url, "ftps://", 7))
++ {
++ is_ftp = TRUE;
++ proto = "FTPS";
++ }
++ else
++ if (! g_ascii_strncasecmp (eff_url ,"gopher://", 9))
++ {
++ is_gopher = TRUE;
++ proto = "GOPHER";
++ }
++ else
++ {
++ proto = "UNKNOWN";
++ }
++
++ if (! ((is_http && response_code == 200) || (is_ftp && response_code == 226) || (is_gopher)))
+ {
+ fclose (out_file);
+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
+- _("Opening '%s' for reading resulted in HTTP "
++ _("Opening '%s' for reading resulted in %s "
+ "response code: %d"),
+- uri, response_code);
++ uri, proto, response_code);
+ curl_easy_cleanup (curl_handle);
+ return FALSE;
+ }
diff --git a/media-gfx/gimp/files/gimp-2.6.12-CVE-2012-2763.patch b/media-gfx/gimp/files/gimp-2.6.12-CVE-2012-2763.patch
new file mode 100644
index 000000000000..c922b6399cc8
--- /dev/null
+++ b/media-gfx/gimp/files/gimp-2.6.12-CVE-2012-2763.patch
@@ -0,0 +1,20 @@
+Fix for CVE-2012-2763 for GIMP 2.6.x by mancha. Based on commit
+76155d79df8d497. Thanks to muks, Kevin, and Ankh for identifying
+the relevant code change.
+
+Ref: Fixed potential buffer overflow in readstr_upto().
+
+================================================
+
+--- a/plug-ins/script-fu/tinyscheme/scheme.c.orig 2012-06-30
++++ b/plug-ins/script-fu/tinyscheme/scheme.c 2012-06-30
+@@ -1727,7 +1727,8 @@ static char *readstr_upto(scheme *sc, ch
+ c = inchar(sc);
+ len = g_unichar_to_utf8(c, p);
+ p += len;
+- } while (c && !is_one_of(delim, c));
++ } while ((p - sc->strbuff < sizeof(sc->strbuff)) &&
++ (c && !is_one_of(delim, c)));
+
+ if(p==sc->strbuff+2 && c_prev=='\\')
+ *p = '\0';
diff --git a/media-gfx/gimp/files/gimp-2.6.12-CVE-2012-3236.patch b/media-gfx/gimp/files/gimp-2.6.12-CVE-2012-3236.patch
new file mode 100644
index 000000000000..e4d3a9f96fb4
--- /dev/null
+++ b/media-gfx/gimp/files/gimp-2.6.12-CVE-2012-3236.patch
@@ -0,0 +1,39 @@
+From ace45631595e8781a1420842582d67160097163c Mon Sep 17 00:00:00 2001
+From: Michael Natterer <mitch@gimp.org>
+Date: Wed, 06 Jun 2012 19:21:10 +0000
+Subject: Bug 676804 - file handling DoS for fit file format
+
+Apply patch from joe@reactionis.co.uk which fixes a buffer overflow on
+broken/malicious fits files.
+---
+(limited to 'plug-ins/file-fits/fits-io.c')
+
+diff --git a/plug-ins/file-fits/fits-io.c b/plug-ins/file-fits/fits-io.c
+index 03d9652..ed77318 100644
+--- a/plug-ins/file-fits/fits-io.c
++++ b/plug-ins/file-fits/fits-io.c
+@@ -1054,10 +1054,18 @@ static FITS_HDU_LIST *fits_decode_header (FITS_RECORD_LIST *hdr,
+ hdulist->used.simple = (strncmp (hdr->data, "SIMPLE ", 8) == 0);
+ hdulist->used.xtension = (strncmp (hdr->data, "XTENSION", 8) == 0);
+ if (hdulist->used.xtension)
+- {
+- fdat = fits_decode_card (fits_search_card (hdr, "XTENSION"), typ_fstring);
+- strcpy (hdulist->xtension, fdat->fstring);
+- }
++ {
++ fdat = fits_decode_card (fits_search_card (hdr, "XTENSION"), typ_fstring);
++ if (fdat != NULL)
++ {
++ strcpy (hdulist->xtension, fdat->fstring);
++ }
++ else
++ {
++ strcpy (errmsg, "No valid XTENSION header found.");
++ goto err_return;
++ }
++ }
+
+ FITS_DECODE_CARD (hdr, "NAXIS", fdat, typ_flong);
+ hdulist->naxis = fdat->flong;
+--
+cgit v0.9.0.2
diff --git a/media-gfx/gimp/files/gimp-2.6.12-CVE-2012-3403.patch b/media-gfx/gimp/files/gimp-2.6.12-CVE-2012-3403.patch
new file mode 100644
index 000000000000..f7d0b3766a60
--- /dev/null
+++ b/media-gfx/gimp/files/gimp-2.6.12-CVE-2012-3403.patch
@@ -0,0 +1,511 @@
+From 65ac6cda675fafd57bc182175f685e5d8c1a9cc9 Mon Sep 17 00:00:00 2001
+From: Nils Philippsen <nils@redhat.com>
+Date: Mon, 20 Aug 2012 15:28:44 +0200
+Subject: [PATCH] patch: CVE-2012-3403
+
+Squashed commit of the following:
+
+commit d002e513039a9667a06d3e2ba180f9c18785cc5f
+Author: Nils Philippsen <nils@redhat.com>
+Date: Fri Jul 13 15:47:16 2012 +0200
+
+ file-cel: close file on error
+
+commit ec3f1fe7586527ea7e2735b5c8548b925f622d5b
+Author: Nils Philippsen <nils@redhat.com>
+Date: Fri Jul 13 15:33:27 2012 +0200
+
+ file-cel: use g_set_error() for errors instead of g_message()
+ (cherry picked from commit 86f4cd39bd493c88a7a19b56d1827d8b911e07f6)
+
+ Conflicts:
+ plug-ins/common/file-cel.c
+
+commit 79bd89bc39195974d5cae2c2b06c829dd90c36ee
+Author: Nils Philippsen <nils@redhat.com>
+Date: Fri Jul 13 15:30:44 2012 +0200
+
+ file-cel: use statically allocated palette buffer
+ (cherry picked from commit 69b98191cf315bcf0f7b8878896c01600e67c124)
+
+commit 52d85468980b5947cfd3e84f9a256769158210cc
+Author: Nils Philippsen <nils@redhat.com>
+Date: Fri Jul 13 15:20:06 2012 +0200
+
+ file-cel: validate header data (CVE-2012-3403)
+ (cherry picked from commit b772d1b84c9272bb46ab9a21db4390e6263c9892)
+
+commit 62da97876070839097671e83eb8f5d408515396f
+Author: Nils Philippsen <nils@redhat.com>
+Date: Thu Jul 12 15:50:02 2012 +0200
+
+ file-cel: check fread()/g_fopen() return values and pass on errors
+ (cherry picked from commit 797db58b94c64f418c35d38b7a608d933c8cebef)
+---
+ plug-ins/common/file-cel.c | 283 +++++++++++++++++++++++++++++++++++++--------
+ 1 file changed, 234 insertions(+), 49 deletions(-)
+
+diff --git a/plug-ins/common/file-cel.c b/plug-ins/common/file-cel.c
+index a94671c..3357561 100644
+--- a/plug-ins/common/file-cel.c
++++ b/plug-ins/common/file-cel.c
+@@ -44,8 +44,10 @@ static void run (const gchar *name,
+ gint *nreturn_vals,
+ GimpParam **return_vals);
+
+-static gint load_palette (FILE *fp,
+- guchar palette[]);
++static gint load_palette (const gchar *file,
++ FILE *fp,
++ guchar palette[],
++ GError **error);
+ static gint32 load_image (const gchar *file,
+ const gchar *brief,
+ GError **error);
+@@ -55,7 +57,8 @@ static gboolean save_image (const gchar *file,
+ gint32 layer,
+ GError **error);
+ static void palette_dialog (const gchar *title);
+-static gboolean need_palette (const gchar *file);
++static gboolean need_palette (const gchar *file,
++ GError **error);
+
+
+ /* Globals... */
+@@ -150,6 +153,7 @@ run (const gchar *name,
+ gint32 image;
+ GimpExportReturn export = GIMP_EXPORT_CANCEL;
+ GError *error = NULL;
++ gint needs_palette = 0;
+
+ run_mode = param[0].data.d_int32;
+
+@@ -187,20 +191,32 @@ run (const gchar *name,
+ else if (run_mode == GIMP_RUN_INTERACTIVE)
+ {
+ /* Let user choose KCF palette (cancel ignores) */
+- if (need_palette (param[1].data.d_string))
+- palette_dialog (_("Load KISS Palette"));
++ needs_palette = need_palette (param[1].data.d_string, &error);
+
+- gimp_set_data (SAVE_PROC, palette_file, data_length);
+- }
++ if (! error)
++ {
++ if (needs_palette)
++ palette_dialog (_("Load KISS Palette"));
+
+- image = load_image (param[1].data.d_string, param[2].data.d_string,
+- &error);
++ gimp_set_data (SAVE_PROC, palette_file, data_length);
++ }
++ }
+
+- if (image != -1)
++ if (! error)
+ {
+- *nreturn_vals = 2;
+- values[1].type = GIMP_PDB_IMAGE;
+- values[1].data.d_image = image;
++ image = load_image (param[1].data.d_string, param[2].data.d_string,
++ &error);
++
++ if (image != -1)
++ {
++ *nreturn_vals = 2;
++ values[1].type = GIMP_PDB_IMAGE;
++ values[1].data.d_image = image;
++ }
++ else
++ {
++ status = GIMP_PDB_EXECUTION_ERROR;
++ }
+ }
+ else
+ {
+@@ -263,18 +279,33 @@ run (const gchar *name,
+
+ /* Peek into the file to determine whether we need a palette */
+ static gboolean
+-need_palette (const gchar *file)
++need_palette (const gchar *file,
++ GError **error)
+ {
+ FILE *fp;
+ guchar header[32];
++ size_t n_read;
+
+ fp = g_fopen (file, "rb");
+- if (!fp)
+- return FALSE;
++ if (fp == NULL)
++ {
++ g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno),
++ _("Could not open '%s' for reading: %s"),
++ gimp_filename_to_utf8 (file), g_strerror (errno));
++ return FALSE;
++ }
++
++ n_read = fread (header, 32, 1, fp);
+
+- fread (header, 32, 1, fp);
+ fclose (fp);
+
++ if (n_read < 1)
++ {
++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
++ _("EOF or error while reading image header"));
++ return FALSE;
++ }
++
+ return (header[5] < 32);
+ }
+
+@@ -286,11 +317,12 @@ load_image (const gchar *file,
+ GError **error)
+ {
+ FILE *fp; /* Read file pointer */
+- guchar header[32]; /* File header */
++ guchar header[32], /* File header */
++ file_mark, /* KiSS file type */
++ bpp; /* Bits per pixel */
+ gint height, width, /* Dimensions of image */
+ offx, offy, /* Layer offets */
+- colours, /* Number of colours */
+- bpp; /* Bits per pixel */
++ colours; /* Number of colours */
+
+ gint32 image, /* Image */
+ layer; /* Layer */
+@@ -301,6 +333,7 @@ load_image (const gchar *file,
+ GimpPixelRgn pixel_rgn; /* Pixel region for layer */
+
+ gint i, j, k; /* Counters */
++ size_t n_read; /* Number of items read from file */
+
+
+ /* Open the file for reading */
+@@ -319,7 +352,14 @@ load_image (const gchar *file,
+
+ /* Get the image dimensions and create the image... */
+
+- fread (header, 4, 1, fp);
++ n_read = fread (header, 4, 1, fp);
++
++ if (n_read < 1)
++ {
++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
++ _("EOF or error while reading image header"));
++ return -1;
++ }
+
+ if (strncmp ((const gchar *) header, "KiSS", 4))
+ {
+@@ -332,18 +372,53 @@ load_image (const gchar *file,
+ }
+ else
+ { /* New-style image file, read full header */
+- fread (header, 28, 1, fp);
++ n_read = fread (header, 28, 1, fp);
++
++ if (n_read < 1)
++ {
++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
++ _("EOF or error while reading image header"));
++ return -1;
++ }
++
++ file_mark = header[0];
++ if (file_mark != 0x20 && file_mark != 0x21)
++ {
++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
++ _("is not a CEL image file"));
++ return -1;
++ }
++
+ bpp = header[1];
+- if (bpp == 24)
+- colours = -1;
+- else
+- colours = (1 << header[1]);
++ switch (bpp)
++ {
++ case 4:
++ case 8:
++ case 32:
++ colours = (1 << bpp);
++ break;
++ default:
++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
++ _("illegal bpp value in image: %hhu"), bpp);
++ return -1;
++ }
++
+ width = header[4] + (256 * header[5]);
+ height = header[6] + (256 * header[7]);
+ offx = header[8] + (256 * header[9]);
+ offy = header[10] + (256 * header[11]);
+ }
+
++ if ((width == 0) || (height == 0) || (width + offx > GIMP_MAX_IMAGE_SIZE) ||
++ (height + offy > GIMP_MAX_IMAGE_SIZE))
++ {
++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
++ _("illegal image dimensions: width: %d, horizontal offset: "
++ "%d, height: %d, vertical offset: %d"),
++ width, offx, height, offy);
++ return -1;
++ }
++
+ if (bpp == 32)
+ image = gimp_image_new (width + offx, height + offy, GIMP_RGB);
+ else
+@@ -351,7 +426,8 @@ load_image (const gchar *file,
+
+ if (image == -1)
+ {
+- g_message (_("Can't create a new image"));
++ g_set_error (error, 0, 0, _("Can't create a new image"));
++ fclose (fp);
+ return -1;
+ }
+
+@@ -383,7 +459,15 @@ load_image (const gchar *file,
+ switch (bpp)
+ {
+ case 4:
+- fread (buffer, (width+1)/2, 1, fp);
++ n_read = fread (buffer, (width+1)/2, 1, fp);
++
++ if (n_read < 1)
++ {
++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
++ _("EOF or error while reading image data"));
++ return -1;
++ }
++
+ for (j = 0, k = 0; j < width*2; j+= 4, ++k)
+ {
+ if (buffer[k] / 16 == 0)
+@@ -410,7 +494,15 @@ load_image (const gchar *file,
+ break;
+
+ case 8:
+- fread (buffer, width, 1, fp);
++ n_read = fread (buffer, width, 1, fp);
++
++ if (n_read < 1)
++ {
++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
++ _("EOF or error while reading image data"));
++ return -1;
++ }
++
+ for (j = 0, k = 0; j < width*2; j+= 2, ++k)
+ {
+ if (buffer[k] == 0)
+@@ -427,7 +519,15 @@ load_image (const gchar *file,
+ break;
+
+ case 32:
+- fread (line, width*4, 1, fp);
++ n_read = fread (line, width*4, 1, fp);
++
++ if (n_read < 1)
++ {
++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
++ _("EOF or error while reading image data"));
++ return -1;
++ }
++
+ /* The CEL file order is BGR so we need to swap B and R
+ * to get the Gimp RGB order.
+ */
+@@ -440,7 +540,8 @@ load_image (const gchar *file,
+ break;
+
+ default:
+- g_message (_("Unsupported bit depth (%d)!"), bpp);
++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
++ _("Unsupported bit depth (%d)!"), bpp);
+ return -1;
+ }
+
+@@ -457,7 +558,7 @@ load_image (const gchar *file,
+ if (bpp != 32)
+ {
+ /* Use palette from file or otherwise default grey palette */
+- palette = g_new (guchar, colours*3);
++ guchar palette[256*3];
+
+ /* Open the file for reading if user picked one */
+ if (palette_file == NULL)
+@@ -467,12 +568,23 @@ load_image (const gchar *file,
+ else
+ {
+ fp = g_fopen (palette_file, "r");
++
++ if (fp == NULL)
++ {
++ g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno),
++ _("Could not open '%s' for reading: %s"),
++ gimp_filename_to_utf8 (palette_file),
++ g_strerror (errno));
++ return -1;
++ }
+ }
+
+ if (fp != NULL)
+ {
+- colours = load_palette (fp, palette);
++ colours = load_palette (palette_file, fp, palette, error);
+ fclose (fp);
++ if (colours < 0 || *error)
++ return -1;
+ }
+ else
+ {
+@@ -483,10 +595,6 @@ load_image (const gchar *file,
+ }
+
+ gimp_image_set_colormap (image, palette + 3, colours - 1);
+-
+- /* Close palette file, give back allocated memory */
+-
+- g_free (palette);
+ }
+
+ /* Now get everything redrawn and hand back the finished image */
+@@ -498,32 +606,100 @@ load_image (const gchar *file,
+ }
+
+ static gint
+-load_palette (FILE *fp,
+- guchar palette[])
++load_palette (const gchar *file,
++ FILE *fp,
++ guchar palette[],
++ GError **error)
+ {
+ guchar header[32]; /* File header */
+ guchar buffer[2];
+- int i, bpp, colours= 0;
++ guchar file_mark, bpp;
++ gint i, colours = 0;
++ size_t n_read;
++
++ n_read = fread (header, 4, 1, fp);
++
++ if (n_read < 1)
++ {
++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
++ _("'%s': EOF or error while reading palette header"),
++ gimp_filename_to_utf8 (file));
++ return -1;
++ }
+
+- fread (header, 4, 1, fp);
+ if (!strncmp ((const gchar *) header, "KiSS", 4))
+ {
+- fread (header+4, 28, 1, fp);
++ n_read = fread (header+4, 28, 1, fp);
++
++ if (n_read < 1)
++ {
++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
++ _("'%s': EOF or error while reading palette header"),
++ gimp_filename_to_utf8 (file));
++ return -1;
++ }
++
++ file_mark = header[4];
++ if (file_mark != 0x10)
++ {
++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
++ _("'%s': is not a KCF palette file"),
++ gimp_filename_to_utf8 (file));
++ return -1;
++ }
++
+ bpp = header[5];
++ if (bpp != 12 && bpp != 24)
++ {
++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
++ _("'%s': illegal bpp value in palette: %hhu"),
++ gimp_filename_to_utf8 (file), bpp);
++ return -1;
++ }
++
+ colours = header[8] + header[9] * 256;
+- if (bpp == 12)
++ if (colours != 16 && colours != 256)
++ {
++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
++ _("'%s': illegal number of colors: %u"),
++ gimp_filename_to_utf8 (file), colours);
++ return -1;
++ }
++
++ switch (bpp)
+ {
++ case 12:
+ for (i = 0; i < colours; ++i)
+ {
+- fread (buffer, 1, 2, fp);
++ n_read = fread (buffer, 1, 2, fp);
++
++ if (n_read < 2)
++ {
++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
++ _("'%s': EOF or error while reading "
++ "palette data"),
++ gimp_filename_to_utf8 (file));
++ return -1;
++ }
++
+ palette[i*3]= buffer[0] & 0xf0;
+ palette[i*3+1]= (buffer[1] & 0x0f) * 16;
+ palette[i*3+2]= (buffer[0] & 0x0f) * 16;
+ }
+- }
+- else
+- {
+- fread (palette, colours, 3, fp);
++ break;
++ case 24:
++ n_read = fread (palette, colours, 3, fp);
++
++ if (n_read < 3)
++ {
++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
++ _("'%s': EOF or error while reading palette data"),
++ gimp_filename_to_utf8 (file));
++ return -1;
++ }
++ break;
++ default:
++ g_assert_not_reached ();
+ }
+ }
+ else
+@@ -532,7 +708,16 @@ load_palette (FILE *fp,
+ fseek (fp, 0, SEEK_SET);
+ for (i= 0; i < colours; ++i)
+ {
+- fread (buffer, 1, 2, fp);
++ n_read = fread (buffer, 1, 2, fp);
++
++ if (n_read < 2)
++ {
++ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
++ _("'%s': EOF or error while reading palette data"),
++ gimp_filename_to_utf8 (file));
++ return -1;
++ }
++
+ palette[i*3] = buffer[0] & 0xf0;
+ palette[i*3+1] = (buffer[1] & 0x0f) * 16;
+ palette[i*3+2] = (buffer[0] & 0x0f) * 16;
+--
+1.7.11.4
+
diff --git a/media-gfx/gimp/files/gimp-2.6.12-CVE-2012-3481.patch b/media-gfx/gimp/files/gimp-2.6.12-CVE-2012-3481.patch
new file mode 100644
index 000000000000..a5aee6a34473
--- /dev/null
+++ b/media-gfx/gimp/files/gimp-2.6.12-CVE-2012-3481.patch
@@ -0,0 +1,56 @@
+From 26b208c5aef5f7801bf0538f8df549f0bf8dcb92 Mon Sep 17 00:00:00 2001
+From: Nils Philippsen <nils@redhat.com>
+Date: Mon, 20 Aug 2012 15:30:33 +0200
+Subject: [PATCH] patch: CVE-2012-3481
+
+Squashed commit of the following:
+
+commit c56f3dc25cd4941f465e88bd91a0e107a4ac1b5e
+Author: Nils Philippsen <nils@redhat.com>
+Date: Tue Aug 14 15:27:39 2012 +0200
+
+ file-gif-load: fix type overflow (CVE-2012-3481)
+
+ Cast variables properly to avoid overflowing when computing how much
+ memory to allocate.
+ (cherry picked from commit 43fc9dbd8e2196944c8a71321e525b89b7df9f5c)
+
+commit 11e922a8cee5c9bb532e2a996d2db3beab6da6cb
+Author: Jan Lieskovsky <jlieskov@redhat.com>
+Date: Tue Aug 14 12:18:22 2012 +0200
+
+ file-gif-load: limit len and height (CVE-2012-3481)
+
+ Ensure values of len and height can't overflow g_malloc() argument type.
+ (cherry picked from commit d95c2f0bcb6775bdee2bef35b7d84f6dfd490783)
+---
+ plug-ins/common/file-gif-load.c | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/plug-ins/common/file-gif-load.c b/plug-ins/common/file-gif-load.c
+index 8460ec0..295c351 100644
+--- a/plug-ins/common/file-gif-load.c
++++ b/plug-ins/common/file-gif-load.c
+@@ -1028,10 +1028,17 @@ ReadImage (FILE *fd,
+ cur_progress = 0;
+ max_progress = height;
+
++ if (len > (G_MAXSIZE / height / (alpha_frame ? (promote_to_rgb ? 4 : 2) : 1)))
++ {
++ g_message ("'%s' has a larger image size than GIMP can handle.",
++ gimp_filename_to_utf8 (filename));
++ return -1;
++ }
++
+ if (alpha_frame)
+- dest = (guchar *) g_malloc (len * height * (promote_to_rgb ? 4 : 2));
++ dest = (guchar *) g_malloc ((gsize)len * (gsize)height * (promote_to_rgb ? 4 : 2));
+ else
+- dest = (guchar *) g_malloc (len * height);
++ dest = (guchar *) g_malloc ((gsize)len * (gsize)height);
+
+ #ifdef GIFDEBUG
+ g_print ("GIF: reading %d by %d%s GIF image, ncols=%d\n",
+--
+1.7.11.4
+
diff --git a/media-gfx/gimp/files/gimp-2.6.12-potfiles-skip.patch b/media-gfx/gimp/files/gimp-2.6.12-potfiles-skip.patch
new file mode 100644
index 000000000000..ee1b89adc5b6
--- /dev/null
+++ b/media-gfx/gimp/files/gimp-2.6.12-potfiles-skip.patch
@@ -0,0 +1,17 @@
+From: Julian Ospald <julian.ospald@googlemail.com>
+Date: Fri Mar 2 17:29:14 CET 2012
+
+gimp-2.6.11 fails on FEATURES="test"
+correctly add "contactsheet.scm" and "test-sphere.scm" to POTFILES.skip
+
+--- po-script-fu/POTFILES.skip
++++ po-script-fu/POTFILES.skip
+@@ -37,6 +37,8 @@
+ plug-ins/pagecurl
+ plug-ins/print
+ plug-ins/pygimp
++plug-ins/script-fu/scripts/contactsheet.scm
++plug-ins/script-fu/scripts/test-sphere.scm
+ plug-ins/selection-to-path
+ plug-ins/twain
+ plug-ins/win-snap
diff --git a/media-gfx/gimp/files/gimp-2.7.4-no-deprecation.patch b/media-gfx/gimp/files/gimp-2.7.4-no-deprecation.patch
new file mode 100644
index 000000000000..66bd93d0d1aa
--- /dev/null
+++ b/media-gfx/gimp/files/gimp-2.7.4-no-deprecation.patch
@@ -0,0 +1,36 @@
+--- configure.ac 2012-01-02 13:15:53.695067626 +0100
++++ configure.ac 2012-01-02 13:21:49.161623684 +0100
+@@ -1943,33 +1943,6 @@
+ AC_SUBST(MIME_TYPES)
+
+
+-#########################
+-# Disable deprecated APIs
+-#########################
+-
+-CPPFLAGS="${CPPFLAGS} -DGIMP_DISABLE_DEPRECATED -DBABL_DISABLE_DEPRECATED -DGSEAL_ENABLE"
+-
+-# Make sure not to disable deprecated APIs for unreleased versions.
+-# We must build without problems with future releases of libraries
+-# and disabling deprecated API risks breaking the build
+-
+-if test "x$have_glib_2_31" != "xyes"; then
+- CPPFLAGS="${CPPFLAGS} -DG_DISABLE_DEPRECATED"
+-fi
+-
+-if test "x$have_gtk_2_26" != "xyes"; then
+- CPPFLAGS="${CPPFLAGS} -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
+-fi
+-
+-if test "x$have_gdk_pixbuf_2_26" != "xyes"; then
+- CPPFLAGS="${CPPFLAGS} -DGDK_PIXBUF_DISABLE_DEPRECATED"
+-fi
+-
+-if test "x$have_pango_1_32" != "xyes"; then
+- CPPFLAGS="${CPPFLAGS} -DPANGO_DISABLE_DEPRECATED"
+-fi
+-
+-
+ ############################
+ # Require multihead safe API
+ ############################
diff --git a/media-gfx/gimp/files/gimp-2.8.10-CVE-2013-1913.patch b/media-gfx/gimp/files/gimp-2.8.10-CVE-2013-1913.patch
new file mode 100644
index 000000000000..e257c691bb09
--- /dev/null
+++ b/media-gfx/gimp/files/gimp-2.8.10-CVE-2013-1913.patch
@@ -0,0 +1,31 @@
+From 32ae0f83e5748299641cceaabe3f80f1b3afd03e Mon Sep 17 00:00:00 2001
+From: Nils Philippsen <nils@redhat.com>
+Date: Thu, 14 Nov 2013 14:29:01 +0100
+Subject: file-xwd: sanity check colormap size (CVE-2013-1913)
+
+
+diff --git a/plug-ins/common/file-xwd.c b/plug-ins/common/file-xwd.c
+index c8e1a6e..343129a 100644
+--- a/plug-ins/common/file-xwd.c
++++ b/plug-ins/common/file-xwd.c
+@@ -466,6 +466,17 @@ load_image (const gchar *filename,
+ /* Position to start of XWDColor structures */
+ fseek (ifp, (long)xwdhdr.l_header_size, SEEK_SET);
+
++ /* Guard against insanely huge color maps -- gimp_image_set_colormap() only
++ * accepts colormaps with 0..256 colors anyway. */
++ if (xwdhdr.l_colormap_entries > 256)
++ {
++ g_message (_("'%s':\nIllegal number of colormap entries: %ld"),
++ gimp_filename_to_utf8 (filename),
++ (long)xwdhdr.l_colormap_entries);
++ fclose (ifp);
++ return -1;
++ }
++
+ if (xwdhdr.l_colormap_entries > 0)
+ {
+ xwdcolmap = g_new (L_XWDCOLOR, xwdhdr.l_colormap_entries);
+--
+cgit v0.10.1
+
diff --git a/media-gfx/gimp/files/gimp-2.8.10-CVE-2013-1978.patch b/media-gfx/gimp/files/gimp-2.8.10-CVE-2013-1978.patch
new file mode 100644
index 000000000000..43b4bcbdc3f3
--- /dev/null
+++ b/media-gfx/gimp/files/gimp-2.8.10-CVE-2013-1978.patch
@@ -0,0 +1,151 @@
+From 23f685931e5f000dd033a45c60c1e60d7f78caf4 Mon Sep 17 00:00:00 2001
+From: Nils Philippsen <nils@redhat.com>
+Date: Tue, 26 Nov 2013 10:49:42 +0100
+Subject: file-xwd: sanity check # of colors and map entries (CVE-2013-1978)
+
+The number of colors in an image shouldn't be higher than the number of
+colormap entries. Additionally, consolidate post error cleanup in
+load_image().
+
+diff --git a/plug-ins/common/file-xwd.c b/plug-ins/common/file-xwd.c
+index 343129a..4df9ce8 100644
+--- a/plug-ins/common/file-xwd.c
++++ b/plug-ins/common/file-xwd.c
+@@ -429,9 +429,9 @@ static gint32
+ load_image (const gchar *filename,
+ GError **error)
+ {
+- FILE *ifp;
++ FILE *ifp = NULL;
+ gint depth, bpp;
+- gint32 image_ID;
++ gint32 image_ID = -1;
+ L_XWDFILEHEADER xwdhdr;
+ L_XWDCOLOR *xwdcolmap = NULL;
+
+@@ -441,7 +441,7 @@ load_image (const gchar *filename,
+ g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno),
+ _("Could not open '%s' for reading: %s"),
+ gimp_filename_to_utf8 (filename), g_strerror (errno));
+- return -1;
++ goto out;
+ }
+
+ read_xwd_header (ifp, &xwdhdr);
+@@ -450,8 +450,7 @@ load_image (const gchar *filename,
+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
+ _("Could not read XWD header from '%s'"),
+ gimp_filename_to_utf8 (filename));
+- fclose (ifp);
+- return -1;
++ goto out;
+ }
+
+ #ifdef XWD_COL_WAIT_DEBUG
+@@ -473,12 +472,18 @@ load_image (const gchar *filename,
+ g_message (_("'%s':\nIllegal number of colormap entries: %ld"),
+ gimp_filename_to_utf8 (filename),
+ (long)xwdhdr.l_colormap_entries);
+- fclose (ifp);
+- return -1;
++ goto out;
+ }
+
+ if (xwdhdr.l_colormap_entries > 0)
+ {
++ if (xwdhdr.l_colormap_entries < xwdhdr.l_ncolors)
++ {
++ g_message (_("'%s':\nNumber of colormap entries < number of colors"),
++ gimp_filename_to_utf8 (filename));
++ goto out;
++ }
++
+ xwdcolmap = g_new (L_XWDCOLOR, xwdhdr.l_colormap_entries);
+
+ read_xwd_cols (ifp, &xwdhdr, xwdcolmap);
+@@ -498,9 +503,7 @@ load_image (const gchar *filename,
+ if (xwdhdr.l_file_version != 7)
+ {
+ g_message (_("Can't read color entries"));
+- g_free (xwdcolmap);
+- fclose (ifp);
+- return (-1);
++ goto out;
+ }
+ }
+
+@@ -508,9 +511,7 @@ load_image (const gchar *filename,
+ {
+ g_message (_("'%s':\nNo image width specified"),
+ gimp_filename_to_utf8 (filename));
+- g_free (xwdcolmap);
+- fclose (ifp);
+- return (-1);
++ goto out;
+ }
+
+ if (xwdhdr.l_pixmap_width > GIMP_MAX_IMAGE_SIZE
+@@ -518,27 +519,21 @@ load_image (const gchar *filename,
+ {
+ g_message (_("'%s':\nImage width is larger than GIMP can handle"),
+ gimp_filename_to_utf8 (filename));
+- g_free (xwdcolmap);
+- fclose (ifp);
+- return (-1);
++ goto out;
+ }
+
+ if (xwdhdr.l_pixmap_height <= 0)
+ {
+ g_message (_("'%s':\nNo image height specified"),
+ gimp_filename_to_utf8 (filename));
+- g_free (xwdcolmap);
+- fclose (ifp);
+- return (-1);
++ goto out;
+ }
+
+ if (xwdhdr.l_pixmap_height > GIMP_MAX_IMAGE_SIZE)
+ {
+ g_message (_("'%s':\nImage height is larger than GIMP can handle"),
+ gimp_filename_to_utf8 (filename));
+- g_free (xwdcolmap);
+- fclose (ifp);
+- return (-1);
++ goto out;
+ }
+
+ gimp_progress_init_printf (_("Opening '%s'"),
+@@ -591,11 +586,6 @@ load_image (const gchar *filename,
+ }
+ gimp_progress_update (1.0);
+
+- fclose (ifp);
+-
+- if (xwdcolmap)
+- g_free (xwdcolmap);
+-
+ if (image_ID == -1 && ! (error && *error))
+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
+ _("XWD-file %s has format %d, depth %d and bits per pixel %d. "
+@@ -603,6 +593,17 @@ load_image (const gchar *filename,
+ gimp_filename_to_utf8 (filename),
+ (gint) xwdhdr.l_pixmap_format, depth, bpp);
+
++out:
++ if (ifp)
++ {
++ fclose (ifp);
++ }
++
++ if (xwdcolmap)
++ {
++ g_free (xwdcolmap);
++ }
++
+ return image_ID;
+ }
+
+--
+cgit v0.10.1
+
diff --git a/media-gfx/gimp/files/gimp-2.8.10-clang.patch b/media-gfx/gimp/files/gimp-2.8.10-clang.patch
new file mode 100644
index 000000000000..065c66b36139
--- /dev/null
+++ b/media-gfx/gimp/files/gimp-2.8.10-clang.patch
@@ -0,0 +1,204 @@
+--- app/Makefile.am
++++ app/Makefile.am
+@@ -120,29 +120,29 @@
+
+ # FIXME: core should not depend on xcf
+ workaround_that_core_depends_on_xcf = \
+- -u $(SYMPREFIX)xcf_init
++ -Wl,-u,$(SYMPREFIX)xcf_init
+
+ # FIXME: core should not depend on pdb
+ workaround_that_core_depends_on_pdb = \
+- -u $(SYMPREFIX)internal_procs_init \
+- -u $(SYMPREFIX)gimp_plug_in_manager_restore
++ -Wl,-u,$(SYMPREFIX)internal_procs_init \
++ -Wl,-u,$(SYMPREFIX)gimp_plug_in_manager_restore
+
+ # FIXME: plug-in should not depend on pdb
+ workaround_that_plug_in_depends_on_pdb = \
+- -u $(SYMPREFIX)gimp_pdb_compat_param_spec
++ -Wl,-u,$(SYMPREFIX)gimp_pdb_compat_param_spec
+
+ # FIXME: file should not depend on plug-in
+ workaround_that_file_depends_on_plug_in = \
+- -u $(SYMPREFIX)plug_in_icc_profile_apply_rgb \
+- -u $(SYMPREFIX)gimp_image_map_config_get_type
++ -Wl,-u,$(SYMPREFIX)plug_in_icc_profile_apply_rgb \
++ -Wl,-u,$(SYMPREFIX)gimp_image_map_config_get_type
+
+ # core, vectors and gegl are on the same architectural layer, prevent
+ # the linker from panicing
+ calm_down_linker = \
+- -u $(SYMPREFIX)gimp_vectors_undo_get_type \
+- -u $(SYMPREFIX)gimp_vectors_mod_undo_get_type \
+- -u $(SYMPREFIX)gimp_vectors_prop_undo_get_type \
+- -u $(SYMPREFIX)gimp_curve_map_pixels
++ -Wl,-u,$(SYMPREFIX)gimp_vectors_undo_get_type \
++ -Wl,-u,$(SYMPREFIX)gimp_vectors_mod_undo_get_type \
++ -Wl,-u,$(SYMPREFIX)gimp_vectors_prop_undo_get_type \
++ -Wl,-u,$(SYMPREFIX)gimp_curve_map_pixels
+
+ AM_LDFLAGS = \
+ $(munix) \
+--- app/Makefile.in
++++ app/Makefile.in
+@@ -702,33 +702,33 @@
+
+ # FIXME: core should not depend on xcf
+ workaround_that_core_depends_on_xcf = \
+- -u $(SYMPREFIX)xcf_init
++ -Wl,-u,$(SYMPREFIX)xcf_init
+
+
+ # FIXME: core should not depend on pdb
+ workaround_that_core_depends_on_pdb = \
+- -u $(SYMPREFIX)internal_procs_init \
+- -u $(SYMPREFIX)gimp_plug_in_manager_restore
++ -Wl,-u,$(SYMPREFIX)internal_procs_init \
++ -Wl,-u,$(SYMPREFIX)gimp_plug_in_manager_restore
+
+
+ # FIXME: plug-in should not depend on pdb
+ workaround_that_plug_in_depends_on_pdb = \
+- -u $(SYMPREFIX)gimp_pdb_compat_param_spec
++ -Wl,-u,$(SYMPREFIX)gimp_pdb_compat_param_spec
+
+
+ # FIXME: file should not depend on plug-in
+ workaround_that_file_depends_on_plug_in = \
+- -u $(SYMPREFIX)plug_in_icc_profile_apply_rgb \
+- -u $(SYMPREFIX)gimp_image_map_config_get_type
++ -Wl,-u,$(SYMPREFIX)plug_in_icc_profile_apply_rgb \
++ -Wl,-u,$(SYMPREFIX)gimp_image_map_config_get_type
+
+
+ # core, vectors and gegl are on the same architectural layer, prevent
+ # the linker from panicing
+ calm_down_linker = \
+- -u $(SYMPREFIX)gimp_vectors_undo_get_type \
+- -u $(SYMPREFIX)gimp_vectors_mod_undo_get_type \
+- -u $(SYMPREFIX)gimp_vectors_prop_undo_get_type \
+- -u $(SYMPREFIX)gimp_curve_map_pixels
++ -Wl,-u,$(SYMPREFIX)gimp_vectors_undo_get_type \
++ -Wl,-u,$(SYMPREFIX)gimp_vectors_mod_undo_get_type \
++ -Wl,-u,$(SYMPREFIX)gimp_vectors_prop_undo_get_type \
++ -Wl,-u,$(SYMPREFIX)gimp_curve_map_pixels
+
+ AM_LDFLAGS = \
+ $(munix) \
+--- app/tests/Makefile.am
++++ app/tests/Makefile.am
+@@ -63,22 +63,22 @@
+ # We need this due to circular dependencies, see more detailed
+ # comments about it in app/Makefile.am
+ AM_LDFLAGS = \
+- -u $(SYMPREFIX)xcf_init \
+- -u $(SYMPREFIX)base_init \
+- -u $(SYMPREFIX)internal_procs_init \
+- -u $(SYMPREFIX)gimp_plug_in_manager_restore \
+- -u $(SYMPREFIX)gimp_pdb_compat_param_spec \
+- -u $(SYMPREFIX)gui_init \
+- -u $(SYMPREFIX)plug_in_icc_profile_apply_rgb \
+- -u $(SYMPREFIX)gimp_image_map_config_get_type \
+- -u $(SYMPREFIX)gimp_vectors_undo_get_type \
+- -u $(SYMPREFIX)gimp_vectors_mod_undo_get_type \
+- -u $(SYMPREFIX)gimp_vectors_prop_undo_get_type \
+- -u $(SYMPREFIX)actions_init \
+- -u $(SYMPREFIX)gimp_error_dialog_new \
+- -u $(SYMPREFIX)menus_save \
+- -u $(SYMPREFIX)gimp_tools_save \
+- -u $(SYMPREFIX)gimp_curve_map_pixels
++ -Wl,-u,$(SYMPREFIX)xcf_init \
++ -Wl,-u,$(SYMPREFIX)base_init \
++ -Wl,-u,$(SYMPREFIX)internal_procs_init \
++ -Wl,-u,$(SYMPREFIX)gimp_plug_in_manager_restore \
++ -Wl,-u,$(SYMPREFIX)gimp_pdb_compat_param_spec \
++ -Wl,-u,$(SYMPREFIX)gui_init \
++ -Wl,-u,$(SYMPREFIX)plug_in_icc_profile_apply_rgb \
++ -Wl,-u,$(SYMPREFIX)gimp_image_map_config_get_type \
++ -Wl,-u,$(SYMPREFIX)gimp_vectors_undo_get_type \
++ -Wl,-u,$(SYMPREFIX)gimp_vectors_mod_undo_get_type \
++ -Wl,-u,$(SYMPREFIX)gimp_vectors_prop_undo_get_type \
++ -Wl,-u,$(SYMPREFIX)actions_init \
++ -Wl,-u,$(SYMPREFIX)gimp_error_dialog_new \
++ -Wl,-u,$(SYMPREFIX)menus_save \
++ -Wl,-u,$(SYMPREFIX)gimp_tools_save \
++ -Wl,-u,$(SYMPREFIX)gimp_curve_map_pixels
+
+ # Note that we have some duplicate entries here too to work around
+ # circular dependencies and systems on the same architectural layer as
+--- app/tests/Makefile.in
++++ app/tests/Makefile.in
+@@ -1221,22 +1221,22 @@
+ # We need this due to circular dependencies, see more detailed
+ # comments about it in app/Makefile.am
+ AM_LDFLAGS = \
+- -u $(SYMPREFIX)xcf_init \
+- -u $(SYMPREFIX)base_init \
+- -u $(SYMPREFIX)internal_procs_init \
+- -u $(SYMPREFIX)gimp_plug_in_manager_restore \
+- -u $(SYMPREFIX)gimp_pdb_compat_param_spec \
+- -u $(SYMPREFIX)gui_init \
+- -u $(SYMPREFIX)plug_in_icc_profile_apply_rgb \
+- -u $(SYMPREFIX)gimp_image_map_config_get_type \
+- -u $(SYMPREFIX)gimp_vectors_undo_get_type \
+- -u $(SYMPREFIX)gimp_vectors_mod_undo_get_type \
+- -u $(SYMPREFIX)gimp_vectors_prop_undo_get_type \
+- -u $(SYMPREFIX)actions_init \
+- -u $(SYMPREFIX)gimp_error_dialog_new \
+- -u $(SYMPREFIX)menus_save \
+- -u $(SYMPREFIX)gimp_tools_save \
+- -u $(SYMPREFIX)gimp_curve_map_pixels
++ -Wl,-u,$(SYMPREFIX)xcf_init \
++ -Wl,-u,$(SYMPREFIX)base_init \
++ -Wl,-u,$(SYMPREFIX)internal_procs_init \
++ -Wl,-u,$(SYMPREFIX)gimp_plug_in_manager_restore \
++ -Wl,-u,$(SYMPREFIX)gimp_pdb_compat_param_spec \
++ -Wl,-u,$(SYMPREFIX)gui_init \
++ -Wl,-u,$(SYMPREFIX)plug_in_icc_profile_apply_rgb \
++ -Wl,-u,$(SYMPREFIX)gimp_image_map_config_get_type \
++ -Wl,-u,$(SYMPREFIX)gimp_vectors_undo_get_type \
++ -Wl,-u,$(SYMPREFIX)gimp_vectors_mod_undo_get_type \
++ -Wl,-u,$(SYMPREFIX)gimp_vectors_prop_undo_get_type \
++ -Wl,-u,$(SYMPREFIX)actions_init \
++ -Wl,-u,$(SYMPREFIX)gimp_error_dialog_new \
++ -Wl,-u,$(SYMPREFIX)menus_save \
++ -Wl,-u,$(SYMPREFIX)gimp_tools_save \
++ -Wl,-u,$(SYMPREFIX)gimp_curve_map_pixels
+
+
+ # Note that we have some duplicate entries here too to work around
+--- devel-docs/app/Makefile.am
++++ devel-docs/app/Makefile.am
+@@ -62,10 +62,10 @@
+ -UGTK_DISABLE_SINGLE_INCLUDES
+
+ GTKDOC_LIBS = \
+- -u $(SYMPREFIX)xcf_init \
+- -u $(SYMPREFIX)internal_procs_init \
+- -u $(SYMPREFIX)gimp_coords_mix \
+- -u $(SYMPREFIX)gimp_plug_in_manager_restore \
++ -Wl,-u,$(SYMPREFIX)xcf_init \
++ -Wl,-u,$(SYMPREFIX)internal_procs_init \
++ -Wl,-u,$(SYMPREFIX)gimp_coords_mix \
++ -Wl,-u,$(SYMPREFIX)gimp_plug_in_manager_restore \
+ $(top_builddir)/app/app.o \
+ $(top_builddir)/app/batch.o \
+ $(top_builddir)/app/errors.o \
+--- devel-docs/app/Makefile.in
++++ devel-docs/app/Makefile.in
+@@ -511,10 +511,10 @@
+ -UGTK_DISABLE_SINGLE_INCLUDES
+
+ GTKDOC_LIBS = \
+- -u $(SYMPREFIX)xcf_init \
+- -u $(SYMPREFIX)internal_procs_init \
+- -u $(SYMPREFIX)gimp_coords_mix \
+- -u $(SYMPREFIX)gimp_plug_in_manager_restore \
++ -Wl,-u,$(SYMPREFIX)xcf_init \
++ -Wl,-u,$(SYMPREFIX)internal_procs_init \
++ -Wl,-u,$(SYMPREFIX)gimp_coords_mix \
++ -Wl,-u,$(SYMPREFIX)gimp_plug_in_manager_restore \
+ $(top_builddir)/app/app.o \
+ $(top_builddir)/app/batch.o \
+ $(top_builddir)/app/errors.o \
diff --git a/media-gfx/gimp/files/gimp-2.8.10-freetype251.patch b/media-gfx/gimp/files/gimp-2.8.10-freetype251.patch
new file mode 100644
index 000000000000..c5c20d510cbc
--- /dev/null
+++ b/media-gfx/gimp/files/gimp-2.8.10-freetype251.patch
@@ -0,0 +1,26 @@
+From 6c73f28b6d87a2afd11974552a075bffec52347f Mon Sep 17 00:00:00 2001
+From: Michael Natterer <mitch@gimp.org>
+Date: Fri, 29 Nov 2013 21:57:46 +0100
+Subject: Bug 719560 - Build failure with freetype 2.5.1
+
+Apply patch from su-v that fixes the freetype include to
+the madness devised and recommended by freetype.
+
+diff --git a/app/text/gimpfont.c b/app/text/gimpfont.c
+index 4045ca9..66c6e52 100644
+--- a/app/text/gimpfont.c
++++ b/app/text/gimpfont.c
+@@ -28,7 +28,9 @@
+
+ #define PANGO_ENABLE_ENGINE 1 /* Argh */
+ #include <pango/pango-ot.h>
+-#include <freetype/tttables.h>
++
++#include <ft2build.h>
++#include FT_TRUETYPE_TABLES_H
+
+ #include "text-types.h"
+
+--
+cgit v0.10.1
+
diff --git a/media-gfx/gimp/files/gimp-2.8.6-uclibc.patch b/media-gfx/gimp/files/gimp-2.8.6-uclibc.patch
new file mode 100644
index 000000000000..855e9872f4b4
--- /dev/null
+++ b/media-gfx/gimp/files/gimp-2.8.6-uclibc.patch
@@ -0,0 +1,45 @@
+From 4fb7a436bca3e11abfda8bc23818af0f09714b9d Mon Sep 17 00:00:00 2001
+From: Michael Natterer <mitch@gimp.org>
+Date: Fri, 02 Aug 2013 14:50:00 +0000
+Subject: Bug 704980 - uclibc - base-utils.c: execinfo.h: No such file or directory
+
+Apply patch from Amadeusz Slawinski that checks for execinfo.h and
+builds the code that needs it conditionally.
+---
+diff --git a/app/base/base-utils.c b/app/base/base-utils.c
+index 757f58d..44a9e89 100644
+--- a/app/base/base-utils.c
++++ b/app/base/base-utils.c
+@@ -29,7 +29,7 @@
+ #include <process.h>
+ #endif
+
+-#ifdef G_OS_UNIX
++#if defined(G_OS_UNIX) && defined(HAVE_EXECINFO_H)
+ /* For get_backtrace() */
+ #include <stdlib.h>
+ #include <string.h>
+@@ -112,7 +112,7 @@ get_physical_memory_size (void)
+ char *
+ get_backtrace (void)
+ {
+-#ifdef G_OS_UNIX
++#if defined(G_OS_UNIX) && defined(HAVE_EXECINFO_H)
+ void *functions[MAX_FUNC];
+ char **function_names;
+ int n_functions;
+diff --git a/configure.ac b/configure.ac
+index 0bbcbc7..15c7cc6 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -416,7 +416,7 @@ AC_HEADER_STDC
+ AC_HEADER_SYS_WAIT
+ AC_HEADER_TIME
+
+-AC_CHECK_HEADERS(sys/param.h sys/time.h sys/times.h sys/wait.h unistd.h)
++AC_CHECK_HEADERS(execinfo.h sys/param.h sys/time.h sys/times.h sys/wait.h unistd.h)
+
+ AC_TYPE_PID_T
+ AC_FUNC_VPRINTF
+--
+cgit v0.9.2
diff --git a/media-gfx/gimp/files/gimp-curl-headers.diff b/media-gfx/gimp/files/gimp-curl-headers.diff
new file mode 100644
index 000000000000..ea8935d0080c
--- /dev/null
+++ b/media-gfx/gimp/files/gimp-curl-headers.diff
@@ -0,0 +1,12 @@
+diff --git a/plug-ins/file-uri/uri-backend-libcurl.c b/plug-ins/file-uri/uri-backend-libcurl.c
+index a566966..747dca7 100644
+--- a/plug-ins/file-uri/uri-backend-libcurl.c
++++ b/plug-ins/file-uri/uri-backend-libcurl.c
+@@ -24,7 +24,6 @@
+ #include <errno.h>
+
+ #include <curl/curl.h>
+-#include <curl/types.h>
+ #include <curl/easy.h>
+
+ #include <glib/gstdio.h>
diff --git a/media-gfx/gimp/gimp-2.8.10-r1.ebuild b/media-gfx/gimp/gimp-2.8.10-r1.ebuild
new file mode 100644
index 000000000000..4fdb741d3517
--- /dev/null
+++ b/media-gfx/gimp/gimp-2.8.10-r1.ebuild
@@ -0,0 +1,165 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+PYTHON_COMPAT=( python2_7 )
+
+inherit versionator autotools eutils gnome2 fdo-mime multilib python-single-r1
+
+DESCRIPTION="GNU Image Manipulation Program"
+HOMEPAGE="http://www.gimp.org/"
+SRC_URI="mirror://gimp/v$(get_version_component_range 1-2)/${P}.tar.bz2"
+LICENSE="GPL-3 LGPL-3"
+SLOT="2"
+KEYWORDS="alpha amd64 ~arm hppa ia64 ~mips ppc ppc64 sparc x86 ~x86-interix ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~x64-solaris ~x86-solaris"
+
+LANGS="am ar ast az be bg br ca ca@valencia cs csb da de dz el en_CA en_GB eo es et eu fa fi fr ga gl gu he hi hr hu id is it ja ka kk km kn ko lt lv mk ml ms my nb nds ne nl nn oc pa pl pt pt_BR ro ru rw si sk sl sr sr@latin sv ta te th tr tt uk vi xh yi zh_CN zh_HK zh_TW"
+IUSE="alsa aalib altivec aqua bzip2 curl dbus debug doc exif gnome postscript jpeg jpeg2k lcms cpu_flags_x86_mmx mng pdf png python smp cpu_flags_x86_sse svg tiff udev webkit wmf xpm"
+
+for lang in ${LANGS}; do
+ IUSE+=" linguas_${lang}"
+done
+
+RDEPEND=">=dev-libs/glib-2.30.2:2
+ >=dev-libs/atk-2.2.0
+ >=x11-libs/gtk+-2.24.10:2
+ >=x11-libs/gdk-pixbuf-2.24.1:2
+ >=x11-libs/cairo-1.10.2
+ >=x11-libs/pango-1.29.4
+ xpm? ( x11-libs/libXpm )
+ >=media-libs/freetype-2.1.7
+ >=media-libs/fontconfig-2.2.0
+ sys-libs/zlib
+ dev-libs/libxml2
+ dev-libs/libxslt
+ x11-themes/hicolor-icon-theme
+ >=media-libs/babl-0.1.10
+ >=media-libs/gegl-0.2.0:0
+ aalib? ( media-libs/aalib )
+ alsa? ( media-libs/alsa-lib )
+ aqua? ( x11-libs/gtk-mac-integration )
+ curl? ( net-misc/curl )
+ dbus? ( dev-libs/dbus-glib )
+ gnome? ( gnome-base/gvfs )
+ webkit? ( >=net-libs/webkit-gtk-1.6.1:2 )
+ jpeg? ( virtual/jpeg:0 )
+ jpeg2k? ( media-libs/jasper )
+ exif? ( >=media-libs/libexif-0.6.15 )
+ lcms? ( >=media-libs/lcms-2.2:2 )
+ mng? ( media-libs/libmng )
+ pdf? ( >=app-text/poppler-0.12.4[cairo] )
+ png? ( >=media-libs/libpng-1.2.37:0 )
+ python? (
+ ${PYTHON_DEPS}
+ >=dev-python/pygtk-2.10.4:2[${PYTHON_USEDEP}]
+ )
+ tiff? ( >=media-libs/tiff-3.5.7:0 )
+ svg? ( >=gnome-base/librsvg-2.36.0:2 )
+ wmf? ( >=media-libs/libwmf-0.2.8 )
+ x11-libs/libXcursor
+ sys-libs/zlib
+ bzip2? ( app-arch/bzip2 )
+ postscript? ( app-text/ghostscript-gpl )
+ udev? ( virtual/libgudev:= )"
+DEPEND="${RDEPEND}
+ sys-apps/findutils
+ virtual/pkgconfig
+ >=dev-util/intltool-0.40.1
+ >=sys-devel/gettext-0.17
+ doc? ( >=dev-util/gtk-doc-1 )
+ >=sys-devel/libtool-2.2
+ >=sys-devel/automake-1.11
+ dev-util/gtk-doc-am" # due to our call to eautoreconf below (bug #386453)
+
+DOCS="AUTHORS ChangeLog* HACKING NEWS README*"
+
+S="${WORKDIR}"/${P}
+
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
+
+pkg_setup() {
+ G2CONF="--enable-default-binary \
+ --disable-silent-rules \
+ $(use_with !aqua x) \
+ $(use_with aalib aa) \
+ $(use_with alsa) \
+ $(use_enable altivec) \
+ $(use_with bzip2) \
+ $(use_with curl libcurl) \
+ $(use_with dbus) \
+ $(use_with gnome gvfs) \
+ $(use_with webkit) \
+ $(use_with jpeg libjpeg) \
+ $(use_with jpeg2k libjasper) \
+ $(use_with exif libexif) \
+ $(use_with lcms lcms lcms2) \
+ $(use_with postscript gs) \
+ $(use_enable cpu_flags_x86_mmx mmx) \
+ $(use_with mng libmng) \
+ $(use_with pdf poppler) \
+ $(use_with png libpng) \
+ $(use_enable python) \
+ $(use_enable smp mp) \
+ $(use_enable cpu_flags_x86_sse sse) \
+ $(use_with svg librsvg) \
+ $(use_with tiff libtiff) \
+ $(use_with udev gudev) \
+ $(use_with wmf) \
+ --with-xmc \
+ $(use_with xpm libxpm) \
+ --without-xvfb-run"
+
+ if use python; then
+ python-single-r1_pkg_setup
+ fi
+}
+
+src_prepare() {
+ epatch "${FILESDIR}"/${PN}-2.7.4-no-deprecation.patch # bug 395695, comment 9 and 16
+ epatch "${FILESDIR}"/${P}-freetype251.patch # bug #493466
+ epatch "${FILESDIR}"/${P}-clang.patch # bug 449370 compile with clang
+ sed -i -e 's/== "xquartz"/= "xquartz"/' configure.ac || die #494864
+ eautoreconf # If you remove this: remove dev-util/gtk-doc-am from DEPEND, too
+
+ gnome2_src_prepare
+}
+
+_clean_up_locales() {
+ einfo "Cleaning up locales..."
+ for lang in ${LANGS}; do
+ use "linguas_${lang}" && {
+ einfo "- keeping ${lang}"
+ continue
+ }
+ rm -Rf "${ED}"/usr/share/locale/"${lang}" || die
+ done
+}
+
+src_install() {
+ gnome2_src_install
+
+ if use python; then
+ python_optimize
+ fi
+
+ # Workaround for bug #321111 to give GIMP the least
+ # precedence on PDF documents by default
+ mv "${ED}"/usr/share/applications/{,zzz-}gimp.desktop || die
+
+ prune_libtool_files --all
+
+ # Prevent dead symlink gimp-console.1 from downstream man page compression (bug #433527)
+ local gimp_app_version=$(get_version_component_range 1-2)
+ mv "${ED}"/usr/share/man/man1/gimp-console{-${gimp_app_version},}.1 || die
+
+ _clean_up_locales
+}
+
+pkg_postinst() {
+ gnome2_pkg_postinst
+}
+
+pkg_postrm() {
+ gnome2_pkg_postrm
+}
diff --git a/media-gfx/gimp/gimp-2.8.10-r2.ebuild b/media-gfx/gimp/gimp-2.8.10-r2.ebuild
new file mode 100644
index 000000000000..0d295ffa6ce1
--- /dev/null
+++ b/media-gfx/gimp/gimp-2.8.10-r2.ebuild
@@ -0,0 +1,168 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+PYTHON_COMPAT=( python2_7 )
+
+inherit versionator autotools eutils gnome2 fdo-mime multilib python-single-r1
+
+DESCRIPTION="GNU Image Manipulation Program"
+HOMEPAGE="http://www.gimp.org/"
+SRC_URI="mirror://gimp/v$(get_version_component_range 1-2)/${P}.tar.bz2"
+LICENSE="GPL-3 LGPL-3"
+SLOT="2"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~x86-interix ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~x64-solaris ~x86-solaris"
+
+LANGS="am ar ast az be bg br ca ca@valencia cs csb da de dz el en_CA en_GB eo es et eu fa fi fr ga gl gu he hi hr hu id is it ja ka kk km kn ko lt lv mk ml ms my nb nds ne nl nn oc pa pl pt pt_BR ro ru rw si sk sl sr sr@latin sv ta te th tr tt uk vi xh yi zh_CN zh_HK zh_TW"
+IUSE="alsa aalib altivec aqua bzip2 curl dbus debug doc exif gnome postscript jpeg jpeg2k lcms cpu_flags_x86_mmx mng pdf png python smp cpu_flags_x86_sse svg tiff udev webkit wmf xpm"
+
+for lang in ${LANGS}; do
+ IUSE+=" linguas_${lang}"
+done
+
+RDEPEND=">=dev-libs/glib-2.30.2:2
+ >=dev-libs/atk-2.2.0
+ >=x11-libs/gtk+-2.24.10:2
+ >=x11-libs/gdk-pixbuf-2.24.1:2
+ >=x11-libs/cairo-1.10.2
+ >=x11-libs/pango-1.29.4
+ xpm? ( x11-libs/libXpm )
+ >=media-libs/freetype-2.1.7
+ >=media-libs/fontconfig-2.2.0
+ sys-libs/zlib
+ dev-libs/libxml2
+ dev-libs/libxslt
+ x11-themes/hicolor-icon-theme
+ >=media-libs/babl-0.1.10
+ >=media-libs/gegl-0.2.0:0
+ aalib? ( media-libs/aalib )
+ alsa? ( media-libs/alsa-lib )
+ aqua? ( x11-libs/gtk-mac-integration )
+ curl? ( net-misc/curl )
+ dbus? ( dev-libs/dbus-glib )
+ gnome? ( gnome-base/gvfs )
+ webkit? ( >=net-libs/webkit-gtk-1.6.1:2 )
+ jpeg? ( virtual/jpeg:0 )
+ jpeg2k? ( media-libs/jasper )
+ exif? ( >=media-libs/libexif-0.6.15 )
+ lcms? ( >=media-libs/lcms-2.2:2 )
+ mng? ( media-libs/libmng )
+ pdf? ( >=app-text/poppler-0.12.4[cairo] )
+ png? ( >=media-libs/libpng-1.2.37:0 )
+ python? (
+ ${PYTHON_DEPS}
+ >=dev-python/pygtk-2.10.4:2[${PYTHON_USEDEP}]
+ )
+ tiff? ( >=media-libs/tiff-3.5.7:0 )
+ svg? ( >=gnome-base/librsvg-2.36.0:2 )
+ wmf? ( >=media-libs/libwmf-0.2.8 )
+ x11-libs/libXcursor
+ sys-libs/zlib
+ bzip2? ( app-arch/bzip2 )
+ postscript? ( app-text/ghostscript-gpl )
+ udev? ( virtual/libgudev:= )"
+DEPEND="${RDEPEND}
+ sys-apps/findutils
+ virtual/pkgconfig
+ >=dev-util/intltool-0.40.1
+ >=sys-devel/gettext-0.17
+ doc? ( >=dev-util/gtk-doc-1 )
+ >=sys-devel/libtool-2.2
+ >=sys-devel/automake-1.11
+ dev-util/gtk-doc-am" # due to our call to eautoreconf below (bug #386453)
+
+DOCS="AUTHORS ChangeLog* HACKING NEWS README*"
+
+S="${WORKDIR}"/${P}
+
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
+
+pkg_setup() {
+ G2CONF="--enable-default-binary \
+ --disable-silent-rules \
+ $(use_with !aqua x) \
+ $(use_with aalib aa) \
+ $(use_with alsa) \
+ $(use_enable altivec) \
+ $(use_with bzip2) \
+ $(use_with curl libcurl) \
+ $(use_with dbus) \
+ $(use_with gnome gvfs) \
+ $(use_with webkit) \
+ $(use_with jpeg libjpeg) \
+ $(use_with jpeg2k libjasper) \
+ $(use_with exif libexif) \
+ $(use_with lcms lcms lcms2) \
+ $(use_with postscript gs) \
+ $(use_enable cpu_flags_x86_mmx mmx) \
+ $(use_with mng libmng) \
+ $(use_with pdf poppler) \
+ $(use_with png libpng) \
+ $(use_enable python) \
+ $(use_enable smp mp) \
+ $(use_enable cpu_flags_x86_sse sse) \
+ $(use_with svg librsvg) \
+ $(use_with tiff libtiff) \
+ $(use_with udev gudev) \
+ $(use_with wmf) \
+ --with-xmc \
+ $(use_with xpm libxpm) \
+ --without-xvfb-run"
+
+ if use python; then
+ python-single-r1_pkg_setup
+ fi
+}
+
+src_prepare() {
+ epatch "${FILESDIR}"/${P}-CVE-2013-1913.patch # bug 493372
+ epatch "${FILESDIR}"/${P}-CVE-2013-1978.patch # bug 493372
+
+ epatch "${FILESDIR}"/${PN}-2.7.4-no-deprecation.patch # bug 395695, comment 9 and 16
+ epatch "${FILESDIR}"/${P}-freetype251.patch # bug #493466
+ epatch "${FILESDIR}"/${P}-clang.patch # bug 449370 compile with clang
+ sed -i -e 's/== "xquartz"/= "xquartz"/' configure.ac || die #494864
+ eautoreconf # If you remove this: remove dev-util/gtk-doc-am from DEPEND, too
+
+ gnome2_src_prepare
+}
+
+_clean_up_locales() {
+ einfo "Cleaning up locales..."
+ for lang in ${LANGS}; do
+ use "linguas_${lang}" && {
+ einfo "- keeping ${lang}"
+ continue
+ }
+ rm -Rf "${ED}"/usr/share/locale/"${lang}" || die
+ done
+}
+
+src_install() {
+ gnome2_src_install
+
+ if use python; then
+ python_optimize
+ fi
+
+ # Workaround for bug #321111 to give GIMP the least
+ # precedence on PDF documents by default
+ mv "${ED}"/usr/share/applications/{,zzz-}gimp.desktop || die
+
+ prune_libtool_files --all
+
+ # Prevent dead symlink gimp-console.1 from downstream man page compression (bug #433527)
+ local gimp_app_version=$(get_version_component_range 1-2)
+ mv "${ED}"/usr/share/man/man1/gimp-console{-${gimp_app_version},}.1 || die
+
+ _clean_up_locales
+}
+
+pkg_postinst() {
+ gnome2_pkg_postinst
+}
+
+pkg_postrm() {
+ gnome2_pkg_postrm
+}
diff --git a/media-gfx/gimp/gimp-2.8.14.ebuild b/media-gfx/gimp/gimp-2.8.14.ebuild
new file mode 100644
index 000000000000..36b484f210f6
--- /dev/null
+++ b/media-gfx/gimp/gimp-2.8.14.ebuild
@@ -0,0 +1,164 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+PYTHON_COMPAT=( python2_7 )
+
+inherit versionator autotools eutils gnome2 fdo-mime multilib python-single-r1
+
+DESCRIPTION="GNU Image Manipulation Program"
+HOMEPAGE="http://www.gimp.org/"
+SRC_URI="mirror://gimp/v$(get_version_component_range 1-2)/${P}.tar.bz2"
+LICENSE="GPL-3 LGPL-3"
+SLOT="2"
+KEYWORDS="alpha amd64 ~arm hppa ia64 ~mips ppc ppc64 sparc x86 ~x86-interix ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~x64-solaris ~x86-solaris"
+
+LANGS="am ar ast az be bg br ca ca@valencia cs csb da de dz el en_CA en_GB eo es et eu fa fi fr ga gl gu he hi hr hu id is it ja ka kk km kn ko lt lv mk ml ms my nb nds ne nl nn oc pa pl pt pt_BR ro ru rw si sk sl sr sr@latin sv ta te th tr tt uk vi xh yi zh_CN zh_HK zh_TW"
+IUSE="alsa aalib altivec aqua bzip2 curl dbus debug doc exif gnome postscript jpeg jpeg2k lcms cpu_flags_x86_mmx mng pdf png python smp cpu_flags_x86_sse svg tiff udev webkit wmf xpm"
+
+for lang in ${LANGS}; do
+ IUSE+=" linguas_${lang}"
+done
+
+RDEPEND=">=dev-libs/glib-2.30.2:2
+ >=dev-libs/atk-2.2.0
+ >=x11-libs/gtk+-2.24.10:2
+ >=x11-libs/gdk-pixbuf-2.24.1:2
+ >=x11-libs/cairo-1.10.2
+ >=x11-libs/pango-1.29.4
+ xpm? ( x11-libs/libXpm )
+ >=media-libs/freetype-2.1.7
+ >=media-libs/fontconfig-2.2.0
+ sys-libs/zlib
+ dev-libs/libxml2
+ dev-libs/libxslt
+ x11-themes/hicolor-icon-theme
+ >=media-libs/babl-0.1.10
+ >=media-libs/gegl-0.2.0:0
+ aalib? ( media-libs/aalib )
+ alsa? ( media-libs/alsa-lib )
+ aqua? ( x11-libs/gtk-mac-integration )
+ curl? ( net-misc/curl )
+ dbus? ( dev-libs/dbus-glib )
+ gnome? ( gnome-base/gvfs )
+ webkit? ( >=net-libs/webkit-gtk-1.6.1:2 )
+ jpeg? ( virtual/jpeg:0 )
+ jpeg2k? ( media-libs/jasper )
+ exif? ( >=media-libs/libexif-0.6.15 )
+ lcms? ( >=media-libs/lcms-2.2:2 )
+ mng? ( media-libs/libmng )
+ pdf? ( >=app-text/poppler-0.12.4[cairo] )
+ png? ( >=media-libs/libpng-1.2.37:0 )
+ python? (
+ ${PYTHON_DEPS}
+ >=dev-python/pygtk-2.10.4:2[${PYTHON_USEDEP}]
+ )
+ tiff? ( >=media-libs/tiff-3.5.7:0 )
+ svg? ( >=gnome-base/librsvg-2.36.0:2 )
+ wmf? ( >=media-libs/libwmf-0.2.8 )
+ x11-libs/libXcursor
+ sys-libs/zlib
+ bzip2? ( app-arch/bzip2 )
+ postscript? ( app-text/ghostscript-gpl )
+ udev? ( virtual/libgudev:= )"
+DEPEND="${RDEPEND}
+ sys-apps/findutils
+ virtual/pkgconfig
+ >=dev-util/intltool-0.40.1
+ >=sys-devel/gettext-0.19
+ doc? ( >=dev-util/gtk-doc-1 )
+ >=sys-devel/libtool-2.2
+ >=sys-devel/automake-1.11
+ dev-util/gtk-doc-am" # due to our call to eautoreconf below (bug #386453)
+
+DOCS="AUTHORS ChangeLog* HACKING NEWS README*"
+
+S="${WORKDIR}"/${P}
+
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
+
+pkg_setup() {
+ G2CONF="--enable-default-binary \
+ --disable-silent-rules \
+ $(use_with !aqua x) \
+ $(use_with aalib aa) \
+ $(use_with alsa) \
+ $(use_enable altivec) \
+ $(use_with bzip2) \
+ $(use_with curl libcurl) \
+ $(use_with dbus) \
+ $(use_with gnome gvfs) \
+ $(use_with webkit) \
+ $(use_with jpeg libjpeg) \
+ $(use_with jpeg2k libjasper) \
+ $(use_with exif libexif) \
+ $(use_with lcms lcms lcms2) \
+ $(use_with postscript gs) \
+ $(use_enable cpu_flags_x86_mmx mmx) \
+ $(use_with mng libmng) \
+ $(use_with pdf poppler) \
+ $(use_with png libpng) \
+ $(use_enable python) \
+ $(use_enable smp mp) \
+ $(use_enable cpu_flags_x86_sse sse) \
+ $(use_with svg librsvg) \
+ $(use_with tiff libtiff) \
+ $(use_with udev gudev) \
+ $(use_with wmf) \
+ --with-xmc \
+ $(use_with xpm libxpm) \
+ --without-xvfb-run"
+
+ if use python; then
+ python-single-r1_pkg_setup
+ fi
+}
+
+src_prepare() {
+ epatch "${FILESDIR}"/${PN}-2.7.4-no-deprecation.patch # bug 395695, comment 9 and 16
+ epatch "${FILESDIR}"/${PN}-2.8.10-clang.patch # bug 449370 compile with clang
+ sed -i -e 's/== "xquartz"/= "xquartz"/' configure.ac || die #494864
+ eautoreconf # If you remove this: remove dev-util/gtk-doc-am from DEPEND, too
+
+ gnome2_src_prepare
+}
+
+_clean_up_locales() {
+ einfo "Cleaning up locales..."
+ for lang in ${LANGS}; do
+ use "linguas_${lang}" && {
+ einfo "- keeping ${lang}"
+ continue
+ }
+ rm -Rf "${ED}"/usr/share/locale/"${lang}" || die
+ done
+}
+
+src_install() {
+ gnome2_src_install
+
+ if use python; then
+ python_optimize
+ fi
+
+ # Workaround for bug #321111 to give GIMP the least
+ # precedence on PDF documents by default
+ mv "${ED}"/usr/share/applications/{,zzz-}gimp.desktop || die
+
+ prune_libtool_files --all
+
+ # Prevent dead symlink gimp-console.1 from downstream man page compression (bug #433527)
+ local gimp_app_version=$(get_version_component_range 1-2)
+ mv "${ED}"/usr/share/man/man1/gimp-console{-${gimp_app_version},}.1 || die
+
+ _clean_up_locales
+}
+
+pkg_postinst() {
+ gnome2_pkg_postinst
+}
+
+pkg_postrm() {
+ gnome2_pkg_postrm
+}
diff --git a/media-gfx/gimp/gimp-9999.ebuild b/media-gfx/gimp/gimp-9999.ebuild
new file mode 100644
index 000000000000..00128f98c675
--- /dev/null
+++ b/media-gfx/gimp/gimp-9999.ebuild
@@ -0,0 +1,170 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+PYTHON_COMPAT=( python2_7 )
+
+inherit autotools eutils gnome2 fdo-mime multilib python-single-r1 git-r3
+
+EGIT_REPO_URI="git://git.gnome.org/gimp"
+
+DESCRIPTION="GNU Image Manipulation Program"
+HOMEPAGE="http://www.gimp.org/"
+SRC_URI=""
+
+LICENSE="GPL-3 LGPL-3"
+SLOT="2"
+KEYWORDS=""
+
+LANGS="am ar ast az be bg br ca ca@valencia cs csb da de dz el en_CA en_GB eo es et eu fa fi fr ga gl gu he hi hr hu id is it ja ka kk km kn ko lt lv mk ml ms my nb nds ne nl nn oc pa pl pt pt_BR ro ru rw si sk sl sr sr@latin sv ta te th tr tt uk vi xh yi zh_CN zh_HK zh_TW"
+IUSE="alsa aalib altivec aqua bzip2 curl dbus debug doc exif gnome openexr postscript jpeg jpeg2k lcms cpu_flags_x86_mmx mng pdf png python smp cpu_flags_x86_sse svg tiff udev webkit wmf xpm"
+
+for lang in ${LANGS}; do
+ IUSE+=" linguas_${lang}"
+done
+
+RDEPEND=">=dev-libs/glib-2.40.0:2
+ >=dev-libs/atk-2.2.0
+ >=x11-libs/gtk+-2.24.10:2
+ >=x11-libs/gdk-pixbuf-2.24.1:2
+ >=x11-libs/cairo-1.12.2
+ >=x11-libs/pango-1.29.4
+ xpm? ( x11-libs/libXpm )
+ >=media-libs/freetype-2.1.7
+ >=media-libs/fontconfig-2.2.0
+ >=media-libs/freetype-2.1.7:2
+ >=media-libs/harfbuzz-0.9.19
+ sys-libs/zlib
+ dev-libs/libxml2
+ dev-libs/libxslt
+ x11-themes/hicolor-icon-theme
+ >=media-libs/babl-0.1.11
+ media-libs/gegl:0.3
+ aalib? ( media-libs/aalib )
+ alsa? ( media-libs/alsa-lib )
+ aqua? ( x11-libs/gtk-mac-integration )
+ curl? ( net-misc/curl )
+ dbus? ( dev-libs/dbus-glib )
+ gnome? ( gnome-base/gvfs )
+ webkit? ( >=net-libs/webkit-gtk-1.6.1:2 )
+ jpeg? ( virtual/jpeg:0 )
+ jpeg2k? ( media-libs/jasper )
+ >=media-libs/gexiv2-0.6.1
+ lcms? ( >=media-libs/lcms-2.2:2 )
+ mng? ( media-libs/libmng )
+ pdf? ( >=app-text/poppler-0.12.4[cairo] )
+ png? ( >=media-libs/libpng-1.2.37:0 )
+ python? (
+ ${PYTHON_DEPS}
+ >=dev-python/pygtk-2.10.4:2[${PYTHON_USEDEP}]
+ )
+ tiff? ( >=media-libs/tiff-3.5.7:0 )
+ svg? ( >=gnome-base/librsvg-2.36.0:2 )
+ wmf? ( >=media-libs/libwmf-0.2.8 )
+ x11-libs/libXcursor
+ sys-libs/zlib
+ >=app-arch/xz-utils-5.0.0
+ openexr? ( >=media-libs/openexr-1.6.1 )
+ >=app-text/poppler-data-0.4.7
+ bzip2? ( app-arch/bzip2 )
+ postscript? ( app-text/ghostscript-gpl )
+ udev? ( virtual/libgudev:= )"
+DEPEND="${RDEPEND}
+ sys-apps/findutils
+ virtual/pkgconfig
+ >=dev-util/intltool-0.40.1
+ >=sys-devel/gettext-0.19
+ doc? ( >=dev-util/gtk-doc-1 )
+ >=sys-devel/libtool-2.2
+ >=sys-devel/autoconf-2.54
+ >=sys-devel/automake-1.11
+ dev-util/gtk-doc-am" # due to our call to eautoreconf below (bug #386453)
+
+DOCS="AUTHORS ChangeLog* HACKING NEWS README*"
+
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
+
+pkg_setup() {
+ G2CONF="--enable-default-binary \
+ --disable-silent-rules \
+ $(use_with !aqua x) \
+ $(use_with aalib aa) \
+ $(use_with alsa) \
+ $(use_enable altivec) \
+ $(use_with openexr) \
+ $(use_with webkit) \
+ $(use_with jpeg2k libjasper) \
+ $(use_with postscript gs) \
+ $(use_enable cpu_flags_x86_mmx mmx) \
+ $(use_with mng libmng) \
+ $(use_with pdf poppler) \
+ $(use_enable python) \
+ $(use_enable smp mp) \
+ $(use_enable cpu_flags_x86_sse sse) \
+ $(use_with svg librsvg) \
+ $(use_with tiff libtiff) \
+ $(use_with udev gudev) \
+ $(use_with wmf) \
+ --with-xmc \
+ $(use_with xpm libxpm) \
+ --without-xvfb-run"
+
+ if use python; then
+ python-single-r1_pkg_setup
+ fi
+}
+
+src_prepare() {
+ sed -i -e 's/== "xquartz"/= "xquartz"/' configure.ac || die #494864
+
+ echo '#!/bin/sh' > py-compile
+ chmod a+x py-compile || die
+ sed -i -e 's:\$srcdir/configure:#:g' autogen.sh
+ local myconf
+ if ! use doc; then
+ myconf="${myconf} --disable-gtk-doc"
+ fi
+ ./autogen.sh ${myconf} || die
+
+ # Fix "libtoolize --force" of autogen.sh (bug #476626)
+ rm install-sh ltmain.sh || die
+ _elibtoolize --copy --install || die
+
+ gnome2_src_prepare
+}
+
+_clean_up_locales() {
+ einfo "Cleaning up locales..."
+ for lang in ${LANGS}; do
+ use "linguas_${lang}" && {
+ einfo "- keeping ${lang}"
+ continue
+ }
+ rm -Rf "${ED}"/usr/share/locale/"${lang}" || die
+ done
+}
+
+src_install() {
+ gnome2_src_install
+
+ if use python; then
+ python_optimize
+ fi
+
+ # Workaround for bug #321111 to give GIMP the least
+ # precedence on PDF documents by default
+ mv "${ED}"/usr/share/applications/{,zzz-}gimp.desktop || die
+
+ prune_libtool_files --all
+
+ _clean_up_locales
+}
+
+pkg_postinst() {
+ gnome2_pkg_postinst
+}
+
+pkg_postrm() {
+ gnome2_pkg_postrm
+}
diff --git a/media-gfx/gimp/metadata.xml b/media-gfx/gimp/metadata.xml
new file mode 100644
index 000000000000..350a9b9c3954
--- /dev/null
+++ b/media-gfx/gimp/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer>
+ <email>sping@gentoo.org</email>
+ </maintainer>
+ <use>
+ <flag name="smp">
+ Enable support for multiprocessors
+ </flag>
+ </use>
+</pkgmetadata>