Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 233763 Details for
Bug 322349
dev-python/PyQt4 needs a patch for ARM
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch from Ubuntu
qreal_float_support.diff (text/plain), 6.31 KB, created by
Alexander Holler
on 2010-06-01 09:44:36 UTC
(
hide
)
Description:
Patch from Ubuntu
Filename:
MIME Type:
Creator:
Alexander Holler
Created:
2010-06-01 09:44:36 UTC
Size:
6.31 KB
patch
obsolete
>#! /bin/sh /usr/share/dpatch/dpatch-run >## 03_qreal_float_support.dpatch by Michael Casadevall <sonicmctails@gmail.com> >## >## DP: Corrects a configure test, and adds explicate double handling >## to qlist.sip on architectures where qreal != double > >@DPATCH@ >Index: python-qt4-4.7.2/configure.py >=================================================================== >--- python-qt4-4.7.2.orig/configure.py 2010-03-17 19:29:19.000000000 +0100 >+++ python-qt4-4.7.2/configure.py 2010-03-25 23:53:55.468631945 +0100 >@@ -1915,8 +1915,9 @@ > out << "PyQt_NoOpenGLES\\n"; > #endif > >- if (sizeof (qreal) != sizeof (double)) >+#if defined(QT_NO_FPU) || defined(QT_ARCH_ARM) || defined(QT_ARCH_WINDOWSCE) > out << "PyQt_qreal_double\\n"; >+#endif > > return 0; > } >Index: python-qt4-4.7.2/sip/QtCore/qlist.sip >=================================================================== >--- python-qt4-4.7.2.orig/sip/QtCore/qlist.sip 2010-03-17 19:29:26.000000000 +0100 >+++ python-qt4-4.7.2/sip/QtCore/qlist.sip 2010-03-25 23:53:55.468631945 +0100 >@@ -749,3 +749,227 @@ > return sipGetState(sipTransferObj); > %End > }; >+ >+// If we're on an architecture where qreal != double, then we need to also >+// explicately handle doubles. On architectures where qreal == double, they >+// will automaticially be cast upwards >+ >+%If (!PyQt_qreal_double) >+ >+%If (Qt_4_3_0 -) >+// QList<QPair<double, double> > is implemented as a Python list of 2-element tuples. >+%MappedType QList<QPair<double, double> > >+{ >+%TypeHeaderCode >+#include <qlist.h> >+#include <qpair.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) >+ { >+ const QPair<double, double> &p = sipCpp->at(i); >+ PyObject *pobj; >+ >+ if ((pobj = Py_BuildValue((char *)"dd", p.first, p.second)) == NULL) >+ { >+ Py_DECREF(l); >+ >+ return NULL; >+ } >+ >+ PyList_SET_ITEM(l, i, pobj); >+ } >+ >+ return l; >+%End >+ >+%ConvertToTypeCode >+ SIP_SSIZE_T len; >+ >+ // Check the type if that is all that is required. >+ if (sipIsErr == NULL) >+ { >+ if (!PySequence_Check(sipPy) || (len = PySequence_Size(sipPy)) < 0) >+ return 0; >+ >+ for (SIP_SSIZE_T i = 0; i < len; ++i) >+ { >+ PyObject *tup = PySequence_ITEM(sipPy, i); >+ >+ if (!PySequence_Check(tup) || PySequence_Size(tup) != 2) >+ return 0; >+ } >+ >+ return 1; >+ } >+ >+ QList<QPair<double, double> > *ql = new QList<QPair<double, double> >; >+ len = PySequence_Size(sipPy); >+ >+ for (SIP_SSIZE_T i = 0; i < len; ++i) >+ { >+ PyObject *tup = PySequence_ITEM(sipPy, i); >+ >+ double first = PyFloat_AsDouble(PySequence_ITEM(tup, 0)); >+ double second = PyFloat_AsDouble(PySequence_ITEM(tup, 1)); >+ >+ ql->append(QPair<double, double>(first, second)); >+ } >+ >+ *sipCppPtr = ql; >+ >+ return sipGetState(sipTransferObj); >+%End >+}; >+%End >+%If (Qt_4_3_0 -) >+// QList<QPair<double, TYPE> > is implemented as a Python list of 2-element tuples. >+template<double, TYPE> >+%MappedType QList<QPair<double, TYPE> > >+{ >+%TypeHeaderCode >+#include <qlist.h> >+#include <qpair.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) >+ { >+ const QPair<double, TYPE> &p = sipCpp->at(i); >+ TYPE *t = new TYPE(p.second); >+ PyObject *pobj; >+ >+ if ((pobj = sipBuildResult(NULL, "(dB)", p.first, t, sipClass_TYPE, sipTransferObj)) == NULL) >+ { >+ Py_DECREF(l); >+ delete t; >+ >+ return NULL; >+ } >+ >+ PyList_SET_ITEM(l, i, pobj); >+ } >+ >+ return l; >+%End >+ >+%ConvertToTypeCode >+ SIP_SSIZE_T len; >+ >+ // Check the type if that is all that is required. >+ if (sipIsErr == NULL) >+ { >+ if (!PySequence_Check(sipPy) || (len = PySequence_Size(sipPy)) < 0) >+ return 0; >+ >+ for (SIP_SSIZE_T i = 0; i < len; ++i) >+ { >+ PyObject *tup = PySequence_ITEM(sipPy, i); >+ >+ if (!PySequence_Check(tup) || PySequence_Size(tup) != 2) >+ return 0; >+ >+ if (!sipCanConvertToInstance(PySequence_ITEM(tup, 1), sipClass_TYPE, SIP_NOT_NONE)) >+ return 0; >+ } >+ >+ return 1; >+ } >+ >+ QList<QPair<double, TYPE> > *ql = new QList<QPair<double, TYPE> >; >+ len = PySequence_Size(sipPy); >+ >+ for (SIP_SSIZE_T i = 0; i < len; ++i) >+ { >+ PyObject *tup = PySequence_ITEM(sipPy, i); >+ double d; >+ int state; >+ >+ d = PyFloat_AsDouble(PySequence_ITEM(tup, 0)); >+ TYPE *t = reinterpret_cast<TYPE *>(sipConvertToInstance(PySequence_ITEM(tup, 1), sipClass_TYPE, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); >+ >+ if (*sipIsErr) >+ { >+ sipReleaseInstance(t, sipClass_TYPE, state); >+ >+ delete ql; >+ return 0; >+ } >+ >+ ql->append(QPair<double, TYPE>(d, *t)); >+ >+ sipReleaseInstance(t, sipClass_TYPE, state); >+ } >+ >+ *sipCppPtr = ql; >+ >+ return sipGetState(sipTransferObj); >+%End >+}; >+%End >+ >+// QList<double> is implemented as a Python list of doubles. >+%MappedType QList<double> >+{ >+%TypeHeaderCode >+#include <qlist.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) >+ { >+ PyObject *pobj; >+ >+ if ((pobj = PyFloat_FromDouble(sipCpp->value(i))) == NULL) >+ { >+ Py_DECREF(l); >+ >+ return NULL; >+ } >+ >+ PyList_SET_ITEM(l, i, pobj); >+ } >+ >+ return l; >+%End >+ >+%ConvertToTypeCode >+ // Check the type if that is all that is required. >+ if (sipIsErr == NULL) >+ return (PySequence_Check(sipPy) && PySequence_Size(sipPy) >= 0); >+ >+ QList<double> *ql = new QList<double>; >+ SIP_SSIZE_T len = PySequence_Size(sipPy); >+ >+ for (SIP_SSIZE_T i = 0; i < len; ++i) >+ ql->append(PyFloat_AsDouble(PySequence_ITEM(sipPy, i))); >+ >+ *sipCppPtr = ql; >+ >+ return sipGetState(sipTransferObj); >+%End >+}; >+ >+%End
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 322349
: 233763