mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-08 22:45:43 +00:00
extra/pyqt5 to 5.8-2
This commit is contained in:
parent
3059c6b86a
commit
c11d8f9ea2
3 changed files with 69 additions and 27 deletions
|
@ -13,7 +13,7 @@ pkgbase=pyqt5
|
||||||
pkgname=('pyqt5-common' 'python-pyqt5' 'python2-pyqt5')
|
pkgname=('pyqt5-common' 'python-pyqt5' 'python2-pyqt5')
|
||||||
pkgver=5.8
|
pkgver=5.8
|
||||||
_pkgver=$pkgver
|
_pkgver=$pkgver
|
||||||
pkgrel=1
|
pkgrel=2
|
||||||
arch=('i686' 'x86_64')
|
arch=('i686' 'x86_64')
|
||||||
url="http://riverbankcomputing.co.uk/software/pyqt/intro"
|
url="http://riverbankcomputing.co.uk/software/pyqt/intro"
|
||||||
license=('GPL')
|
license=('GPL')
|
||||||
|
@ -21,18 +21,21 @@ makedepends=('python-sip' 'python2-sip' 'python-opengl' 'python2-opengl'
|
||||||
'python2-dbus' 'python-dbus' 'qt5-connectivity'
|
'python2-dbus' 'python-dbus' 'qt5-connectivity'
|
||||||
'qt5-multimedia' 'qt5-tools' 'qt5-serialport' 'qt5-svg'
|
'qt5-multimedia' 'qt5-tools' 'qt5-serialport' 'qt5-svg'
|
||||||
'qt5-webkit' 'qt5-websockets' 'qt5-x11extras')
|
'qt5-webkit' 'qt5-websockets' 'qt5-x11extras')
|
||||||
source=("http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-$pkgver/PyQt5_gpl-$pkgver.tar.gz"
|
source=("http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-$pkgver/PyQt5_gpl-$pkgver.tar.gz" "pyqt-5.8-segfault.patch"
|
||||||
'opengles-hack.patch')
|
'opengles-hack.patch')
|
||||||
md5sums=('ac04c0bfc1f05f5a1c2a1edd2640235c'
|
md5sums=('ac04c0bfc1f05f5a1c2a1edd2640235c'
|
||||||
|
'de7b2781874ff0c7c0d710f718cfa01a'
|
||||||
'ad09b1c84c26d5e92de192477cb3a2d1')
|
'ad09b1c84c26d5e92de192477cb3a2d1')
|
||||||
|
|
||||||
prepare() {
|
prepare() {
|
||||||
pushd PyQt5_gpl-${_pkgver}
|
pushd PyQt5_gpl-${_pkgver}
|
||||||
# Support Qt 5.8
|
patch -Np1 -i "${srcdir}/pyqt-5.8-segfault.patch"
|
||||||
# patch -p1 -i ../pyqt-qt5.8.patch
|
|
||||||
patch -p1 -i ../opengles-hack.patch
|
patch -p1 -i ../opengles-hack.patch
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
# Support new versions of Qt - don't remove, needs to be reapplied after every new Qt release
|
||||||
|
# patch -p1 -i ../pyqt-support-new-qt.patch
|
||||||
|
|
||||||
# The additional include path was removed due to this line, I don't really know why they are doing this...
|
# 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
|
||||||
|
|
||||||
|
|
62
extra/pyqt5/pyqt-5.8-segfault.patch
Normal file
62
extra/pyqt5/pyqt-5.8-segfault.patch
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
--- 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)
|
|
@ -1,26 +1,3 @@
|
||||||
diff -ru a/sip/QtCore/qnamespace.sip b/sip/QtCore/qnamespace.sip
|
|
||||||
--- a/sip/QtCore/qnamespace.sip 2016-12-25 18:56:11.000000000 +0100
|
|
||||||
+++ b/sip/QtCore/qnamespace.sip 2017-01-24 12:22:19.025652899 +0100
|
|
||||||
@@ -209,8 +209,6 @@
|
|
||||||
WindowContextHelpButtonHint,
|
|
||||||
WindowShadeButtonHint,
|
|
||||||
WindowStaysOnTopHint,
|
|
||||||
- WindowOkButtonHint,
|
|
||||||
- WindowCancelButtonHint,
|
|
||||||
WindowStaysOnBottomHint,
|
|
||||||
WindowCloseButtonHint,
|
|
||||||
MacWindowToolBarButtonHint,
|
|
||||||
@@ -232,6 +230,10 @@
|
|
||||||
%If (Qt_5_5_0 -)
|
|
||||||
MaximizeUsingFullscreenGeometryHint,
|
|
||||||
%End
|
|
||||||
+%If (- Qt_5_8_0)
|
|
||||||
+ WindowOkButtonHint,
|
|
||||||
+ WindowCancelButtonHint,
|
|
||||||
+%End
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef QFlags<Qt::WindowType> WindowFlags;
|
|
||||||
diff -ru a/sip/QtCore/QtCoremod.sip b/sip/QtCore/QtCoremod.sip
|
diff -ru a/sip/QtCore/QtCoremod.sip b/sip/QtCore/QtCoremod.sip
|
||||||
--- a/sip/QtCore/QtCoremod.sip 2016-12-25 18:56:11.000000000 +0100
|
--- a/sip/QtCore/QtCoremod.sip 2016-12-25 18:56:11.000000000 +0100
|
||||||
+++ b/sip/QtCore/QtCoremod.sip 2017-01-24 12:03:50.707514377 +0100
|
+++ b/sip/QtCore/QtCoremod.sip 2017-01-24 12:03:50.707514377 +0100
|
Loading…
Reference in a new issue