diff options
Diffstat (limited to 'libre/pyqt5')
-rw-r--r-- | libre/pyqt5/PKGBUILD | 148 | ||||
-rw-r--r-- | libre/pyqt5/pyqt-5.8-segfault.patch | 62 |
2 files changed, 110 insertions, 100 deletions
diff --git a/libre/pyqt5/PKGBUILD b/libre/pyqt5/PKGBUILD index a2ccad1e3..a9519ada5 100644 --- a/libre/pyqt5/PKGBUILD +++ b/libre/pyqt5/PKGBUILD @@ -20,46 +20,78 @@ pkgbase=pyqt5 pkgname=('pyqt5-common' 'python-pyqt5' 'python2-pyqt5') -pkgver=5.8 -_pkgver=$pkgver -pkgrel=2.parabola2 +pkgver=5.8.2 +pkgrel=2.parabola1 arch=('i686' 'x86_64' 'armv7h') url="http://riverbankcomputing.co.uk/software/pyqt/intro" license=('GPL') makedepends=('python-sip' 'python2-sip' 'python-opengl' 'python2-opengl' 'python2-dbus' 'python-dbus' 'qt5-connectivity' 'qt5-multimedia' 'qt5-tools' 'qt5-serialport' 'qt5-svg' - 'qt5-webkit' 'qt5-websockets' 'qt5-x11extras') -source=("http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-$pkgver/PyQt5_gpl-$pkgver.tar.gz" "pyqt-5.8-segfault.patch") -md5sums=('ac04c0bfc1f05f5a1c2a1edd2640235c' - 'de7b2781874ff0c7c0d710f718cfa01a') -source+=('pyqt5-verbose-configure.patch') -md5sums+=('741c4b3ed85e4bf306ae2e73826d8a8b') -source_armv7h=('opengles-hack.patch') -md5sums_armv7h=('ad09b1c84c26d5e92de192477cb3a2d1') + 'qt5-webkit' 'qt5-websockets' 'qt5-x11extras') +source=("http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-$pkgver/PyQt5_gpl-$pkgver.tar.gz" + 'pyqt5-verbose-configure.patch' + 'opengles-hack.patch') +sha512sums=('8b765b9ae6210b7312a2dc6ed94d2664ae569625fe8a27443bae4230d9d9c00e0cf3b4be6904c66ebceff5cd5bbd19a5a9794a0b3222c8098a55f0b94fc8d89b' + '139780a2a105605684e8e13b967b8bf8738e6ea0e7793179600c628a179695e4b05952da6d60e67ffac56857afdb08a976896e0ae25a9dbf40085b7fe39f9283' + '6be0458a53dc96919d2dfe7a3e932ac663e6e9ebcc2516809f8c53ad923566bf3f96f622ee52ee8a97bf1bea2fc72f78e60333daa6bb3555ff3ca8371141f2b7') prepare() { - pushd PyQt5_gpl-${_pkgver} - patch -Np1 -i "${srcdir}/pyqt-5.8-segfault.patch" + pushd PyQt5_gpl-$pkgver + case "$CARCH" in armv7h) patch -p1 -i ../opengles-hack.patch;; esac - patch -Np1 -i "${srcdir}/pyqt5-verbose-configure.patch" + patch -p1 -i ../pyqt5-verbose-configure.patch popd # The additional include path was removed due to this line, I don't really know why they are doing this... - sed -i '/target_config.dbus_inc_dirs = \[\]/d' PyQt5_gpl-${_pkgver}/configure.py + sed -i '/target_config.dbus_inc_dirs = \[\]/d' PyQt5_gpl-$pkgver/configure.py - cp -a PyQt5_gpl-${_pkgver}{,-py2} + cp -a PyQt5_gpl-$pkgver{,-py2} } build() { - cd "$srcdir"/PyQt5_gpl-${_pkgver} + cd "$srcdir"/PyQt5_gpl-$pkgver python configure.py \ --confirm-license \ --no-sip-files \ --qsci-api \ + --verbose \ + --enable QtBluetooth \ + --enable QtCore \ + --enable QtDBus \ + --enable QtDesigner \ + --enable QtGui \ + --enable QtHelp \ + --enable QtLocation \ + --enable QtMultimedia \ + --enable QtMultimediaWidgets \ + --enable QtNetwork \ + --enable QtNfc \ + --enable QtOpenGL \ + --enable QtPositioning \ + --enable QtPrintSupport \ + --enable QtQml \ + --enable QtQuick \ + --enable QtQuickWidgets \ + --enable QtSensors \ + --enable QtSerialPort \ + --enable QtSql \ + --enable QtSvg \ + --enable QtTest \ + --enable QtWebChannel \ + --enable QtWebKit \ + --enable QtWebKitWidgets \ + --enable QtWebSockets \ + --enable QtWidgets \ + --enable QtX11Extras \ + --enable QtXml \ + --enable QtXmlPatterns \ + --enable _QOpenGLFunctions_2_0 \ + --enable _QOpenGLFunctions_2_1 \ + --enable _QOpenGLFunctions_4_1_Core \ -q /usr/bin/qmake-qt5 # Thanks Gerardo for the rpath fix @@ -67,11 +99,45 @@ build() { make - cd "$srcdir"/PyQt5_gpl-${_pkgver}-py2 + cd "$srcdir"/PyQt5_gpl-$pkgver-py2 python2 configure.py \ --confirm-license \ --no-sip-files \ --qsci-api \ + --verbose \ + --enable QtBluetooth \ + --enable QtCore \ + --enable QtDBus \ + --enable QtDesigner \ + --enable QtGui \ + --enable QtHelp \ + --enable QtLocation \ + --enable QtMultimedia \ + --enable QtMultimediaWidgets \ + --enable QtNetwork \ + --enable QtNfc \ + --enable QtOpenGL \ + --enable QtPositioning \ + --enable QtPrintSupport \ + --enable QtQml \ + --enable QtQuick \ + --enable QtQuickWidgets \ + --enable QtSensors \ + --enable QtSerialPort \ + --enable QtSql \ + --enable QtSvg \ + --enable QtTest \ + --enable QtWebChannel \ + --enable QtWebKit \ + --enable QtWebKitWidgets \ + --enable QtWebSockets \ + --enable QtWidgets \ + --enable QtX11Extras \ + --enable QtXml \ + --enable QtXmlPatterns \ + --enable _QOpenGLFunctions_2_0 \ + --enable _QOpenGLFunctions_2_1 \ + --enable _QOpenGLFunctions_4_1_Core \ -q /usr/bin/qmake-qt5 # Thanks Gerardo for the rpath fix @@ -81,18 +147,18 @@ build() { } package_pyqt5-common(){ - pkgdesc="Common PyQt files shared between python-pyqt5 and python2-pyqt5" + pkgdesc="Common PyQt files shared between python-pyqt5 and python2-pyqt5, without nonfree qt5-webengine support" depends=('qt5-base') - cd PyQt5_gpl-${_pkgver} - install -Dm644 PyQt5.api "${pkgdir}"/usr/share/qt/qsci/api/python/PyQt5.api + cd PyQt5_gpl-$pkgver + install -Dm644 PyQt5.api "$pkgdir"/usr/share/qt/qsci/api/python/PyQt5.api - install -d "${pkgdir}"/usr/share/sip/PyQt5 - cp -a sip/* "${pkgdir}"/usr/share/sip/PyQt5 + install -d "$pkgdir"/usr/share/sip/PyQt5 + cp -a sip/* "$pkgdir"/usr/share/sip/PyQt5 } package_python-pyqt5(){ - pkgdesc="A set of Python 3.x bindings for the Qt5 toolkit" + pkgdesc="A set of Python 3.x bindings for the Qt5 toolkit, without nonfree qt5-webengine support" depends=('python-sip' 'pyqt5-common') optdepends=('python-opengl: enable OpenGL 3D graphics in PyQt applications' 'python-dbus: for python-dbus mainloop support' @@ -102,18 +168,21 @@ package_python-pyqt5(){ 'qt5-webkit: QtWebKit, QtWebKitWidgets' 'qt5-xmlpatterns: QtXmlPatterns' 'qt5-declarative: QtQml, qmlplugin' - 'qt5-serialport: QtSerialPort') + 'qt5-serialport: QtSerialPort' + 'qt5-websockets: QtWebSockets' + 'qt5-connectivity: QtNfc, QtBluetooth' + 'qt5-x11extras: QtX11Extras') - cd PyQt5_gpl-${_pkgver} + cd PyQt5_gpl-$pkgver # INSTALL_ROOT is needed for the QtDesigner module, the other Makefiles use DESTDIR - make DESTDIR="${pkgdir}" INSTALL_ROOT="${pkgdir}" install + make DESTDIR="$pkgdir" INSTALL_ROOT="$pkgdir" install # Provided by pyqt-common - rm "${pkgdir}"/usr/share/qt/qsci/api/python/PyQt5.api + rm "$pkgdir"/usr/share/qt/qsci/api/python/PyQt5.api } package_python2-pyqt5(){ - pkgdesc="A set of Python 2.x bindings for the Qt5 toolkit" + pkgdesc="A set of Python 2.x bindings for the Qt5 toolkit, without nonfree qt5-webengine support" depends=('python2-sip' 'pyqt5-common') optdepends=('python2-opengl: enable OpenGL 3D graphics in PyQt applications' 'python-dbus: for python-dbus mainloop support' @@ -123,18 +192,21 @@ package_python2-pyqt5(){ 'qt5-webkit: QtWebKit, QtWebKitWidgets' 'qt5-xmlpatterns: QtXmlPatterns' 'qt5-declarative: QtQml, qmlplugin' - 'qt5-serialport: QtSerialPort') + 'qt5-serialport: QtSerialPort' + 'qt5-websockets: QtWebSockets' + 'qt5-connectivity: QtNfc, QtBluetooth' + 'qt5-x11extras: QtX11Extras') - cd PyQt5_gpl-${_pkgver}-py2 + cd PyQt5_gpl-$pkgver-py2 # INSTALL_ROOT is needed for the QtDesigner module, the other Makefiles use DESTDIR - make DESTDIR="${pkgdir}" INSTALL_ROOT="${pkgdir}" install + make DESTDIR="$pkgdir" INSTALL_ROOT="$pkgdir" install # Fix conflicts with python-pyqt5 - mv "${pkgdir}"/usr/bin/{,python2-}pyuic5 - mv "${pkgdir}"/usr/bin/{,python2-}pylupdate5 - mv "${pkgdir}"/usr/bin/{,python2-}pyrcc5 + mv "$pkgdir"/usr/bin/{,python2-}pyuic5 + mv "$pkgdir"/usr/bin/{,python2-}pylupdate5 + mv "$pkgdir"/usr/bin/{,python2-}pyrcc5 - rm "${pkgdir}"/usr/lib/qt/plugins/designer/libpyqt5.so - rm "${pkgdir}"/usr/lib/qt/plugins/PyQt5/libpyqt5qmlplugin.so - rm "${pkgdir}"/usr/share/qt/qsci/api/python/PyQt5.api + rm "$pkgdir"/usr/lib/qt/plugins/designer/libpyqt5.so + rm "$pkgdir"/usr/lib/qt/plugins/PyQt5/libpyqt5qmlplugin.so + rm "$pkgdir"/usr/share/qt/qsci/api/python/PyQt5.api } diff --git a/libre/pyqt5/pyqt-5.8-segfault.patch b/libre/pyqt5/pyqt-5.8-segfault.patch deleted file mode 100644 index a8d1564af..000000000 --- a/libre/pyqt5/pyqt-5.8-segfault.patch +++ /dev/null @@ -1,62 +0,0 @@ ---- a/qpy/QtQml/qpyqml_register_type.cpp 2017-02-23 03:32:51.000000000 +0100 -+++ b/qpy/QtQml/qpyqml_register_type.cpp 2017-02-25 03:32:58.000000000 +0100 -@@ -124,13 +124,13 @@ - - #define QPYQML_TYPE_INIT(n) \ - case n##U: \ -- QPyQmlObject##n::staticMetaObject = *mo; \ -+ QPyQmlObject##n::staticMetaObject = static_mo; \ - QPyQmlObject##n::attachedPyType = attached; \ - rt->typeId = qRegisterNormalizedMetaType<QPyQmlObject##n *>(ptr_name); \ - rt->listId = qRegisterNormalizedMetaType<QQmlListProperty<QPyQmlObject##n> >(list_name); \ - rt->objectSize = ctor ? sizeof(QPyQmlObject##n) : 0; \ - if (ctor) rt->create = QQmlPrivate::createInto<QPyQmlObject##n>; else rt->create = 0; \ -- rt->metaObject = mo; \ -+ rt->metaObject = &QPyQmlObject##n::staticMetaObject; \ - rt->attachedPropertiesFunction = attached_mo ? QPyQmlObject##n::attachedProperties : 0; \ - rt->attachedPropertiesMetaObject = attached_mo; \ - rt->parserStatusCast = is_parser_status ? QQmlPrivate::StaticCastSelector<QPyQmlObject##n,QQmlParserStatus>::cast() : -1; \ -@@ -219,7 +219,33 @@ - return 0; - } - -- const QMetaObject *mo = pyqt5_qtqml_get_qmetaobject(py_type); -+ const QMetaObject *orig_mo = pyqt5_qtqml_get_qmetaobject(py_type); -+ QMetaObject static_mo = *orig_mo; -+ -+#if QT_VERSION >= 0x050800 -+ // Qt v5.8.0 changed the way properties are handled by directly calling a -+ // class's static meta-call (if there was one) directly. This bypasses the -+ // proxy and calls the static meta-call with a pointer to the proxy rather -+ // than a pointer to the real object. To work round this we clone the -+ // QMetaObject chain and remove the references to the static meta-call -+ // forcing the earlier behaviour. This approach may also work with earlier -+ // versions of Qt - but if it ain't broke... -+ static_mo.d.static_metacall = 0; -+ -+ QMetaObject *sub_mo = &static_mo; -+ -+ // By retaining the QObject static meta-object we don't appear to be a -+ // gadget. -+ for (const QMetaObject *mo = sub_mo->d.superdata; mo != &QObject::staticMetaObject; mo = mo->d.superdata) -+ { -+ QMetaObject *new_mo = new QMetaObject; -+ *new_mo = *mo; -+ new_mo->d.static_metacall = 0; -+ -+ sub_mo->d.superdata = new_mo; -+ sub_mo = new_mo; -+ } -+#endif - - // See if the type is a parser status. - bool is_parser_status = PyType_IsSubtype(py_type, -@@ -272,7 +298,7 @@ - - if (qquickitem_register) - { -- sipErrorState estate = qquickitem_register(py_type, mo, ptr_name, -+ sipErrorState estate = qquickitem_register(py_type, orig_mo, ptr_name, - list_name, &rt); - - if (estate == sipErrorFail) |