[pykde4] sip414 patch

Rex Dieter rdieter at fedoraproject.org
Wed Oct 3 19:43:43 UTC 2012


commit ef32fb5b4c94a3b7be934dd0f6712f5f73c62988
Author: Rex Dieter <rdieter at fedoraproject.org>
Date:   Wed Oct 3 14:43:00 2012 -0500

    sip414 patch

 pykde4-sip414.patch |   82 +++++++++++++++++++++++++++++++++++++++++++++++++++
 pykde4.spec         |    8 +++++
 2 files changed, 90 insertions(+), 0 deletions(-)
---
diff --git a/pykde4-sip414.patch b/pykde4-sip414.patch
new file mode 100644
index 0000000..ea55e2d
--- /dev/null
+++ b/pykde4-sip414.patch
@@ -0,0 +1,82 @@
+diff --git a/sip/kdecore/typedefs.sip b/sip/kdecore/typedefs.sip
+index 5a0a080..73dad01 100644
+--- a/sip/kdecore/typedefs.sip
++++ b/sip/kdecore/typedefs.sip
+@@ -951,77 +951,3 @@ template <TYPE1>
+ %End
+ };
+ 
+-%MappedType QVector<int>
+-{
+-%TypeHeaderCode
+-#include <qvector.h>
+-%End
+-
+-%ConvertFromTypeCode
+-    // Create the list.
+-    PyObject *l;
+-
+-    if ((l = PyList_New(sipCpp->size())) == NULL)
+-        return NULL;
+-
+-    // Set the list elements.
+-    for (int i = 0; i < sipCpp->size(); ++i)
+-    {
+-        int t = (sipCpp->at(i));
+-
+-#if PY_MAJOR_VERSION >= 3        
+-        PyObject *tobj = PyLong_FromLong(t);
+-#else
+-        PyObject *tobj = PyInt_FromLong(t);
+-#endif
+-
+-        PyList_SET_ITEM(l, i, tobj);
+-    }
+-
+-    return l;
+-%End
+-
+-%ConvertToTypeCode
+-    // Check the type if that is all that is required.
+-    if (sipIsErr == NULL)
+-    {
+-        if (!PyList_Check(sipPy))
+-            return 0;
+-
+-        for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i) {
+-            PyObject *tobj = PyList_GET_ITEM(sipPy, i);
+-#if PY_MAJOR_VERSION >= 3
+-            if (!PyNumber_Check(tobj))
+-#else
+-            if (!PyInt_Check(tobj))
+-#endif
+-                return 0;
+-        }
+-        return 1;
+-    }
+-
+-    QVector<int> *qv = new QVector<int>;
+- 
+-    for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+-    {
+-        PyObject *tobj = PyList_GET_ITEM(sipPy, i);
+- #if PY_MAJOR_VERSION >= 3
+-        int t = PyLong_AsLong (tobj);
+-#else
+-        int t = PyInt_AS_LONG (tobj);
+-#endif
+-
+-        if (*sipIsErr)
+-        {
+-            delete qv;
+-            return 0;
+-        }
+-
+-        qv->append(t);
+-    }
+- 
+-    *sipCppPtr = qv;
+- 
+-    return sipGetState(sipTransferObj);
+-%End
+-};
diff --git a/pykde4.spec b/pykde4.spec
index bcf38af..524e592 100644
--- a/pykde4.spec
+++ b/pykde4.spec
@@ -22,6 +22,10 @@ URL:     http://developer.kde.org/language-bindings/
 %endif
 Source0: http://download.kde.org/%{stable}/%{version}/src/%{name}-%{version}.tar.xz
 
+## upstreamable patches
+# fix build against sip-4.14
+Patch50: pykde4-sip414.patch
+
 # debian patches
 Patch200: make_pykde4_respect_sip_flags.diff
 Patch201: fix_kpythonpluginfactory_build.diff
@@ -142,6 +146,10 @@ Provides:  python3-PyKDE4-devel%{?_isa} = %{version}-%{release}
 %prep
 %setup -q -n pykde4-%{version}
 
+#if 0%{?fedora} > 18
+%patch50 -p1 -b .sip414
+#endif
+
 %patch200 -p1 -b .respect_sip_flags
 %patch201 -p1  -b .kpythonpluginfactory_slots
 


More information about the scm-commits mailing list