version 2.7.3

- 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
This commit is contained in:
Nils Philippsen 2011-08-30 16:58:54 +02:00
parent 27bebf13f8
commit 120b9263d8
16 changed files with 235 additions and 2488 deletions

1
.gitignore vendored
View File

@ -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

View File

@ -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)
{

View File

@ -1,143 +0,0 @@
From 66ceac29afde903c013ec6ade2b12f2b5b6e4050 Mon Sep 17 00:00:00 2001
From: Nils Philippsen <nils@redhat.com>
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 <simon@budig.de>
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

View File

@ -1,43 +0,0 @@
From 16bfd230e569709724166670987475756a6d3261 Mon Sep 17 00:00:00 2001
From: Nils Philippsen <nils@redhat.com>
Date: Tue, 9 Nov 2010 17:45:37 +0100
Subject: [PATCH] patch: colorxhtml
Squashed commit of the following:
commit f77a97fa0a7178394b81082749d6719849aa1508
Author: Nils Philippsen <nils@redhat.com>
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 = {
'&': '&amp;',
@@ -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

View File

@ -1,108 +0,0 @@
From 631856a2021d60d29e96d07872c06246eff25a96 Mon Sep 17 00:00:00 2001
From: Nils Philippsen <nils@redhat.com>
Date: Fri, 12 Aug 2011 14:44:52 +0200
Subject: [PATCH] patch: gif-load
Squashed commit of the following:
commit 366d6b546e8fb91909550a61abeafc11672667c4
Author: Nils Philippsen <nils@redhat.com>
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 <nils@redhat.com>
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

View File

@ -1,477 +0,0 @@
From 69f69eed816b89be9a01a48a1f0643d1fd496118 Mon Sep 17 00:00:00 2001
From: Nils Philippsen <nils@redhat.com>
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 <nils@redhat.com>
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 <muks@banu.com>
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 <nils@redhat.com>
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 <nils@redhat.com>
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

View File

@ -1,45 +0,0 @@
From 282feeae8df77bae287284f74e9f9c54d21e6d8d Mon Sep 17 00:00:00 2001
From: Nils Philippsen <nils@redhat.com>
Date: Mon, 23 May 2011 15:52:48 +0200
Subject: [PATCH] patch: psp-overflow
Squashed commit of the following:
commit c5b7e71d89c60a329d4db05f8ddb4610eab013d6
Author: Nils Philippsen <nils@redhat.com>
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 <simon@budig.de>
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

View File

@ -1,36 +0,0 @@
From 0b46212d99191b65a1dd2f723c9cf0250e69a448 Mon Sep 17 00:00:00 2001
From: Nils Philippsen <nils@redhat.com>
Date: Wed, 2 Feb 2011 18:19:35 +0100
Subject: [PATCH] patch: pyslice
Squashed commit of the following:
commit 0b91c365bc1d43a888ed9b78439930c1235b609c
Author: Nils Philippsen <nils@redhat.com>
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

View File

@ -1,83 +0,0 @@
From dcb8cc2ce47a59d6e8c2272755f0b8c00e391fe0 Mon Sep 17 00:00:00 2001
From: Nils Philippsen <nils@redhat.com>
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 <nils@redhat.com>
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

View File

@ -1,38 +0,0 @@
From 7c21fa97815ac19c77a01db82c2e30834155c1b6 Mon Sep 17 00:00:00 2001
From: Nils Philippsen <nils@redhat.com>
Date: Thu, 4 Aug 2011 12:10:04 +0200
Subject: [PATCH] patch: startup-warning
Squashed commit of the following:
commit 083d5fc4211421f900a2ee3ba9967be4ef9bb5eb
Author: Mikael Magnusson <mikachu@src.gnome.org>
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)"), "<mode>"
},
{
- "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

View File

@ -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

View File

@ -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,

View File

@ -1,45 +0,0 @@
commit f6f34fd0cd6d523cc472351bcdc9b9ae180aac41
Author: Sven Neumann <sven@gimp.org>
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 <sven@gimp.org>
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 <nils@redhat.com>
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);

View File

@ -1,616 +0,0 @@
From 4dcab3c2904353c0a175765657316bbfc78af0d2 Mon Sep 17 00:00:00 2001
From: Nils Philippsen <nils@redhat.com>
Date: Thu, 25 Feb 2010 18:04:18 +0100
Subject: [PATCH] patch: gold
Squashed commit of the following:
commit afd331aca4c7cb4a0b53c7b0276253aab82424ae
Author: Nils Philippsen <nils@redhat.com>
Date: Thu Feb 25 15:11:04 2010 +0100
selection-to-path: explicitly specify library dependencies
commit db8abcd13a4d553d1f3e50e6fb0cc19a7c9f6ae5
Author: Nils Philippsen <nils@redhat.com>
Date: Thu Feb 25 15:11:04 2010 +0100
pagecurl: explicitly specify library dependencies
commit 9d4e2aad81e339ae3e2971b7c12d3ae12bd60220
Author: Nils Philippsen <nils@redhat.com>
Date: Thu Feb 25 15:11:04 2010 +0100
map-object: explicitly specify library dependencies
commit 257047325c0fb9297d764f34a6d4742fcfb837b7
Author: Nils Philippsen <nils@redhat.com>
Date: Thu Feb 25 15:11:04 2010 +0100
lighting: explicitly specify library dependencies
commit 709c245217a301652c1e5a3a288f5ae7c101aa33
Author: Nils Philippsen <nils@redhat.com>
Date: Thu Feb 25 15:11:04 2010 +0100
imagemap: explicitly specify library dependencies
commit a40311f72b994c5ffb37a206e7d40ffc099c8205
Author: Nils Philippsen <nils@redhat.com>
Date: Thu Feb 25 15:11:04 2010 +0100
ifs-compose: explicitly specify library dependencies
commit aebab1503e2065fe7665abd5818def52603e2eec
Author: Nils Philippsen <nils@redhat.com>
Date: Thu Feb 25 15:11:04 2010 +0100
gradient-flare: explicitly specify library dependencies
commit 0c7c425d1acdfecf64b453681df25cb08e344338
Author: Nils Philippsen <nils@redhat.com>
Date: Thu Feb 25 15:11:04 2010 +0100
gimpressionist: explicitly specify library dependencies
commit 2822fbfd9c0c1c099047d99d41ae9de8c8d52dc3
Author: Nils Philippsen <nils@redhat.com>
Date: Thu Feb 25 15:11:04 2010 +0100
gfig: explicitly specify library dependencies
commit 4c0fd7d3f63f25a112271422cecef1b8958a94f9
Author: Nils Philippsen <nils@redhat.com>
Date: Thu Feb 25 15:11:04 2010 +0100
fractal-explorer: explicitly specify library dependencies
commit 17e154a2856d0e97ebd76c706b6238fb3b40e74e
Author: Nils Philippsen <nils@redhat.com>
Date: Thu Feb 25 15:36:20 2010 +0100
flame: explicitly specify library dependencies
commit f7fadce58851854abb1ed54ce0141c8dc0434c12
Author: Nils Philippsen <nils@redhat.com>
Date: Thu Feb 25 15:11:04 2010 +0100
color-rotate: explicitly specify library dependencies
commit abbb6a2472e7e31e3aaa30c772f8f5dbaaf476c5
Author: Nils Philippsen <nils@redhat.com>
Date: Wed Feb 24 15:40:50 2010 +0100
script-fu: explicitly specify library dependencies
commit da5ee1fe718d9bbbda6c786ebf0f4ded43a7a246
Author: Manish Singh <yosh@gimp.org>
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 <nils@redhat.com>
commit 7cae0f249a5d2110a596f3fb22cdd33b07b05f1c
Author: Manish Singh <yosh@gimp.org>
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 <nils@redhat.com>
---
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 <<EOT;
## 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/flame/Makefile.am b/plug-ins/flame/Makefile.am
index 262a9aa..417ea31 100644
--- a/plug-ins/flame/Makefile.am
+++ b/plug-ins/flame/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/fractal-explorer/Makefile.am b/plug-ins/fractal-explorer/Makefile.am
index 16ae83a..b7b09af 100644
--- a/plug-ins/fractal-explorer/Makefile.am
+++ b/plug-ins/fractal-explorer/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/gfig/Makefile.am b/plug-ins/gfig/Makefile.am
index b0a3ae7..8c25d59 100644
--- a/plug-ins/gfig/Makefile.am
+++ b/plug-ins/gfig/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/gimpressionist/Makefile.am b/plug-ins/gimpressionist/Makefile.am
index bdca573..69ef428 100644
--- a/plug-ins/gimpressionist/Makefile.am
+++ b/plug-ins/gimpressionist/Makefile.am
@@ -1,19 +1,21 @@
## 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
+libgimpmath = $(top_builddir)/libgimpmath/libgimpmath-$(GIMP_API_VERSION).la $(libm)
SUBDIRS = Brushes Paper Presets
-if OS_WIN32
-mwindows = -mwindows
-endif
-
AM_CPPFLAGS = \
-DDEFAULTPATH=\""~/$(gimpdir)/gimpressionist:$(gimpdatadir)/gimpressionist"\"
diff --git a/plug-ins/gradient-flare/Makefile.am b/plug-ins/gradient-flare/Makefile.am
index 8597665..ecb8d75 100644
--- a/plug-ins/gradient-flare/Makefile.am
+++ b/plug-ins/gradient-flare/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/help-browser/Makefile.am b/plug-ins/help-browser/Makefile.am
index 14fbe02..7360433 100644
--- a/plug-ins/help-browser/Makefile.am
+++ b/plug-ins/help-browser/Makefile.am
@@ -36,6 +36,7 @@ LDADD = \
$(libgimpbase) \
$(WEBKIT_LIBS) \
$(GIO_LIBS) \
+ $(GLIB_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
diff --git a/plug-ins/ifs-compose/Makefile.am b/plug-ins/ifs-compose/Makefile.am
index 6e2de02..c758863 100644
--- a/plug-ins/ifs-compose/Makefile.am
+++ b/plug-ins/ifs-compose/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/imagemap/Makefile.am b/plug-ins/imagemap/Makefile.am
index 1c06f94..0324900 100644
--- a/plug-ins/imagemap/Makefile.am
+++ b/plug-ins/imagemap/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/lighting/Makefile.am b/plug-ins/lighting/Makefile.am
index 1bf79fc..0a7b463 100644
--- a/plug-ins/lighting/Makefile.am
+++ b/plug-ins/lighting/Makefile.am
@@ -1,17 +1,19 @@
## 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
-libgimpmath = $(top_builddir)/libgimpmath/libgimpmath-$(GIMP_API_VERSION).la
+libgimpmath = $(top_builddir)/libgimpmath/libgimpmath-$(GIMP_API_VERSION).la $(libm)
libgimpbase = $(top_builddir)/libgimpbase/libgimpbase-$(GIMP_API_VERSION).la
-if OS_WIN32
-mwindows = -mwindows
-endif
-
AM_LDFLAGS = $(mwindows)
SUBDIRS = images
diff --git a/plug-ins/map-object/Makefile.am b/plug-ins/map-object/Makefile.am
index 2f7b7bc..62be8e8 100644
--- a/plug-ins/map-object/Makefile.am
+++ b/plug-ins/map-object/Makefile.am
@@ -1,17 +1,19 @@
## 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
-libgimpmath = $(top_builddir)/libgimpmath/libgimpmath-$(GIMP_API_VERSION).la
+libgimpmath = $(top_builddir)/libgimpmath/libgimpmath-$(GIMP_API_VERSION).la $(libm)
libgimpbase = $(top_builddir)/libgimpbase/libgimpbase-$(GIMP_API_VERSION).la
-if OS_WIN32
-mwindows = -mwindows
-endif
-
AM_LDFLAGS = $(mwindows)
libexecdir = $(gimpplugindir)/plug-ins
diff --git a/plug-ins/metadata/Makefile.am b/plug-ins/metadata/Makefile.am
index dd9bb3d..935b069 100644
--- a/plug-ins/metadata/Makefile.am
+++ b/plug-ins/metadata/Makefile.am
@@ -55,11 +55,14 @@ INCLUDES = \
-I$(includedir)
LDADD = \
+ $(libgimpui) \
+ $(libgimpwidgets) \
$(libgimp) \
+ $(libgimpmath) \
$(libgimpconfig) \
$(libgimpcolor) \
$(libgimpbase) \
- $(libgimpmath) \
+ $(EXIF_LIBS) \
$(GTK_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
diff --git a/plug-ins/pagecurl/Makefile.am b/plug-ins/pagecurl/Makefile.am
index 2a6eafb..2eeb422 100644
--- a/plug-ins/pagecurl/Makefile.am
+++ b/plug-ins/pagecurl/Makefile.am
@@ -1,17 +1,19 @@
## 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
-libgimpmath = $(top_builddir)/libgimpmath/libgimpmath-$(GIMP_API_VERSION).la
+libgimpmath = $(top_builddir)/libgimpmath/libgimpmath-$(GIMP_API_VERSION).la $(libm)
libgimpbase = $(top_builddir)/libgimpbase/libgimpbase-$(GIMP_API_VERSION).la
-if OS_WIN32
-mwindows = -mwindows
-endif
-
AM_LDFLAGS = $(mwindows)
libexecdir = $(gimpplugindir)/plug-ins
diff --git a/plug-ins/script-fu/Makefile.am b/plug-ins/script-fu/Makefile.am
index 3075b83..824d62d 100644
--- a/plug-ins/script-fu/Makefile.am
+++ b/plug-ins/script-fu/Makefile.am
@@ -1,21 +1,23 @@
## Process this file with automake to produce Makefile.in
+if OS_WIN32
+mwindows = -mwindows
+WINSOCK_LIBS = -lws2_32
+else
+libm = -lm
+endif
+
libgimpui = $(top_builddir)/libgimp/libgimpui-$(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
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)
libtinyscheme=tinyscheme/libtinyscheme.a
libftx=ftx/libftx.a
-if OS_WIN32
-mwindows = -mwindows
-WINSOCK_LIBS = -lws2_32
-endif
-
AM_CFLAGS = \
-DSTANDALONE=0 \
-DUSE_INTERFACE=1 \
diff --git a/plug-ins/selection-to-path/Makefile.am b/plug-ins/selection-to-path/Makefile.am
index 7e3ac65..194b5dc 100644
--- a/plug-ins/selection-to-path/Makefile.am
+++ b/plug-ins/selection-to-path/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)
--
1.6.6.1

421
gimp.spec
View File

@ -17,33 +17,54 @@
%bcond_without gutenprint
# convenience: install convenience symlinks
%bcond_without convenience
# hal: use HAL to discover special input devices
%if 0%{?fedora} >= 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 <nils@redhat.com> - 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 <nils@redhat.com> - 2:2.6.11-21
- actually apply startup-warning patch
- fix heap corruption and buffer overflow in file-gif-load plugin

View File

@ -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