summaryrefslogtreecommitdiffstats
path: root/source/kde/patch/pykde4
diff options
context:
space:
mode:
Diffstat (limited to 'source/kde/patch/pykde4')
-rw-r--r--source/kde/patch/pykde4/0003-Fix-build-with-sip-4.19.patch599
-rw-r--r--source/kde/patch/pykde4/Annotate-KAutoMount-as-Abstract.patch21
-rw-r--r--source/kde/patch/pykde4/fix_kpythonpluginfactory_build.diff26
-rw-r--r--source/kde/patch/pykde4/pykde4-4.14.3-checkstate-sip-4.19.5.patch24
-rw-r--r--source/kde/patch/pykde4/pykde4.solid.cmake.diff20
5 files changed, 690 insertions, 0 deletions
diff --git a/source/kde/patch/pykde4/0003-Fix-build-with-sip-4.19.patch b/source/kde/patch/pykde4/0003-Fix-build-with-sip-4.19.patch
new file mode 100644
index 000000000..61ef78dfc
--- /dev/null
+++ b/source/kde/patch/pykde4/0003-Fix-build-with-sip-4.19.patch
@@ -0,0 +1,599 @@
+From 2d1eadf5d0148c88cb4393993f0269e196cbe7b1 Mon Sep 17 00:00:00 2001
+From: Johannes Huber <johu@gentoo.org>
+Date: Mon, 9 Jan 2017 11:52:12 +0100
+Subject: [PATCH 3/3] Fix build with sip 4.19
+
+REVIEW: 129799
+---
+ sip/dnssd/remoteservice.sip | 10 +++++-----
+ sip/kdecore/kmimetype.sip | 10 +++++-----
+ sip/kdecore/ksharedconfig.sip | 4 ++--
+ sip/kdecore/ksycocaentry.sip | 10 +++++-----
+ sip/kdecore/typedefs.sip | 30 +++++++++++++++---------------
+ sip/kdeui/kcompletion.sip | 10 +++++-----
+ sip/kdeui/kxmlguibuilder.sip | 4 ++--
+ sip/kio/kservicegroup.sip | 10 +++++-----
+ sip/ktexteditor/markinterface.sip | 10 +++++-----
+ sip/phonon/objectdescription.sip | 10 +++++-----
+ sip/soprano/pluginmanager.sip | 30 +++++++++++++++---------------
+ 11 files changed, 69 insertions(+), 69 deletions(-)
+
+diff --git a/sip/dnssd/remoteservice.sip b/sip/dnssd/remoteservice.sip
+index 5c5397a..44db887 100644
+--- a/sip/dnssd/remoteservice.sip
++++ b/sip/dnssd/remoteservice.sip
+@@ -66,7 +66,7 @@ protected:
+ DNSSD::RemoteService::Ptr *t = new DNSSD::RemoteService::Ptr (sipCpp->at(i));
+ PyObject *tobj;
+
+- if ((tobj = sipConvertFromNewInstance(t->data(), sipClass_DNSSD_RemoteService, sipTransferObj)) == NULL)
++ if ((tobj = sipConvertFromNewType(t->data(), sipType_DNSSD_RemoteService, sipTransferObj)) == NULL)
+ {
+ Py_DECREF(l);
+ delete t;
+@@ -88,7 +88,7 @@ protected:
+ return 0;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+- if (!sipCanConvertToInstance(PyList_GET_ITEM(sipPy, i), sipClass_DNSSD_RemoteService, SIP_NOT_NONE))
++ if (!sipCanConvertToType(PyList_GET_ITEM(sipPy, i), sipType_DNSSD_RemoteService, SIP_NOT_NONE))
+ return 0;
+
+ return 1;
+@@ -99,11 +99,11 @@ protected:
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ int state;
+- DNSSD::RemoteService *t = reinterpret_cast<DNSSD::RemoteService *>(sipConvertToInstance(PyList_GET_ITEM(sipPy, i), sipClass_DNSSD_RemoteService, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
++ DNSSD::RemoteService *t = reinterpret_cast<DNSSD::RemoteService *>(sipConvertToType(PyList_GET_ITEM(sipPy, i), sipType_DNSSD_RemoteService, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
+
+ if (*sipIsErr)
+ {
+- sipReleaseInstance(t, sipClass_DNSSD_RemoteService, state);
++ sipReleaseType(t, sipType_DNSSD_RemoteService, state);
+
+ delete ql;
+ return 0;
+@@ -113,7 +113,7 @@ protected:
+
+ ql->append(*tptr);
+
+- sipReleaseInstance(t, sipClass_DNSSD_RemoteService, state);
++ sipReleaseType(t, sipType_DNSSD_RemoteService, state);
+ }
+
+ *sipCppPtr = ql;
+diff --git a/sip/kdecore/kmimetype.sip b/sip/kdecore/kmimetype.sip
+index b2d21f7..2945210 100644
+--- a/sip/kdecore/kmimetype.sip
++++ b/sip/kdecore/kmimetype.sip
+@@ -100,7 +100,7 @@ public:
+ KMimeType::Ptr *t = new KMimeType::Ptr (sipCpp->at(i));
+ PyObject *tobj;
+
+- if ((tobj = sipConvertFromNewInstance(t->data(), sipClass_KMimeType, sipTransferObj)) == NULL)
++ if ((tobj = sipConvertFromNewType(t->data(), sipType_KMimeType, sipTransferObj)) == NULL)
+ {
+ Py_DECREF(l);
+ delete t;
+@@ -122,7 +122,7 @@ public:
+ return 0;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+- if (!sipCanConvertToInstance(PyList_GET_ITEM(sipPy, i), sipClass_KMimeType, SIP_NOT_NONE))
++ if (!sipCanConvertToType(PyList_GET_ITEM(sipPy, i), sipType_KMimeType, SIP_NOT_NONE))
+ return 0;
+
+ return 1;
+@@ -133,11 +133,11 @@ public:
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ int state;
+- KMimeType *t = reinterpret_cast<KMimeType *>(sipConvertToInstance(PyList_GET_ITEM(sipPy, i), sipClass_KMimeType, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
++ KMimeType *t = reinterpret_cast<KMimeType *>(sipConvertToType(PyList_GET_ITEM(sipPy, i), sipType_KMimeType, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
+
+ if (*sipIsErr)
+ {
+- sipReleaseInstance(t, sipClass_KMimeType, state);
++ sipReleaseType(t, sipType_KMimeType, state);
+
+ delete ql;
+ return 0;
+@@ -147,7 +147,7 @@ public:
+
+ ql->append(*tptr);
+
+- sipReleaseInstance(t, sipClass_KMimeType, state);
++ sipReleaseType(t, sipType_KMimeType, state);
+ }
+
+ *sipCppPtr = ql;
+diff --git a/sip/kdecore/ksharedconfig.sip b/sip/kdecore/ksharedconfig.sip
+index 54b1599..9442d80 100644
+--- a/sip/kdecore/ksharedconfig.sip
++++ b/sip/kdecore/ksharedconfig.sip
+@@ -65,7 +65,7 @@ typedef KSharedConfig::Ptr KSharedConfigPtr;
+ KSharedConfigPtr kcpp = *sipCpp;
+ KSharedConfig *ksc = kcpp.data ();
+ ksc->ref.ref();
+- PyObject *pyKsc = sipConvertFromInstance(ksc, sipClass_KSharedConfig, sipTransferObj);
++ PyObject *pyKsc = sipConvertFromType(ksc, sipType_KSharedConfig, sipTransferObj);
+ return pyKsc;
+ %End
+
+@@ -74,7 +74,7 @@ typedef KSharedConfig::Ptr KSharedConfigPtr;
+ return 1;
+
+ int state;
+- KSharedConfig* ksc = (KSharedConfig *)sipConvertToInstance(sipPy, sipClass_KSharedConfig, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr);
++ KSharedConfig* ksc = (KSharedConfig *)sipConvertToType(sipPy, sipType_KSharedConfig, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr);
+ *sipCppPtr = new KSharedConfigPtr (ksc);
+ ksc->ref.deref();
+ return sipGetState(sipTransferObj);
+diff --git a/sip/kdecore/ksycocaentry.sip b/sip/kdecore/ksycocaentry.sip
+index 4632e4a..ceb85fa 100644
+--- a/sip/kdecore/ksycocaentry.sip
++++ b/sip/kdecore/ksycocaentry.sip
+@@ -83,7 +83,7 @@ private:
+ KSycocaEntry::Ptr *t = new KSycocaEntry::Ptr (sipCpp->at(i));
+ PyObject *tobj;
+
+- if ((tobj = sipConvertFromNewInstance(t->data(), sipClass_KSycocaEntry, sipTransferObj)) == NULL)
++ if ((tobj = sipConvertFromNewType(t->data(), sipType_KSycocaEntry, sipTransferObj)) == NULL)
+ {
+ Py_DECREF(l);
+ delete t;
+@@ -105,7 +105,7 @@ private:
+ return 0;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+- if (!sipCanConvertToInstance(PyList_GET_ITEM(sipPy, i), sipClass_KSycocaEntry, SIP_NOT_NONE))
++ if (!sipCanConvertToType(PyList_GET_ITEM(sipPy, i), sipType_KSycocaEntry, SIP_NOT_NONE))
+ return 0;
+
+ return 1;
+@@ -116,11 +116,11 @@ private:
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ int state;
+- KSycocaEntry *t = reinterpret_cast<KSycocaEntry *>(sipConvertToInstance(PyList_GET_ITEM(sipPy, i), sipClass_KSycocaEntry, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
++ KSycocaEntry *t = reinterpret_cast<KSycocaEntry *>(sipConvertToType(PyList_GET_ITEM(sipPy, i), sipType_KSycocaEntry, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
+
+ if (*sipIsErr)
+ {
+- sipReleaseInstance(t, sipClass_KSycocaEntry, state);
++ sipReleaseType(t, sipType_KSycocaEntry, state);
+
+ delete ql;
+ return 0;
+@@ -130,7 +130,7 @@ private:
+
+ ql->append(*tptr);
+
+- sipReleaseInstance(t, sipClass_KSycocaEntry, state);
++ sipReleaseType(t, sipType_KSycocaEntry, state);
+ }
+
+ *sipCppPtr = ql;
+diff --git a/sip/kdecore/typedefs.sip b/sip/kdecore/typedefs.sip
+index af53f85..23956b7 100644
+--- a/sip/kdecore/typedefs.sip
++++ b/sip/kdecore/typedefs.sip
+@@ -397,8 +397,8 @@ template <TYPE1,TYPE2>
+ TYPE1 *t1 = new TYPE1(i.key());
+ TYPE2 *t2 = new TYPE2(i.value());
+
+- PyObject *t1obj = sipConvertFromNewInstance(t1, sipClass_TYPE1, sipTransferObj);
+- PyObject *t2obj = sipConvertFromNewInstance(t2, sipClass_TYPE2, sipTransferObj);
++ PyObject *t1obj = sipConvertFromNewType(t1, sipType_TYPE1, sipTransferObj);
++ PyObject *t2obj = sipConvertFromNewType(t2, sipType_TYPE2, sipTransferObj);
+
+ if (t1obj == NULL || t2obj == NULL || PyDict_SetItem(d, t1obj, t2obj) < 0)
+ {
+@@ -438,10 +438,10 @@ template <TYPE1,TYPE2>
+
+ while (PyDict_Next(sipPy, &i, &t1obj, &t2obj))
+ {
+- if (!sipCanConvertToInstance(t1obj, sipClass_TYPE1, SIP_NOT_NONE))
++ if (!sipCanConvertToType(t1obj, sipType_TYPE1, SIP_NOT_NONE))
+ return 0;
+
+- if (!sipCanConvertToInstance(t2obj, sipClass_TYPE2, SIP_NOT_NONE))
++ if (!sipCanConvertToType(t2obj, sipType_TYPE2, SIP_NOT_NONE))
+ return 0;
+ }
+
+@@ -454,13 +454,13 @@ template <TYPE1,TYPE2>
+ {
+ int state1, state2;
+
+- TYPE1 *t1 = reinterpret_cast<TYPE1 *>(sipConvertToInstance(t1obj, sipClass_TYPE1, sipTransferObj, SIP_NOT_NONE, &state1, sipIsErr));
+- TYPE2 *t2 = reinterpret_cast<TYPE2 *>(sipConvertToInstance(t2obj, sipClass_TYPE2, sipTransferObj, SIP_NOT_NONE, &state2, sipIsErr));
++ TYPE1 *t1 = reinterpret_cast<TYPE1 *>(sipConvertToType(t1obj, sipType_TYPE1, sipTransferObj, SIP_NOT_NONE, &state1, sipIsErr));
++ TYPE2 *t2 = reinterpret_cast<TYPE2 *>(sipConvertToType(t2obj, sipType_TYPE2, sipTransferObj, SIP_NOT_NONE, &state2, sipIsErr));
+
+ if (*sipIsErr)
+ {
+- sipReleaseInstance(t1, sipClass_TYPE1, state1);
+- sipReleaseInstance(t2, sipClass_TYPE2, state2);
++ sipReleaseType(t1, sipType_TYPE1, state1);
++ sipReleaseType(t2, sipType_TYPE2, state2);
+
+ delete qm;
+ return 0;
+@@ -468,8 +468,8 @@ template <TYPE1,TYPE2>
+
+ qm->insert(*t1, *t2);
+
+- sipReleaseInstance(t1, sipClass_TYPE1, state1);
+- sipReleaseInstance(t2, sipClass_TYPE2, state2);
++ sipReleaseType(t1, sipType_TYPE1, state1);
++ sipReleaseType(t2, sipType_TYPE2, state2);
+ }
+
+ *sipCppPtr = qm;
+@@ -669,7 +669,7 @@ template <TYPE*>
+ TYPE *t = (TYPE *)(sipCpp->at(i));
+ PyObject *tobj;
+
+- if ((tobj = sipConvertFromNewInstance(t, sipClass_TYPE, sipTransferObj)) == NULL)
++ if ((tobj = sipConvertFromNewType(t, sipType_TYPE, sipTransferObj)) == NULL)
+ {
+ Py_DECREF(l);
+ delete t;
+@@ -691,7 +691,7 @@ template <TYPE*>
+ return 0;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+- if (!sipCanConvertToInstance(PyList_GET_ITEM(sipPy, i), sipClass_TYPE, SIP_NOT_NONE))
++ if (!sipCanConvertToType(PyList_GET_ITEM(sipPy, i), sipType_TYPE, SIP_NOT_NONE))
+ return 0;
+
+ return 1;
+@@ -702,11 +702,11 @@ template <TYPE*>
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ int state;
+- TYPE *t = reinterpret_cast<TYPE *>(sipConvertToInstance(PyList_GET_ITEM(sipPy, i), sipClass_TYPE, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
++ TYPE *t = reinterpret_cast<TYPE *>(sipConvertToType(PyList_GET_ITEM(sipPy, i), sipType_TYPE, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
+
+ if (*sipIsErr)
+ {
+- sipReleaseInstance(t, sipClass_TYPE, state);
++ sipReleaseType(t, sipType_TYPE, state);
+
+ delete qv;
+ return 0;
+@@ -714,7 +714,7 @@ template <TYPE*>
+
+ qv->append(t);
+
+- sipReleaseInstance(t, sipClass_TYPE, state);
++ sipReleaseType(t, sipType_TYPE, state);
+ }
+
+ *sipCppPtr = qv;
+diff --git a/sip/kdeui/kcompletion.sip b/sip/kdeui/kcompletion.sip
+index f1d327f..938506a 100644
+--- a/sip/kdeui/kcompletion.sip
++++ b/sip/kdeui/kcompletion.sip
+@@ -176,7 +176,7 @@ public:
+ #else
+ PyObject *kobj = PyInt_FromLong((int)i.key());
+ #endif
+- PyObject *tobj = sipConvertFromNewInstance(t, sipClass_KShortcut, sipTransferObj);
++ PyObject *tobj = sipConvertFromNewType(t, sipType_KShortcut, sipTransferObj);
+
+ if (kobj == NULL || tobj == NULL || PyDict_SetItem(d, kobj, tobj) < 0)
+ {
+@@ -213,7 +213,7 @@ public:
+ return 0;
+
+ while (PyDict_Next(sipPy, &i, &kobj, &tobj))
+- if (!sipCanConvertToInstance(tobj, sipClass_KShortcut, SIP_NOT_NONE))
++ if (!sipCanConvertToType(tobj, sipType_KShortcut, SIP_NOT_NONE))
+ return 0;
+
+ return 1;
+@@ -229,11 +229,11 @@ public:
+ #else
+ int k = PyInt_AsLong(kobj);
+ #endif
+- KShortcut *t = reinterpret_cast<KShortcut *>(sipConvertToInstance(tobj, sipClass_KShortcut, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
++ KShortcut *t = reinterpret_cast<KShortcut *>(sipConvertToType(tobj, sipType_KShortcut, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
+
+ if (*sipIsErr)
+ {
+- sipReleaseInstance(t, sipClass_KShortcut, state);
++ sipReleaseType(t, sipType_KShortcut, state);
+
+ delete qm;
+ return 0;
+@@ -241,7 +241,7 @@ public:
+
+ qm->insert((KCompletionBase::KeyBindingType)k, *t);
+
+- sipReleaseInstance(t, sipClass_KShortcut, state);
++ sipReleaseType(t, sipType_KShortcut, state);
+ }
+
+ *sipCppPtr = qm;
+diff --git a/sip/kdeui/kxmlguibuilder.sip b/sip/kdeui/kxmlguibuilder.sip
+index 41ae2aa..e4cf187 100644
+--- a/sip/kdeui/kxmlguibuilder.sip
++++ b/sip/kdeui/kxmlguibuilder.sip
+@@ -49,10 +49,10 @@ QAction *containerAction;
+ PyObject *pyWidget;
+ PyObject *pyContainerAction;
+
+- if ((pyWidget = sipConvertFromNewInstance(res, sipClass_QWidget, NULL)) == NULL)
++ if ((pyWidget = sipConvertFromNewType(res, sipType_QWidget, NULL)) == NULL)
+ return NULL;
+
+- if ((pyContainerAction = sipConvertFromNewInstance(containerAction, sipClass_QAction, NULL)) == NULL)
++ if ((pyContainerAction = sipConvertFromNewType(containerAction, sipType_QAction, NULL)) == NULL)
+ return NULL;
+
+ sipRes = Py_BuildValue ("NN", pyWidget, pyContainerAction);
+diff --git a/sip/kio/kservicegroup.sip b/sip/kio/kservicegroup.sip
+index a1ef981..1ddce37 100644
+--- a/sip/kio/kservicegroup.sip
++++ b/sip/kio/kservicegroup.sip
+@@ -151,7 +151,7 @@ public:
+ KServiceGroup::SPtr *t = new KServiceGroup::SPtr (sipCpp->at(i));
+ PyObject *tobj;
+
+- if ((tobj = sipConvertFromNewInstance(t->data(), sipClass_KServiceGroup, sipTransferObj)) == NULL)
++ if ((tobj = sipConvertFromNewType(t->data(), sipType_KServiceGroup, sipTransferObj)) == NULL)
+ {
+ Py_DECREF(l);
+ delete t;
+@@ -173,7 +173,7 @@ public:
+ return 0;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+- if (!sipCanConvertToInstance(PyList_GET_ITEM(sipPy, i), sipClass_KServiceGroup, SIP_NOT_NONE))
++ if (!sipCanConvertToType(PyList_GET_ITEM(sipPy, i), sipType_KServiceGroup, SIP_NOT_NONE))
+ return 0;
+
+ return 1;
+@@ -184,11 +184,11 @@ public:
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ int state;
+- KServiceGroup *t = reinterpret_cast<KServiceGroup *>(sipConvertToInstance(PyList_GET_ITEM(sipPy, i), sipClass_KServiceGroup, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
++ KServiceGroup *t = reinterpret_cast<KServiceGroup *>(sipConvertToType(PyList_GET_ITEM(sipPy, i), sipType_KServiceGroup, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
+
+ if (*sipIsErr)
+ {
+- sipReleaseInstance(t, sipClass_KServiceGroup, state);
++ sipReleaseType(t, sipType_KServiceGroup, state);
+
+ delete ql;
+ return 0;
+@@ -198,7 +198,7 @@ public:
+
+ ql->append(*tptr);
+
+- sipReleaseInstance(t, sipClass_KServiceGroup, state);
++ sipReleaseType(t, sipType_KServiceGroup, state);
+ }
+
+ *sipCppPtr = ql;
+diff --git a/sip/ktexteditor/markinterface.sip b/sip/ktexteditor/markinterface.sip
+index d9b0ec9..888c506 100644
+--- a/sip/ktexteditor/markinterface.sip
++++ b/sip/ktexteditor/markinterface.sip
+@@ -158,7 +158,7 @@ signals:
+ #else
+ PyObject *t1obj = PyInt_FromLong ((long)t1);
+ #endif
+- PyObject *t2obj = sipConvertFromNewInstance(t2, sipClass_KTextEditor_Mark, sipTransferObj);
++ PyObject *t2obj = sipConvertFromNewType(t2, sipType_KTextEditor_Mark, sipTransferObj);
+
+ if (t2obj == NULL || PyDict_SetItem(d, t1obj, t2obj) < 0)
+ {
+@@ -203,7 +203,7 @@ signals:
+ #endif
+ return 0;
+
+- if (!sipCanConvertToInstance(t2obj, sipClass_KTextEditor_Mark, SIP_NOT_NONE))
++ if (!sipCanConvertToType(t2obj, sipType_KTextEditor_Mark, SIP_NOT_NONE))
+ return 0;
+ }
+
+@@ -221,11 +221,11 @@ signals:
+ #else
+ int t1 = PyInt_AS_LONG (t1obj);
+ #endif
+- KTextEditor::Mark *t2 = reinterpret_cast<KTextEditor::Mark *>(sipConvertToInstance(t2obj, sipClass_KTextEditor_Mark, sipTransferObj, SIP_NOT_NONE, &state2, sipIsErr));
++ KTextEditor::Mark *t2 = reinterpret_cast<KTextEditor::Mark *>(sipConvertToType(t2obj, sipType_KTextEditor_Mark, sipTransferObj, SIP_NOT_NONE, &state2, sipIsErr));
+
+ if (*sipIsErr)
+ {
+- sipReleaseInstance(t2, sipClass_KTextEditor_Mark, state2);
++ sipReleaseType(t2, sipType_KTextEditor_Mark, state2);
+
+ delete qm;
+ return 0;
+@@ -233,7 +233,7 @@ signals:
+
+ qm->insert(t1, t2);
+
+- sipReleaseInstance(t2, sipClass_KTextEditor_Mark, state2);
++ sipReleaseType(t2, sipType_KTextEditor_Mark, state2);
+ }
+
+ *sipCppPtr = qm;
+diff --git a/sip/phonon/objectdescription.sip b/sip/phonon/objectdescription.sip
+index 2b86d5e..015b2ef 100644
+--- a/sip/phonon/objectdescription.sip
++++ b/sip/phonon/objectdescription.sip
+@@ -116,7 +116,7 @@ void registerMetaTypes ();
+ DNSSD::RemoteService::Ptr *t = new Phonon::ObjectDescription (sipCpp->at(i));
+ PyObject *tobj;
+
+- if ((tobj = sipConvertFromNewInstance(t->data(), sipClass_DNSSD_RemoteService, sipTransferObj)) == NULL)
++ if ((tobj = sipConvertFromNewType(t->data(), sipType_DNSSD_RemoteService, sipTransferObj)) == NULL)
+ {
+ Py_DECREF(l);
+ delete t;
+@@ -138,7 +138,7 @@ void registerMetaTypes ();
+ return 0;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+- if (!sipCanConvertToInstance(PyList_GET_ITEM(sipPy, i), sipClass_DNSSD_RemoteService, SIP_NOT_NONE))
++ if (!sipCanConvertToType(PyList_GET_ITEM(sipPy, i), sipType_DNSSD_RemoteService, SIP_NOT_NONE))
+ return 0;
+
+ return 1;
+@@ -149,11 +149,11 @@ void registerMetaTypes ();
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ int state;
+- DNSSD::RemoteService *t = reinterpret_cast<DNSSD::RemoteService *>(sipConvertToInstance(PyList_GET_ITEM(sipPy, i), sipClass_DNSSD_RemoteService, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
++ DNSSD::RemoteService *t = reinterpret_cast<DNSSD::RemoteService *>(sipConvertToType(PyList_GET_ITEM(sipPy, i), sipType_DNSSD_RemoteService, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
+
+ if (*sipIsErr)
+ {
+- sipReleaseInstance(t, sipClass_DNSSD_RemoteService, state);
++ sipReleaseType(t, sipType_DNSSD_RemoteService, state);
+
+ delete ql;
+ return 0;
+@@ -163,7 +163,7 @@ void registerMetaTypes ();
+
+ ql->append(*tptr);
+
+- sipReleaseInstance(t, sipClass_DNSSD_RemoteService, state);
++ sipReleaseType(t, sipType_DNSSD_RemoteService, state);
+ }
+
+ *sipCppPtr = ql;
+diff --git a/sip/soprano/pluginmanager.sip b/sip/soprano/pluginmanager.sip
+index c2be1c3..fe990f8 100644
+--- a/sip/soprano/pluginmanager.sip
++++ b/sip/soprano/pluginmanager.sip
+@@ -73,7 +73,7 @@ public:
+ Soprano::Backend* t = const_cast<Soprano::Backend*>(sipCpp->at(i));
+ PyObject *tobj;
+
+- if ((tobj = sipConvertFromInstance(t, sipClass_Soprano_Backend, sipTransferObj)) == NULL)
++ if ((tobj = sipConvertFromType(t, sipType_Soprano_Backend, sipTransferObj)) == NULL)
+ {
+ Py_DECREF(l);
+ return NULL;
+@@ -93,7 +93,7 @@ public:
+ return 0;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+- if (!sipCanConvertToInstance(PyList_GET_ITEM(sipPy, i), sipClass_Soprano_Backend, SIP_NOT_NONE))
++ if (!sipCanConvertToType(PyList_GET_ITEM(sipPy, i), sipType_Soprano_Backend, SIP_NOT_NONE))
+ return 0;
+
+ return 1;
+@@ -104,18 +104,18 @@ public:
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ int state;
+- const Soprano::Backend*t = reinterpret_cast<const Soprano::Backend*>(sipConvertToInstance(PyList_GET_ITEM(sipPy, i), sipClass_Soprano_Backend, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
++ const Soprano::Backend*t = reinterpret_cast<const Soprano::Backend*>(sipConvertToType(PyList_GET_ITEM(sipPy, i), sipType_Soprano_Backend, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
+
+ if (*sipIsErr)
+ {
+- sipReleaseInstance(const_cast<Soprano::Backend*>(t), sipClass_Soprano_Backend, state);
++ sipReleaseType(const_cast<Soprano::Backend*>(t), sipType_Soprano_Backend, state);
+
+ delete ql;
+ return 0;
+ }
+ ql->append(t);
+
+- sipReleaseInstance(const_cast<Soprano::Backend*>(t), sipClass_Soprano_Backend, state);
++ sipReleaseType(const_cast<Soprano::Backend*>(t), sipType_Soprano_Backend, state);
+ }
+
+ *sipCppPtr = ql;
+@@ -144,7 +144,7 @@ public:
+ Soprano::Parser* t = const_cast<Soprano::Parser*>(sipCpp->at(i));
+ PyObject *tobj;
+
+- if ((tobj = sipConvertFromInstance(t, sipClass_Soprano_Parser, sipTransferObj)) == NULL)
++ if ((tobj = sipConvertFromType(t, sipType_Soprano_Parser, sipTransferObj)) == NULL)
+ {
+ Py_DECREF(l);
+ return NULL;
+@@ -164,7 +164,7 @@ public:
+ return 0;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+- if (!sipCanConvertToInstance(PyList_GET_ITEM(sipPy, i), sipClass_Soprano_Parser, SIP_NOT_NONE))
++ if (!sipCanConvertToType(PyList_GET_ITEM(sipPy, i), sipType_Soprano_Parser, SIP_NOT_NONE))
+ return 0;
+
+ return 1;
+@@ -175,18 +175,18 @@ public:
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ int state;
+- const Soprano::Parser*t = reinterpret_cast<const Soprano::Parser*>(sipConvertToInstance(PyList_GET_ITEM(sipPy, i), sipClass_Soprano_Parser, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
++ const Soprano::Parser*t = reinterpret_cast<const Soprano::Parser*>(sipConvertToType(PyList_GET_ITEM(sipPy, i), sipType_Soprano_Parser, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
+
+ if (*sipIsErr)
+ {
+- sipReleaseInstance(const_cast<Soprano::Parser*>(t), sipClass_Soprano_Parser, state);
++ sipReleaseType(const_cast<Soprano::Parser*>(t), sipType_Soprano_Parser, state);
+
+ delete ql;
+ return 0;
+ }
+ ql->append(t);
+
+- sipReleaseInstance(const_cast<Soprano::Parser*>(t), sipClass_Soprano_Parser, state);
++ sipReleaseType(const_cast<Soprano::Parser*>(t), sipType_Soprano_Parser, state);
+ }
+
+ *sipCppPtr = ql;
+@@ -215,7 +215,7 @@ public:
+ Soprano::Serializer* t = const_cast<Soprano::Serializer*>(sipCpp->at(i));
+ PyObject *tobj;
+
+- if ((tobj = sipConvertFromInstance(t, sipClass_Soprano_Serializer, sipTransferObj)) == NULL)
++ if ((tobj = sipConvertFromType(t, sipType_Soprano_Serializer, sipTransferObj)) == NULL)
+ {
+ Py_DECREF(l);
+ return NULL;
+@@ -235,7 +235,7 @@ public:
+ return 0;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+- if (!sipCanConvertToInstance(PyList_GET_ITEM(sipPy, i), sipClass_Soprano_Serializer, SIP_NOT_NONE))
++ if (!sipCanConvertToType(PyList_GET_ITEM(sipPy, i), sipType_Soprano_Serializer, SIP_NOT_NONE))
+ return 0;
+
+ return 1;
+@@ -246,18 +246,18 @@ public:
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+ {
+ int state;
+- const Soprano::Serializer*t = reinterpret_cast<const Soprano::Serializer*>(sipConvertToInstance(PyList_GET_ITEM(sipPy, i), sipClass_Soprano_Serializer, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
++ const Soprano::Serializer*t = reinterpret_cast<const Soprano::Serializer*>(sipConvertToType(PyList_GET_ITEM(sipPy, i), sipType_Soprano_Serializer, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
+
+ if (*sipIsErr)
+ {
+- sipReleaseInstance(const_cast<Soprano::Serializer*>(t), sipClass_Soprano_Serializer, state);
++ sipReleaseType(const_cast<Soprano::Serializer*>(t), sipType_Soprano_Serializer, state);
+
+ delete ql;
+ return 0;
+ }
+ ql->append(t);
+
+- sipReleaseInstance(const_cast<Soprano::Serializer*>(t), sipClass_Soprano_Serializer, state);
++ sipReleaseType(const_cast<Soprano::Serializer*>(t), sipType_Soprano_Serializer, state);
+ }
+
+ *sipCppPtr = ql;
+--
+2.9.3
+
diff --git a/source/kde/patch/pykde4/Annotate-KAutoMount-as-Abstract.patch b/source/kde/patch/pykde4/Annotate-KAutoMount-as-Abstract.patch
new file mode 100644
index 000000000..1cee8e794
--- /dev/null
+++ b/source/kde/patch/pykde4/Annotate-KAutoMount-as-Abstract.patch
@@ -0,0 +1,21 @@
+diff -ur pykde4-4.14.3.old/sip/kio/kautomount.sip pykde4-4.14.3/sip/kio/kautomount.sip
+--- pykde4-4.14.3.old/sip/kio/kautomount.sip 2014-08-14 22:17:11.000000000 +0200
++++ pykde4-4.14.3/sip/kio/kautomount.sip 2017-02-25 19:17:16.511589230 +0100
+@@ -20,7 +20,7 @@
+ // along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+-class KAutoMount : QObject
++class KAutoMount : QObject /Abstract/
+ {
+ %TypeHeaderCode
+ #include <kautomount.h>
+@@ -42,7 +42,7 @@
+ // KAutoMount
+
+
+-class KAutoUnmount : QObject
++class KAutoUnmount : QObject /Abstract/
+ {
+ %TypeHeaderCode
+ #include <kautomount.h>
diff --git a/source/kde/patch/pykde4/fix_kpythonpluginfactory_build.diff b/source/kde/patch/pykde4/fix_kpythonpluginfactory_build.diff
new file mode 100644
index 000000000..71f5928c1
--- /dev/null
+++ b/source/kde/patch/pykde4/fix_kpythonpluginfactory_build.diff
@@ -0,0 +1,26 @@
+From: Modestas Vainius <modax@debian.org>
+Subject: Include Python.h first as Qt includes steal "slots" keyword
+Forwarded: no
+Origin: vendor
+Last-Update: 2008-12-05
+
+Index: pykde4-4.9.80/kpythonpluginfactory/kpythonpluginfactory.cpp
+===================================================================
+--- pykde4-4.9.80.orig/kpythonpluginfactory/kpythonpluginfactory.cpp 2012-11-14 16:14:05.000000000 +0000
++++ pykde4-4.9.80/kpythonpluginfactory/kpythonpluginfactory.cpp 2012-11-19 17:23:32.497203781 +0000
+@@ -18,6 +18,7 @@
+ Boston, MA 02111-1307, USA.
+ */
+
++#include <Python.h>
+ #include <QtCore/QCoreApplication>
+ #include <QFileInfo>
+ #include <QDir>
+@@ -25,7 +26,6 @@
+ #include <klibloader.h>
+ #include <kstandarddirs.h>
+ #include <kcmodule.h>
+-#include <Python.h>
+ #include <kcomponentdata.h>
+ #include <kdebug.h>
+
diff --git a/source/kde/patch/pykde4/pykde4-4.14.3-checkstate-sip-4.19.5.patch b/source/kde/patch/pykde4/pykde4-4.14.3-checkstate-sip-4.19.5.patch
new file mode 100644
index 000000000..ffc5384d6
--- /dev/null
+++ b/source/kde/patch/pykde4/pykde4-4.14.3-checkstate-sip-4.19.5.patch
@@ -0,0 +1,24 @@
+diff -up pykde4-4.14.3/sip/kdeui/kfontchooser.sip.me pykde4-4.14.3/sip/kdeui/kfontchooser.sip
+--- pykde4-4.14.3/sip/kdeui/kfontchooser.sip.me 2018-01-17 13:16:50.738465947 +0100
++++ pykde4-4.14.3/sip/kdeui/kfontchooser.sip 2018-01-17 13:28:24.665226258 +0100
+@@ -59,7 +59,7 @@ public:
+
+ typedef QFlags<KFontChooser::DisplayFlag> DisplayFlags;
+
+- explicit KFontChooser (QWidget* parent /TransferThis/ = 0, const KFontChooser::DisplayFlags& flags = KFontChooser::DisplayFrame, const QStringList& fontList = QStringList(), int visibleListSize = 8, Qt::CheckState* sizeIsRelativeState = 0) [(QWidget* = 0, const KFontChooser::DisplayFlags& = KFontChooser::DisplayFrame, const QStringList& = QStringList(), int = 8, Qt::CheckState* = 0)];
++ explicit KFontChooser (QWidget* parent /TransferThis/ = 0, const KFontChooser::DisplayFlags& flags = KFontChooser::DisplayFrame, const QStringList& fontList = QStringList(), int visibleListSize = 8, Qt::CheckState sizeIsRelativeState = Qt::Unchecked) [(QWidget* = 0, const KFontChooser::DisplayFlags& = KFontChooser::DisplayFrame, const QStringList& = QStringList(), int = 8, Qt::CheckState* = 0)];
+ %MethodCode
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp = new sipKFontChooser (a0, *a1, *a2, a3, &a4);
+diff -up pykde4-4.14.3/sip/kdeui/kfontdialog.sip.me pykde4-4.14.3/sip/kdeui/kfontdialog.sip
+--- pykde4-4.14.3/sip/kdeui/kfontdialog.sip.me 2018-01-17 13:18:31.112670465 +0100
++++ pykde4-4.14.3/sip/kdeui/kfontdialog.sip 2018-01-17 13:28:00.121154351 +0100
+@@ -28,7 +28,7 @@ class KFontDialog : KDialog
+
+
+ public:
+- explicit KFontDialog (QWidget* parent /TransferThis/ = 0, const KFontChooser::DisplayFlags& flags = KFontChooser::NoDisplayFlags, const QStringList& fontlist = QStringList(), Qt::CheckState* sizeIsRelativeState = 0) [(QWidget* = 0, const KFontChooser::DisplayFlags& = KFontChooser::NoDisplayFlags, const QStringList& = QStringList(), Qt::CheckState* = 0)];
++ explicit KFontDialog (QWidget* parent /TransferThis/ = 0, const KFontChooser::DisplayFlags& flags = KFontChooser::NoDisplayFlags, const QStringList& fontlist = QStringList(), Qt::CheckState sizeIsRelativeState = Qt::Unchecked) [(QWidget* = 0, const KFontChooser::DisplayFlags& = KFontChooser::NoDisplayFlags, const QStringList& = QStringList(), Qt::CheckState* = 0)];
+ %MethodCode
+ Py_BEGIN_ALLOW_THREADS
+ sipCpp= new sipKFontDialog (a0, *a1, *a2, &a3);
diff --git a/source/kde/patch/pykde4/pykde4.solid.cmake.diff b/source/kde/patch/pykde4/pykde4.solid.cmake.diff
new file mode 100644
index 000000000..e4f6cdc73
--- /dev/null
+++ b/source/kde/patch/pykde4/pykde4.solid.cmake.diff
@@ -0,0 +1,20 @@
+--- ./CMakeLists.txt.orig 2014-08-14 15:17:11.000000000 -0500
++++ ./CMakeLists.txt 2016-09-07 14:32:28.115226093 -0500
+@@ -166,7 +166,7 @@
+
+ file(GLOB kio_files_sip sip/kio/*.sip)
+ set(SIP_EXTRA_FILES_DEPEND ${kio_files_sip})
+-add_sip_python_module(PyKDE4.kio sip/kio/kiomod.sip ${KDE4_KIO_LIBS} ${KDE4_KFILE_LIBS})
++add_sip_python_module(PyKDE4.kio sip/kio/kiomod.sip ${KDE4_KIO_LIBS} ${KDE4_KFILE_LIBS} ${KDE4_SOLID_LIBS})
+
+ file(GLOB kutils_files_sip sip/kutils/*.sip)
+ set(SIP_EXTRA_FILES_DEPEND ${kutils_files_sip})
+@@ -190,7 +190,7 @@
+
+ file(GLOB dnssd_files_sip sip/dnssd/*.sip)
+ set(SIP_EXTRA_FILES_DEPEND ${dnssd_files_sip})
+-add_sip_python_module(PyKDE4.dnssd sip/dnssd/dnssdmod.sip ${KDE4_KDNSSD_LIBS} ${QT_QTCORE_LIBRARY})
++add_sip_python_module(PyKDE4.dnssd sip/dnssd/dnssdmod.sip ${KDE4_KDNSSD_LIBS} ${QT_QTCORE_LIBRARY} ${QT_QTNETWORK_LIBRARY})
+
+ file(GLOB phonon_files_sip sip/phonon/*.sip)
+ set(SIP_EXTRA_FILES_DEPEND ${phonon_files_sip})