Index: head/devel/py-qt4-core/Makefile =================================================================== --- head/devel/py-qt4-core/Makefile (revision 442474) +++ head/devel/py-qt4-core/Makefile (revision 442475) @@ -1,51 +1,52 @@ # Created by: Danny Pansters # $FreeBSD$ PORTNAME= core +PORTREVISION= 2 PORTEPOCH= 1 CATEGORIES= devel python MAINTAINER= kde@FreeBSD.org COMMENT= Python bindings for the Qt4 toolkit, QtCore module CONFIGURE_ARGS= --enable QtCore PYQT_DIST= yes USES= python pyqt:4 USE_PYTHON= py3kplist USE_PYQT= sip USE_QT4= corelib qmake_build moc_build OPTIONS_DEFINE= API DEBUG OPTIONS_DEFAULT=API OPTIONS_SUB= yes API_DESC= Install QtCore API for QScintilla2 API_CONFIGURE_ON= --qsci-api --qsci-api-destdir=${QSCIDIR} API_CONFIGURE_OFF= --no-qsci-api API_LIB_DEPENDS= libqscintilla2.so:devel/qscintilla2 DEBUG_CONFIGURE_ON= --debug --trace .include # Bug 180467: We need to remove the port_v${VERSION} directory that does not # correspond to the Python version being used to avoid failures in the # bytecompilation calls in post-install. PLIST_SUB+= PYTHON_MAJOR_VER="${PYTHON_MAJOR_VER}" post-patch: .if ${PYTHON_MAJOR_VER} == "2" ${RM} -r ${WRKSRC}/pyuic/uic/port_v3 .elif ${PYTHON_MAJOR_VER} == "3" ${RM} -r ${WRKSRC}/pyuic/uic/port_v2 .endif post-install: ${INSTALL_DATA} ${FILESDIR}/Qt.py ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/PyQt4 ${PYTHON_CMD} ${PYTHON_LIBDIR}/compileall.py \ -f -d ${PYTHONPREFIX_SITELIBDIR} \ ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/PyQt4 ${PYTHON_CMD} -O ${PYTHON_LIBDIR}/compileall.py \ -f -d ${PYTHONPREFIX_SITELIBDIR} \ ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/PyQt4 .include Index: head/devel/py-qt4-core/files/patch-sip_QtCore_qlist.sip =================================================================== --- head/devel/py-qt4-core/files/patch-sip_QtCore_qlist.sip (nonexistent) +++ head/devel/py-qt4-core/files/patch-sip_QtCore_qlist.sip (revision 442475) @@ -0,0 +1,238 @@ +Corrects a configure test, and adds explicate double handling +to qlist.sip on architectures where qreal != double + +Obtained from: https://gitweb.gentoo.org/repo/gentoo.git/tree/dev-python/PyQt4/files/PyQt4-4.7.3-qreal_float_support.patch + +--- sip/QtCore/qlist.sip.orig 2015-06-11 17:28:22 UTC ++++ sip/QtCore/qlist.sip +@@ -748,6 +748,230 @@ template + 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 > is implemented as a Python list of 2-element tuples. ++%MappedType QList > ++{ ++%TypeHeaderCode ++#include ++#include ++%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 &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 > *ql = new QList >; ++ 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(first, second)); ++ } ++ ++ *sipCppPtr = ql; ++ ++ return sipGetState(sipTransferObj); ++%End ++}; ++%End ++%If (Qt_4_3_0 -) ++// QList > is implemented as a Python list of 2-element tuples. ++template ++%MappedType QList > ++{ ++%TypeHeaderCode ++#include ++#include ++%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 &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 > *ql = new QList >; ++ 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(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(d, *t)); ++ ++ sipReleaseInstance(t, sipClass_TYPE, state); ++ } ++ ++ *sipCppPtr = ql; ++ ++ return sipGetState(sipTransferObj); ++%End ++}; ++%End ++ ++// QList is implemented as a Python list of doubles. ++%MappedType QList ++{ ++%TypeHeaderCode ++#include ++%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 *ql = new QList; ++ 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 + // QList is implemented as a Python list of floats. + %MappedType QList /DocType="list-of-float"/ + { Property changes on: head/devel/py-qt4-core/files/patch-sip_QtCore_qlist.sip ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property