diff options
author | Michał Górny <mgorny@gentoo.org> | 2017-10-15 12:59:54 +0200 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2017-10-15 13:01:26 +0200 |
commit | 2b54ba0b815698d27e932a12b7f0df0f41e761e3 (patch) | |
tree | 4cd4bd65b1cc100baef4c6b29905b4faf3c83a0c /dev-python/pycairo | |
parent | dev-python/pycairo: Drop old (diff) | |
download | gentoo-2b54ba0b815698d27e932a12b7f0df0f41e761e3.tar.gz gentoo-2b54ba0b815698d27e932a12b7f0df0f41e761e3.tar.bz2 gentoo-2b54ba0b815698d27e932a12b7f0df0f41e761e3.zip |
dev-python/pycairo: Move patches to a dist tarball
Closes: https://bugs.gentoo.org/620566
Diffstat (limited to 'dev-python/pycairo')
13 files changed, 15 insertions, 1401 deletions
diff --git a/dev-python/pycairo/Manifest b/dev-python/pycairo/Manifest index 723b16edc345..5577f0d07b88 100644 --- a/dev-python/pycairo/Manifest +++ b/dev-python/pycairo/Manifest @@ -1,3 +1,4 @@ DIST py2cairo-1.10.0.tar.bz2 402070 SHA256 d30439f06c2ec1a39e27464c6c828b6eface3b22ee17b2de05dc409e429a7431 SHA512 cb3d54de9af4134460ce731da8166a3127a642c8a2e6184109437ddec115cd55b8dd2413a5c81700277bfe2f22fcfe268db4f3ba0f7649751e85bb34295f79fc WHIRLPOOL 60b57d55b27f06acd62714ac6ad7973ab973d42995fb536ae800263a2e8c7451a24ccafd96fe30f5bfa26e1ae218934d4fafaafec3e9666a39b33c78672407e2 +DIST pycairo-1.10.0-gentoo-patchset.tar.bz2 9669 SHA256 31b5aef32b5d2fb3d8e1c6f9629e6d78e6b3928a3a1c7e44af2120f38490d00e SHA512 c367a7d8fa771ac900ca3363cb7dfd50de045cf67c73c6e552d05018c6933b13dd5660b033be59e1acf8af79f16253a8e56aaa3f135a262a8148711ae8b7a587 WHIRLPOOL 65890911ee35568fceaa5146bf5e4718011eb2f606dc6c180e7ce612fe2351488c7ad2ea2322ec1ca55eb0f8b6f4fb3fb759152be525d20f80922d707108bc9e DIST pycairo-1.10.0.tar.bz2 246556 SHA256 9aa4078e7eb5be583aeabbe8d87172797717f95e8c4338f0d4a17b683a7253be SHA512 a03db6f04cea504985f390b0734042390f491f32ae2bee1299dabbafd369fde36bb506ebb941d22bbc11b0d008c4f758baeacf309a7336880529455092db829f WHIRLPOOL e779d56d67ef18bbd052d81acb38d8b610ca4bbf787f4b0e3982633de55ff54d6dfa3e5ce1957321fba09f0ec2d12ce12057335de9d5ff3f84c2bc0530415e76 DIST pycairo-1.15.3.tar.gz 177056 SHA256 8642e36cef66acbfc02760d2b40c716f5f183d073fb063ba28fd29a14044719d SHA512 1fc75d193eacb976f2e5a594aa07409a0f80ccb21921065c1794961143785eed48be1966d2d2d3e2d0428f9b4e956994dd851d21f3c3cb91fbc27b007a901ce8 WHIRLPOOL e9248366c8eb541bc70ad73c9c6eea995a2527d189584a1ec6f6b835fdeae57d1aa63e2deaa9f790042d0670e7d07af8867b111ac107b53befd354c3cfc70ca1 diff --git a/dev-python/pycairo/files/py2cairo-1.10.0-ppc-darwin.patch b/dev-python/pycairo/files/py2cairo-1.10.0-ppc-darwin.patch deleted file mode 100644 index e921ac34acd2..000000000000 --- a/dev-python/pycairo/files/py2cairo-1.10.0-ppc-darwin.patch +++ /dev/null @@ -1,18 +0,0 @@ -inspired by: -http://groups.google.com/group/waf-users/browse_thread/thread/2bd6774056c850bc/ -27bfdcac2fb9ec05?lnk=gst#27bfdcac2fb9ec05 - -we cannot "fix" the buildsystem, since it's bzip2-tarred *sigh* - - ---- waf -+++ waf -@@ -154,6 +154,8 @@ - - wafdir = find_lib() - sys.path.insert(0, wafdir) -+from waflib.Tools.c_config import MACRO_TO_DESTOS -+MACRO_TO_DESTOS['__POWERPC__'] = 'darwin' - - if __name__ == '__main__': - import waflib.extras.compat15 diff --git a/dev-python/pycairo/files/py2cairo-1.10.0-svg_check.patch b/dev-python/pycairo/files/py2cairo-1.10.0-svg_check.patch deleted file mode 100644 index 4cd755c8d574..000000000000 --- a/dev-python/pycairo/files/py2cairo-1.10.0-svg_check.patch +++ /dev/null @@ -1,126 +0,0 @@ ---- src/cairomodule.c -+++ src/cairomodule.c -@@ -127,7 +127,7 @@ - #else - 0, - #endif --#ifdef CAIRO_HAS_SVG_SURFACE -+#ifdef PYCAIRO_ENABLE_SVG - &PycairoSVGSurface_Type, - #else - 0, -@@ -223,7 +223,7 @@ - if (PyType_Ready(&PycairoPSSurface_Type) < 0) - return; - #endif --#ifdef CAIRO_HAS_SVG_SURFACE -+#ifdef PYCAIRO_ENABLE_SVG - if (PyType_Ready(&PycairoSVGSurface_Type) < 0) - return; - #endif -@@ -305,7 +305,7 @@ - PyModule_AddObject(m, "PSSurface", (PyObject *)&PycairoPSSurface_Type); - #endif - --#ifdef CAIRO_HAS_SVG_SURFACE -+#ifdef PYCAIRO_ENABLE_SVG - Py_INCREF(&PycairoSVGSurface_Type); - PyModule_AddObject(m, "SVGSurface", (PyObject *)&PycairoSVGSurface_Type); - #endif -@@ -379,7 +379,7 @@ - #else - PyModule_AddIntConstant(m, "HAS_PS_SURFACE", 0); - #endif --#if CAIRO_HAS_SVG_SURFACE -+#if PYCAIRO_ENABLE_SVG - PyModule_AddIntConstant(m, "HAS_SVG_SURFACE", 1); - #else - PyModule_AddIntConstant(m, "HAS_SVG_SURFACE", 0); ---- src/private.h -+++ src/private.h -@@ -86,7 +86,7 @@ - extern PyTypeObject PycairoPSSurface_Type; - #endif - --#if CAIRO_HAS_SVG_SURFACE -+#if PYCAIRO_ENABLE_SVG - extern PyTypeObject PycairoSVGSurface_Type; - #endif - ---- src/pycairo.h -+++ src/pycairo.h -@@ -182,7 +182,7 @@ - #define PycairoPSSurface_Type *(Pycairo_CAPI->PSSurface_Type) - #endif - --#if CAIRO_HAS_SVG_SURFACE -+#if PYCAIRO_ENABLE_SVG - #define PycairoSVGSurface_Type *(Pycairo_CAPI->SVGSurface_Type) - #endif - ---- src/surface.c -+++ src/surface.c -@@ -83,7 +83,7 @@ - type = &PycairoPSSurface_Type; - break; - #endif --#if CAIRO_HAS_SVG_SURFACE -+#if PYCAIRO_ENABLE_SVG - case CAIRO_SURFACE_TYPE_SVG: - type = &PycairoSVGSurface_Type; - break; -@@ -1015,7 +1015,7 @@ - - - /* Class SVGSurface(Surface) ----------------------------------------------- */ --#ifdef CAIRO_HAS_SVG_SURFACE -+#ifdef PYCAIRO_ENABLE_SVG - #include <cairo-svg.h> - - static PyObject * -@@ -1125,7 +1125,7 @@ - 0, /* tp_is_gc */ - 0, /* tp_bases */ - }; --#endif /* CAIRO_HAS_SVG_SURFACE */ -+#endif /* PYCAIRO_ENABLE_SVG */ - - - #if CAIRO_HAS_WIN32_SURFACE ---- wscript -+++ wscript -@@ -1,6 +1,7 @@ - # -*- python -*- - - import os -+import subprocess - - top = '.' - out = 'build_directory' -@@ -11,6 +12,17 @@ - cairo_version_required = '1.10.0' - - -+def check_svg(): -+ if os.environ.get('PYCAIRO_DISABLE_SVG', None) is None: -+ return_code = subprocess.call(['pkg-config', '--exists', 'cairo-svg']) -+ if return_code == 0: -+ return True -+ else: -+ return False -+ else: -+ return False -+ -+ - def options(ctx): - print(' %s/options()' %d) - ctx.tool_options('gnu_dirs') -@@ -39,6 +51,8 @@ - ctx.define('PYCAIRO_VERSION_MAJOR', version[0]) - ctx.define('PYCAIRO_VERSION_MINOR', version[1]) - ctx.define('PYCAIRO_VERSION_MICRO', version[2]) -+ if check_svg(): -+ ctx.define('PYCAIRO_ENABLE_SVG', 1) - - ctx.write_config_header('src/config.h') - diff --git a/dev-python/pycairo/files/py2cairo-1.10.0-xpyb.patch b/dev-python/pycairo/files/py2cairo-1.10.0-xpyb.patch deleted file mode 100644 index c136cb0c39a1..000000000000 --- a/dev-python/pycairo/files/py2cairo-1.10.0-xpyb.patch +++ /dev/null @@ -1,38 +0,0 @@ ---- py2cairo-1.10.0/wscript -+++ py2cairo-1.10.0/wscript -@@ -10,6 +10,7 @@ - APPNAME='py2cairo' - VERSION='1.10.0' - cairo_version_required = '1.10.0' -+xpyb_version_required = '1.3' - - - def check_svg(): -@@ -23,6 +24,17 @@ - return False - - -+def check_xpyb(): -+ if os.environ.get('PYCAIRO_DISABLE_XPYB', None) is None: -+ return_code = subprocess.call(['pkg-config', '--exists', 'xpyb']) -+ if return_code == 0: -+ return True -+ else: -+ return False -+ else: -+ return False -+ -+ - def options(ctx): - print(' %s/options()' %d) - ctx.tool_options('gnu_dirs') -@@ -41,6 +53,9 @@ - ctx.check_python_headers() - ctx.check_cfg(package='cairo', atleast_version=cairo_version_required, - args='--cflags --libs') -+ if check_xpyb(): -+ ctx.check_cfg(package='xpyb', atleast_version=xpyb_version_required, -+ args='--cflags --libs', mandatory=False) - - # add gcc options - if env['CC_NAME'] == 'gcc': diff --git a/dev-python/pycairo/files/pycairo-1.10.0-101_pycairo-region.patch b/dev-python/pycairo/files/pycairo-1.10.0-101_pycairo-region.patch deleted file mode 100644 index 4143f33cb247..000000000000 --- a/dev-python/pycairo/files/pycairo-1.10.0-101_pycairo-region.patch +++ /dev/null @@ -1,917 +0,0 @@ -Description: Add support for cairo_region_t - This patch fix missing support for cairo_region_t. -Author: Bug Fly -Origin: https://bugs.freedesktop.org/attachment.cgi?id=61553 -Bug-Debian: http://bugs.debian.org/688079 -Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/py3cairo/+bug/1028115 -Last-Update: 2012-08-20 -Applied-Upstream: http://cgit.freedesktop.org/pycairo/commit/?id=75e82a1b3f495a3abbc78e50a5c66356d320fb15 - ---- py3cairo-1.10.0+dfsg.orig/doc/pycairo_c_api.rst -+++ py3cairo-1.10.0+dfsg/doc/pycairo_c_api.rst -@@ -51,6 +51,8 @@ Objects:: - PycairoGradient - PycairoLinearGradient - PycairoRadialGradient -+ PycairoRectangleInt -+ PycairoRegion - PycairoScaledFont - PycairoSurface - PycairoImageSurface -@@ -78,6 +80,8 @@ Types:: - PyTypeObject *Gradient_Type; - PyTypeObject *LinearGradient_Type; - PyTypeObject *RadialGradient_Type; -+ PyTypeObject *RectangleInt_Type; -+ PyTypeObject *Region_Type; - PyTypeObject *ScaledFont_Type; - PyTypeObject *Surface_Type; - PyTypeObject *ImageSurface_Type; -@@ -115,6 +119,12 @@ Functions - .. c:function:: PyObject * PycairoPattern_FromPattern(cairo_pattern_t *pattern, PyObject *base) - - -+.. c:function:: PyObject * PycairoRectangleInt_FromRectangleInt(const cairo_rectangle_int_t *rectangle_int) -+ -+ -+.. c:function:: PyObject * PycairoRegion_FromRegion(const cairo_region_t *region) -+ -+ - .. c:function:: PyObject * PycairoScaledFont_FromScaledFont(cairo_scaled_font_t *scaled_font) - - ---- py3cairo-1.10.0+dfsg.orig/doc/reference/index.rst -+++ py3cairo-1.10.0+dfsg/doc/reference/index.rst -@@ -15,5 +15,6 @@ Reference - matrix - paths - patterns -+ region - surfaces - text ---- /dev/null -+++ py3cairo-1.10.0+dfsg/doc/reference/region.rst -@@ -0,0 +1,52 @@ -+.. _region: -+ -+****** -+Region -+****** -+Region — Representing a pixel-aligned area -+ -+.. currentmodule:: cairo -+ -+ -+class Region() -+============== -+*Region* is a simple graphical data type representing an area of -+integer-aligned rectangles. They are often used on raster surfaces to track -+areas of interest, such as change or clip areas. -+ -+ -+.. class:: Region([rectangle_int|rectangle_ints]) -+ -+ :param rectangle_int: a rectangle or a list of rectangle -+ :type rectangle_int: :class:`RectangleInt` or [:class:`RectangleInt`] -+ -+ Allocates a new empty region object or a region object with the containing -+ rectangle(s). -+ -+ -+ .. method:: copy() -+ -+ :returns: A newly allocated :class:`Region`. -+ :raises: :exc:`NoMemory` if memory cannot be allocated. -+ -+ Allocates a new *Region* object copying the area from original. -+ -+ -+class RectangleInt() -+==================== -+*RectangleInt* is a data structure for holding a rectangle with integer -+coordinates. -+ -+ -+.. class:: RectangleInt(x=0, y=0, width=0, height=0) -+ -+ :param x: X coordinate of the left side of the rectangle -+ :type x: int -+ :param y: Y coordinate of the the top side of the rectangle -+ :type y: int -+ :param width: width of the rectangle -+ :type width: int -+ :param height: height of the rectangle -+ :type height: int -+ -+ Allocates a new *RectangleInt* object. ---- /dev/null -+++ py3cairo-1.10.0+dfsg/src/region.c -@@ -0,0 +1,598 @@ -+/* -*- mode: C; c-basic-offset: 2 -*- -+ * -+ * Copyright © 2005,2010 Steve Chaplin -+ * -+ * This file is part of pycairo. -+ * -+ * Pycairo is free software: you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License version 3 as published -+ * by the Free Software Foundation. -+ * -+ * Pycairo is distributed in the hope that it will be useful, but WITHOUT ANY -+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for -+ * more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public License -+ * along with pycairo. If not, see <http://www.gnu.org/licenses/>. -+ */ -+ -+#define PY_SSIZE_T_CLEAN -+#include <Python.h> -+#include "structmember.h" -+ -+#include "config.h" -+#include "private.h" -+ -+/* PycairoRectangleInt_FromRectangleInt -+ * Create a new PycairoRectangleInt from a cairo_rectangle_int_t -+ * rectangle_int - a cairo_rectangle_int_t to 'wrap' into a Python object. -+ * rectangle_int is unreferenced if the PycairoRectangleInt creation -+ * fails. -+ * Return value: New reference or NULL on failure -+ */ -+PyObject * -+PycairoRectangleInt_FromRectangleInt (cairo_rectangle_int_t *rectangle_int) { -+ PyObject *o; -+ -+ assert (rectangle_int != NULL); -+ -+ o = PycairoRectangleInt_Type.tp_alloc (&PycairoRectangleInt_Type, 0); -+ if (o) -+ ((PycairoRectangleInt *)o)->rectangle_int = *rectangle_int; -+ return o; -+} -+ -+static void -+rectangle_int_dealloc(PycairoRectangleInt *o) { -+#ifdef DEBUG -+ printf("rectangle_int_dealloc start\n"); -+#endif -+ //o->ob_type->tp_free((PyObject *)o); -+ Py_TYPE(o)->tp_free(o); -+#ifdef DEBUG -+ printf("rectangle_int_dealloc end\n"); -+#endif -+} -+ -+static PyObject * -+rectangle_int_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { -+ static char *kwlist[] = { "x", "y", "width", "height", NULL }; -+ int x, y, w, h; -+ x = y = w = h = 0; -+ cairo_rectangle_int_t rect; -+ -+ if (!PyArg_ParseTupleAndKeywords(args, kwds, -+ "|iiii:RectangleInt.__new__", kwlist, -+ &x, &y, &w, &h)) -+ return NULL; -+ -+ rect.x = x; -+ rect.y = y; -+ rect.width = w; -+ rect.height = h; -+ -+ return PycairoRectangleInt_FromRectangleInt(&rect); -+} -+ -+static PyObject * -+rectangle_int_str(PycairoRectangleInt *rect_o) { -+ PyObject *s; -+ cairo_rectangle_int_t *rect = &(rect_o->rectangle_int); -+ char buf[80]; -+ PyOS_snprintf(buf, sizeof(buf), "cairo.RectangleInt(%d, %d, %d, %d)", -+ rect->x, rect->y, rect->width, rect->height); -+ s = PyUnicode_FromString(buf); -+ return s; -+} -+ -+static PyObject * -+rectangle_int_richcompare(PycairoRectangleInt *self, -+ PycairoRectangleInt *other, int op) { -+ int res = 0; -+ PyObject *b; -+ -+ if (op != Py_EQ && op != Py_NE) { -+ PyErr_SetString(PyExc_TypeError, "Only support testing for == or !="); -+ return NULL; -+ } -+ if (!PyObject_IsInstance((PyObject*)other, -+ (PyObject*)&PycairoRectangleInt_Type)) { -+ res = 0; -+ } -+ else if ( -+ self->rectangle_int.x == other->rectangle_int.x && -+ self->rectangle_int.y == other->rectangle_int.y && -+ self->rectangle_int.width == other->rectangle_int.width && -+ self->rectangle_int.height == other->rectangle_int.height -+ ) -+ res = 1; -+ res = op == Py_NE ? !res : res; -+ b = res ? Py_True : Py_False; -+ Py_INCREF(b); -+ -+ return b; -+} -+ -+static PyMemberDef RectangleInt_members[] = { -+ {"x", T_INT, sizeof(PyObject), 0, -+ "X coordinate of the left side of the rectangle"}, -+ {"y", T_INT, sizeof(PyObject)+sizeof(int), 0, -+ "Y coordinate of the the top side of the rectangle"}, -+ {"width", T_INT, sizeof(PyObject)+sizeof(int)*2, 0, -+ "width of the rectangle"}, -+ {"height", T_INT, sizeof(PyObject)+sizeof(int)*3, 0, -+ "height of the rectangle"}, -+ {NULL} -+}; -+ -+PyTypeObject PycairoRectangleInt_Type = { -+ PyVarObject_HEAD_INIT(&PyType_Type, 0) -+ "cairo.RectangleInt", /* tp_name */ -+ sizeof(PycairoRectangleInt), /* tp_basicsize */ -+ 0, /* tp_itemsize */ -+ (destructor)rectangle_int_dealloc, /* tp_dealloc */ -+ 0, /* tp_print */ -+ 0, /* tp_getattr */ -+ 0, /* tp_setattr */ -+ 0, /* tp_compare */ -+ 0, /* tp_repr */ -+ 0, /* tp_as_number */ -+ 0, /* tp_as_sequence */ -+ 0, /* tp_as_mapping */ -+ 0, /* tp_hash */ -+ 0, /* tp_call */ -+ (reprfunc)rectangle_int_str, /* tp_str */ -+ 0, /* tp_getattro */ -+ 0, /* tp_setattro */ -+ 0, /* tp_as_buffer */ -+ Py_TPFLAGS_DEFAULT, /* tp_flags */ -+ 0, /* tp_doc */ -+ 0, /* tp_traverse */ -+ 0, /* tp_clear */ -+ (richcmpfunc)rectangle_int_richcompare, /* tp_richcompare */ -+ 0, /* tp_weaklistoffset */ -+ 0, /* tp_iter */ -+ 0, /* tp_iternext */ -+ 0, /* tp_methods */ -+ RectangleInt_members, /* tp_members */ -+ 0, /* tp_getset */ -+ 0, /* tp_base */ -+ 0, /* tp_dict */ -+ 0, /* tp_descr_get */ -+ 0, /* tp_descr_set */ -+ 0, /* tp_dictoffset */ -+ 0, /* tp_init */ -+ 0, /* tp_alloc */ -+ (newfunc)rectangle_int_new, /* tp_new */ -+}; -+ -+/* PycairoRegion_FromRegion -+ * Create a new PycairoRegion from a cairo_region_t -+ * region - a cairo_region_t to 'wrap' into a Python object. -+ * region is unreferenced if the PycairoRegion creation fails, or if -+ * region is in an error status. -+ * Return value: New reference or NULL on failure -+ */ -+PyObject * -+PycairoRegion_FromRegion (cairo_region_t *region) { -+ PyObject *o; -+ -+ assert (region != NULL); -+ -+ if (Pycairo_Check_Status (cairo_region_status(region))) { -+ cairo_region_destroy (region); -+ return NULL; -+ } -+ -+ o = PycairoRegion_Type.tp_alloc (&PycairoRegion_Type, 0); -+ if (o) -+ ((PycairoRegion *)o)->region = region; -+ else -+ cairo_region_destroy (region); -+ return o; -+} -+ -+static void -+region_dealloc(PycairoRegion *o) { -+#ifdef DEBUG -+ printf("region_dealloc start\n"); -+#endif -+ if (o->region) { -+ cairo_region_destroy(o->region); -+ o->region = NULL; -+ } -+ //o->ob_type->tp_free((PyObject *)o); -+ Py_TYPE(o)->tp_free(o); -+#ifdef DEBUG -+ printf("region_dealloc end\n"); -+#endif -+} -+ -+static PyObject * -+region_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { -+ PyObject *s = NULL; -+ PycairoRectangleInt *rect_obj = NULL; -+ cairo_region_t *region = NULL; -+ cairo_rectangle_int_t *rect = NULL; -+ -+ if (PyArg_ParseTuple(args, "|O!:Region.__new__", -+ &PycairoRectangleInt_Type, &rect_obj)) { -+ if (rect_obj != NULL) { -+ region = cairo_region_create_rectangle(&(rect_obj->rectangle_int)); -+ } -+ } else if (!PyArg_ParseTuple(args, "|O:Region.__new__", &s)) { -+ PyErr_SetString(PyExc_TypeError, -+ "argument must be a RectangleInt or a sequence of RectangleInt."); -+ return NULL; -+ } -+ PyErr_Clear(); /* Clear possible err in the 1st arg parser. */ -+ -+ /* list of rectangle_int or no args */ -+ if (s != NULL) { -+ int i; -+ int rect_size; -+ PyObject *seq = NULL; -+ seq = PySequence_Fast (s, -+ "argument must be a RectangleInt or a sequence of RectangleInt."); -+ if (seq == NULL) { -+ return NULL; -+ } -+ rect_size = PySequence_Fast_GET_SIZE(seq); -+ rect = PyMem_Malloc (rect_size * sizeof(cairo_rectangle_int_t)); -+ if (rect == NULL) { -+ Py_DECREF(seq); -+ return PyErr_NoMemory(); -+ } -+ -+ for(i=0; i<rect_size; i++) { -+ PyObject *obj_tmp = PySequence_Fast_GET_ITEM(seq, i); -+ if (PyObject_IsInstance(obj_tmp, -+ (PyObject*)&PycairoRectangleInt_Type) != 1) { -+ Py_DECREF(seq); -+ PyMem_Free(rect); -+ return NULL; -+ } -+ rect_obj = (PycairoRectangleInt*) obj_tmp; -+ rect[i] = rect_obj->rectangle_int; -+ } -+ -+ region = cairo_region_create_rectangles(rect, rect_size); -+ -+ Py_DECREF(seq); -+ PyMem_Free(rect); -+ } -+ -+ if (region == NULL) { -+ region = cairo_region_create(); -+ } -+ -+ RETURN_NULL_IF_CAIRO_REGION_ERROR(region); -+ return PycairoRegion_FromRegion(region); -+} -+ -+PyObject * -+region_copy (PycairoRegion *o) { -+ cairo_region_t *res; -+ Py_BEGIN_ALLOW_THREADS; -+ res = cairo_region_copy (o->region); -+ Py_END_ALLOW_THREADS; -+ RETURN_NULL_IF_CAIRO_REGION_ERROR(res); -+ return PycairoRegion_FromRegion(res); -+} -+ -+ -+PyObject * -+region_get_extents (PycairoRegion *o) { -+ cairo_rectangle_int_t rect; -+ Py_BEGIN_ALLOW_THREADS; -+ cairo_region_get_extents(o->region, &rect); -+ Py_END_ALLOW_THREADS; -+ -+ return PycairoRectangleInt_FromRectangleInt(&rect); -+} -+ -+ -+PyObject * -+region_num_rectangles (PycairoRegion *o) { -+ int res; -+ Py_BEGIN_ALLOW_THREADS; -+ res = cairo_region_num_rectangles(o->region); -+ Py_END_ALLOW_THREADS; -+ return Py_BuildValue("i", res); -+} -+ -+ -+PyObject * -+region_get_rectangle (PycairoRegion *o, PyObject *args) { -+ cairo_rectangle_int_t rect; -+ int i; -+ int total; -+ if (!PyArg_ParseTuple (args, "i:Region.get_rectangle", &i)) -+ return NULL; -+ total = cairo_region_num_rectangles(o->region); -+ if (i >= total || i < 0) { -+ if ( i < 0) -+ PyErr_SetString(PyExc_ValueError, "index must be a positive number"); -+ else -+ PyErr_SetString(PyExc_ValueError, "index is to big for the region"); -+ return NULL; -+ } -+ Py_BEGIN_ALLOW_THREADS; -+ cairo_region_get_rectangle(o->region, i, &rect); -+ Py_END_ALLOW_THREADS; -+ return PycairoRectangleInt_FromRectangleInt(&rect); -+} -+ -+ -+PyObject * -+region_is_empty (PycairoRegion *o) { -+ cairo_bool_t res; -+ PyObject *b; -+ Py_BEGIN_ALLOW_THREADS; -+ res = cairo_region_is_empty(o->region); -+ Py_END_ALLOW_THREADS; -+ b = res ? Py_True : Py_False; -+ Py_INCREF(b); -+ return b; -+} -+ -+ -+PyObject * -+region_contains_point (PycairoRegion *o, PyObject *args) { -+ int x, y; -+ cairo_bool_t res; -+ PyObject *b; -+ if (!PyArg_ParseTuple (args, "ii:Region.contains_point", &x, &y)) -+ return NULL; -+ Py_BEGIN_ALLOW_THREADS; -+ res = cairo_region_contains_point(o->region, x, y); -+ Py_END_ALLOW_THREADS; -+ b = res ? Py_True : Py_False; -+ Py_INCREF(b); -+ return b; -+} -+ -+ -+PyObject * -+region_contains_rectangle (PycairoRegion *o, PyObject *args) { -+ cairo_region_overlap_t res; -+ PycairoRectangleInt *rect_int; -+ if (!PyArg_ParseTuple (args, "O!:Region.contains_rectangle", -+ &PycairoRectangleInt_Type, &rect_int)) -+ return NULL; -+ Py_BEGIN_ALLOW_THREADS; -+ res = cairo_region_contains_rectangle(o->region, &(rect_int->rectangle_int)); -+ Py_END_ALLOW_THREADS; -+ return Py_BuildValue("i", res); -+} -+ -+ -+PyObject * -+region_equal (PycairoRegion *o, PyObject *args) { -+ cairo_bool_t res; -+ PyObject *b; -+ PycairoRegion *region_obj; -+ if (!PyArg_ParseTuple (args, "O!:Region.equal", -+ &PycairoRegion_Type, ®ion_obj)) -+ return NULL; -+ Py_BEGIN_ALLOW_THREADS; -+ res = cairo_region_equal (o->region, region_obj->region); -+ Py_END_ALLOW_THREADS; -+ b = res ? Py_True : Py_False; -+ Py_INCREF(b); -+ return b; -+} -+ -+static PyObject * -+region_richcompare(PycairoRegion *self, PycairoRegion *other, int op) { -+ int res = 0; -+ PyObject *b; -+ -+ if (op != Py_EQ && op != Py_NE) { -+ PyErr_SetString(PyExc_TypeError, "Only support testing for == or !="); -+ return NULL; -+ } -+ if (!PyObject_IsInstance((PyObject*)other, (PyObject*)&PycairoRegion_Type)) { -+ res = 0; -+ } else { -+ res = cairo_region_equal (self->region, other->region); -+ } -+ -+ res = op == Py_NE ? !res : res; -+ b = res ? Py_True : Py_False; -+ Py_INCREF(b); -+ -+ return b; -+} -+ -+PyObject * -+region_translate (PycairoRegion *o, PyObject *args) { -+ int x, y; -+ if (!PyArg_ParseTuple (args, "ii:Region.translate", &x, &y)) -+ return NULL; -+ Py_BEGIN_ALLOW_THREADS; -+ cairo_region_translate (o->region, x, y); -+ Py_END_ALLOW_THREADS; -+ Py_RETURN_NONE; -+} -+ -+ -+PyObject * -+region_intersect (PycairoRegion *o, PyObject *args) { -+ cairo_status_t res; -+ PyObject *other; -+ if (!PyArg_ParseTuple (args, "O:Region.intersect", &other)) -+ return NULL; -+ -+ if (PyObject_IsInstance(other, (PyObject*)&PycairoRegion_Type) == 1) { -+ Py_BEGIN_ALLOW_THREADS; -+ res = cairo_region_intersect(o->region, -+ ((PycairoRegion *)other)->region); -+ Py_END_ALLOW_THREADS; -+ } else if (PyObject_IsInstance(other, -+ (PyObject*)&PycairoRectangleInt_Type) == 1) { -+ Py_BEGIN_ALLOW_THREADS; -+ res = cairo_region_intersect_rectangle(o->region, -+ &(((PycairoRectangleInt *)other)->rectangle_int)); -+ Py_END_ALLOW_THREADS; -+ } else { -+ PyErr_SetString(PyExc_TypeError, -+ "argument must be a Region or a RectangleInt."); -+ return NULL; -+ } -+ -+ RETURN_NULL_IF_CAIRO_ERROR(res); -+ Py_RETURN_NONE; -+} -+ -+PyObject * -+region_subtract (PycairoRegion *o, PyObject *args) { -+ cairo_status_t res; -+ PyObject *other; -+ if (!PyArg_ParseTuple (args, "O:Region.subtract", &other)) -+ return NULL; -+ -+ if (PyObject_IsInstance(other, (PyObject*)&PycairoRegion_Type) == 1) { -+ Py_BEGIN_ALLOW_THREADS; -+ res = cairo_region_subtract(o->region, -+ ((PycairoRegion *)other)->region); -+ Py_END_ALLOW_THREADS; -+ } else if (PyObject_IsInstance(other, -+ (PyObject*)&PycairoRectangleInt_Type) == 1) { -+ Py_BEGIN_ALLOW_THREADS; -+ res = cairo_region_subtract_rectangle(o->region, -+ &(((PycairoRectangleInt *)other)->rectangle_int)); -+ Py_END_ALLOW_THREADS; -+ } else { -+ PyErr_SetString(PyExc_TypeError, -+ "argument must be a Region or a RectangleInt."); -+ return NULL; -+ } -+ RETURN_NULL_IF_CAIRO_ERROR(res); -+ Py_RETURN_NONE; -+} -+ -+PyObject * -+region_union (PycairoRegion *o, PyObject *args) { -+ cairo_status_t res; -+ PyObject *other; -+ if (!PyArg_ParseTuple (args, "O:Region.union", &other)) -+ return NULL; -+ -+ if (PyObject_IsInstance(other, (PyObject*)&PycairoRegion_Type) == 1) { -+ Py_BEGIN_ALLOW_THREADS; -+ res = cairo_region_union(o->region, -+ ((PycairoRegion *)other)->region); -+ Py_END_ALLOW_THREADS; -+ } else if (PyObject_IsInstance(other, -+ (PyObject*)&PycairoRectangleInt_Type) == 1) { -+ Py_BEGIN_ALLOW_THREADS; -+ res = cairo_region_union_rectangle(o->region, -+ &(((PycairoRectangleInt *)other)->rectangle_int)); -+ Py_END_ALLOW_THREADS; -+ } else { -+ PyErr_SetString(PyExc_TypeError, -+ "argument must be a Region or a RectangleInt."); -+ return NULL; -+ } -+ RETURN_NULL_IF_CAIRO_ERROR(res); -+ Py_RETURN_NONE; -+} -+ -+PyObject * -+region_xor (PycairoRegion *o, PyObject *args) { -+ cairo_status_t res; -+ PyObject *other; -+ if (!PyArg_ParseTuple (args, "O:Region.xorg", &other)) -+ return NULL; -+ -+ if (PyObject_IsInstance(other, (PyObject*)&PycairoRegion_Type) == 1) { -+ Py_BEGIN_ALLOW_THREADS; -+ res = cairo_region_xor(o->region, -+ ((PycairoRegion *)other)->region); -+ Py_END_ALLOW_THREADS; -+ } else if (PyObject_IsInstance(other, -+ (PyObject*)&PycairoRectangleInt_Type) == 1) { -+ Py_BEGIN_ALLOW_THREADS; -+ res = cairo_region_xor_rectangle(o->region, -+ &(((PycairoRectangleInt *)other)->rectangle_int)); -+ Py_END_ALLOW_THREADS; -+ } else { -+ PyErr_SetString(PyExc_TypeError, -+ "argument must be a Region or a RectangleInt."); -+ return NULL; -+ } -+ RETURN_NULL_IF_CAIRO_ERROR(res); -+ Py_RETURN_NONE; -+} -+ -+static PyMethodDef region_methods[] = { -+ /* methods never exposed in a language binding: -+ * cairo_region_destroy() -+ * cairo_region_get_type() -+ * cairo_region_reference() -+ * -+ * cairo_region_status() -+ * - not needed since Pycairo handles status checking -+ * -+ * _(intersect/subtract/union/xor)_rectangle are merged with the region -+ * ones. -+ */ -+ {"copy", (PyCFunction)region_copy, METH_NOARGS }, -+ {"get_extents", (PyCFunction)region_get_extents, METH_NOARGS }, -+ {"num_rectangles", (PyCFunction)region_num_rectangles, METH_NOARGS }, -+ {"get_rectangle", (PyCFunction)region_get_rectangle, METH_VARARGS }, -+ {"is_empty", (PyCFunction)region_is_empty, METH_NOARGS }, -+ {"contains_point", (PyCFunction)region_contains_point, METH_VARARGS }, -+ {"contains_rectangle", (PyCFunction)region_contains_rectangle, -+ METH_VARARGS }, -+ {"equal", (PyCFunction)region_equal, METH_VARARGS }, -+ {"translate", (PyCFunction)region_translate, METH_VARARGS }, -+ {"intersect", (PyCFunction)region_intersect, METH_VARARGS }, -+ {"subtract", (PyCFunction)region_subtract, METH_VARARGS }, -+ {"union", (PyCFunction)region_union, METH_VARARGS }, -+ {"xor", (PyCFunction)region_xor, METH_VARARGS }, -+ {NULL, NULL, 0, NULL}, -+}; -+ -+PyTypeObject PycairoRegion_Type = { -+ PyVarObject_HEAD_INIT(&PyType_Type, 0) -+ "cairo.Region", /* tp_name */ -+ sizeof(PycairoRegion), /* tp_basicsize */ -+ 0, /* tp_itemsize */ -+ (destructor)region_dealloc, /* tp_dealloc */ -+ 0, /* tp_print */ -+ 0, /* tp_getattr */ -+ 0, /* tp_setattr */ -+ 0, /* tp_compare */ -+ 0, /* tp_repr */ -+ 0, /* tp_as_number */ -+ 0, /* tp_as_sequence */ -+ 0, /* tp_as_mapping */ -+ 0, /* tp_hash */ -+ 0, /* tp_call */ -+ 0, /* tp_str */ -+ 0, /* tp_getattro */ -+ 0, /* tp_setattro */ -+ 0, /* tp_as_buffer */ -+ Py_TPFLAGS_DEFAULT, /* tp_flags */ -+ 0, /* tp_doc */ -+ 0, /* tp_traverse */ -+ 0, /* tp_clear */ -+ (richcmpfunc)region_richcompare, /* tp_richcompare */ -+ 0, /* tp_weaklistoffset */ -+ 0, /* tp_iter */ -+ 0, /* tp_iternext */ -+ region_methods, /* tp_methods */ -+ 0, /* tp_members */ -+ 0, /* tp_getset */ -+ 0, /* tp_base */ -+ 0, /* tp_dict */ -+ 0, /* tp_descr_get */ -+ 0, /* tp_descr_set */ -+ 0, /* tp_dictoffset */ -+ 0, /* tp_init */ -+ 0, /* tp_alloc */ -+ (newfunc)region_new, /* tp_new */ -+}; ---- py3cairo-1.10.0+dfsg.orig/src/py3cairo.h -+++ py3cairo-1.10.0+dfsg/src/py3cairo.h -@@ -67,6 +67,16 @@ typedef struct { - - typedef struct { - PyObject_HEAD -+ cairo_rectangle_int_t rectangle_int; -+} PycairoRectangleInt; -+ -+typedef struct { -+ PyObject_HEAD -+ cairo_region_t *region; -+} PycairoRegion; -+ -+typedef struct { -+ PyObject_HEAD - cairo_scaled_font_t *scaled_font; - } PycairoScaledFont; - -@@ -129,6 +139,14 @@ typedef struct { - - /* misc functions */ - int (*Check_Status)(cairo_status_t status); -+ -+ PyTypeObject *RectangleInt_Type; -+ PyObject *(*RectangleInt_FromRectangleInt)( -+ const cairo_rectangle_int_t *rectangle_int); -+ -+ PyTypeObject *Region_Type; -+ PyObject *(*Region_FromRegion)(const cairo_region_t *region); -+ - } Pycairo_CAPI_t; - - -@@ -156,6 +174,13 @@ typedef struct { - #define PycairoRadialGradient_Type *(Pycairo_CAPI->RadialGradient_Type) - #define PycairoPattern_FromPattern (Pycairo_CAPI->Pattern_FromPattern) - -+#define PycairoRectangleInt_Type *(Pycairo_CAPI->RectangleInt_Type) -+#define PycairoRectangleInt_FromRectangleInt \ -+ (Pycairo_CAPI->RectangleInt_FromRectangleInt) -+ -+#define PycairoRegion_Type *(Pycairo_CAPI->Region_Type) -+#define PycairoRegion_FromRegion (Pycairo_CAPI->Region_FromRegion) -+ - #define PycairoScaledFont_Type *(Pycairo_CAPI->ScaledFont_Type) - #define PycairoScaledFont_FromScaledFont \ - (Pycairo_CAPI->ScaledFont_FromScaledFont) ---- py3cairo-1.10.0+dfsg.orig/src/cairomodule.c -+++ py3cairo-1.10.0+dfsg/src/cairomodule.c -@@ -141,6 +141,12 @@ static Pycairo_CAPI_t CAPI = { - PycairoSurface_FromSurface, - - Pycairo_Check_Status, -+ -+ &PycairoRectangleInt_Type, -+ PycairoRectangleInt_FromRectangleInt, -+ -+ &PycairoRegion_Type, -+ PycairoRegion_FromRegion, - }; - - static PyObject * -@@ -230,6 +236,12 @@ PyInit__cairo(void) - if (PyType_Ready(&PycairoRadialGradient_Type) < 0) - return NULL; - -+ if (PyType_Ready(&PycairoRectangleInt_Type) < 0) -+ return NULL; -+ -+ if (PyType_Ready(&PycairoRegion_Type) < 0) -+ return NULL; -+ - if (PyType_Ready(&PycairoScaledFont_Type) < 0) - return NULL; - -@@ -315,6 +327,12 @@ PyInit__cairo(void) - PyModule_AddObject(m, "RadialGradient", - (PyObject *)&PycairoRadialGradient_Type); - -+ Py_INCREF(&PycairoRectangleInt_Type); -+ PyModule_AddObject(m, "RectangleInt", (PyObject *)&PycairoRectangleInt_Type); -+ -+ Py_INCREF(&PycairoRegion_Type); -+ PyModule_AddObject(m, "Region", (PyObject *)&PycairoRegion_Type); -+ - Py_INCREF(&PycairoScaledFont_Type); - PyModule_AddObject(m, "ScaledFont", (PyObject *)&PycairoScaledFont_Type); - -@@ -519,6 +537,10 @@ PyInit__cairo(void) - CONSTANT(PS_LEVEL_3); - #endif - -+ CONSTANT(REGION_OVERLAP_IN); -+ CONSTANT(REGION_OVERLAP_OUT); -+ CONSTANT(REGION_OVERLAP_PART); -+ - CONSTANT(SUBPIXEL_ORDER_DEFAULT); - CONSTANT(SUBPIXEL_ORDER_RGB); - CONSTANT(SUBPIXEL_ORDER_BGR); ---- py3cairo-1.10.0+dfsg.orig/src/wscript -+++ py3cairo-1.10.0+dfsg/src/wscript -@@ -25,6 +25,7 @@ def build(ctx): - 'font.c', - 'path.c', - 'pattern.c', -+ 'region.c', - 'matrix.c', - 'surface.c', - ], ---- py3cairo-1.10.0+dfsg.orig/src/private.h -+++ py3cairo-1.10.0+dfsg/src/private.h -@@ -60,6 +60,13 @@ extern PyTypeObject PycairoLinearGradien - extern PyTypeObject PycairoRadialGradient_Type; - PyObject *PycairoPattern_FromPattern (cairo_pattern_t *pattern, - PyObject *base); -+ -+extern PyTypeObject PycairoRectangleInt_Type; -+PyObject *PycairoRectangleInt_FromRectangleInt ( -+ cairo_rectangle_int_t *rectangle_int); -+ -+extern PyTypeObject PycairoRegion_Type; -+PyObject *PycairoRegion_FromRegion (cairo_region_t *region); - - extern PyTypeObject PycairoScaledFont_Type; - PyObject *PycairoScaledFont_FromScaledFont (cairo_scaled_font_t *scaled_font); -@@ -153,6 +160,15 @@ int Pycairo_Check_Status (cairo_status_t - if (status != CAIRO_STATUS_SUCCESS) { \ - Pycairo_Check_Status (status); \ - return NULL; \ -+ } \ -+ } while (0) -+ -+#define RETURN_NULL_IF_CAIRO_REGION_ERROR(region) \ -+ do { \ -+ cairo_status_t status = cairo_region_status (region); \ -+ if (status != CAIRO_STATUS_SUCCESS) { \ -+ Pycairo_Check_Status (status); \ -+ return NULL; \ - } \ - } while (0) - ---- py3cairo-1.10.0+dfsg.orig/test/api_test.py -+++ py3cairo-1.10.0+dfsg/test/api_test.py -@@ -84,3 +84,65 @@ def test_surface(): - - def test_text(): - pass -+ -+ -+def test_region(): -+ a = cairo.Region() -+ assert a.is_empty() == True -+ assert a.num_rectangles() == 0 -+ -+ b = cairo.RectangleInt(1, 2, 10, 12) -+ d = cairo.RectangleInt(1, 1, 10, 12) -+ e = cairo.RectangleInt(1, 3, 8, 12) -+ assert (b.x, b.y, b.width, b.height) == (1, 2, 10, 12) -+ c = cairo.Region((b, e)) -+ assert not c.is_empty() -+ assert c.num_rectangles() == 2 -+ assert c.get_rectangle(1).y == 14 -+ -+ ex = c.get_extents() -+ assert ex == cairo.RectangleInt(1, 2, 10, 13) -+ assert c.contains_rectangle(d) == cairo.REGION_OVERLAP_PART -+ -+ c.translate(10, 20) -+ assert c.contains_rectangle(d) == cairo.REGION_OVERLAP_OUT -+ assert c.get_rectangle(1) == cairo.RectangleInt(11, 34, 8, 1) -+ -+ cp = c.copy() -+ assert c.num_rectangles() == cp.num_rectangles() -+ assert c.get_rectangle(0) == cp.get_rectangle(0) -+ assert c == cp -+ assert 3 != c -+ assert c != "test" -+ -+ c = cairo.Region((b, e)) -+ c.intersect(d) -+ assert c.num_rectangles() == 1 -+ assert c.get_rectangle(0) == cairo.RectangleInt(1, 2, 10, 11) -+ -+ c = cairo.Region((b, e)) -+ c.subtract(d) -+ assert c.num_rectangles() == 2 -+ assert c == cairo.Region([ -+ cairo.RectangleInt(1, 13, 10, 1), cairo.RectangleInt(1, 14, 8, 1) ]) -+ -+ d = cairo.Region(d) -+ c = cairo.Region((b, e)) -+ c.subtract(d) -+ assert c.num_rectangles() == 2 -+ assert c.get_rectangle(0) == cairo.RectangleInt(1, 13, 10, 1) -+ -+ c = cairo.Region((b, e)) -+ c.union(d) -+ assert c.num_rectangles() == 2 -+ assert c == cairo.Region([ -+ cairo.RectangleInt(1, 1, 10, 13), cairo.RectangleInt(1, 14, 8, 1) ]) -+ -+ c = cairo.Region((b, e)) -+ c.xor(d) -+ assert c.num_rectangles() == 3 -+ assert c == cairo.Region([ -+ cairo.RectangleInt(1, 1, 10, 1), -+ cairo.RectangleInt(1, 14, 8, 1), -+ cairo.RectangleInt(1, 13, 10, 1), -+ ]) diff --git a/dev-python/pycairo/files/pycairo-1.10.0-50_specify-encoding-in-waf.patch b/dev-python/pycairo/files/pycairo-1.10.0-50_specify-encoding-in-waf.patch deleted file mode 100644 index 5356554e75fa..000000000000 --- a/dev-python/pycairo/files/pycairo-1.10.0-50_specify-encoding-in-waf.patch +++ /dev/null @@ -1,32 +0,0 @@ -Description: specify encoding in waf - This patch specifies utf-8 as the encoding in waf library, because python 3.3 - doesn't fallback to utf-8 on default. -Author: Matthias Klose <doko@ubuntu.com> -Origin: http://launchpadlibrarian.net/120606963/py3cairo_1.10.0%2Bdfsg-3~exp2_1.10.0%2Bdfsg-3~exp2ubuntu1.diff.gz -Bug-Debian: http://bugs.debian.org/691241 -Last-Update: 2012-10-28 - ---- py3cairo-1.10.0+dfsg.orig/waflib/Utils.py -+++ py3cairo-1.10.0+dfsg/waflib/Utils.py -@@ -77,8 +77,8 @@ except ImportError: - return value - is_win32=sys.platform=='win32' - indicator=is_win32 and'\x1b[A\x1b[K%s%s%s\r'or'\x1b[K%s%s%s\r' --def readf(fname,m='r'): -- f=open(fname,m) -+def readf(fname,m='r',enc=None): -+ f=open(fname,m,encoding=enc) - try: - txt=f.read() - finally: ---- py3cairo-1.10.0+dfsg.orig/waflib/Tools/c_preproc.py -+++ py3cairo-1.10.0+dfsg/waflib/Tools/c_preproc.py -@@ -44,7 +44,7 @@ def repl(m): - return' ' - return m.group(3)or'' - def filter_comments(filename): -- code=Utils.readf(filename) -+ code=Utils.readf(filename, enc='utf-8') - if use_trigraphs: - for(a,b)in trig_def:code=code.split(a).join(b) - code=re_nl.sub('',code) diff --git a/dev-python/pycairo/files/pycairo-1.10.0-80_fix-pickle.patch b/dev-python/pycairo/files/pycairo-1.10.0-80_fix-pickle.patch deleted file mode 100644 index 3e0cdc3e61f4..000000000000 --- a/dev-python/pycairo/files/pycairo-1.10.0-80_fix-pickle.patch +++ /dev/null @@ -1,30 +0,0 @@ -Description: During the build process, a Context instance is pickled, or at - least attempted to be. This fails because self.node_class is assigned to a - class which is nested inside the __init__() method. Because Python cannot - find this class at unpickling time (i.e. it cannot be imported), Python - refuses to pickle the Context instance, leading to a FTBFS. Since there's no - obvious reason why the class has to be so nested, moving it to a module - global solves the build failure. -Author: Barry Warsaw <barry@debian.org> -Bug: https://bugs.freedesktop.org/show_bug.cgi?id=91561 - ---- a/waflib/Context.py -+++ b/waflib/Context.py -@@ -51,6 +51,8 @@ - global classes - classes.insert(0,cls) - ctx=store_context('ctx',(object,),{}) -+class node_class(waflib.Node.Node): -+ pass - class Context(ctx): - errors=Errors - tools={} -@@ -60,8 +62,6 @@ - except KeyError: - global run_dir - rd=run_dir -- class node_class(waflib.Node.Node): -- pass - self.node_class=node_class - self.node_class.__module__="waflib.Node" - self.node_class.__name__="Nod3" diff --git a/dev-python/pycairo/files/pycairo-1.10.0-81_pickling-again.patch b/dev-python/pycairo/files/pycairo-1.10.0-81_pickling-again.patch deleted file mode 100644 index 3aad32593b3c..000000000000 --- a/dev-python/pycairo/files/pycairo-1.10.0-81_pickling-again.patch +++ /dev/null @@ -1,37 +0,0 @@ -Description: Follow up to 80_fix-pickle.patch. Just disable pickling - altogether since the previous patch doesn't really fix the problem, and not - storing the pickle seems to have no adverse effects on the build, while - avoiding the observed traceback. -Author: Barry Warsaw <barry@debian.org> -Forwarded: no - ---- a/waflib/Build.py -+++ b/waflib/Build.py -@@ -151,6 +151,7 @@ - f.close() - self.init_dirs() - def store(self): -+ return - data={} - for x in SAVED_ATTRS: - data[x]=getattr(self,x) ---- a/waflib/Context.py -+++ b/waflib/Context.py -@@ -51,8 +51,6 @@ - global classes - classes.insert(0,cls) - ctx=store_context('ctx',(object,),{}) --class node_class(waflib.Node.Node): -- pass - class Context(ctx): - errors=Errors - tools={} -@@ -62,6 +60,8 @@ - except KeyError: - global run_dir - rd=run_dir -+ class node_class(waflib.Node.Node): -+ pass - self.node_class=node_class - self.node_class.__module__="waflib.Node" - self.node_class.__name__="Nod3" diff --git a/dev-python/pycairo/files/pycairo-1.10.0-svg_check.patch b/dev-python/pycairo/files/pycairo-1.10.0-svg_check.patch deleted file mode 100644 index 572a5f6cc717..000000000000 --- a/dev-python/pycairo/files/pycairo-1.10.0-svg_check.patch +++ /dev/null @@ -1,126 +0,0 @@ ---- src/cairomodule.c -+++ src/cairomodule.c -@@ -116,7 +116,7 @@ - #else - 0, - #endif --#ifdef CAIRO_HAS_SVG_SURFACE -+#ifdef PYCAIRO_ENABLE_SVG - &PycairoSVGSurface_Type, - #else - 0, -@@ -247,7 +247,7 @@ - if (PyType_Ready(&PycairoPSSurface_Type) < 0) - return NULL; - #endif --#ifdef CAIRO_HAS_SVG_SURFACE -+#ifdef PYCAIRO_ENABLE_SVG - if (PyType_Ready(&PycairoSVGSurface_Type) < 0) - return NULL; - #endif -@@ -337,7 +337,7 @@ - PyModule_AddObject(m, "PSSurface", (PyObject *)&PycairoPSSurface_Type); - #endif - --#ifdef CAIRO_HAS_SVG_SURFACE -+#ifdef PYCAIRO_ENABLE_SVG - Py_INCREF(&PycairoSVGSurface_Type); - PyModule_AddObject(m, "SVGSurface", (PyObject *)&PycairoSVGSurface_Type); - #endif -@@ -399,7 +399,7 @@ - #else - PyModule_AddIntConstant(m, "HAS_PS_SURFACE", 0); - #endif --#if CAIRO_HAS_SVG_SURFACE -+#if PYCAIRO_ENABLE_SVG - PyModule_AddIntConstant(m, "HAS_SVG_SURFACE", 1); - #else - PyModule_AddIntConstant(m, "HAS_SVG_SURFACE", 0); ---- src/private.h -+++ src/private.h -@@ -75,7 +75,7 @@ - extern PyTypeObject PycairoPSSurface_Type; - #endif - --#if CAIRO_HAS_SVG_SURFACE -+#if PYCAIRO_ENABLE_SVG - extern PyTypeObject PycairoSVGSurface_Type; - #endif - ---- src/py3cairo.h -+++ src/py3cairo.h -@@ -171,7 +171,7 @@ - #define PycairoPSSurface_Type *(Pycairo_CAPI->PSSurface_Type) - #endif - --#if CAIRO_HAS_SVG_SURFACE -+#if PYCAIRO_ENABLE_SVG - #define PycairoSVGSurface_Type *(Pycairo_CAPI->SVGSurface_Type) - #endif - ---- src/surface.c -+++ src/surface.c -@@ -72,7 +72,7 @@ - type = &PycairoPSSurface_Type; - break; - #endif --#if CAIRO_HAS_SVG_SURFACE -+#if PYCAIRO_ENABLE_SVG - case CAIRO_SURFACE_TYPE_SVG: - type = &PycairoSVGSurface_Type; - break; -@@ -1022,7 +1022,7 @@ - - - /* Class SVGSurface(Surface) ----------------------------------------------- */ --#ifdef CAIRO_HAS_SVG_SURFACE -+#ifdef PYCAIRO_ENABLE_SVG - #include <cairo-svg.h> - - static PyObject * -@@ -1133,7 +1133,7 @@ - 0, /* tp_is_gc */ - 0, /* tp_bases */ - }; --#endif /* CAIRO_HAS_SVG_SURFACE */ -+#endif /* PYCAIRO_ENABLE_SVG */ - - - #if CAIRO_HAS_WIN32_SURFACE ---- wscript -+++ wscript -@@ -1,6 +1,7 @@ - # -*- python -*- - - import os -+import subprocess - - top = '.' - out = 'build_directory' -@@ -11,6 +12,17 @@ - cairo_version_required = '1.10.0' - - -+def check_svg(): -+ if os.environ.get('PYCAIRO_DISABLE_SVG', None) is None: -+ return_code = subprocess.call(['pkg-config', '--exists', 'cairo-svg']) -+ if return_code == 0: -+ return True -+ else: -+ return False -+ else: -+ return False -+ -+ - def options(ctx): - print(' %s/options()' %d) - ctx.tool_options('gnu_dirs') -@@ -39,6 +51,8 @@ - ctx.define('PYCAIRO_VERSION_MAJOR', version[0]) - ctx.define('PYCAIRO_VERSION_MINOR', version[1]) - ctx.define('PYCAIRO_VERSION_MICRO', version[2]) -+ if check_svg(): -+ ctx.define('PYCAIRO_ENABLE_SVG', 1) - - ctx.write_config_header('src/config.h') - diff --git a/dev-python/pycairo/files/pycairo-1.10.0-waf-py3_4.patch b/dev-python/pycairo/files/pycairo-1.10.0-waf-py3_4.patch deleted file mode 100644 index 6e79db9ba272..000000000000 --- a/dev-python/pycairo/files/pycairo-1.10.0-waf-py3_4.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/waflib/Tools/python.py -+++ b/waflib/Tools/python.py -@@ -169,7 +169,7 @@ - conf.find_program('python-config-%s'%num,var='PYTHON_CONFIG',mandatory=False) - includes=[] - if conf.env.PYTHON_CONFIG: -- for incstr in conf.cmd_and_log(conf.env.PYTHON+[conf.env.PYTHON_CONFIG,'--includes']).strip().split(): -+ for incstr in conf.cmd_and_log([conf.env.PYTHON_CONFIG,'--includes']).strip().split(): - if(incstr.startswith('-I')or incstr.startswith('/I')): - incstr=incstr[2:] - if incstr not in includes: diff --git a/dev-python/pycairo/files/pycairo-1.10.0-waf-unpack.patch b/dev-python/pycairo/files/pycairo-1.10.0-waf-unpack.patch deleted file mode 100644 index 7d54ba160d68..000000000000 --- a/dev-python/pycairo/files/pycairo-1.10.0-waf-unpack.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- a/waf -+++ b/waf -@@ -153,6 +153,9 @@ - return dir - - wafdir = find_lib() -+if sys.argv[1:] == ['unpack']: -+ print(wafdir) -+ exit() - sys.path.insert(0, wafdir) - from waflib.Tools.c_config import MACRO_TO_DESTOS - MACRO_TO_DESTOS['__POWERPC__'] = 'darwin' diff --git a/dev-python/pycairo/files/pycairo-1.10.0-xpyb.patch b/dev-python/pycairo/files/pycairo-1.10.0-xpyb.patch deleted file mode 100644 index 33de2692f838..000000000000 --- a/dev-python/pycairo/files/pycairo-1.10.0-xpyb.patch +++ /dev/null @@ -1,41 +0,0 @@ ---- pycairo-1.10.0/wscript -+++ pycairo-1.10.0/wscript -@@ -10,6 +10,7 @@ - APPNAME='pycairo' - VERSION='1.10.0' - cairo_version_required = '1.10.0' -+xpyb_version_required = '1.3' # optional - - - def check_svg(): -@@ -23,6 +24,17 @@ - return False - - -+def check_xpyb(): -+ if os.environ.get('PYCAIRO_DISABLE_XPYB', None) is None: -+ return_code = subprocess.call(['pkg-config', '--exists', 'xpyb']) -+ if return_code == 0: -+ return True -+ else: -+ return False -+ else: -+ return False -+ -+ - def options(ctx): - print(' %s/options()' %d) - ctx.tool_options('gnu_dirs') -@@ -42,6 +54,12 @@ - ctx.check_cfg(package='cairo', atleast_version=cairo_version_required, - args='--cflags --libs') - -+# xpyb for Python 3 is not available yet. -+# the Python 3 version should probably have a different name than 'xpyb' -+# if check_xpyb(): -+# ctx.check_cfg(package='xpyb', atleast_version=xpyb_version_required, -+# args='--cflags --libs', mandatory=False) -+ - # add gcc options - if env['CC_NAME'] == 'gcc': - env.append_unique('CCFLAGS', ['-std=c99', '-Wall']) diff --git a/dev-python/pycairo/pycairo-1.10.0-r5.ebuild b/dev-python/pycairo/pycairo-1.10.0-r5.ebuild index 7a63fcf48d49..b61eec3973dd 100644 --- a/dev-python/pycairo/pycairo-1.10.0-r5.ebuild +++ b/dev-python/pycairo/pycairo-1.10.0-r5.ebuild @@ -15,7 +15,8 @@ DESCRIPTION="Python bindings for the cairo library" HOMEPAGE="http://cairographics.org/pycairo/ https://pypi.python.org/pypi/pycairo" SRC_URI=" http://cairographics.org/releases/py2cairo-${PYCAIRO_PYTHON2_VERSION}.tar.bz2 - http://cairographics.org/releases/pycairo-${PYCAIRO_PYTHON3_VERSION}.tar.bz2" + http://cairographics.org/releases/pycairo-${PYCAIRO_PYTHON3_VERSION}.tar.bz2 + https://dev.gentoo.org/~mgorny/dist/${P}-gentoo-patchset.tar.bz2" # LGPL-3 for pycairo 1.10.0. # || ( LGPL-2.1 MPL-1.1 ) for pycairo 1.8.10. @@ -39,19 +40,19 @@ src_prepare() { pushd "${WORKDIR}/pycairo-${PYCAIRO_PYTHON3_VERSION}" > /dev/null || die rm -f src/config.h || die epatch \ - "${FILESDIR}/${PN}-1.10.0-svg_check.patch" \ - "${FILESDIR}/${PN}-1.10.0-xpyb.patch" \ - "${FILESDIR}/${PN}-1.10.0-waf-unpack.patch" \ - "${FILESDIR}"/py2cairo-1.10.0-ppc-darwin.patch \ - "${FILESDIR}"/pycairo-1.10.0-101_pycairo-region.patch + "${WORKDIR}/${P}-gentoo-patchset/${PN}-1.10.0-svg_check.patch" \ + "${WORKDIR}/${P}-gentoo-patchset/${PN}-1.10.0-xpyb.patch" \ + "${WORKDIR}/${P}-gentoo-patchset/${PN}-1.10.0-waf-unpack.patch" \ + "${WORKDIR}/${P}-gentoo-patchset"/py2cairo-1.10.0-ppc-darwin.patch \ + "${WORKDIR}/${P}-gentoo-patchset"/pycairo-1.10.0-101_pycairo-region.patch popd > /dev/null pushd "${WORKDIR}/py2cairo-${PYCAIRO_PYTHON2_VERSION}" > /dev/null || die rm -f src/config.h || die epatch \ - "${FILESDIR}/py2cairo-1.10.0-svg_check.patch" \ - "${FILESDIR}/py2cairo-1.10.0-xpyb.patch" \ - "${FILESDIR}"/py2cairo-1.10.0-ppc-darwin.patch + "${WORKDIR}/${P}-gentoo-patchset/py2cairo-1.10.0-svg_check.patch" \ + "${WORKDIR}/${P}-gentoo-patchset/py2cairo-1.10.0-xpyb.patch" \ + "${WORKDIR}/${P}-gentoo-patchset"/py2cairo-1.10.0-ppc-darwin.patch popd > /dev/null preparation() { @@ -61,10 +62,10 @@ src_prepare() { wafdir="$(./waf unpack)" pushd "${wafdir}" > /dev/null || die epatch \ - "${FILESDIR}/${PN}-1.10.0-waf-py3_4.patch" \ - "${FILESDIR}"/pycairo-1.10.0-50_specify-encoding-in-waf.patch \ - "${FILESDIR}"/pycairo-1.10.0-80_fix-pickle.patch \ - "${FILESDIR}"/pycairo-1.10.0-81_pickling-again.patch + "${WORKDIR}/${P}-gentoo-patchset/${PN}-1.10.0-waf-py3_4.patch" \ + "${WORKDIR}/${P}-gentoo-patchset"/pycairo-1.10.0-50_specify-encoding-in-waf.patch \ + "${WORKDIR}/${P}-gentoo-patchset"/pycairo-1.10.0-80_fix-pickle.patch \ + "${WORKDIR}/${P}-gentoo-patchset"/pycairo-1.10.0-81_pickling-again.patch popd > /dev/null popd > /dev/null |