mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2025-01-17 23:34:07 +00:00
extra/pyqt5 to 5.8.2-2
This commit is contained in:
parent
f338dd7d09
commit
c78df793b4
2 changed files with 34 additions and 91 deletions
|
@ -11,8 +11,7 @@
|
|||
|
||||
pkgbase=pyqt5
|
||||
pkgname=('pyqt5-common' 'python-pyqt5' 'python2-pyqt5')
|
||||
pkgver=5.8
|
||||
_pkgver=$pkgver
|
||||
pkgver=5.8.2
|
||||
pkgrel=2
|
||||
arch=('i686' 'x86_64')
|
||||
url="http://riverbankcomputing.co.uk/software/pyqt/intro"
|
||||
|
@ -21,15 +20,13 @@ 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"
|
||||
source=("http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-$pkgver/PyQt5_gpl-$pkgver.tar.gz"
|
||||
'opengles-hack.patch')
|
||||
md5sums=('ac04c0bfc1f05f5a1c2a1edd2640235c'
|
||||
'de7b2781874ff0c7c0d710f718cfa01a'
|
||||
'ad09b1c84c26d5e92de192477cb3a2d1')
|
||||
sha512sums=('8b765b9ae6210b7312a2dc6ed94d2664ae569625fe8a27443bae4230d9d9c00e0cf3b4be6904c66ebceff5cd5bbd19a5a9794a0b3222c8098a55f0b94fc8d89b'
|
||||
'6be0458a53dc96919d2dfe7a3e932ac663e6e9ebcc2516809f8c53ad923566bf3f96f622ee52ee8a97bf1bea2fc72f78e60333daa6bb3555ff3ca8371141f2b7')
|
||||
|
||||
prepare() {
|
||||
pushd PyQt5_gpl-${_pkgver}
|
||||
patch -Np1 -i "${srcdir}/pyqt-5.8-segfault.patch"
|
||||
pushd PyQt5_gpl-$pkgver
|
||||
patch -p1 -i ../opengles-hack.patch
|
||||
popd
|
||||
|
||||
|
@ -37,13 +34,13 @@ prepare() {
|
|||
# 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...
|
||||
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 \
|
||||
|
@ -55,7 +52,7 @@ build() {
|
|||
|
||||
make
|
||||
|
||||
cd "$srcdir"/PyQt5_gpl-${_pkgver}-py2
|
||||
cd "$srcdir"/PyQt5_gpl-$pkgver-py2
|
||||
python2 configure.py \
|
||||
--confirm-license \
|
||||
--no-sip-files \
|
||||
|
@ -72,11 +69,11 @@ package_pyqt5-common(){
|
|||
pkgdesc="Common PyQt files shared between python-pyqt5 and python2-pyqt5"
|
||||
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(){
|
||||
|
@ -90,14 +87,18 @@ 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-webengine: QtWebEngine, QtWebEngineCore, QtWebEngineWidgets'
|
||||
'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(){
|
||||
|
@ -111,18 +112,22 @@ 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-webengine: QtWebEngine, QtWebEngineCore, QtWebEngineWidgets'
|
||||
'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
|
||||
}
|
||||
|
|
|
@ -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)
|
Loading…
Reference in a new issue