diff --git a/.gitignore b/.gitignore index 2390869..e904f9e 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ gimp-2.6.10-1-autoreconf.patch.bz2 /gimp-2.6.11-1-autoreconf.patch.bz2 /gimp-2.6.11-10-autoreconf.patch.bz2 /gimp-2.6.11-11-autoreconf.patch.bz2 +/gimp-2.7.3.tar.bz2 diff --git a/gimp-2.6.10-script-fu-ipv6.patch b/gimp-2.6.10-script-fu-ipv6.patch deleted file mode 100644 index 856ffa4..0000000 --- a/gimp-2.6.10-script-fu-ipv6.patch +++ /dev/null @@ -1,279 +0,0 @@ -diff -up gimp-2.6.10/configure.in.script-fu-ipv6 gimp-2.6.10/configure.in ---- gimp-2.6.10/configure.in.script-fu-ipv6 2010-07-03 00:51:55.000000000 +0200 -+++ gimp-2.6.10/configure.in 2010-07-09 13:20:33.499983496 +0200 -@@ -602,14 +602,15 @@ AC_CHECK_FUNC(rint, AC_DEFINE(HAVE_RINT, - AC_DEFINE(HAVE_RINT)])]) - - --###################################################### --# Check for extra libs needed for inet_ntoa and socket --###################################################### -+##################################################################### -+# Check for extra libs needed for getaddrinfo, getnameinfo and socket -+##################################################################### - - gimp_save_LIBS=$LIBS - LIBS="" - --AC_CHECK_FUNCS(inet_ntoa, , AC_CHECK_LIB(nsl, inet_ntoa)) -+AC_CHECK_FUNCS(getaddrinfo, , AC_CHECK_LIB(nsl, getaddrinfo)) -+AC_CHECK_FUNCS(getnameinfo, , AC_CHECK_LIB(nsl, getnameinfo)) - AC_CHECK_LIB(socket, socket) - - SOCKET_LIBS="$LIBS" -diff -up gimp-2.6.10/plug-ins/script-fu/script-fu-server.c.script-fu-ipv6 gimp-2.6.10/plug-ins/script-fu/script-fu-server.c ---- gimp-2.6.10/plug-ins/script-fu/script-fu-server.c.script-fu-ipv6 2010-07-03 00:51:59.000000000 +0200 -+++ gimp-2.6.10/plug-ins/script-fu/script-fu-server.c 2010-07-09 13:20:33.500982656 +0200 -@@ -108,7 +108,7 @@ - #define RSP_LEN_L_BYTE 3 - - /* -- * Local Structures -+ * Local Types - */ - - typedef struct -@@ -129,6 +129,15 @@ typedef struct - gboolean run; - } ServerInterface; - -+typedef union -+{ -+ sa_family_t family; -+ struct sockaddr_storage ss; -+ struct sockaddr sa; -+ struct sockaddr_in sa_in; -+ struct sockaddr_in6 sa_in6; -+} sa_union; -+ - /* - * Local Functions - */ -@@ -137,7 +146,8 @@ static void server_start (gin - const gchar *logfile); - static gboolean execute_command (SFCommand *cmd); - static gint read_from_client (gint filedes); --static gint make_socket (guint port); -+static gint make_socket (const struct addrinfo -+ *ai); - static void server_log (const gchar *format, - ...) G_GNUC_PRINTF (1, 2); - static void server_quit (void); -@@ -151,7 +161,10 @@ static void print_socket_api_error - /* - * Local variables - */ --static gint server_sock; -+static gint server_socks[2], -+ server_socks_used = 0; -+static const gint server_socks_len = sizeof (server_socks) / -+ sizeof (server_socks[0]); - static GList *command_queue = NULL; - static gint queue_length = 0; - static gint request_no = 0; -@@ -285,6 +298,7 @@ script_fu_server_listen (gint timeout) - struct timeval tv; - struct timeval *tvp = NULL; - SELECT_MASK fds; -+ gint sockno; - - /* Set time struct */ - if (timeout) -@@ -295,7 +309,10 @@ script_fu_server_listen (gint timeout) - } - - FD_ZERO (&fds); -- FD_SET (server_sock, &fds); -+ for (sockno = 0; sockno < server_socks_used; sockno++) -+ { -+ FD_SET (server_socks[sockno], &fds); -+ } - g_hash_table_foreach (clients, script_fu_server_add_fd, &fds); - - /* Block until input arrives on one or more active sockets -@@ -307,15 +324,23 @@ script_fu_server_listen (gint timeout) - return; - } - -- /* Service the server socket if it has input pending. */ -- if (FD_ISSET (server_sock, &fds)) -+ /* Service the server sockets if any has input pending. */ -+ for (sockno = 0; sockno < server_socks_used; sockno++) - { -- struct sockaddr_in clientname; -+ sa_union client; -+ gchar clientname[NI_MAXHOST]; - - /* Connection request on original socket. */ -- guint size = sizeof (clientname); -- gint new = accept (server_sock, -- (struct sockaddr *) &clientname, &size); -+ guint size = sizeof (client); -+ gint new; -+ guint portno; -+ -+ if (! FD_ISSET (server_socks[sockno], &fds)) -+ { -+ continue; -+ } -+ -+ new = accept (server_socks[sockno], &(client.sa), &size); - - if (new < 0) - { -@@ -324,13 +349,32 @@ script_fu_server_listen (gint timeout) - } - - /* Associate the client address with the socket */ -- g_hash_table_insert (clients, -- GINT_TO_POINTER (new), -- g_strdup (inet_ntoa (clientname.sin_addr))); -+ -+ /* If all else fails ... */ -+ strncpy (clientname, "(error during host address lookup)", NI_MAXHOST-1); -+ -+ /* Lookup address */ -+ (void) getnameinfo (&(client.sa), size, clientname, sizeof (clientname), -+ NULL, 0, NI_NUMERICHOST); -+ -+ g_hash_table_insert (clients, GINT_TO_POINTER (new), -+ g_strdup (clientname)); -+ -+ /* Determine port number */ -+ switch (client.family) -+ { -+ case AF_INET: -+ portno = (guint) g_ntohs (client.sa_in.sin_port); -+ break; -+ case AF_INET6: -+ portno = (guint) g_ntohs (client.sa_in6.sin6_port); -+ break; -+ default: -+ portno = 0; -+ } - - server_log ("Server: connect from host %s, port %d.\n", -- inet_ntoa (clientname.sin_addr), -- (unsigned int) ntohs (clientname.sin_port)); -+ clientname, portno); - } - - /* Service the client sockets. */ -@@ -392,18 +436,46 @@ static void - server_start (gint port, - const gchar *logfile) - { -- const gchar *progress; -- -- /* First of all, create the socket and set it up to accept connections. */ -- /* This may fail if there's a server running on this port already. */ -- server_sock = make_socket (port); -+ struct addrinfo *ai, -+ *ai_curr; -+ struct addrinfo hints; -+ gint e, -+ sockno; -+ gchar *port_s; -+ -+ const gchar *progress; -+ -+ memset (&hints, 0, sizeof (hints)); -+ hints.ai_flags = AI_PASSIVE | AI_ADDRCONFIG; -+ hints.ai_socktype = SOCK_STREAM; -+ -+ port_s = g_strdup_printf ("%d", port); -+ e = getaddrinfo (NULL, port_s, &hints, &ai); -+ g_free (port_s); - -- if (listen (server_sock, 5) < 0) -+ if (e != 0) - { -- print_socket_api_error ("listen"); -+ g_printerr ("getaddrinfo: %s", gai_strerror (e)); - return; - } - -+ for (ai_curr = ai, sockno = 0; -+ ai_curr != NULL && sockno < server_socks_len; -+ ai_curr = ai_curr->ai_next, sockno++) -+ { -+ /* Create the socket and set it up to accept connections. */ -+ /* This may fail if there's a server running on this port already. */ -+ server_socks[sockno] = make_socket (ai_curr); -+ -+ if (listen (server_socks[sockno], 5) < 0) -+ { -+ print_socket_api_error ("listen"); -+ return; -+ } -+ } -+ -+ server_socks_used = sockno; -+ - /* Setup up the server log file */ - if (logfile && *logfile) - server_log_file = g_fopen (logfile, "a"); -@@ -592,11 +664,10 @@ read_from_client (gint filedes) - } - - static gint --make_socket (guint port) -+make_socket (const struct addrinfo *ai) - { -- struct sockaddr_in name; -- gint sock; -- gint v = 1; -+ gint sock; -+ gint v = 1; - - /* Win32 needs the winsock library initialized. */ - #ifdef G_OS_WIN32 -@@ -620,7 +691,7 @@ make_socket (guint port) - #endif - - /* Create the socket. */ -- sock = socket (PF_INET, SOCK_STREAM, 0); -+ sock = socket (ai->ai_family, ai->ai_socktype, ai->ai_protocol); - if (sock < 0) - { - print_socket_api_error ("socket"); -@@ -629,12 +700,20 @@ make_socket (guint port) - - setsockopt (sock, SOL_SOCKET, SO_REUSEADDR, &v, sizeof(v)); - -- /* Give the socket a name. */ -- name.sin_family = AF_INET; -- name.sin_port = htons (port); -- name.sin_addr.s_addr = htonl (INADDR_ANY); -+#ifdef IPV6_V6ONLY -+ /* Only listen on IPv6 addresses, otherwise bind() will fail. */ -+ if (ai->ai_family == AF_INET6) -+ { -+ v = 1; -+ if (setsockopt (sock, IPPROTO_IPV6, IPV6_V6ONLY, &v, sizeof(v)) < 0) -+ { -+ print_socket_api_error ("setsockopt"); -+ gimp_quit(); -+ } -+ } -+#endif - -- if (bind (sock, (struct sockaddr *) &name, sizeof (name)) < 0) -+ if (bind (sock, ai->ai_addr, ai->ai_addrlen) < 0) - { - print_socket_api_error ("bind"); - gimp_quit (); -@@ -672,7 +751,12 @@ script_fu_server_shutdown_fd (gpointer k - static void - server_quit (void) - { -- CLOSESOCKET (server_sock); -+ gint sockno; -+ -+ for (sockno = 0; sockno < server_socks_used; sockno++) -+ { -+ CLOSESOCKET (server_socks[sockno]); -+ } - - if (clients) - { diff --git a/gimp-2.6.11-CVE-2010-4540,4541,4542.patch b/gimp-2.6.11-CVE-2010-4540,4541,4542.patch deleted file mode 100644 index 6857a80..0000000 --- a/gimp-2.6.11-CVE-2010-4540,4541,4542.patch +++ /dev/null @@ -1,143 +0,0 @@ -From 66ceac29afde903c013ec6ade2b12f2b5b6e4050 Mon Sep 17 00:00:00 2001 -From: Nils Philippsen -Date: Mon, 23 May 2011 16:40:05 +0200 -Subject: [PATCH] patch: CVE-2010-4540,4541,4542 - -Squashed commit of the following: - -commit c63c02e87b9c399f60a6a8d6d235f22a470fe2d2 -Author: Simon Budig -Date: Tue Jan 11 23:28:16 2011 +0100 - - fixes for some buffer overflow problems (see bug #639203) - (cherry picked from commit 7fb0300e1cfdb98a3bde54dbc73a0f3eda375162) ---- - plug-ins/common/sphere-designer.c | 5 ++++- - plug-ins/gfig/gfig-style.c | 8 +++++++- - plug-ins/lighting/lighting-ui.c | 27 +++++++++++++++++++++++---- - 3 files changed, 34 insertions(+), 6 deletions(-) - -diff --git a/plug-ins/common/sphere-designer.c b/plug-ins/common/sphere-designer.c -index 5421067..b06af40 100644 ---- a/plug-ins/common/sphere-designer.c -+++ b/plug-ins/common/sphere-designer.c -@@ -1992,6 +1992,7 @@ loadit (const gchar * fn) - gchar endbuf[21 * (G_ASCII_DTOSTR_BUF_SIZE + 1)]; - gchar *end = endbuf; - gchar line[1024]; -+ gchar fmt_str[16]; - gint i; - texture *t; - gint majtype, type; -@@ -2016,6 +2017,8 @@ loadit (const gchar * fn) - - s.com.numtexture = 0; - -+ snprintf (fmt_str, sizeof (fmt_str), "%%d %%d %%%lds", sizeof (endbuf) - 1); -+ - while (!feof (f)) - { - -@@ -2026,7 +2029,7 @@ loadit (const gchar * fn) - t = &s.com.texture[i]; - setdefaults (t); - -- if (sscanf (line, "%d %d %s", &t->majtype, &t->type, end) != 3) -+ if (sscanf (line, fmt_str, &t->majtype, &t->type, end) != 3) - t->color1.x = g_ascii_strtod (end, &end); - if (end && errno != ERANGE) - t->color1.y = g_ascii_strtod (end, &end); -diff --git a/plug-ins/gfig/gfig-style.c b/plug-ins/gfig/gfig-style.c -index f8fefb8..685fe58 100644 ---- a/plug-ins/gfig/gfig-style.c -+++ b/plug-ins/gfig/gfig-style.c -@@ -165,6 +165,7 @@ gfig_read_parameter_gimp_rgb (gchar **text, - gchar *ptr; - gchar *tmpstr; - gchar *endptr; -+ gchar fmt_str[32]; - gchar colorstr_r[G_ASCII_DTOSTR_BUF_SIZE]; - gchar colorstr_g[G_ASCII_DTOSTR_BUF_SIZE]; - gchar colorstr_b[G_ASCII_DTOSTR_BUF_SIZE]; -@@ -172,6 +173,10 @@ gfig_read_parameter_gimp_rgb (gchar **text, - - style_entry->r = style_entry->g = style_entry->b = style_entry->a = 0.; - -+ snprintf (fmt_str, sizeof (fmt_str), "%%%lds %%%lds %%%lds %%%lds", -+ sizeof (colorstr_r) - 1, sizeof (colorstr_g) - 1, -+ sizeof (colorstr_b) - 1, sizeof (colorstr_a) - 1); -+ - while (n < nitems) - { - ptr = strchr (text[n], ':'); -@@ -181,7 +186,8 @@ gfig_read_parameter_gimp_rgb (gchar **text, - ptr++; - if (!strcmp (tmpstr, name)) - { -- sscanf (ptr, "%s %s %s %s", colorstr_r, colorstr_g, colorstr_b, colorstr_a); -+ sscanf (ptr, fmt_str, -+ colorstr_r, colorstr_g, colorstr_b, colorstr_a); - style_entry->r = g_ascii_strtod (colorstr_r, &endptr); - style_entry->g = g_ascii_strtod (colorstr_g, &endptr); - style_entry->b = g_ascii_strtod (colorstr_b, &endptr); -diff --git a/plug-ins/lighting/lighting-ui.c b/plug-ins/lighting/lighting-ui.c -index 71cd58f..702cda9 100644 ---- a/plug-ins/lighting/lighting-ui.c -+++ b/plug-ins/lighting/lighting-ui.c -@@ -1342,6 +1342,7 @@ load_preset_response (GtkFileChooser *chooser, - gchar buffer3[G_ASCII_DTOSTR_BUF_SIZE]; - gchar type_label[21]; - gchar *endptr; -+ gchar fmt_str[32]; - - if (response_id == GTK_RESPONSE_OK) - { -@@ -1381,23 +1382,41 @@ load_preset_response (GtkFileChooser *chooser, - return; - } - -- fscanf (fp, " Position: %s %s %s", buffer1, buffer2, buffer3); -+ snprintf (fmt_str, sizeof (fmt_str), -+ " Position: %%%lds %%%lds %%%lds", -+ sizeof (buffer1) - 1, -+ sizeof (buffer2) - 1, -+ sizeof (buffer3) - 1); -+ fscanf (fp, fmt_str, buffer1, buffer2, buffer3); - source->position.x = g_ascii_strtod (buffer1, &endptr); - source->position.y = g_ascii_strtod (buffer2, &endptr); - source->position.z = g_ascii_strtod (buffer3, &endptr); - -- fscanf (fp, " Direction: %s %s %s", buffer1, buffer2, buffer3); -+ snprintf (fmt_str, sizeof (fmt_str), -+ " Direction: %%%lds %%%lds %%%lds", -+ sizeof (buffer1) - 1, -+ sizeof (buffer2) - 1, -+ sizeof (buffer3) - 1); -+ fscanf (fp, fmt_str, buffer1, buffer2, buffer3); - source->direction.x = g_ascii_strtod (buffer1, &endptr); - source->direction.y = g_ascii_strtod (buffer2, &endptr); - source->direction.z = g_ascii_strtod (buffer3, &endptr); - -- fscanf (fp, " Color: %s %s %s", buffer1, buffer2, buffer3); -+ snprintf (fmt_str, sizeof (fmt_str), -+ " Color: %%%lds %%%lds %%%lds", -+ sizeof (buffer1) - 1, -+ sizeof (buffer2) - 1, -+ sizeof (buffer3) - 1); -+ fscanf (fp, fmt_str, buffer1, buffer2, buffer3); - source->color.r = g_ascii_strtod (buffer1, &endptr); - source->color.g = g_ascii_strtod (buffer2, &endptr); - source->color.b = g_ascii_strtod (buffer3, &endptr); - source->color.a = 1.0; - -- fscanf (fp, " Intensity: %s", buffer1); -+ snprintf (fmt_str, sizeof (fmt_str), -+ " Intensity: %%%lds", -+ sizeof (buffer1) - 1); -+ fscanf (fp, fmt_str, buffer1); - source->intensity = g_ascii_strtod (buffer1, &endptr); - - } --- -1.7.5.1 - diff --git a/gimp-2.6.11-colorxhtml.patch b/gimp-2.6.11-colorxhtml.patch deleted file mode 100644 index d75a470..0000000 --- a/gimp-2.6.11-colorxhtml.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 16bfd230e569709724166670987475756a6d3261 Mon Sep 17 00:00:00 2001 -From: Nils Philippsen -Date: Tue, 9 Nov 2010 17:45:37 +0100 -Subject: [PATCH] patch: colorxhtml - -Squashed commit of the following: - -commit f77a97fa0a7178394b81082749d6719849aa1508 -Author: Nils Philippsen -Date: Tue Nov 9 11:28:30 2010 +0100 - - colorxhtml: check validity of source_type - (cherry picked from commit d2ebadcfb906af972edb95807e2887af4ad76856) ---- - plug-ins/pygimp/plug-ins/colorxhtml.py | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -diff --git a/plug-ins/pygimp/plug-ins/colorxhtml.py b/plug-ins/pygimp/plug-ins/colorxhtml.py -index 0022c65..ed8e52d 100755 ---- a/plug-ins/pygimp/plug-ins/colorxhtml.py -+++ b/plug-ins/pygimp/plug-ins/colorxhtml.py -@@ -27,7 +27,7 @@ from gimpfu import * - - gettext.install("gimp20-python", gimp.locale_directory, unicode=True) - --(CHARS_SOURCE, CHARS_FILE, CHARS_PARAMETER) = range(3) -+all_source_types = (CHARS_SOURCE, CHARS_FILE, CHARS_PARAMETER) = range(3) - - escape_table = { - '&': '&', -@@ -67,6 +67,9 @@ def colorxhtml(img, drawable, filename, raw_filename, - if not drawable.is_rgb or drawable.has_alpha: - return - -+ if source_type not in all_source_types: -+ return -+ - gimp.tile_cache_ntiles(width / gimp.tile_width() + 1) - - html = file(filename, 'w') --- -1.7.3.2 - diff --git a/gimp-2.6.11-gif-load.patch b/gimp-2.6.11-gif-load.patch deleted file mode 100644 index ac9e6cd..0000000 --- a/gimp-2.6.11-gif-load.patch +++ /dev/null @@ -1,108 +0,0 @@ -From 631856a2021d60d29e96d07872c06246eff25a96 Mon Sep 17 00:00:00 2001 -From: Nils Philippsen -Date: Fri, 12 Aug 2011 14:44:52 +0200 -Subject: [PATCH] patch: gif-load - -Squashed commit of the following: - -commit 366d6b546e8fb91909550a61abeafc11672667c4 -Author: Nils Philippsen -Date: Thu Aug 4 12:51:42 2011 +0200 - - file-gif-load: fix heap corruption and buffer overflow (CVE-2011-2896) - (cherry picked from commit 376ad788c1a1c31d40f18494889c383f6909ebfc) - -commit 3c5864851ea5fe8f89d273ee8ac4df0c1101b315 -Author: Nils Philippsen -Date: Thu Aug 4 12:47:44 2011 +0200 - - file-gif-load: ensure return value of LZWReadByte() is <= 255 - (cherry picked from commit b1a3de761362db982c0ddfaff60ab4a3c4267f32) ---- - plug-ins/common/file-gif-load.c | 25 ++++++++++++++----------- - 1 files changed, 14 insertions(+), 11 deletions(-) - -diff --git a/plug-ins/common/file-gif-load.c b/plug-ins/common/file-gif-load.c -index 9a0720b..8460ec0 100644 ---- a/plug-ins/common/file-gif-load.c -+++ b/plug-ins/common/file-gif-load.c -@@ -697,7 +697,8 @@ LZWReadByte (FILE *fd, - static gint firstcode, oldcode; - static gint clear_code, end_code; - static gint table[2][(1 << MAX_LZW_BITS)]; -- static gint stack[(1 << (MAX_LZW_BITS)) * 2], *sp; -+#define STACK_SIZE ((1 << (MAX_LZW_BITS)) * 2) -+ static gint stack[STACK_SIZE], *sp; - gint i; - - if (just_reset_LZW) -@@ -743,11 +744,11 @@ LZWReadByte (FILE *fd, - } - while (firstcode == clear_code); - -- return firstcode; -+ return firstcode & 255; - } - - if (sp > stack) -- return *--sp; -+ return (*--sp) & 255; - - while ((code = GetCode (fd, code_size, FALSE)) >= 0) - { -@@ -770,9 +771,9 @@ LZWReadByte (FILE *fd, - sp = stack; - firstcode = oldcode = GetCode (fd, code_size, FALSE); - -- return firstcode; -+ return firstcode & 255; - } -- else if (code == end_code) -+ else if (code == end_code || code > max_code) - { - gint count; - guchar buf[260]; -@@ -791,13 +792,14 @@ LZWReadByte (FILE *fd, - - incode = code; - -- if (code >= max_code) -+ if (code == max_code) - { -- *sp++ = firstcode; -+ if (sp < &(stack[STACK_SIZE])) -+ *sp++ = firstcode; - code = oldcode; - } - -- while (code >= clear_code) -+ while (code >= clear_code && sp < &(stack[STACK_SIZE])) - { - *sp++ = table[1][code]; - if (code == table[0][code]) -@@ -808,7 +810,8 @@ LZWReadByte (FILE *fd, - code = table[0][code]; - } - -- *sp++ = firstcode = table[1][code]; -+ if (sp < &(stack[STACK_SIZE])) -+ *sp++ = firstcode = table[1][code]; - - if ((code = max_code) < (1 << MAX_LZW_BITS)) - { -@@ -826,10 +829,10 @@ LZWReadByte (FILE *fd, - oldcode = incode; - - if (sp > stack) -- return *--sp; -+ return (*--sp) & 255; - } - -- return code; -+ return code & 255; - } - - static gint32 --- -1.7.6 - diff --git a/gimp-2.6.11-poppler-0.17.patch b/gimp-2.6.11-poppler-0.17.patch deleted file mode 100644 index 8663089..0000000 --- a/gimp-2.6.11-poppler-0.17.patch +++ /dev/null @@ -1,477 +0,0 @@ -From 69f69eed816b89be9a01a48a1f0643d1fd496118 Mon Sep 17 00:00:00 2001 -From: Nils Philippsen -Date: Fri, 6 May 2011 11:58:44 +0200 -Subject: [PATCH] patch: poppler-0.17 - -Squashed commit of the following: - -commit 529d940222dfc352d41fbf72de29134421aa4002 -Author: Nils Philippsen -Date: Fri May 6 11:50:30 2011 +0200 - - use code based on pixbufs instead of cairo surfaces - - this is done to avoid adding to libgimp, thanks to Mukund Sivaraman for - hints how to do this - -commit f8671d8767d4cdab830dc06310e96c63a88ec0fd -Author: Mukund Sivaraman -Date: Thu Apr 21 13:57:13 2011 +0530 - - file-pdf-load: Update attribution, removing bogus copyright - (cherry picked from commit e999122e0b20b6ccd6bde3ce039bb64068fc0019) - -commit 89a78f2590d298dac2f42e6d9a3016fc5d672c70 -Author: Nils Philippsen -Date: Thu Apr 21 13:52:18 2011 +0200 - - file-pdf-load: Use better API + cleanups - - * fixes issues with poppler 0.17 completely - * uses new libgimp API to pass surfaces instead of pixbufs - * uses GTK+ 3 API to convert surfaces to pixbufs where available - (backported from commit 7bdadd80ba479d6ff904e276d805e16f6b940ee2) - -commit 4e92302c4a14a961f112587a0ad86696c88da2f8 -Author: Nils Philippsen -Date: Thu Apr 21 13:38:08 2011 +0200 - - file-pdf-load: Don't use deprecated API (bug #646947) - - (cherry picked from commit 9b3e1c91fd2eac69da6947ec9c7fbf10096ba237) - - Conflicts: - - plug-ins/common/file-pdf.c ---- - plug-ins/common/file-pdf.c | 323 ++++++++++++++++++++++++++++++++++++++------ - 1 files changed, 283 insertions(+), 40 deletions(-) - -diff --git a/plug-ins/common/file-pdf.c b/plug-ins/common/file-pdf.c -index a43b459..43c2b7d 100644 ---- a/plug-ins/common/file-pdf.c -+++ b/plug-ins/common/file-pdf.c -@@ -4,6 +4,9 @@ - * - * Copyright (C) 2005 Nathan Summers - * -+ * Some code in render_page_to_surface() borrowed from -+ * poppler.git/glib/poppler-page.cc. -+ * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or -@@ -80,16 +83,20 @@ static gboolean load_dialog (PopplerDocument *doc, - static PopplerDocument * open_document (const gchar *filename, - GError **error); - --static GdkPixbuf * get_thumbnail (PopplerDocument *doc, -+static cairo_surface_t * get_thumb_surface (PopplerDocument *doc, -+ gint page, -+ gint preferred_size); -+ -+static GdkPixbuf * get_thumb_pixbuf (PopplerDocument *doc, - gint page, - gint preferred_size); - - static gint32 layer_from_pixbuf (gint32 image, -- const gchar *layer_name, -- gint position, -- GdkPixbuf *buf, -- gdouble progress_start, -- gdouble progress_scale); -+ const gchar *layer_name, -+ gint position, -+ GdkPixbuf *pixbuf, -+ gdouble progress_start, -+ gdouble progress_scale); - - /** - ** the following was formerly part of -@@ -433,11 +440,12 @@ run (const gchar *name, - } - else - { -- gdouble width = 0; -- gdouble height = 0; -- gdouble scale; -- gint32 image = -1; -- GdkPixbuf *pixbuf = NULL; -+ gdouble width = 0; -+ gdouble height = 0; -+ gdouble scale; -+ gint32 image = -1; -+ gint num_pages = 0; -+ GdkPixbuf *pixbuf = NULL; - - /* Possibly retrieve last settings */ - gimp_get_data (LOAD_PROC, &loadvals); -@@ -455,7 +463,10 @@ run (const gchar *name, - g_object_unref (page); - } - -- pixbuf = get_thumbnail (doc, 0, param[1].data.d_int32); -+ num_pages = poppler_document_get_n_pages (doc); -+ -+ pixbuf = get_thumb_pixbuf (doc, 0, param[1].data.d_int32); -+ - g_object_unref (doc); - } - -@@ -548,6 +559,187 @@ open_document (const gchar *filename, - return doc; - } - -+/* FIXME: Remove this someday when we depend fully on GTK+ >= 3 */ -+ -+#if (!GTK_CHECK_VERSION (3, 0, 0)) -+ -+static cairo_format_t -+gdk_cairo_format_for_content (cairo_content_t content) -+{ -+ switch (content) -+ { -+ case CAIRO_CONTENT_COLOR: -+ return CAIRO_FORMAT_RGB24; -+ case CAIRO_CONTENT_ALPHA: -+ return CAIRO_FORMAT_A8; -+ case CAIRO_CONTENT_COLOR_ALPHA: -+ default: -+ return CAIRO_FORMAT_ARGB32; -+ } -+} -+ -+static cairo_surface_t * -+gdk_cairo_surface_coerce_to_image (cairo_surface_t *surface, -+ cairo_content_t content, -+ int src_x, -+ int src_y, -+ int width, -+ int height) -+{ -+ cairo_surface_t *copy; -+ cairo_t *cr; -+ -+ copy = cairo_image_surface_create (gdk_cairo_format_for_content (content), -+ width, -+ height); -+ -+ cr = cairo_create (copy); -+ cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); -+ cairo_set_source_surface (cr, surface, -src_x, -src_y); -+ cairo_paint (cr); -+ cairo_destroy (cr); -+ -+ return copy; -+} -+ -+static void -+convert_alpha (guchar *dest_data, -+ int dest_stride, -+ guchar *src_data, -+ int src_stride, -+ int src_x, -+ int src_y, -+ int width, -+ int height) -+{ -+ int x, y; -+ -+ src_data += src_stride * src_y + src_x * 4; -+ -+ for (y = 0; y < height; y++) { -+ guint32 *src = (guint32 *) src_data; -+ -+ for (x = 0; x < width; x++) { -+ guint alpha = src[x] >> 24; -+ -+ if (alpha == 0) -+ { -+ dest_data[x * 4 + 0] = 0; -+ dest_data[x * 4 + 1] = 0; -+ dest_data[x * 4 + 2] = 0; -+ } -+ else -+ { -+ dest_data[x * 4 + 0] = (((src[x] & 0xff0000) >> 16) * 255 + alpha / 2) / alpha; -+ dest_data[x * 4 + 1] = (((src[x] & 0x00ff00) >> 8) * 255 + alpha / 2) / alpha; -+ dest_data[x * 4 + 2] = (((src[x] & 0x0000ff) >> 0) * 255 + alpha / 2) / alpha; -+ } -+ dest_data[x * 4 + 3] = alpha; -+ } -+ -+ src_data += src_stride; -+ dest_data += dest_stride; -+ } -+} -+ -+static void -+convert_no_alpha (guchar *dest_data, -+ int dest_stride, -+ guchar *src_data, -+ int src_stride, -+ int src_x, -+ int src_y, -+ int width, -+ int height) -+{ -+ int x, y; -+ -+ src_data += src_stride * src_y + src_x * 4; -+ -+ for (y = 0; y < height; y++) { -+ guint32 *src = (guint32 *) src_data; -+ -+ for (x = 0; x < width; x++) { -+ dest_data[x * 3 + 0] = src[x] >> 16; -+ dest_data[x * 3 + 1] = src[x] >> 8; -+ dest_data[x * 3 + 2] = src[x]; -+ } -+ -+ src_data += src_stride; -+ dest_data += dest_stride; -+ } -+} -+ -+/** -+ * gdk_pixbuf_get_from_surface: -+ * @surface: surface to copy from -+ * @src_x: Source X coordinate within @surface -+ * @src_y: Source Y coordinate within @surface -+ * @width: Width in pixels of region to get -+ * @height: Height in pixels of region to get -+ * -+ * Transfers image data from a #cairo_surface_t and converts it to an RGB(A) -+ * representation inside a #GdkPixbuf. This allows you to efficiently read -+ * individual pixels from cairo surfaces. For #GdkWindows, use -+ * gdk_pixbuf_get_from_window() instead. -+ * -+ * This function will create an RGB pixbuf with 8 bits per channel. -+ * The pixbuf will contain an alpha channel if the @surface contains one. -+ * -+ * Return value: (transfer full): A newly-created pixbuf with a reference -+ * count of 1, or %NULL on error -+ */ -+static GdkPixbuf * -+gdk_pixbuf_get_from_surface (cairo_surface_t *surface, -+ gint src_x, -+ gint src_y, -+ gint width, -+ gint height) -+{ -+ cairo_content_t content; -+ GdkPixbuf *dest; -+ -+ /* General sanity checks */ -+ g_return_val_if_fail (surface != NULL, NULL); -+ g_return_val_if_fail (width > 0 && height > 0, NULL); -+ -+ content = cairo_surface_get_content (surface) | CAIRO_CONTENT_COLOR; -+ dest = gdk_pixbuf_new (GDK_COLORSPACE_RGB, -+ !!(content & CAIRO_CONTENT_ALPHA), -+ 8, -+ width, height); -+ -+ surface = gdk_cairo_surface_coerce_to_image (surface, content, -+ src_x, src_y, -+ width, height); -+ cairo_surface_flush (surface); -+ if (cairo_surface_status (surface) || dest == NULL) -+ { -+ cairo_surface_destroy (surface); -+ return NULL; -+ } -+ -+ if (gdk_pixbuf_get_has_alpha (dest)) -+ convert_alpha (gdk_pixbuf_get_pixels (dest), -+ gdk_pixbuf_get_rowstride (dest), -+ cairo_image_surface_get_data (surface), -+ cairo_image_surface_get_stride (surface), -+ 0, 0, -+ width, height); -+ else -+ convert_no_alpha (gdk_pixbuf_get_pixels (dest), -+ gdk_pixbuf_get_rowstride (dest), -+ cairo_image_surface_get_data (surface), -+ cairo_image_surface_get_stride (surface), -+ 0, 0, -+ width, height); -+ -+ cairo_surface_destroy (surface); -+ return dest; -+} -+ -+#endif -+ - static gint32 - layer_from_pixbuf (gint32 image, - const gchar *layer_name, -@@ -566,6 +758,54 @@ layer_from_pixbuf (gint32 image, - return layer; - } - -+static cairo_surface_t * -+render_page_to_surface (PopplerPage *page, -+ int width, -+ int height, -+ double scale) -+{ -+ cairo_surface_t *surface; -+ cairo_t *cr; -+ -+ surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height); -+ cr = cairo_create (surface); -+ -+ cairo_save (cr); -+ cairo_translate (cr, 0.0, 0.0); -+ -+ if (scale != 1.0) -+ cairo_scale (cr, scale, scale); -+ -+ poppler_page_render (page, cr); -+ cairo_restore (cr); -+ -+ cairo_set_operator (cr, CAIRO_OPERATOR_DEST_OVER); -+ cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); -+ cairo_paint (cr); -+ -+ cairo_destroy (cr); -+ -+ return surface; -+} -+ -+static GdkPixbuf * -+render_page_to_pixbuf (PopplerPage *page, -+ int width, -+ int height, -+ double scale) -+{ -+ GdkPixbuf *pixbuf; -+ cairo_surface_t *surface; -+ -+ surface = render_page_to_surface (page, width, height, scale); -+ pixbuf = gdk_pixbuf_get_from_surface (surface, 0, 0, -+ cairo_image_surface_get_width (surface), -+ cairo_image_surface_get_height (surface)); -+ cairo_surface_destroy (surface); -+ -+ return pixbuf; -+} -+ - static gint32 - load_image (PopplerDocument *doc, - const gchar *filename, -@@ -597,7 +837,7 @@ load_image (PopplerDocument *doc, - gdouble page_width; - gdouble page_height; - -- GdkPixbuf *buf; -+ GdkPixbuf *pixbuf; - gint width; - gint height; - -@@ -627,15 +867,13 @@ load_image (PopplerDocument *doc, - gimp_image_set_resolution (image_ID, resolution, resolution); - } - -- buf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, width, height); -- -- poppler_page_render_to_pixbuf (page, 0, 0, width, height, scale, 0, buf); -+ pixbuf = render_page_to_pixbuf (page, width, height, scale); - -- layer_from_pixbuf (image_ID, page_label, i, buf, -+ layer_from_pixbuf (image_ID, page_label, i, pixbuf, - doc_progress, 1.0 / pages->n_pages); - - g_free (page_label); -- g_object_unref (buf); -+ g_object_unref(pixbuf); - - doc_progress = (double) (i + 1) / pages->n_pages; - gimp_progress_update (doc_progress); -@@ -676,30 +914,22 @@ load_image (PopplerDocument *doc, - return image_ID; - } - --static GdkPixbuf * --get_thumbnail (PopplerDocument *doc, -- gint page_num, -- gint preferred_size) -+static cairo_surface_t * -+get_thumb_surface (PopplerDocument *doc, -+ gint page_num, -+ gint preferred_size) - { - PopplerPage *page; -- GdkPixbuf *pixbuf; -+ cairo_surface_t *surface; - - page = poppler_document_get_page (doc, page_num); - - if (! page) - return NULL; - -- /* XXX: Remove conditional when we depend on poppler 0.8.0, but also -- * add configure check to make sure POPPLER_WITH_GDK is enabled! -- */ --#ifdef POPPLER_WITH_GDK -- pixbuf = poppler_page_get_thumbnail_pixbuf (page); --#else -- pixbuf = poppler_page_get_thumbnail (page); --#endif -- -+ surface = poppler_page_get_thumbnail (page); - -- if (! pixbuf) -+ if (! surface) - { - gdouble width; - gdouble height; -@@ -712,15 +942,28 @@ get_thumbnail (PopplerDocument *doc, - width *= scale; - height *= scale; - -- pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, -- width, height); -- -- poppler_page_render_to_pixbuf (page, -- 0, 0, width, height, scale, 0, pixbuf); -+ surface = render_page_to_surface (page, width, height, scale); - } - - g_object_unref (page); - -+ return surface; -+} -+ -+static GdkPixbuf * -+get_thumb_pixbuf (PopplerDocument *doc, -+ gint page_num, -+ gint preferred_size) -+{ -+ cairo_surface_t *surface; -+ GdkPixbuf *pixbuf; -+ -+ surface = get_thumb_surface (doc, page_num, preferred_size); -+ pixbuf = gdk_pixbuf_get_from_surface (surface, 0, 0, -+ cairo_image_surface_get_width (surface), -+ cairo_image_surface_get_height (surface)); -+ cairo_surface_destroy (surface); -+ - return pixbuf; - } - -@@ -769,8 +1012,8 @@ thumbnail_thread (gpointer data) - idle_data->page_no = i; - - /* FIXME get preferred size from somewhere? */ -- idle_data->pixbuf = get_thumbnail (thread_data->document, i, -- THUMBNAIL_SIZE); -+ idle_data->pixbuf = get_thumb_pixbuf (thread_data->document, i, -+ THUMBNAIL_SIZE); - - g_idle_add (idle_set_thumbnail, idle_data); - --- -1.7.5 - diff --git a/gimp-2.6.11-psp-overflow.patch b/gimp-2.6.11-psp-overflow.patch deleted file mode 100644 index 8ced9d0..0000000 --- a/gimp-2.6.11-psp-overflow.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 282feeae8df77bae287284f74e9f9c54d21e6d8d Mon Sep 17 00:00:00 2001 -From: Nils Philippsen -Date: Mon, 23 May 2011 15:52:48 +0200 -Subject: [PATCH] patch: psp-overflow - -Squashed commit of the following: - -commit c5b7e71d89c60a329d4db05f8ddb4610eab013d6 -Author: Nils Philippsen -Date: Fri May 13 17:08:02 2011 +0200 - - file-psp: fix overflow protection (CVE-2011-1782) - - amends commit 48ec15890e1751dede061f6d1f469b6508c13439, related to - CVE-2010-4543 - (cherry picked from commit f657361db04de69ce003328724c59e3f942d7d15) - -commit ab592eb5015f81defdd1e74cd5bcc7edfcd7ebf7 -Author: Simon Budig -Date: Mon Feb 14 21:46:31 2011 +0100 - - file-psp: fix for bogus input data. Fixes bug #639203 - (cherry picked from commit 48ec15890e1751dede061f6d1f469b6508c13439) ---- - plug-ins/common/file-psp.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -diff --git a/plug-ins/common/file-psp.c b/plug-ins/common/file-psp.c -index db12770..4931c87 100644 ---- a/plug-ins/common/file-psp.c -+++ b/plug-ins/common/file-psp.c -@@ -1244,6 +1244,10 @@ read_channel_data (FILE *f, - } - else - fread (buf, runcount, 1, f); -+ -+ /* prevent buffer overflow for bogus data */ -+ runcount = MIN (runcount, (endq - q) / bytespp); -+ - if (bytespp == 1) - { - memmove (q, buf, runcount); --- -1.7.5.1 - diff --git a/gimp-2.6.11-pyslice.patch b/gimp-2.6.11-pyslice.patch deleted file mode 100644 index 2f37990..0000000 --- a/gimp-2.6.11-pyslice.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 0b46212d99191b65a1dd2f723c9cf0250e69a448 Mon Sep 17 00:00:00 2001 -From: Nils Philippsen -Date: Wed, 2 Feb 2011 18:19:35 +0100 -Subject: [PATCH] patch: pyslice - -Squashed commit of the following: - -commit 0b91c365bc1d43a888ed9b78439930c1235b609c -Author: Nils Philippsen -Date: Wed Feb 2 17:11:28 2011 +0100 - - Bug 641259 - [abrt] gimp-2:2.6.11-1.fc14: py-slice.py:172:slice:TypeError: integer argument expected, got float - - py-slice: cast cellspacing to int in pyslice() to avoid tracebacks - (cherry picked from commit 0af966b63fcc55b36380d6538dfb30000f71fef9) ---- - plug-ins/pygimp/plug-ins/py-slice.py | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -diff --git a/plug-ins/pygimp/plug-ins/py-slice.py b/plug-ins/pygimp/plug-ins/py-slice.py -index 40743f3..ac35f23 100755 ---- a/plug-ins/pygimp/plug-ins/py-slice.py -+++ b/plug-ins/pygimp/plug-ins/py-slice.py -@@ -36,6 +36,9 @@ gettext.install("gimp20-python", gimp.locale_directory, unicode=True) - def pyslice(image, drawable, save_path, html_filename, - image_basename, image_extension, separate, - image_path, cellspacing, animate, skip_caps): -+ -+ cellspacing = int (cellspacing) -+ - if animate: - count = 0 - drw = [] --- -1.7.4 - diff --git a/gimp-2.6.11-shell-dnd-quit-crash.patch b/gimp-2.6.11-shell-dnd-quit-crash.patch deleted file mode 100644 index feddf0a..0000000 --- a/gimp-2.6.11-shell-dnd-quit-crash.patch +++ /dev/null @@ -1,83 +0,0 @@ -From dcb8cc2ce47a59d6e8c2272755f0b8c00e391fe0 Mon Sep 17 00:00:00 2001 -From: Nils Philippsen -Date: Fri, 10 Jun 2011 21:36:23 +0200 -Subject: [PATCH] patch: shell-dnd-quit-crash - -Squashed commit of the following: - -commit 3028f226d577cdf4fc2b01b53beeb1edd8b69a8b -Author: Nils Philippsen -Date: Fri Jun 10 18:06:02 2011 +0200 - - app: guard against crash due to quitting while DND is processed - - In gimp_display_shell_drop_uri_list(), shell->display is dereferenced in - some places without checking that it's still there. It can be set to - NULL if the user quits the application while a drag and drop action is - being processed and the main loop is iterated during execution of this - function. (Bug #652280) - (cherry picked from commit b1a2c736bf7e6c75ca1af4b4c3330172dddb269e) - - Conflicts: - - app/display/gimpdisplayshell-dnd.c ---- - app/display/gimpdisplayshell-dnd.c | 25 ++++++++++++++++++++++--- - 1 files changed, 22 insertions(+), 3 deletions(-) - -diff --git a/app/display/gimpdisplayshell-dnd.c b/app/display/gimpdisplayshell-dnd.c -index 8d210a8..1e67fda 100644 ---- a/app/display/gimpdisplayshell-dnd.c -+++ b/app/display/gimpdisplayshell-dnd.c -@@ -458,11 +458,21 @@ gimp_display_shell_drop_uri_list (GtkWidget *widget, - gpointer data) - { - GimpDisplayShell *shell = GIMP_DISPLAY_SHELL (data); -- GimpImage *image = shell->display->image; -- GimpContext *context = gimp_get_user_context (shell->display->gimp); -+ GimpImage *image; -+ GimpContext *context; - GList *list; - gboolean open_as_layers; - -+ /* If the app is already being torn down, shell->display might be NULL here. -+ * Play it safe. */ -+ if (! shell->display) -+ { -+ return; -+ } -+ -+ image = shell->display->image; -+ context = gimp_get_user_context (shell->display->gimp); -+ - GIMP_LOG (DND, NULL); - - open_as_layers = (shell->display->image != NULL); -@@ -474,6 +484,12 @@ gimp_display_shell_drop_uri_list (GtkWidget *widget, - GError *error = NULL; - gboolean warn = FALSE; - -+ if (! shell->display) -+ { -+ /* It seems as if GIMP is being torn down for quitting. Bail out. */ -+ return; -+ } -+ - if (open_as_layers) - { - GList *new_layers; -@@ -528,7 +544,10 @@ gimp_display_shell_drop_uri_list (GtkWidget *widget, - warn = TRUE; - } - -- if (warn) -+ /* Something above might have run a few rounds of the main loop. Check -+ * that shell->display is still there, otherwise ignore this as the app -+ * is being torn down for quitting. */ -+ if (warn && shell->display) - { - gchar *filename = file_utils_uri_display_name (uri); - --- -1.7.5.2 - diff --git a/gimp-2.6.11-startup-warning.patch b/gimp-2.6.11-startup-warning.patch deleted file mode 100644 index 253f5ae..0000000 --- a/gimp-2.6.11-startup-warning.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 7c21fa97815ac19c77a01db82c2e30834155c1b6 Mon Sep 17 00:00:00 2001 -From: Nils Philippsen -Date: Thu, 4 Aug 2011 12:10:04 +0200 -Subject: [PATCH] patch: startup-warning - -Squashed commit of the following: - -commit 083d5fc4211421f900a2ee3ba9967be4ef9bb5eb -Author: Mikael Magnusson -Date: Wed Mar 9 15:35:52 2011 +0100 - - app: fix goption warning - - Using G_OPTION_FLAG_NO_ARG with G_OPTION_ARG_NONE is not a valid combination, - glib 2.28.2 warns about it. - - (gimp:20379): GLib-WARNING **: goption.c:2132: ignoring no-arg, optional-arg or filename flags (8) on option "debug-handlers" of type 0 - (cherry picked from commit b81276ca83e6ec4c7df32c8f611f441d1dfc59ad) ---- - app/main.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/app/main.c b/app/main.c -index e1d5f02..34c9f74 100644 ---- a/app/main.c -+++ b/app/main.c -@@ -240,7 +240,7 @@ static const GOptionEntry main_entries[] = - N_("Debug in case of a crash (never|query|always)"), "" - }, - { -- "debug-handlers", 0, G_OPTION_FLAG_NO_ARG, -+ "debug-handlers", 0, 0, - G_OPTION_ARG_NONE, &use_debug_handler, - N_("Enable non-fatal debugging signal handlers"), NULL - }, --- -1.7.6 - diff --git a/gimp-2.6.2-xdg-open.patch b/gimp-2.6.2-xdg-open.patch deleted file mode 100644 index 489aae7..0000000 --- a/gimp-2.6.2-xdg-open.patch +++ /dev/null @@ -1,36 +0,0 @@ -diff -up gimp-2.6.2/app/config/gimpguiconfig.c.xdg-open gimp-2.6.2/app/config/gimpguiconfig.c ---- gimp-2.6.2/app/config/gimpguiconfig.c.xdg-open 2008-10-30 10:27:56.000000000 +0100 -+++ gimp-2.6.2/app/config/gimpguiconfig.c 2008-10-31 11:25:54.000000000 +0100 -@@ -45,7 +45,7 @@ - #elif PLATFORM_OSX - # define DEFAULT_WEB_BROWSER "open %s" - #else --# define DEFAULT_WEB_BROWSER "firefox %s" -+# define DEFAULT_WEB_BROWSER "xdg-open %s" - #endif - - -diff -up gimp-2.6.2/docs/gimprc.5.in.xdg-open gimp-2.6.2/docs/gimprc.5.in ---- gimp-2.6.2/docs/gimprc.5.in.xdg-open 2008-10-30 10:29:00.000000000 +0100 -+++ gimp-2.6.2/docs/gimprc.5.in 2008-10-31 11:24:26.000000000 +0100 -@@ -788,7 +788,7 @@ Sets the browser used by the help system - web-browser. - - .TP --(web-browser "firefox %s") -+(web-browser "xdg-open %s") - - Sets the external web browser to be used. This can be an absolute path or the - name of an executable to search for in the user's PATH. If the command -diff -up gimp-2.6.2/etc/gimprc.xdg-open gimp-2.6.2/etc/gimprc ---- gimp-2.6.2/etc/gimprc.xdg-open 2008-10-30 10:33:24.000000000 +0100 -+++ gimp-2.6.2/etc/gimprc 2008-10-31 11:24:26.000000000 +0100 -@@ -625,7 +625,7 @@ - # appended to the command with a space separating the two. This is a single - # filename. - # --# (web-browser "firefox %s") -+# (web-browser "xdg-open %s") - - # When enabled, the online user manual will be used by the help system. - # Otherwise the locally installed copy is used. Possible values are yes and diff --git a/gimp-2.6.6-minimize-dialogs.patch b/gimp-2.6.6-minimize-dialogs.patch deleted file mode 100644 index 09a04d2..0000000 --- a/gimp-2.6.6-minimize-dialogs.patch +++ /dev/null @@ -1,349 +0,0 @@ -diff -up gimp-2.6.6/app/display/gimpdisplay-foreach.c.minimize-dialogs gimp-2.6.6/app/display/gimpdisplay-foreach.c ---- gimp-2.6.6/app/display/gimpdisplay-foreach.c.minimize-dialogs 2008-11-20 23:43:04.000000000 +0100 -+++ gimp-2.6.6/app/display/gimpdisplay-foreach.c 2009-03-30 14:24:05.145595522 +0200 -@@ -227,6 +227,35 @@ gimp_displays_reconnect (Gimp *gimp - g_list_free (contexts); - } - -+gint -+gimp_displays_get_num_visible (Gimp *gimp) -+{ -+ GList *list; -+ gint visible = 0; -+ -+ g_return_val_if_fail (GIMP_IS_GIMP (gimp), 0); -+ -+ for (list = GIMP_LIST (gimp->displays)->list; -+ list; -+ list = g_list_next (list)) -+ { -+ GimpDisplay *display = list->data; -+ -+ if (GTK_WIDGET_DRAWABLE (display->shell)) -+ { -+ GdkWindowState state = gdk_window_get_state (display->shell->window); -+ -+ if ((state & (GDK_WINDOW_STATE_WITHDRAWN | -+ GDK_WINDOW_STATE_ICONIFIED)) == 0) -+ { -+ visible++; -+ } -+ } -+ } -+ -+ return visible; -+} -+ - void - gimp_displays_set_busy (Gimp *gimp) - { -diff -up gimp-2.6.6/app/display/gimpdisplay-foreach.h.minimize-dialogs gimp-2.6.6/app/display/gimpdisplay-foreach.h ---- gimp-2.6.6/app/display/gimpdisplay-foreach.h.minimize-dialogs 2008-11-20 23:43:04.000000000 +0100 -+++ gimp-2.6.6/app/display/gimpdisplay-foreach.h 2009-03-30 14:24:05.146606054 +0200 -@@ -28,6 +28,8 @@ void gimp_displays_reconnect - GimpImage *old, - GimpImage *new); - -+gint gimp_displays_get_num_visible (Gimp *gimp); -+ - void gimp_displays_set_busy (Gimp *gimp); - void gimp_displays_unset_busy (Gimp *gimp); - -diff -up gimp-2.6.6/app/display/gimpdisplayshell.c.minimize-dialogs gimp-2.6.6/app/display/gimpdisplayshell.c ---- gimp-2.6.6/app/display/gimpdisplayshell.c.minimize-dialogs 2009-03-15 21:57:09.000000000 +0100 -+++ gimp-2.6.6/app/display/gimpdisplayshell.c 2009-03-30 14:24:05.147606111 +0200 -@@ -59,6 +59,7 @@ - - #include "gimpcanvas.h" - #include "gimpdisplay.h" -+#include "gimpdisplay-foreach.h" - #include "gimpdisplayoptions.h" - #include "gimpdisplayshell.h" - #include "gimpdisplayshell-appearance.h" -@@ -615,12 +616,12 @@ gimp_display_shell_window_state_event (G - GdkEventWindowState *event) - { - GimpDisplayShell *shell = GIMP_DISPLAY_SHELL (widget); -+ Gimp *gimp = shell->display->gimp; - - shell->window_state = event->new_window_state; - - if (event->changed_mask & GDK_WINDOW_STATE_FULLSCREEN) - { -- Gimp *gimp = shell->display->gimp; - GimpActionGroup *group; - gboolean fullscreen; - -@@ -644,6 +645,19 @@ gimp_display_shell_window_state_event (G - - if (event->changed_mask & GDK_WINDOW_STATE_ICONIFIED) - { -+ gboolean iconified = (event->new_window_state & -+ GDK_WINDOW_STATE_ICONIFIED) != 0; -+ -+ if (iconified) -+ { -+ if (gimp_displays_get_num_visible (gimp) == 0) -+ gimp_dialog_factories_hide_with_display (); -+ } -+ else -+ { -+ gimp_dialog_factories_show_with_display (); -+ } -+ - gimp_display_shell_progress_window_state_changed (shell); - } - -diff -up gimp-2.6.6/app/widgets/gimpdialogfactory.c.minimize-dialogs gimp-2.6.6/app/widgets/gimpdialogfactory.c ---- gimp-2.6.6/app/widgets/gimpdialogfactory.c.minimize-dialogs 2008-11-20 23:43:05.000000000 +0100 -+++ gimp-2.6.6/app/widgets/gimpdialogfactory.c 2009-03-30 14:24:05.148606028 +0200 -@@ -45,6 +45,13 @@ - #include "gimp-log.h" - - -+typedef enum -+{ -+ GIMP_DIALOGS_SHOWN, -+ GIMP_DIALOGS_HIDDEN_EXPLICITLY, /* user used the Tab key to hide dialogs */ -+ GIMP_DIALOGS_HIDDEN_WITH_DISPLAY /* dialogs are hidden with the display */ -+} GimpDialogsState; -+ - enum - { - DOCK_ADDED, -@@ -103,7 +110,7 @@ G_DEFINE_TYPE (GimpDialogFactory, gimp_d - - static guint factory_signals[LAST_SIGNAL] = { 0 }; - --static gboolean dialogs_shown = TRUE; /* FIXME */ -+static GimpDialogsState dialogs_state = GIMP_DIALOGS_SHOWN; - - - static void -@@ -1079,7 +1086,7 @@ gimp_dialog_factory_hide_dialog (GtkWidg - - gtk_widget_hide (dialog); - -- if (! dialogs_shown) -+ if (dialogs_state != GIMP_DIALOGS_SHOWN) - g_object_set_data (G_OBJECT (dialog), GIMP_DIALOG_VISIBILITY_KEY, - GINT_TO_POINTER (GIMP_DIALOG_VISIBILITY_INVISIBLE)); - } -@@ -1122,30 +1129,66 @@ gimp_dialog_factories_session_clear (voi - NULL); - } - --void --gimp_dialog_factories_toggle (void) -+static void -+gimp_dialog_factories_set_state (GimpDialogsState state) - { - GimpDialogFactoryClass *factory_class; - - factory_class = g_type_class_peek (GIMP_TYPE_DIALOG_FACTORY); - -- if (dialogs_shown) -+ dialogs_state = state; -+ -+ if (state == GIMP_DIALOGS_SHOWN) - { -- dialogs_shown = FALSE; - g_hash_table_foreach (factory_class->factories, -- (GHFunc) gimp_dialog_factories_hide_foreach, -+ (GHFunc) gimp_dialog_factories_show_foreach, - NULL); - } - else - { -- dialogs_shown = TRUE; - g_hash_table_foreach (factory_class->factories, -- (GHFunc) gimp_dialog_factories_show_foreach, -+ (GHFunc) gimp_dialog_factories_hide_foreach, - NULL); - } - } - - void -+gimp_dialog_factories_show_with_display (void) -+{ -+ if (dialogs_state == GIMP_DIALOGS_HIDDEN_WITH_DISPLAY) -+ { -+ gimp_dialog_factories_set_state (GIMP_DIALOGS_SHOWN); -+ } -+} -+ -+void -+gimp_dialog_factories_hide_with_display (void) -+{ -+ if (dialogs_state == GIMP_DIALOGS_SHOWN) -+ { -+ gimp_dialog_factories_set_state (GIMP_DIALOGS_HIDDEN_WITH_DISPLAY); -+ } -+} -+ -+void -+gimp_dialog_factories_toggle (void) -+{ -+ switch (dialogs_state) -+ { -+ case GIMP_DIALOGS_SHOWN: -+ gimp_dialog_factories_set_state (GIMP_DIALOGS_HIDDEN_EXPLICITLY); -+ break; -+ -+ case GIMP_DIALOGS_HIDDEN_EXPLICITLY: -+ gimp_dialog_factories_set_state (GIMP_DIALOGS_SHOWN); -+ break; -+ -+ case GIMP_DIALOGS_HIDDEN_WITH_DISPLAY: -+ break; -+ } -+} -+ -+void - gimp_dialog_factories_set_busy (void) - { - GimpDialogFactoryClass *factory_class; -diff -up gimp-2.6.6/app/widgets/gimpdialogfactory.h.minimize-dialogs gimp-2.6.6/app/widgets/gimpdialogfactory.h ---- gimp-2.6.6/app/widgets/gimpdialogfactory.h.minimize-dialogs 2008-11-20 23:43:05.000000000 +0100 -+++ gimp-2.6.6/app/widgets/gimpdialogfactory.h 2009-03-30 14:24:05.149601894 +0200 -@@ -103,74 +103,77 @@ struct _GimpDialogFactoryClass - }; - - --GType gimp_dialog_factory_get_type (void) G_GNUC_CONST; -+GType gimp_dialog_factory_get_type (void) G_GNUC_CONST; - --GimpDialogFactory * gimp_dialog_factory_new (const gchar *name, -- GimpContext *context, -- GimpMenuFactory *menu_factory, -- GimpDialogNewFunc new_dock_func, -- gboolean toggle_visibility); -- --GimpDialogFactory * gimp_dialog_factory_from_name (const gchar *name); -- --void gimp_dialog_factory_set_constructor (GimpDialogFactory *factory, -- GimpDialogConstructor constructor); -- --void gimp_dialog_factory_register_entry (GimpDialogFactory *factory, -- const gchar *identifier, -- const gchar *name, -- const gchar *blurb, -- const gchar *stock_id, -- const gchar *help_id, -- GimpDialogNewFunc new_func, -- gint view_size, -- gboolean singleton, -- gboolean session_managed, -- gboolean remember_size, -- gboolean remember_if_open); -+GimpDialogFactory * gimp_dialog_factory_new (const gchar *name, -+ GimpContext *context, -+ GimpMenuFactory *menu_factory, -+ GimpDialogNewFunc new_dock_func, -+ gboolean toggle_visibility); -+ -+GimpDialogFactory * gimp_dialog_factory_from_name (const gchar *name); -+ -+void gimp_dialog_factory_set_constructor (GimpDialogFactory *factory, -+ GimpDialogConstructor constructor); -+ -+void gimp_dialog_factory_register_entry (GimpDialogFactory *factory, -+ const gchar *identifier, -+ const gchar *name, -+ const gchar *blurb, -+ const gchar *stock_id, -+ const gchar *help_id, -+ GimpDialogNewFunc new_func, -+ gint view_size, -+ gboolean singleton, -+ gboolean session_managed, -+ gboolean remember_size, -+ gboolean remember_if_open); - GimpDialogFactoryEntry * gimp_dialog_factory_find_entry -- (GimpDialogFactory *factory, -- const gchar *identifier); -+ (GimpDialogFactory *factory, -+ const gchar *identifier); - - GimpSessionInfo * gimp_dialog_factory_find_session_info -- (GimpDialogFactory *factory, -- const gchar *identifier); -+ (GimpDialogFactory *factory, -+ const gchar *identifier); - --GtkWidget * gimp_dialog_factory_dialog_new (GimpDialogFactory *factory, -- GdkScreen *screen, -- const gchar *identifier, -- gint view_size, -- gboolean present); --GtkWidget * gimp_dialog_factory_dialog_raise (GimpDialogFactory *factory, -- GdkScreen *screen, -- const gchar *identifiers, -- gint view_size); --GtkWidget * gimp_dialog_factory_dockable_new (GimpDialogFactory *factory, -- GimpDock *dock, -- const gchar *identifier, -- gint view_size); --GtkWidget * gimp_dialog_factory_dock_new (GimpDialogFactory *factory, -- GdkScreen *screen); -- --void gimp_dialog_factory_add_dialog (GimpDialogFactory *factory, -- GtkWidget *dialog); --void gimp_dialog_factory_add_foreign (GimpDialogFactory *factory, -- const gchar *identifier, -- GtkWidget *dialog); --void gimp_dialog_factory_remove_dialog (GimpDialogFactory *factory, -- GtkWidget *dialog); -- --void gimp_dialog_factory_show_toolbox (GimpDialogFactory *toolbox_factory); -- --void gimp_dialog_factory_hide_dialog (GtkWidget *dialog); -- --void gimp_dialog_factories_session_save (GimpConfigWriter *writer); --void gimp_dialog_factories_session_restore (void); --void gimp_dialog_factories_session_clear (void); -- --void gimp_dialog_factories_toggle (void); --void gimp_dialog_factories_set_busy (void); --void gimp_dialog_factories_unset_busy (void); -+GtkWidget * gimp_dialog_factory_dialog_new (GimpDialogFactory *factory, -+ GdkScreen *screen, -+ const gchar *identifier, -+ gint view_size, -+ gboolean present); -+GtkWidget * gimp_dialog_factory_dialog_raise (GimpDialogFactory *factory, -+ GdkScreen *screen, -+ const gchar *identifiers, -+ gint view_size); -+GtkWidget * gimp_dialog_factory_dockable_new (GimpDialogFactory *factory, -+ GimpDock *dock, -+ const gchar *identifier, -+ gint view_size); -+GtkWidget * gimp_dialog_factory_dock_new (GimpDialogFactory *factory, -+ GdkScreen *screen); -+ -+void gimp_dialog_factory_add_dialog (GimpDialogFactory *factory, -+ GtkWidget *dialog); -+void gimp_dialog_factory_add_foreign (GimpDialogFactory *factory, -+ const gchar *identifier, -+ GtkWidget *dialog); -+void gimp_dialog_factory_remove_dialog (GimpDialogFactory *factory, -+ GtkWidget *dialog); -+ -+void gimp_dialog_factory_show_toolbox (GimpDialogFactory *toolbox_factory); -+ -+void gimp_dialog_factory_hide_dialog (GtkWidget *dialog); -+ -+void gimp_dialog_factories_session_save (GimpConfigWriter *writer); -+void gimp_dialog_factories_session_restore (void); -+void gimp_dialog_factories_session_clear (void); -+ -+void gimp_dialog_factories_show_with_display (void); -+void gimp_dialog_factories_hide_with_display (void); -+void gimp_dialog_factories_toggle (void); -+ -+void gimp_dialog_factories_set_busy (void); -+void gimp_dialog_factories_unset_busy (void); - - GimpDialogFactory * - gimp_dialog_factory_from_widget (GtkWidget *dialog, diff --git a/gimp-2.6.7-jpeg-units.patch b/gimp-2.6.7-jpeg-units.patch deleted file mode 100644 index 71f460a..0000000 --- a/gimp-2.6.7-jpeg-units.patch +++ /dev/null @@ -1,45 +0,0 @@ -commit f6f34fd0cd6d523cc472351bcdc9b9ae180aac41 -Author: Sven Neumann -Date: Mon Nov 3 16:39:20 2008 +0000 - - patch: jpeg-units - - Bug 559081 – JPEG Save dialog preview should adjust size units - - 2008-11-03 Sven Neumann - - Bug 559081 – JPEG Save dialog preview should adjust size units - - * plug-ins/file-jpeg/jpeg-save.c: use - g_format_size_for_display() - to display the JPEG file size. - - svn path=/trunk/; revision=27532 - - Signed-off-by: Nils Philippsen - -diff --git a/plug-ins/file-jpeg/jpeg-save.c b/plug-ins/file-jpeg/jpeg-save.c -index 2d0d249..35cda17 100644 ---- a/plug-ins/file-jpeg/jpeg-save.c -+++ b/plug-ins/file-jpeg/jpeg-save.c -@@ -192,14 +192,14 @@ background_jpeg_save (PreviewPersistent *pp) - /* display the preview stuff */ - if (!pp->abort_me) - { -- struct stat buf; -- gchar temp[128]; -+ struct stat buf; -+ gchar *text; - - g_stat (pp->file_name, &buf); -- g_snprintf (temp, sizeof (temp), -- _("File size: %02.01f kB"), -- (gdouble) (buf.st_size) / 1024.0); -- gtk_label_set_text (GTK_LABEL (preview_size), temp); -+ text = g_strdup_printf (_("File size: %s"), -+ g_format_size_for_display (buf.st_size)); -+ gtk_label_set_text (GTK_LABEL (preview_size), text); -+ g_free (text); - - /* and load the preview */ - load_image (pp->file_name, GIMP_RUN_NONINTERACTIVE, TRUE, NULL); diff --git a/gimp-2.6.8-gold.patch b/gimp-2.6.8-gold.patch deleted file mode 100644 index d4e61df..0000000 --- a/gimp-2.6.8-gold.patch +++ /dev/null @@ -1,616 +0,0 @@ -From 4dcab3c2904353c0a175765657316bbfc78af0d2 Mon Sep 17 00:00:00 2001 -From: Nils Philippsen -Date: Thu, 25 Feb 2010 18:04:18 +0100 -Subject: [PATCH] patch: gold - -Squashed commit of the following: - -commit afd331aca4c7cb4a0b53c7b0276253aab82424ae -Author: Nils Philippsen -Date: Thu Feb 25 15:11:04 2010 +0100 - - selection-to-path: explicitly specify library dependencies - -commit db8abcd13a4d553d1f3e50e6fb0cc19a7c9f6ae5 -Author: Nils Philippsen -Date: Thu Feb 25 15:11:04 2010 +0100 - - pagecurl: explicitly specify library dependencies - -commit 9d4e2aad81e339ae3e2971b7c12d3ae12bd60220 -Author: Nils Philippsen -Date: Thu Feb 25 15:11:04 2010 +0100 - - map-object: explicitly specify library dependencies - -commit 257047325c0fb9297d764f34a6d4742fcfb837b7 -Author: Nils Philippsen -Date: Thu Feb 25 15:11:04 2010 +0100 - - lighting: explicitly specify library dependencies - -commit 709c245217a301652c1e5a3a288f5ae7c101aa33 -Author: Nils Philippsen -Date: Thu Feb 25 15:11:04 2010 +0100 - - imagemap: explicitly specify library dependencies - -commit a40311f72b994c5ffb37a206e7d40ffc099c8205 -Author: Nils Philippsen -Date: Thu Feb 25 15:11:04 2010 +0100 - - ifs-compose: explicitly specify library dependencies - -commit aebab1503e2065fe7665abd5818def52603e2eec -Author: Nils Philippsen -Date: Thu Feb 25 15:11:04 2010 +0100 - - gradient-flare: explicitly specify library dependencies - -commit 0c7c425d1acdfecf64b453681df25cb08e344338 -Author: Nils Philippsen -Date: Thu Feb 25 15:11:04 2010 +0100 - - gimpressionist: explicitly specify library dependencies - -commit 2822fbfd9c0c1c099047d99d41ae9de8c8d52dc3 -Author: Nils Philippsen -Date: Thu Feb 25 15:11:04 2010 +0100 - - gfig: explicitly specify library dependencies - -commit 4c0fd7d3f63f25a112271422cecef1b8958a94f9 -Author: Nils Philippsen -Date: Thu Feb 25 15:11:04 2010 +0100 - - fractal-explorer: explicitly specify library dependencies - -commit 17e154a2856d0e97ebd76c706b6238fb3b40e74e -Author: Nils Philippsen -Date: Thu Feb 25 15:36:20 2010 +0100 - - flame: explicitly specify library dependencies - -commit f7fadce58851854abb1ed54ce0141c8dc0434c12 -Author: Nils Philippsen -Date: Thu Feb 25 15:11:04 2010 +0100 - - color-rotate: explicitly specify library dependencies - -commit abbb6a2472e7e31e3aaa30c772f8f5dbaaf476c5 -Author: Nils Philippsen -Date: Wed Feb 24 15:40:50 2010 +0100 - - script-fu: explicitly specify library dependencies - -commit da5ee1fe718d9bbbda6c786ebf0f4ded43a7a246 -Author: Manish Singh -Date: Wed Sep 9 17:41:20 2009 -0700 - - Explicit shared lib deps to support gold - - (attempted cherry-picking from commit - 15497c1d6808b1ea479574b0b3e132484f7f172f, resolved conflicts) - - Signed-off-by: Nils Philippsen - -commit 7cae0f249a5d2110a596f3fb22cdd33b07b05f1c -Author: Manish Singh -Date: Sun May 24 10:42:39 2009 -0700 - - Explicitly specify library dependencies at link time, so we can use gold. - (cherry picked from commit 582cb0f14eb9f145bd2a2f5c9fda12309ae0229f) - - Signed-off-by: Nils Philippsen ---- - libgimpthumb/Makefile.am | 5 ++++- - plug-ins/color-rotate/Makefile.am | 12 +++++++----- - plug-ins/common/Makefile.am | 11 ++++++----- - plug-ins/common/mkgen.pl | 11 ++++++----- - plug-ins/flame/Makefile.am | 12 +++++++----- - plug-ins/fractal-explorer/Makefile.am | 12 +++++++----- - plug-ins/gfig/Makefile.am | 12 +++++++----- - plug-ins/gimpressionist/Makefile.am | 12 +++++++----- - plug-ins/gradient-flare/Makefile.am | 12 +++++++----- - plug-ins/help-browser/Makefile.am | 1 + - plug-ins/ifs-compose/Makefile.am | 12 +++++++----- - plug-ins/imagemap/Makefile.am | 12 +++++++----- - plug-ins/lighting/Makefile.am | 12 +++++++----- - plug-ins/map-object/Makefile.am | 12 +++++++----- - plug-ins/metadata/Makefile.am | 5 ++++- - plug-ins/pagecurl/Makefile.am | 12 +++++++----- - plug-ins/script-fu/Makefile.am | 14 ++++++++------ - plug-ins/selection-to-path/Makefile.am | 12 +++++++----- - 18 files changed, 113 insertions(+), 78 deletions(-) - -diff --git a/libgimpthumb/Makefile.am b/libgimpthumb/Makefile.am -index 2e7b531..ee26219 100644 ---- a/libgimpthumb/Makefile.am -+++ b/libgimpthumb/Makefile.am -@@ -86,7 +86,10 @@ noinst_PROGRAMS = gimp-thumbnail-list - - gimp_thumbnail_list_SOURCES = gimp-thumbnail-list.c - --gimp_thumbnail_list_LDADD = libgimpthumb-$(GIMP_API_VERSION).la -+gimp_thumbnail_list_LDADD = \ -+ libgimpthumb-$(GIMP_API_VERSION).la \ -+ $(GDK_PIXBUF_LIBS) \ -+ $(GLIB_LIBS) - - - install-data-local: install-ms-lib install-libtool-import-lib -diff --git a/plug-ins/color-rotate/Makefile.am b/plug-ins/color-rotate/Makefile.am -index c713c8c..f7e11b7 100644 ---- a/plug-ins/color-rotate/Makefile.am -+++ b/plug-ins/color-rotate/Makefile.am -@@ -1,16 +1,18 @@ - ## Process this file with automake to produce Makefile.in - -+if OS_WIN32 -+mwindows = -mwindows -+else -+libm = -lm -+endif -+ - libgimpui = $(top_builddir)/libgimp/libgimpui-$(GIMP_API_VERSION).la - libgimpconfig = $(top_builddir)/libgimpconfig/libgimpconfig-$(GIMP_API_VERSION).la - libgimpwidgets = $(top_builddir)/libgimpwidgets/libgimpwidgets-$(GIMP_API_VERSION).la - libgimp = $(top_builddir)/libgimp/libgimp-$(GIMP_API_VERSION).la - libgimpcolor = $(top_builddir)/libgimpcolor/libgimpcolor-$(GIMP_API_VERSION).la - libgimpbase = $(top_builddir)/libgimpbase/libgimpbase-$(GIMP_API_VERSION).la --libgimpmath = $(top_builddir)/libgimpmath/libgimpmath-$(GIMP_API_VERSION).la -- --if OS_WIN32 --mwindows = -mwindows --endif -+libgimpmath = $(top_builddir)/libgimpmath/libgimpmath-$(GIMP_API_VERSION).la $(libm) - - AM_LDFLAGS = $(mwindows) - -diff --git a/plug-ins/common/Makefile.am b/plug-ins/common/Makefile.am -index 66dc6dd..d58ecee 100644 ---- a/plug-ins/common/Makefile.am -+++ b/plug-ins/common/Makefile.am -@@ -7,21 +7,22 @@ - ## Modify those two files instead of this one; for most - ## plug-ins you should only need to modify plugin-defs.pl. - -+if OS_WIN32 -+mwindows = -mwindows -+else -+libm = -lm -+endif - - libgimp = $(top_builddir)/libgimp/libgimp-$(GIMP_API_VERSION).la - libgimpbase = $(top_builddir)/libgimpbase/libgimpbase-$(GIMP_API_VERSION).la - libgimpcolor = $(top_builddir)/libgimpcolor/libgimpcolor-$(GIMP_API_VERSION).la - libgimpconfig = $(top_builddir)/libgimpconfig/libgimpconfig-$(GIMP_API_VERSION).la --libgimpmath = $(top_builddir)/libgimpmath/libgimpmath-$(GIMP_API_VERSION).la -+libgimpmath = $(top_builddir)/libgimpmath/libgimpmath-$(GIMP_API_VERSION).la $(libm) - libgimpmodule = $(top_builddir)/libgimpmodule/libgimpmodule-$(GIMP_API_VERSION).la - libgimpui = $(top_builddir)/libgimp/libgimpui-$(GIMP_API_VERSION).la - libgimpwidgets = $(top_builddir)/libgimpwidgets/libgimpwidgets-$(GIMP_API_VERSION).la - - --if OS_WIN32 --mwindows = -mwindows --endif -- - AM_LDFLAGS = $(mwindows) - - libexecdir = $(gimpplugindir)/plug-ins -diff --git a/plug-ins/common/mkgen.pl b/plug-ins/common/mkgen.pl -index 40b4b74..b0cd786 100755 ---- a/plug-ins/common/mkgen.pl -+++ b/plug-ins/common/mkgen.pl -@@ -51,21 +51,22 @@ print MK <= 16 || 0%{?rhel} >= 7 -# don't use HAL from F-16/RHEL7 on -%bcond_with hal +# gudev: use gudev to discover special input devices +%if ! 0%{?fedora}%{?rhel} || 0%{?fedora} >= 15 || 0%{?rhel} >= 7 +# use gudev from F-15/RHEL7 on +%bcond_without gudev %else -%bcond_without hal +%bcond_with gudev %endif # aalib: build with AAlib (ASCII art gfx library) -%if 0%{?rhel} != 0 +%if 0%{?rhel} # don't use aalib on RHEL %bcond_with aalib %else %bcond_without aalib %endif +# hardening: use various compiler/linker flags to harden binaries against +# certain types of exploits +%bcond_without hardening +# Reset this once poppler picks up the updated xpdf version of "GPLv2 or GPLv3" +%bcond_with poppler + Summary: GNU Image Manipulation Program Name: gimp Epoch: 2 -Version: 2.6.11 -Release: 21%{?dist} -%define binver 2.6 -%define gimp_lang_ver 20 -%define interfacever 2.0 -%define age 0 -%define minorver 600 -%define microver %(ver=%{version}; echo ${ver##*.*.}) -License: GPLv2+ +Version: 2.7.3 +Release: 1%{?dist} + +# Set this to 0 in stable, 1 in unstable releases +%global unstable 1 + +# Compute some version related macros +# Ugly hack, you need to get your quoting backslashes/percent signs straight +%global major %(ver=%version; echo ${ver%%%%.*}) +%global minor %(ver=%version; ver=${ver#%major.}; echo ${ver%%%%.*}) +%global micro %(ver=%version; ver=${ver#%major.%minor.}; echo ${ver%%%%.*}) +%global binver %major.%minor +%global interface_age 0 +%global gettext_version 20 +%global lib_api_version 2.0 +%if ! %unstable +%global lib_minor %(echo $[%minor * 100]) +%global lib_micro %micro +%else # unstable +%global lib_minor %(echo $[%minor * 100 + %micro]) +%global lib_micro 0 +%endif # unstable + +License: GPLv3+ Group: Applications/Multimedia URL: http://www.gimp.org/ BuildRoot: %{_tmppath}/%{name}-%{version}-root-%(%__id_u -n) @@ -54,34 +75,40 @@ BuildRequires: chrpath >= 0.13-5 BuildRequires: aalib-devel %endif BuildRequires: alsa-lib-devel >= 1.0.0 -BuildRequires: babl-devel >= 0.0.22 -BuildRequires: cairo-devel >= 1.4.10 +BuildRequires: babl-devel >= 0.1.4 +BuildRequires: cairo-devel >= 1.10.2 BuildRequires: curl-devel >= 7.15.1 BuildRequires: dbus-glib-devel >= 0.70 BuildRequires: fontconfig-devel >= 2.2.0 BuildRequires: freetype-devel >= 2.1.7 -BuildRequires: gegl-devel >= 0.0.18 -BuildRequires: glib2-devel >= 2.16.1 +BuildRequires: gdk-pixbuf2-devel >= 2.22.1 +BuildRequires: gegl-devel >= 0.1.6 +BuildRequires: glib2-devel >= 2.28.1 BuildRequires: gnome-keyring-devel >= 0.4.5 -BuildRequires: gtk2-devel >= 2.12.5 +BuildRequires: gtk2-devel >= 2.24.3 BuildRequires: gtk-doc >= 1.0 -%if %{with hal} -BuildRequires: hal-devel >= 0.5.7 -%endif +BuildRequires: jasper-devel BuildRequires: libexif-devel >= 0.6.15 BuildRequires: libgnomeui-devel >= 2.10.0 +%if %{with gudev} +BuildRequires: libgudev1-devel >= 167 +%else +BuildRequires: hal-devel >= 0.5.7 +%endif BuildRequires: libjpeg-devel BuildRequires: libmng-devel -BuildRequires: libpng-devel +BuildRequires: libpng-devel >= 1.2.37 BuildRequires: librsvg2-devel >= 2.14.0 BuildRequires: libtiff-devel BuildRequires: libwmf-devel >= 0.2.8 -BuildRequires: pango-devel >= 1.18.0 +BuildRequires: pango-devel >= 1.22.0 +%if %{with poppler} %if 0%{?fedora}%{?rhel} == 0 || 0%{?fedora} > 8 || 0%{?rhel} > 5 BuildRequires: poppler-glib-devel >= 0.4.1 %else BuildRequires: poppler-devel >= 0.4.1 %endif +%endif BuildRequires: python-devel BuildRequires: pygtk2-devel >= 2.10.4 BuildRequires: pygobject2-devel @@ -101,9 +128,9 @@ BuildRequires: findutils BuildRequires: lcms-devel >= 1.16 %endif -Requires: glib2 >= 2.16.1 -Requires: gtk2 >= 2.12.5 -Requires: pango >= 1.18.0 +Requires: glib2 >= 2.28.1 +Requires: gtk2 >= 2.24.3 +Requires: pango >= 1.22.0 Requires: freetype >= 2.1.7 Requires: fontconfig >= 2.2.0 %if ! %{with print} @@ -119,44 +146,6 @@ Requires: xdg-utils Requires: gimp-libs%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} Source0: ftp://ftp.gimp.org/pub/gimp/v%{binver}/gimp-%{version}.tar.bz2 -# distro specific: use xdg-open instead of firefox as web browser -Patch0: gimp-2.6.2-xdg-open.patch -# https://bugzilla.gnome.org/show_bug.cgi?id=559081 -# "JPEG Save dialog preview should adjust size units" -Patch1: gimp-2.6.7-jpeg-units.patch -# https://bugzilla.gnome.org/show_bug.cgi?id=556896 -# "Dialogs don't get minimized with single image window" -Patch2: gimp-2.6.6-minimize-dialogs.patch -# backport: fix building with "gold" linker -Patch3: gimp-2.6.8-gold.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=198367 -# https://bugzilla.gnome.org/show_bug.cgi?id=623045 -# make script-fu logging IPv6 aware -Patch4: gimp-2.6.10-script-fu-ipv6.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=651002 -# avoid traceback in colorxhtml plugin, upstreamed -Patch5: gimp-2.6.11-colorxhtml.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=667958 -# avoid traceback in pyslice plugin, upstreamed -Patch6: gimp-2.6.11-pyslice.patch -# backport: work with poppler-0.17, upstreamed -Patch7: gimp-2.6.11-poppler-0.17.patch -# backport: CVE-2010-4543, CVE-2011-1782 -# harden PSP plugin against bogus input data -Patch8: gimp-2.6.11-psp-overflow.patch -# backport: CVE-2010-4540, CVE-2010-4541, CVE-2010-4542 -# fix buffer overflows in sphere-designer, gfig, lighting plugins -Patch9: gimp-2.6.11-CVE-2010-4540,4541,4542.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=711952 -# https://bugzilla.gnome.org/show_bug.cgi?id=652280 -# guard against crash due to quitting while DND is processed, upstreamed -Patch10: gimp-2.6.11-shell-dnd-quit-crash.patch -# backport: fix goption warning on startup -Patch11: gimp-2.6.11-startup-warning.patch -# CVE-2011-2896: fix heap corruption and buffer overflow, upstreamed -Patch12: gimp-2.6.11-gif-load.patch -# files changed by autoreconf after applying the above -Patch100: gimp-2.6.11-11-autoreconf.patch.bz2 %description GIMP (GNU Image Manipulation Program) is a powerful image composition and @@ -166,20 +155,32 @@ to find in similar commercial offerings, and some interesting extras as well. GIMP provides a large image manipulation toolbox, including channel operations and layers, effects, sub-pixel imaging and anti-aliasing, and conversions, all with multi-level undo. +%if %unstable +This is an UNSTABLE development version of GIMP. Please report bugs in the +program upstream: + +https://bugzilla.gnome.org/enter_bug.cgi?product=GIMP&version=%version +%endif %package libs Summary: GIMP libraries Group: System Environment/Libraries -License: LGPLv2+ +License: LGPLv3+ %description libs The gimp-libs package contains shared libraries needed for the GNU Image Manipulation Program (GIMP). +%if %unstable +This is an UNSTABLE development version of GIMP. Please report bugs in the +program upstream: + +https://bugzilla.gnome.org/enter_bug.cgi?product=GIMP&version=%version +%endif %package devel Summary: GIMP plugin and extension development kit Group: Development/Libraries -License: LGPLv2+ +License: LGPLv3+ Requires: gimp-libs%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} Requires: gimp-devel-tools = %{?epoch:%{epoch}:}%{version}-%{release} Requires: gtk2-devel @@ -190,75 +191,83 @@ Requires: pkgconfig The gimp-devel package contains the static libraries and header files for writing GNU Image Manipulation Program (GIMP) plug-ins and extensions. +%if %unstable +This is an UNSTABLE development version of GIMP. Please report bugs in the +program upstream: + +https://bugzilla.gnome.org/enter_bug.cgi?product=GIMP&version=%version +%endif %package devel-tools Summary: GIMP plugin and extension development tools Group: Development/Tools -License: LGPLv2+ +License: LGPLv3+ Requires: gimp-devel = %{?epoch:%{epoch}:}%{version}-%{release} %description devel-tools The gimp-devel-tools package contains gimptool, a helper program to build GNU Image Manipulation Program (GIMP) plug-ins and extensions. +%if %unstable +This is an UNSTABLE development version of GIMP. Please report bugs in the +program upstream: + +https://bugzilla.gnome.org/enter_bug.cgi?product=GIMP&version=%version +%endif %package help-browser Summary: GIMP help browser plug-in Group: Applications/Multimedia -License: GPLv2+ +License: GPLv3+ Obsoletes: gimp < 2:2.6.0-3 Requires: gimp%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} %description help-browser The gimp-help-browser package contains a lightweight help browser plugin for viewing GIMP online help. +%if %unstable +This is an UNSTABLE development version of GIMP. Please report bugs in the +program upstream: + +https://bugzilla.gnome.org/enter_bug.cgi?product=GIMP&version=%version +%endif %prep cat << EOF - -Build options: -LCMS support: %{with lcms} -Python support: %{with python} -MP support: %{with mp} -build static libs: %{with static} -build internal print plugin: %{with print} -include convenience symlinks: %{with convenience} -build the print plugin: %{with print} -use HAL: %{with hal} +--- 8< --- Build options --------------------------------------------------- +LCMS support: %{with lcms} +Python support: %{with python} +MP support: %{with mp} +build static libs: %{with static} +build internal print plugin: %{with print} +include convenience symlinks: %{with convenience} +build the print plugin: %{with print} +use gudev: %{with gudev} %if ! %{with print} prefer gutenprint over (external) gimp-print plugin: - %{with gutenprint} + %{with gutenprint} %endif -build ASCII art plugin %{with aalib} - - +build ASCII art plugin %{with aalib} +harden binaries: %{with hardening} +use poppler: %{with poppler} +--- >8 --------------------------------------------------------------------- EOF %setup -q -n gimp-%{version} -%patch0 -p1 -b .xdg-open -%patch1 -p1 -b .jpeg-units -%patch2 -p1 -b .minimize-dialogs -%patch3 -p1 -b .gold -%patch4 -p1 -b .script-fu-ipv6 -%patch5 -p1 -b .colorxhtml -%patch6 -p1 -b .pyslice -%patch7 -p1 -b .poppler-0.17 -%patch8 -p1 -b .psp-overflow -%patch9 -p1 -b .CVE-2010-4540,4541,4542 -%patch10 -p1 -b .shell-dnd-quit-crash -%patch11 -p1 -b .startup-warning -%patch12 -p1 -b .gif-load - -%patch100 -p1 -b .autoreconf - %build -# Use PIC/PIE because gimp is likely to deal with files coming from untrusted -# sources -CFLAGS='-fPIC %optflags -fno-strict-aliasing' -CXXFLAGS='-fPIC %optflags -fno-strict-aliasing' -LDFLAGS='-pie' +%if %{with hardening} +# Use hardening compiler/linker flags because gimp is likely to deal with files +# coming from untrusted sources +%if ! 0%{?fedora}%{?rhel} || 0%{?fedora} >= 16 || 0%{?rhel} >= 7 +%global _hardened_build 1 +%else +# fake things +export CFLAGS='-fPIC %optflags' +export CXXFLAGS='-fPIC %optflags' +export LDFLAGS='-pie' +%endif +%endif %configure \ - --enable-gimp-remote \ %if %{with python} --enable-python \ %else @@ -290,17 +299,22 @@ LDFLAGS='-pie' %else --without-aa \ %endif -%if %{with hal} - --with-hal \ +%if %{with gudev} + --with-gudev --without-hal \ %else - --without-hal \ + --with-hal --without-gudev \ %endif %ifos linux --with-linux-input \ %endif - --with-libtiff --with-libjpeg --with-libpng --with-libmng --with-libexif \ - --with-librsvg --with-libxpm --with-poppler --with-gvfs --with-alsa \ - --with-webkit --with-dbus --with-script-fu +%if use_poppler + --with-poppler \ +%else + --without-poppler \ +%endif + --with-libtiff --with-libjpeg --with-libpng --with-libmng --with-libjasper \ + --with-libexif --with-librsvg --with-libxpm --with-gvfs --with-alsa \ + --with-webkit --with-dbus --with-script-fu --with-cairo-pdf make %{?_smp_mflags} @@ -322,7 +336,7 @@ find %buildroot -name \*.la -exec %__rm -f {} \; # Plugins and modules change often (grab the executeable ones) # echo "%defattr (-, root, root)" > gimp-plugin-files -find %{buildroot}%{_libdir}/gimp/%{interfacever} -type f | sed "s@^%{buildroot}@@g" | grep -v '\.a$' >> gimp-plugin-files +find %{buildroot}%{_libdir}/gimp/%{lib_api_version} -type f | sed "s@^%{buildroot}@@g" | grep -v '\.a$' >> gimp-plugin-files # .pyc and .pyo files don't exist yet grep "\.py$" gimp-plugin-files > gimp-plugin-files-py @@ -334,20 +348,20 @@ done >> gimp-plugin-files %if %{with static} echo "%defattr (-, root, root)" > gimp-static-files -find %{buildroot}%{_libdir}/gimp/%{interfacever} -type f | sed "s@^%{buildroot}@@g" | grep '\.a$' >> gimp-static-files +find %{buildroot}%{_libdir}/gimp/%{lib_api_version} -type f | sed "s@^%{buildroot}@@g" | grep '\.a$' >> gimp-static-files %endif # # Auto detect the lang files. # -%find_lang gimp%{gimp_lang_ver} -%find_lang gimp%{gimp_lang_ver}-std-plug-ins -%find_lang gimp%{gimp_lang_ver}-script-fu -%find_lang gimp%{gimp_lang_ver}-libgimp -%find_lang gimp%{gimp_lang_ver}-tips -%find_lang gimp%{gimp_lang_ver}-python +%find_lang gimp%{gettext_version} +%find_lang gimp%{gettext_version}-std-plug-ins +%find_lang gimp%{gettext_version}-script-fu +%find_lang gimp%{gettext_version}-libgimp +%find_lang gimp%{gettext_version}-tips +%find_lang gimp%{gettext_version}-python -cat gimp%{gimp_lang_ver}.lang gimp%{gimp_lang_ver}-std-plug-ins.lang gimp%{gimp_lang_ver}-script-fu.lang gimp%{gimp_lang_ver}-libgimp.lang gimp%{gimp_lang_ver}-tips.lang gimp%{gimp_lang_ver}-python.lang > gimp-all.lang +cat gimp%{gettext_version}.lang gimp%{gettext_version}-std-plug-ins.lang gimp%{gettext_version}-script-fu.lang gimp%{gettext_version}-libgimp.lang gimp%{gettext_version}-tips.lang gimp%{gettext_version}-python.lang > gimp-all.lang # # Build the master filelists generated from the above mess. @@ -360,13 +374,21 @@ ln -snf gimp-%{binver} %{buildroot}%{_bindir}/gimp ln -snf gimp-%{binver}.1 %{buildroot}%{_mandir}/man1/gimp.1 ln -snf gimp-console-%{binver} %{buildroot}/%{_bindir}/gimp-console ln -snf gimp-console-%{binver}.1 %{buildroot}/%{_mandir}/man1/gimp-console.1 -ln -snf gimp-remote-%{binver} %{buildroot}%{_bindir}/gimp-remote -ln -snf gimp-remote-%{binver}.1 %{buildroot}%{_mandir}/man1/gimp-remote.1 -ln -snf gimptool-%{interfacever} %{buildroot}%{_bindir}/gimptool -ln -snf gimptool-%{interfacever}.1 %{buildroot}%{_mandir}/man1/gimptool.1 +ln -snf gimptool-%{lib_api_version} %{buildroot}%{_bindir}/gimptool +ln -snf gimptool-%{lib_api_version}.1 %{buildroot}%{_mandir}/man1/gimptool.1 ln -snf gimprc-%{binver}.5 %{buildroot}/%{_mandir}/man5/gimprc.5 %endif +%if %unstable +# Suppress abrt bug reporting for unstable releases +mkdir -p %{buildroot}%{_sysconfdir}/libreport/events.d +cat << EOF > %{buildroot}%{_sysconfdir}/libreport/events.d/gimp-unstable.conf +# don't generate abrt reports for unstable gimp releases +EVENT=post-create executable~=.*/gimp.* + test -d "\$DUMP_DIR" && rm -rf -- "\$DUMP_DIR" +EOF +%endif # unstable + %clean rm -rf %{buildroot} @@ -394,90 +416,93 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %{_datadir}/applications/*.desktop %dir %{_datadir}/gimp -%dir %{_datadir}/gimp/%{interfacever} -%{_datadir}/gimp/%{interfacever}/tips/ -%{_datadir}/gimp/%{interfacever}/menus/ +%dir %{_datadir}/gimp/%{lib_api_version} +%{_datadir}/gimp/%{lib_api_version}/dynamics/ +%{_datadir}/gimp/%{lib_api_version}/menus/ +%{_datadir}/gimp/%{lib_api_version}/tags/ +%{_datadir}/gimp/%{lib_api_version}/tips/ +%{_datadir}/gimp/%{lib_api_version}/ui/ %dir %{_libdir}/gimp -%dir %{_libdir}/gimp/%{interfacever} -%dir %{_libdir}/gimp/%{interfacever}/environ -#%dir %{_libdir}/gimp/%{interfacever}/fonts -%dir %{_libdir}/gimp/%{interfacever}/interpreters -%dir %{_libdir}/gimp/%{interfacever}/modules -%dir %{_libdir}/gimp/%{interfacever}/plug-ins -%exclude %{_libdir}/gimp/%{interfacever}/plug-ins/help-browser -%dir %{_libdir}/gimp/%{interfacever}/python -#%dir %{_libdir}/gimp/%{interfacever}/tool-plug-ins +%dir %{_libdir}/gimp/%{lib_api_version} +%dir %{_libdir}/gimp/%{lib_api_version}/environ +#%dir %{_libdir}/gimp/%{lib_api_version}/fonts +%dir %{_libdir}/gimp/%{lib_api_version}/interpreters +%dir %{_libdir}/gimp/%{lib_api_version}/modules +%dir %{_libdir}/gimp/%{lib_api_version}/plug-ins +%exclude %{_libdir}/gimp/%{lib_api_version}/plug-ins/help-browser +%dir %{_libdir}/gimp/%{lib_api_version}/python +#%dir %{_libdir}/gimp/%{lib_api_version}/tool-plug-ins -%{_datadir}/gimp/%{interfacever}/brushes/ -%{_datadir}/gimp/%{interfacever}/fractalexplorer/ -%{_datadir}/gimp/%{interfacever}/gfig/ -%{_datadir}/gimp/%{interfacever}/gflare/ -%{_datadir}/gimp/%{interfacever}/gimpressionist/ -%{_datadir}/gimp/%{interfacever}/gradients/ -# %{_datadir}/gimp/%{interfacever}/help/ -%{_datadir}/gimp/%{interfacever}/images/ -%{_datadir}/gimp/%{interfacever}/palettes/ -%{_datadir}/gimp/%{interfacever}/patterns/ -%{_datadir}/gimp/%{interfacever}/scripts/ -%{_datadir}/gimp/%{interfacever}/themes/ +%{_datadir}/gimp/%{lib_api_version}/brushes/ +%{_datadir}/gimp/%{lib_api_version}/fractalexplorer/ +%{_datadir}/gimp/%{lib_api_version}/gfig/ +%{_datadir}/gimp/%{lib_api_version}/gflare/ +%{_datadir}/gimp/%{lib_api_version}/gimpressionist/ +%{_datadir}/gimp/%{lib_api_version}/gradients/ +# %{_datadir}/gimp/%{lib_api_version}/help/ +%{_datadir}/gimp/%{lib_api_version}/images/ +%{_datadir}/gimp/%{lib_api_version}/palettes/ +%{_datadir}/gimp/%{lib_api_version}/patterns/ +%{_datadir}/gimp/%{lib_api_version}/scripts/ +%{_datadir}/gimp/%{lib_api_version}/themes/ %dir %{_sysconfdir}/gimp -%dir %{_sysconfdir}/gimp/%{interfacever} -%config(noreplace) %{_sysconfdir}/gimp/%{interfacever}/controllerrc -%config(noreplace) %{_sysconfdir}/gimp/%{interfacever}/gimprc -%config(noreplace) %{_sysconfdir}/gimp/%{interfacever}/gtkrc -%config(noreplace) %{_sysconfdir}/gimp/%{interfacever}/unitrc -%config(noreplace) %{_sysconfdir}/gimp/%{interfacever}/ps-menurc -%config(noreplace) %{_sysconfdir}/gimp/%{interfacever}/sessionrc -%config(noreplace) %{_sysconfdir}/gimp/%{interfacever}/templaterc -%config(noreplace) %{_sysconfdir}/gimp/%{interfacever}/menurc +%dir %{_sysconfdir}/gimp/%{lib_api_version} +%config(noreplace) %{_sysconfdir}/gimp/%{lib_api_version}/controllerrc +%config(noreplace) %{_sysconfdir}/gimp/%{lib_api_version}/gimprc +%config(noreplace) %{_sysconfdir}/gimp/%{lib_api_version}/gtkrc +%config(noreplace) %{_sysconfdir}/gimp/%{lib_api_version}/unitrc +%config(noreplace) %{_sysconfdir}/gimp/%{lib_api_version}/sessionrc +%config(noreplace) %{_sysconfdir}/gimp/%{lib_api_version}/templaterc +%config(noreplace) %{_sysconfdir}/gimp/%{lib_api_version}/menurc %{_bindir}/gimp-%{binver} -%{_bindir}/gimp-remote-%{binver} %{_bindir}/gimp-console-%{binver} %if %{with convenience} %{_bindir}/gimp -%{_bindir}/gimp-remote %{_bindir}/gimp-console %endif %{_mandir}/man1/gimp-%{binver}.1* -%{_mandir}/man1/gimp-remote-%{binver}.1* %{_mandir}/man1/gimp-console-%{binver}.1* %{_mandir}/man5/gimprc-%{binver}.5* %if %{with convenience} %{_mandir}/man1/gimp.1* -%{_mandir}/man1/gimp-remote.1* %{_mandir}/man1/gimp-console.1* %{_mandir}/man5/gimprc.5* %endif %{_datadir}/icons/hicolor/*/apps/gimp.png -%{_datadir}/icons/hicolor/scalable/apps/gimp.svg + +%if %unstable +%dir %{_sysconfdir}/libreport +%dir %{_sysconfdir}/libreport/events.d +%dir %{_sysconfdir}/libreport/events.d/gimp-unstable.conf +%endif %files libs %defattr(-, root, root, 0755) %doc AUTHORS COPYING ChangeLog NEWS README -%{_libdir}/libgimp-%{interfacever}.so.%{age}.%{minorver}.%{microver} -%{_libdir}/libgimp-%{interfacever}.so.%{age} -%{_libdir}/libgimpbase-%{interfacever}.so.%{age}.%{minorver}.%{microver} -%{_libdir}/libgimpbase-%{interfacever}.so.%{age} -%{_libdir}/libgimpcolor-%{interfacever}.so.%{age}.%{minorver}.%{microver} -%{_libdir}/libgimpcolor-%{interfacever}.so.%{age} -%{_libdir}/libgimpconfig-%{interfacever}.so.%{age}.%{minorver}.%{microver} -%{_libdir}/libgimpconfig-%{interfacever}.so.%{age} -%{_libdir}/libgimpmath-%{interfacever}.so.%{age}.%{minorver}.%{microver} -%{_libdir}/libgimpmath-%{interfacever}.so.%{age} -%{_libdir}/libgimpmodule-%{interfacever}.so.%{age}.%{minorver}.%{microver} -%{_libdir}/libgimpmodule-%{interfacever}.so.%{age} -%{_libdir}/libgimpthumb-%{interfacever}.so.%{age}.%{minorver}.%{microver} -%{_libdir}/libgimpthumb-%{interfacever}.so.%{age} -%{_libdir}/libgimpui-%{interfacever}.so.%{age}.%{minorver}.%{microver} -%{_libdir}/libgimpui-%{interfacever}.so.%{age} -%{_libdir}/libgimpwidgets-%{interfacever}.so.%{age}.%{minorver}.%{microver} -%{_libdir}/libgimpwidgets-%{interfacever}.so.%{age} +%{_libdir}/libgimp-%{lib_api_version}.so.%{interface_age}.%{lib_minor}.%{lib_micro} +%{_libdir}/libgimp-%{lib_api_version}.so.%{interface_age} +%{_libdir}/libgimpbase-%{lib_api_version}.so.%{interface_age}.%{lib_minor}.%{lib_micro} +%{_libdir}/libgimpbase-%{lib_api_version}.so.%{interface_age} +%{_libdir}/libgimpcolor-%{lib_api_version}.so.%{interface_age}.%{lib_minor}.%{lib_micro} +%{_libdir}/libgimpcolor-%{lib_api_version}.so.%{interface_age} +%{_libdir}/libgimpconfig-%{lib_api_version}.so.%{interface_age}.%{lib_minor}.%{lib_micro} +%{_libdir}/libgimpconfig-%{lib_api_version}.so.%{interface_age} +%{_libdir}/libgimpmath-%{lib_api_version}.so.%{interface_age}.%{lib_minor}.%{lib_micro} +%{_libdir}/libgimpmath-%{lib_api_version}.so.%{interface_age} +%{_libdir}/libgimpmodule-%{lib_api_version}.so.%{interface_age}.%{lib_minor}.%{lib_micro} +%{_libdir}/libgimpmodule-%{lib_api_version}.so.%{interface_age} +%{_libdir}/libgimpthumb-%{lib_api_version}.so.%{interface_age}.%{lib_minor}.%{lib_micro} +%{_libdir}/libgimpthumb-%{lib_api_version}.so.%{interface_age} +%{_libdir}/libgimpui-%{lib_api_version}.so.%{interface_age}.%{lib_minor}.%{lib_micro} +%{_libdir}/libgimpui-%{lib_api_version}.so.%{interface_age} +%{_libdir}/libgimpwidgets-%{lib_api_version}.so.%{interface_age}.%{lib_minor}.%{lib_micro} +%{_libdir}/libgimpwidgets-%{lib_api_version}.so.%{interface_age} %if %{with static} %files devel -f gimp-static-files @@ -490,20 +515,20 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %{_libdir}/*.so %dir %{_libdir}/gimp -%dir %{_libdir}/gimp/%{interfacever} -%dir %{_libdir}/gimp/%{interfacever}/modules +%dir %{_libdir}/gimp/%{lib_api_version} +%dir %{_libdir}/gimp/%{lib_api_version}/modules %ifnos linux %{_libdir}/*.la -%{_libdir}/gimp/%{interfacever}/modules/*.la +%{_libdir}/gimp/%{lib_api_version}/modules/*.la %endif %{_datadir}/aclocal/*.m4 -%{_includedir}/gimp-%{interfacever} +%{_includedir}/gimp-%{lib_api_version} %{_libdir}/pkgconfig/* %files devel-tools %defattr (-, root, root, 0755) -%{_bindir}/gimptool-%{interfacever} -%{_mandir}/man1/gimptool-%{interfacever}.1* +%{_bindir}/gimptool-%{lib_api_version} +%{_mandir}/man1/gimptool-%{lib_api_version}.1* %if %{with convenience} %{_bindir}/gimptool @@ -512,9 +537,29 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %files help-browser %defattr (-, root, root, 0755) -%{_libdir}/gimp/%{interfacever}/plug-ins/help-browser +%{_libdir}/gimp/%{lib_api_version}/plug-ins/help-browser %changelog +* Tue Aug 30 2011 Nils Philippsen - 2:2.7.3-1 +- version 2.7.3 (unstable, see http://developer.gimp.org/NEWS for details) + - change license to GPLv3+/LGPLv3+ + - update required versions of dependencies + - build with cairo-pdf, jasper, require jasper-devel for building + - build without poppler as that currently is GPLv2 only, thus incompatible + with LGPLv3 gimp libraries (use postscript plugin for PDF import + meanwhile), future poppler versions will be "GPLv2 or GPLv3", i.e. + compatible again + - clean up configure options, compiler/linker flags + - suppress abrt bug reporting for unstable releases + - remove all patches (obsolete, woo!) + - add new files, remove files that are not installed any longer +- use %%global instead of %%define +- replace hal, minorver, microver, interfacever, gimp_lang_ver macros with + gudev, lib_minor, lib_micro, lib_api_version, gettext_version macros +- compute more version macros (ugly, but convenient) +- use gudev from Fedora 15 on +- use convenience macro for hardening binaries from F-16 on + * Fri Aug 12 2011 Nils Philippsen - 2:2.6.11-21 - actually apply startup-warning patch - fix heap corruption and buffer overflow in file-gif-load plugin diff --git a/sources b/sources index 0fc8b66..56a552a 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ -bb2939fe13e54fc7255cef5d097bb5dd gimp-2.6.11.tar.bz2 -6693f03eddebb898720dccd758fbf30c gimp-2.6.11-11-autoreconf.patch.bz2 +851b55dc4af966e62ef5c8b679bcc623 gimp-2.7.3.tar.bz2