summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Pipping <sping@gentoo.org>2017-05-12 22:24:16 +0200
committerSebastian Pipping <sping@gentoo.org>2017-05-12 23:00:07 +0200
commit8f2698872e8f845bb9fc8a658913a045e420ab88 (patch)
treefdaac3f8dd843771014f7c41eb44304b2c436656
parentmedia-gfx/gimp: Remove old (diff)
downloadgentoo-8f2698872e8f845bb9fc8a658913a045e420ab88.tar.gz
gentoo-8f2698872e8f845bb9fc8a658913a045e420ab88.tar.bz2
gentoo-8f2698872e8f845bb9fc8a658913a045e420ab88.zip
media-gfx/gimp: Fix CVE-2007-3126 (bug #618310)
Package-Manager: Portage-2.3.5, Repoman-2.3.2
-rw-r--r--media-gfx/gimp/Manifest1
-rw-r--r--media-gfx/gimp/files/gimp-2.9.4-CVE-2007-3126.patch291
-rw-r--r--media-gfx/gimp/gimp-2.8.14-r4.ebuild170
-rw-r--r--media-gfx/gimp/gimp-2.8.20-r1.ebuild169
-rw-r--r--media-gfx/gimp/gimp-2.8.22.ebuild168
-rw-r--r--media-gfx/gimp/gimp-2.9.4-r3.ebuild191
6 files changed, 990 insertions, 0 deletions
diff --git a/media-gfx/gimp/Manifest b/media-gfx/gimp/Manifest
index d164055a5fa0..4cd208cef3ba 100644
--- a/media-gfx/gimp/Manifest
+++ b/media-gfx/gimp/Manifest
@@ -1,3 +1,4 @@
DIST gimp-2.8.14.tar.bz2 20440077 SHA256 d82a958641c9c752d68e35f65840925c08e314cea90222ad845892a40e05b22d SHA512 533f6b931624d36525cb2f3fbc27fe27565d761bbe26873bb5445c06c01523c044d1814363a8cd76b6e381440db4c6e302b0d3f7a9e5aac7f60072770552f1ba WHIRLPOOL 8fd7b0fd5f8627b2df83481f7956727acd42eafcdc9c9116713d60faf8578005c2fb1e1d729f3b2c836a90e9bab063e477f9da5285e5c43a79f2dbe441a0565b
DIST gimp-2.8.20.tar.bz2 20853324 SHA256 939ca1df70be865c672ffd654f4e20f188121d01601c5c90237214101533c805 SHA512 5cd02854e21098c0d9d929e9131ede628ed520b6c76190eb9f6db38f057cff956e35b0a891d04c3a2e9c9e85c77f82d7ff5e63404187a8df921553763f649fd7 WHIRLPOOL 14b4791e6849629e3794de28d3bab228dc43df844c56c7777b31e36e4db3173e6c5ccda8f8f116b4fbd2dcec31c24de94d9b822f12bdb20ddc372cf035089355
+DIST gimp-2.8.22.tar.bz2 20873278 SHA256 9187a35cc52b110d78124d7b27b68a68ade14a794c2721314bac6134d2a5638a SHA512 84a78d428282538b606b3cd1ff571e52c3d828fceade171b2012bc1cdcb85919fc7734e7e6c45ed3a8683657fa580412b32c1b511b8a512172a8c1df930493e6 WHIRLPOOL f9d2f2049b3bf91e8abb8a20b1fda93d801d66ca5d58a9710ae618b0289970c5eaf0df8f195de6c41a4f737fc9e666e011ff7061a45356f18cf426cbbedc3b06
DIST gimp-2.9.4-r1.tar.xz 18510496 SHA256 c3f3cab83f70c1c2c11c6b94157def3a40f1fd335ffda2ef3e191865fc89d97a SHA512 60691506ad021d34a9728a76529fb7ff653f679979f23346ba84f1f9c36606c6bc118b611e92be79af894cba93746c8bdaeeb00012300c23fe995e50c3204025 WHIRLPOOL a042ac4ccbb8172526cc9fa2ff2df7ac35bd9fcd6283778e03f451766176422ddf250229d9a074821b7a991c24bb14058abe49d9739815681d250f6201467a75
diff --git a/media-gfx/gimp/files/gimp-2.9.4-CVE-2007-3126.patch b/media-gfx/gimp/files/gimp-2.9.4-CVE-2007-3126.patch
new file mode 100644
index 000000000000..6c515173d9cd
--- /dev/null
+++ b/media-gfx/gimp/files/gimp-2.9.4-CVE-2007-3126.patch
@@ -0,0 +1,291 @@
+From 46bcd82800e37b0f5aead76184430ef2fe802748 Mon Sep 17 00:00:00 2001
+From: Michael Natterer <mitch@gimp.org>
+Date: Sun, 6 Nov 2016 21:34:43 +0100
+Subject: Bug 773233 - CVE-2007-3126 - Gimp 2.3.14 allows context-dependent
+ attackers...
+
+...to cause a denial of service (crash) via an ICO file with an
+InfoHeader containing a Height of zero
+
+Add some error handling to ico-load.c and bail out on zero width or height
+icons. Also some formatting cleanup.
+---
+ plug-ins/file-ico/ico-load.c | 103 ++++++++++++++++++++++++++-----------------
+ 1 file changed, 62 insertions(+), 41 deletions(-)
+
+diff --git a/plug-ins/file-ico/ico-load.c b/plug-ins/file-ico/ico-load.c
+index c8091d3..8cce94f 100644
+--- a/plug-ins/file-ico/ico-load.c
++++ b/plug-ins/file-ico/ico-load.c
+@@ -124,15 +124,17 @@ static guint32
+ ico_read_init (FILE *fp)
+ {
+ IcoFileHeader header;
++
+ /* read and check file header */
+- if (!ico_read_int16 (fp, &header.reserved, 1)
+- || !ico_read_int16 (fp, &header.resource_type, 1)
+- || !ico_read_int16 (fp, &header.icon_count, 1)
+- || header.reserved != 0
+- || header.resource_type != 1)
++ if (! ico_read_int16 (fp, &header.reserved, 1) ||
++ ! ico_read_int16 (fp, &header.resource_type, 1) ||
++ ! ico_read_int16 (fp, &header.icon_count, 1) ||
++ header.reserved != 0 ||
++ header.resource_type != 1)
+ {
+ return 0;
+ }
++
+ return header.icon_count;
+ }
+
+@@ -148,22 +150,25 @@ ico_read_size (FILE *fp,
+ gint32 color_type;
+ guint32 magic;
+
+- if ( fseek (fp, info->offset, SEEK_SET) < 0 )
++ if (fseek (fp, info->offset, SEEK_SET) < 0)
+ return FALSE;
+
+ ico_read_int32 (fp, &magic, 1);
++
+ if (magic == ICO_PNG_MAGIC)
+ {
+ png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, NULL, NULL,
+ NULL);
+- if (! png_ptr )
++ if (! png_ptr)
+ return FALSE;
++
+ info_ptr = png_create_info_struct (png_ptr);
+- if (! info_ptr )
++ if (! info_ptr)
+ {
+ png_destroy_read_struct (&png_ptr, NULL, NULL);
+ return FALSE;
+ }
++
+ if (setjmp (png_jmpbuf (png_ptr)))
+ {
+ png_destroy_read_struct (&png_ptr, NULL, NULL);
+@@ -182,8 +187,8 @@ ico_read_size (FILE *fp,
+ }
+ else if (magic == 40)
+ {
+- if (ico_read_int32 (fp, &info->width, 1)
+- && ico_read_int32 (fp, &info->height, 1))
++ if (ico_read_int32 (fp, &info->width, 1) &&
++ ico_read_int32 (fp, &info->height, 1))
+ {
+ info->height /= 2;
+ D(("ico_read_size: ICO: %ix%i\n", info->width, info->height));
+@@ -200,8 +205,9 @@ ico_read_size (FILE *fp,
+ }
+
+ static IcoLoadInfo*
+-ico_read_info (FILE *fp,
+- gint icon_count)
++ico_read_info (FILE *fp,
++ gint icon_count,
++ GError **error)
+ {
+ gint i;
+ IcoFileEntry *entries;
+@@ -209,8 +215,11 @@ ico_read_info (FILE *fp,
+
+ /* read icon entries */
+ entries = g_new (IcoFileEntry, icon_count);
+- if ( fread (entries, sizeof(IcoFileEntry), icon_count, fp) <= 0 )
++ if (fread (entries, sizeof (IcoFileEntry), icon_count, fp) <= 0)
+ {
++ g_set_error (error, G_FILE_ERROR, 0,
++ _("Could not read '%lu' bytes"),
++ sizeof (IcoFileEntry));
+ g_free (entries);
+ return NULL;
+ }
+@@ -218,23 +227,33 @@ ico_read_info (FILE *fp,
+ info = g_new (IcoLoadInfo, icon_count);
+ for (i = 0; i < icon_count; i++)
+ {
+- info[i].width = entries[i].width;
++ info[i].width = entries[i].width;
+ info[i].height = entries[i].height;
+- info[i].bpp = GUINT16_FROM_LE (entries[i].bpp);
+- info[i].size = GUINT32_FROM_LE (entries[i].size);
++ info[i].bpp = GUINT16_FROM_LE (entries[i].bpp);
++ info[i].size = GUINT32_FROM_LE (entries[i].size);
+ info[i].offset = GUINT32_FROM_LE (entries[i].offset);
+
+ if (info[i].width == 0 || info[i].height == 0)
+ {
+- ico_read_size (fp, info+i);
++ ico_read_size (fp, info + i);
+ }
+
+ D(("ico_read_info: %ix%i (%i bits, size: %i, offset: %i)\n",
+ info[i].width, info[i].height, info[i].bpp,
+ info[i].size, info[i].offset));
++
++ if (info[i].width == 0 || info[i].height == 0)
++ {
++ g_set_error (error, G_FILE_ERROR, 0,
++ _("Icon #%d has zero width or height"), i);
++ g_free (info);
++ g_free (entries);
++ return NULL;
++ }
+ }
+
+ g_free (entries);
++
+ return info;
+ }
+
+@@ -256,10 +275,10 @@ ico_read_png (FILE *fp,
+ gint i;
+
+ png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
+- if (! png_ptr )
++ if (! png_ptr)
+ return FALSE;
+ info = png_create_info_struct (png_ptr);
+- if (! info )
++ if (! info)
+ {
+ png_destroy_read_struct (&png_ptr, NULL, NULL);
+ return FALSE;
+@@ -287,14 +306,14 @@ ico_read_png (FILE *fp,
+ {
+ case PNG_COLOR_TYPE_GRAY:
+ png_set_expand_gray_1_2_4_to_8 (png_ptr);
+- if ( bit_depth == 16 )
++ if (bit_depth == 16)
+ png_set_strip_16 (png_ptr);
+ png_set_gray_to_rgb (png_ptr);
+ png_set_add_alpha (png_ptr, 0xff, PNG_FILLER_AFTER);
+ break;
+ case PNG_COLOR_TYPE_GRAY_ALPHA:
+ png_set_expand_gray_1_2_4_to_8 (png_ptr);
+- if ( bit_depth == 16 )
++ if (bit_depth == 16)
+ png_set_strip_16 (png_ptr);
+ png_set_gray_to_rgb (png_ptr);
+ break;
+@@ -427,16 +446,18 @@ ico_read_icon (FILE *fp,
+ data.planes, data.image_size, data.bpp,
+ data.used_clrs, data.important_clrs));
+
+- if (data.planes != 1
+- || data.compression != 0)
++ if (data.planes != 1 ||
++ data.compression != 0)
+ {
+ D(("skipping image: invalid header\n"));
+ return FALSE;
+ }
+
+- if (data.bpp != 1 && data.bpp != 4
+- && data.bpp != 8 && data.bpp != 24
+- && data.bpp != 32)
++ if (data.bpp != 1 &&
++ data.bpp != 4 &&
++ data.bpp != 8 &&
++ data.bpp != 24 &&
++ data.bpp != 32)
+ {
+ D(("skipping image: invalid depth: %i\n", data.bpp));
+ return FALSE;
+@@ -590,8 +611,8 @@ ico_load_layer (FILE *fp,
+ GeglBuffer *buffer;
+ gchar name[ICO_MAXBUF];
+
+- if ( fseek (fp, info->offset, SEEK_SET) < 0
+- || !ico_read_int32 (fp, &first_bytes, 1) )
++ if (fseek (fp, info->offset, SEEK_SET) < 0 ||
++ ! ico_read_int32 (fp, &first_bytes, 1))
+ return -1;
+
+ if (first_bytes == ICO_PNG_MAGIC)
+@@ -643,7 +664,7 @@ ico_load_image (const gchar *filename,
+ gimp_filename_to_utf8 (filename));
+
+ fp = g_fopen (filename, "rb");
+- if (! fp )
++ if (! fp)
+ {
+ g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno),
+ _("Could not open '%s' for reading: %s"),
+@@ -658,8 +679,8 @@ ico_load_image (const gchar *filename,
+ return -1;
+ }
+
+- info = ico_read_info (fp, icon_count);
+- if (!info)
++ info = ico_read_info (fp, icon_count, error);
++ if (! info)
+ {
+ fclose (fp);
+ return -1;
+@@ -670,12 +691,12 @@ ico_load_image (const gchar *filename,
+ max_height = 0;
+ for (i = 0; i < icon_count; i++)
+ {
+- if ( info[i].width > max_width )
++ if (info[i].width > max_width)
+ max_width = info[i].width;
+- if ( info[i].height > max_height )
++ if (info[i].height > max_height)
+ max_height = info[i].height;
+ }
+- if ( max_width <= 0 || max_height <= 0 )
++ if (max_width <= 0 || max_height <= 0)
+ {
+ g_free (info);
+ fclose (fp);
+@@ -721,7 +742,7 @@ ico_load_thumbnail_image (const gchar *filename,
+ gimp_filename_to_utf8 (filename));
+
+ fp = g_fopen (filename, "rb");
+- if (! fp )
++ if (! fp)
+ {
+ g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno),
+ _("Could not open '%s' for reading: %s"),
+@@ -730,7 +751,7 @@ ico_load_thumbnail_image (const gchar *filename,
+ }
+
+ icon_count = ico_read_init (fp);
+- if (! icon_count )
++ if (! icon_count)
+ {
+ fclose (fp);
+ return -1;
+@@ -739,8 +760,8 @@ ico_load_thumbnail_image (const gchar *filename,
+ D(("*** %s: Microsoft icon file, containing %i icon(s)\n",
+ filename, icon_count));
+
+- info = ico_read_info (fp, icon_count);
+- if (! info )
++ info = ico_read_info (fp, icon_count, error);
++ if (! info)
+ {
+ fclose (fp);
+ return -1;
+@@ -758,9 +779,9 @@ ico_load_thumbnail_image (const gchar *filename,
+
+ match = i;
+ }
+- else if ( w == info[i].width
+- && h == info[i].height
+- && info[i].bpp > bpp )
++ else if (w == info[i].width &&
++ h == info[i].height &&
++ info[i].bpp > bpp)
+ {
+ /* better quality */
+ bpp = info[i].bpp;
+--
+cgit v0.12
+
diff --git a/media-gfx/gimp/gimp-2.8.14-r4.ebuild b/media-gfx/gimp/gimp-2.8.14-r4.ebuild
new file mode 100644
index 000000000000..732a34e1eba1
--- /dev/null
+++ b/media-gfx/gimp/gimp-2.8.14-r4.ebuild
@@ -0,0 +1,170 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+PYTHON_COMPAT=( python2_7 )
+
+inherit versionator virtualx 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 ~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 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 )
+ 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) \
+ --without-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}-blend-center.patch # bug 558878
+ 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
+ epatch "${FILESDIR}"/${PN}-2.9.2-CVE-2016-4994.patch # bug 586666
+ epatch "${FILESDIR}"/${PN}-2.9.4-CVE-2007-3126.patch # bug 618310
+
+ 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_test() {
+ Xemake check
+}
+
+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.20-r1.ebuild b/media-gfx/gimp/gimp-2.8.20-r1.ebuild
new file mode 100644
index 000000000000..59906a3fd008
--- /dev/null
+++ b/media-gfx/gimp/gimp-2.8.20-r1.ebuild
@@ -0,0 +1,169 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+PYTHON_COMPAT=( python2_7 )
+
+inherit versionator virtualx 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 ~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 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 )
+ 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) \
+ --without-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.8.14-blend-center.patch # bug 558878
+ 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
+ epatch "${FILESDIR}"/${PN}-2.9.4-CVE-2007-3126.patch # bug 618310
+
+ 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_test() {
+ Xemake check
+}
+
+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.22.ebuild b/media-gfx/gimp/gimp-2.8.22.ebuild
new file mode 100644
index 000000000000..b3a51d232730
--- /dev/null
+++ b/media-gfx/gimp/gimp-2.8.22.ebuild
@@ -0,0 +1,168 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+PYTHON_COMPAT=( python2_7 )
+
+inherit versionator virtualx 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 ~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 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 )
+ 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) \
+ --without-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.8.14-blend-center.patch # bug 558878
+ 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_test() {
+ Xemake check
+}
+
+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.9.4-r3.ebuild b/media-gfx/gimp/gimp-2.9.4-r3.ebuild
new file mode 100644
index 000000000000..c05b8c458de1
--- /dev/null
+++ b/media-gfx/gimp/gimp-2.9.4-r3.ebuild
@@ -0,0 +1,191 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+PYTHON_COMPAT=( python2_7 )
+
+inherit versionator virtualx autotools eutils gnome2 fdo-mime multilib python-single-r1
+
+DESCRIPTION="GNU Image Manipulation Program"
+HOMEPAGE="http://www.gimp.org/"
+SRC_URI="https://www.hartwork.org/public/${P}-r1.tar.xz"
+LICENSE="GPL-3 LGPL-3"
+SLOT="2"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ppc64 ~x86"
+
+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 debug doc openexr gnome postscript jpeg2k cpu_flags_x86_mmx mng pdf python smp cpu_flags_x86_sse udev vector-icons 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
+ dev-util/gtk-update-icon-cache
+ >=x11-libs/gdk-pixbuf-2.31: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/harfbuzz-0.9.19
+ >=media-libs/gexiv2-0.6.1
+ >=media-libs/libmypaint-1.3.0_beta0[gegl]
+ >=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.18
+ >=media-libs/gegl-0.3.8:0.3[cairo]
+ >=dev-libs/glib-2.43
+ aalib? ( media-libs/aalib )
+ alsa? ( media-libs/alsa-lib )
+ aqua? ( x11-libs/gtk-mac-integration )
+ gnome? ( gnome-base/gvfs )
+ virtual/jpeg:0
+ jpeg2k? ( media-libs/jasper:= )
+ >=media-libs/lcms-2.2:2
+ mng? ( media-libs/libmng )
+ openexr? ( >=media-libs/openexr-1.6.1 )
+ pdf? ( >=app-text/poppler-0.12.4[cairo] >=app-text/poppler-data-0.4.7 )
+ >=media-libs/libpng-1.2.37:0
+ python? (
+ ${PYTHON_DEPS}
+ >=dev-python/pygtk-2.10.4:2[${PYTHON_USEDEP}]
+ >=dev-python/pycairo-1.0.2[${PYTHON_USEDEP}]
+ )
+ >=media-libs/tiff-3.5.7:0
+ >=gnome-base/librsvg-2.36.0:2
+ wmf? ( >=media-libs/libwmf-0.2.8 )
+ x11-libs/libXcursor
+ sys-libs/zlib
+ app-arch/bzip2
+ >=app-arch/xz-utils-5.0.0
+ 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}-r1
+
+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) \
+ --without-webkit \
+ $(use_with jpeg2k libjasper) \
+ $(use_with postscript gs) \
+ $(use_enable cpu_flags_x86_mmx mmx) \
+ $(use_with mng libmng) \
+ $(use_with openexr) \
+ $(use_with pdf poppler) \
+ $(use_enable python) \
+ $(use_enable smp mp) \
+ $(use_enable cpu_flags_x86_sse sse) \
+ --with-librsvg \
+ $(use_with udev gudev) \
+ $(use_with wmf) \
+ --with-xmc \
+ $(use_with xpm libxpm) \
+ $(use_enable vector-icons) \
+ --without-xvfb-run"
+
+ if use python; then
+ python-single-r1_pkg_setup
+ fi
+}
+
+src_prepare() {
+ epatch "${FILESDIR}"/${PN}-2.9.2-no-deprecation.patch # bug 395695, comment 9 and 16
+ epatch "${FILESDIR}"/${PN}-2.9.4-CVE-2007-3126.patch # bug 618310
+
+ # Bug 589394
+ rm icons/Symbolic-Inverted/Makefile.in || die
+ epatch "${FILESDIR}"/${PN}-2.9.4-mkdir-makefile.patch
+
+ 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
+}
+
+src_configure() {
+ gnome2_src_configure \
+ GEGL=/usr/bin/gegl-0.3 \
+ GDBUS_CODEGEN=/bin/false
+}
+
+src_compile() {
+ # Bugs #569738 and #591214
+ local nv
+ for nv in /dev/nvidia-uvm /dev/nvidiactl /dev/nvidia{0..9} ; do
+ # We do not check for existence as they may show up later
+ # https://bugs.gentoo.org/show_bug.cgi?id=569738#c21
+ addwrite "${nv}"
+ done
+ addwrite /dev/dri/ # bug #574038
+ addwrite /dev/ati/ # bug 589198
+ addwrite /proc/mtrr # bug 589198
+
+ export XDG_DATA_DIRS=/usr/share # bug 587004
+ gnome2_src_compile
+}
+
+_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_test() {
+ Xemake check
+}
+
+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
+}