summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--extra/inkscape/.md5sum2
-rw-r--r--extra/inkscape/50-poppler-API.dpatch97
-rw-r--r--extra/inkscape/Pkgfile11
-rw-r--r--extra/inkscape/inkscape-0.47-gcc45.patch83
4 files changed, 190 insertions, 3 deletions
diff --git a/extra/inkscape/.md5sum b/extra/inkscape/.md5sum
index 4a1daf080..b1e668570 100644
--- a/extra/inkscape/.md5sum
+++ b/extra/inkscape/.md5sum
@@ -1,2 +1,4 @@
+b447272c9b282b49e86dca24c2581065 50-poppler-API.dpatch
+a63bb0a325e3c40d86420183e003350d inkscape-0.47-gcc45.patch
7b497c8f673e40b05295a29f6e2111f4 inkscape-0.47.tar.bz2
4b4867ad0aac2f9683e4dd7c9fd9a0e9 inkscape-poppler-0.12.2.patch
diff --git a/extra/inkscape/50-poppler-API.dpatch b/extra/inkscape/50-poppler-API.dpatch
new file mode 100644
index 000000000..b97969de1
--- /dev/null
+++ b/extra/inkscape/50-poppler-API.dpatch
@@ -0,0 +1,97 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 50-poppler-API.patch.dpatch by Kees Cook <kees@ubuntu.com>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: https://bugs.launchpad.net/inkscape/+bug/487038
+
+@DPATCH@
+diff -urNad inkscape~/src/extension/internal/pdfinput/pdf-parser.cpp inkscape/src/extension/internal/pdfinput/pdf-parser.cpp
+--- inkscape~/src/extension/internal/pdfinput/pdf-parser.cpp 2009-10-10 12:17:47.000000000 -0700
++++ inkscape/src/extension/internal/pdfinput/pdf-parser.cpp 2009-12-23 22:34:13.000000000 -0800
+@@ -809,7 +809,7 @@
+ blendingColorSpace = NULL;
+ isolated = knockout = gFalse;
+ if (!obj4.dictLookup(const_cast<char*>("CS"), &obj5)->isNull()) {
+- blendingColorSpace = GfxColorSpace::parse(&obj5);
++ blendingColorSpace = GfxColorSpace::parse(&obj5, NULL);
+ }
+ obj5.free();
+ if (obj4.dictLookup(const_cast<char*>("I"), &obj5)->isBool()) {
+@@ -1009,9 +1009,9 @@
+ state->setFillPattern(NULL);
+ res->lookupColorSpace(args[0].getName(), &obj);
+ if (obj.isNull()) {
+- colorSpace = GfxColorSpace::parse(&args[0]);
++ colorSpace = GfxColorSpace::parse(&args[0], NULL);
+ } else {
+- colorSpace = GfxColorSpace::parse(&obj);
++ colorSpace = GfxColorSpace::parse(&obj, NULL);
+ }
+ obj.free();
+ if (colorSpace) {
+@@ -1032,9 +1032,9 @@
+ state->setStrokePattern(NULL);
+ res->lookupColorSpace(args[0].getName(), &obj);
+ if (obj.isNull()) {
+- colorSpace = GfxColorSpace::parse(&args[0]);
++ colorSpace = GfxColorSpace::parse(&args[0], NULL);
+ } else {
+- colorSpace = GfxColorSpace::parse(&obj);
++ colorSpace = GfxColorSpace::parse(&obj, NULL);
+ }
+ obj.free();
+ if (colorSpace) {
+@@ -1101,7 +1101,7 @@
+ builder->updateStyle(state);
+ }
+ if (args[numArgs-1].isName() &&
+- (pattern = res->lookupPattern(args[numArgs-1].getName()))) {
++ (pattern = res->lookupPattern(args[numArgs-1].getName(), NULL))) {
+ state->setFillPattern(pattern);
+ builder->updateStyle(state);
+ }
+@@ -1145,7 +1145,7 @@
+ builder->updateStyle(state);
+ }
+ if (args[numArgs-1].isName() &&
+- (pattern = res->lookupPattern(args[numArgs-1].getName()))) {
++ (pattern = res->lookupPattern(args[numArgs-1].getName(), NULL))) {
+ state->setStrokePattern(pattern);
+ builder->updateStyle(state);
+ }
+@@ -1543,7 +1543,7 @@
+ double *matrix = NULL;
+ GBool savedState = gFalse;
+
+- if (!(shading = res->lookupShading(args[0].getName()))) {
++ if (!(shading = res->lookupShading(args[0].getName(), NULL))) {
+ return;
+ }
+
+@@ -2507,7 +2507,7 @@
+ }
+ }
+ if (!obj1.isNull()) {
+- colorSpace = GfxColorSpace::parse(&obj1);
++ colorSpace = GfxColorSpace::parse(&obj1, NULL);
+ } else if (csMode == streamCSDeviceGray) {
+ colorSpace = new GfxDeviceGrayColorSpace();
+ } else if (csMode == streamCSDeviceRGB) {
+@@ -2592,7 +2592,7 @@
+ obj2.free();
+ }
+ }
+- maskColorSpace = GfxColorSpace::parse(&obj1);
++ maskColorSpace = GfxColorSpace::parse(&obj1, NULL);
+ obj1.free();
+ if (!maskColorSpace || maskColorSpace->getMode() != csDeviceGray) {
+ goto err1;
+@@ -2767,7 +2767,7 @@
+ if (obj1.dictLookup(const_cast<char*>("S"), &obj2)->isName(const_cast<char*>("Transparency"))) {
+ transpGroup = gTrue;
+ if (!obj1.dictLookup(const_cast<char*>("CS"), &obj3)->isNull()) {
+- blendingColorSpace = GfxColorSpace::parse(&obj3);
++ blendingColorSpace = GfxColorSpace::parse(&obj3, NULL);
+ }
+ obj3.free();
+ if (obj1.dictLookup(const_cast<char*>("I"), &obj3)->isBool()) {
diff --git a/extra/inkscape/Pkgfile b/extra/inkscape/Pkgfile
index 2d469834d..9bf3f9a6e 100644
--- a/extra/inkscape/Pkgfile
+++ b/extra/inkscape/Pkgfile
@@ -2,19 +2,24 @@
# URL: http://inkscape.org
# Maintainer: NuTyX core team
# Packager: skingrapher at legtux dot org
-# Depends on: pangomm, cairomm, gtkmm, boost, boehm-gc, imagemagick, gsl, gnome-vfs, libwpg, poppler-glib, librsvg
+# Depends on: pangomm, cairomm, gtkmm, boost, boehm-gc, imagemagick, gsl, gnome-vfs, libwpg, poppler-glib, librsvg, gtkspell, desktop-file-utils, popt, pyxml, libxslt
+
name=inkscape
version=0.47
release=2
-source=(http://downloads.sourceforge.net/$name/files/$name-$version.tar.bz2\
- http://launchpadlibrarian.net/36057611/inkscape-poppler-0.12.2.patch)
+source=(http://downloads.sourceforge.net/$name/files/$name-$version.tar.bz2
+ inkscape-0.47-gcc45.patch
+ http://launchpadlibrarian.net/36057611/inkscape-poppler-0.12.2.patch )
build() {
sed -i "s|(Gf\x\*)this| NULL|g" inkscape-poppler-0.12.2.patch
cd $name-*
CFLAGS="${CFLAGS} -I/usr/include/ImageMagick" \
CXXFLAGS="${CXXFLAGS} -I/usr/include/ImageMagick" \
+
patch -Np1 -i ../inkscape-poppler-0.12.2.patch
+ patch -Np1 -i ../inkscape-0.47-gcc45.patch
+
./configure --prefix=/usr \
--enable-lcms \
--with-xft \
diff --git a/extra/inkscape/inkscape-0.47-gcc45.patch b/extra/inkscape/inkscape-0.47-gcc45.patch
new file mode 100644
index 000000000..643b7ff1d
--- /dev/null
+++ b/extra/inkscape/inkscape-0.47-gcc45.patch
@@ -0,0 +1,83 @@
+http://bugs.gentoo.org/show_bug.cgi?id=305749
+
+diff -Naur inkscape-0.47-orig/src/eraser-context.cpp inkscape-0.47/src/eraser-context.cpp
+--- inkscape-0.47-orig/src/eraser-context.cpp 2010-02-18 08:45:58.000000000 -0500
++++ inkscape-0.47/src/eraser-context.cpp 2010-02-18 08:46:26.000000000 -0500
+@@ -749,7 +749,7 @@
+ if ( eraserMode ) {
+ toWorkOn = sp_document_partial_items_in_box(sp_desktop_document(desktop), desktop->dkey, bounds);
+ } else {
+- Inkscape::Rubberband::Rubberband *r = Inkscape::Rubberband::get(desktop);
++ Inkscape::Rubberband *r = Inkscape::Rubberband::get(desktop);
+ toWorkOn = sp_document_items_at_points(sp_desktop_document(desktop), desktop->dkey, r->getPoints());
+ }
+ toWorkOn = g_slist_remove( toWorkOn, acid );
+diff -Naur inkscape-0.47-orig/src/extension/internal/filter/filter-file.cpp inkscape-0.47/src/extension/internal/filter/filter-file.cpp
+--- inkscape-0.47-orig/src/extension/internal/filter/filter-file.cpp 2010-02-18 08:45:58.000000000 -0500
++++ inkscape-0.47/src/extension/internal/filter/filter-file.cpp 2010-02-18 09:07:54.000000000 -0500
+@@ -161,7 +161,7 @@
+ mywriter writer;
+ sp_repr_write_stream(node, writer, 0, FALSE, g_quark_from_static_string("svg"), 0, 0);
+
+- Inkscape::Extension::build_from_mem(xml_str, new Filter::Filter(g_strdup(writer.c_str())));
++ Inkscape::Extension::build_from_mem(xml_str, new Filter(g_strdup(writer.c_str())));
+ g_free(xml_str);
+ return;
+ }
+diff -Naur inkscape-0.47-orig/src/extension/internal/filter/filter.cpp inkscape-0.47/src/extension/internal/filter/filter.cpp
+--- inkscape-0.47-orig/src/extension/internal/filter/filter.cpp 2010-02-18 08:45:58.000000000 -0500
++++ inkscape-0.47/src/extension/internal/filter/filter.cpp 2010-02-18 09:21:06.000000000 -0500
+@@ -217,7 +217,7 @@
+ "<menu-tip>%s</menu-tip>\n"
+ "</effect>\n"
+ "</inkscape-extension>\n", name, id, submenu, tip);
+- Inkscape::Extension::build_from_mem(xml_str, new Filter::Filter(filter));
++ Inkscape::Extension::build_from_mem(xml_str, new Filter(filter));
+ g_free(xml_str);
+ return;
+ }
+diff -Naur inkscape-0.47-orig/src/flood-context.cpp inkscape-0.47/src/flood-context.cpp
+--- inkscape-0.47-orig/src/flood-context.cpp 2010-02-18 08:45:58.000000000 -0500
++++ inkscape-0.47/src/flood-context.cpp 2010-02-18 08:48:16.000000000 -0500
+@@ -900,7 +900,7 @@
+ if (is_point_fill) {
+ fill_points.push_back(Geom::Point(event->button.x, event->button.y));
+ } else {
+- Inkscape::Rubberband::Rubberband *r = Inkscape::Rubberband::get(desktop);
++ Inkscape::Rubberband *r = Inkscape::Rubberband::get(desktop);
+ fill_points = r->getPoints();
+ }
+
+@@ -1206,7 +1206,7 @@
+
+ case GDK_BUTTON_RELEASE:
+ if (event->button.button == 1 && !event_context->space_panning) {
+- Inkscape::Rubberband::Rubberband *r = Inkscape::Rubberband::get(desktop);
++ Inkscape::Rubberband *r = Inkscape::Rubberband::get(desktop);
+ if (r->is_started()) {
+ // set "busy" cursor
+ desktop->setWaitingCursor();
+diff -Naur inkscape-0.47-orig/src/gradient-context.cpp inkscape-0.47/src/gradient-context.cpp
+--- inkscape-0.47-orig/src/gradient-context.cpp 2010-02-18 08:45:58.000000000 -0500
++++ inkscape-0.47/src/gradient-context.cpp 2010-02-18 08:47:33.000000000 -0500
+@@ -641,7 +641,7 @@
+ if (!event_context->within_tolerance) {
+ // we've been dragging, either do nothing (grdrag handles that),
+ // or rubberband-select if we have rubberband
+- Inkscape::Rubberband::Rubberband *r = Inkscape::Rubberband::get(desktop);
++ Inkscape::Rubberband *r = Inkscape::Rubberband::get(desktop);
+ if (r->is_started() && !event_context->within_tolerance) {
+ // this was a rubberband drag
+ if (r->getMode() == RUBBERBAND_MODE_RECT) {
+diff -Naur inkscape-0.47-orig/src/select-context.cpp inkscape-0.47/src/select-context.cpp
+--- inkscape-0.47-orig/src/select-context.cpp 2010-02-18 08:45:58.000000000 -0500
++++ inkscape-0.47/src/select-context.cpp 2010-02-18 08:50:11.000000000 -0500
+@@ -602,7 +602,7 @@
+ }
+ sc->item = NULL;
+ } else {
+- Inkscape::Rubberband::Rubberband *r = Inkscape::Rubberband::get(desktop);
++ Inkscape::Rubberband *r = Inkscape::Rubberband::get(desktop);
+ if (r->is_started() && !within_tolerance) {
+ // this was a rubberband drag
+ GSList *items = NULL;