FS#48734 - [python-pyqt5] Unable to import QtTest after updating to Qt-5.6
Attached to Project:
Arch Linux
Opened by Clayton Craft (craftyguy) - Tuesday, 29 March 2016, 06:23 GMT
Last edited by Doug Newgard (Scimmia) - Friday, 06 January 2017, 21:21 GMT
Opened by Clayton Craft (craftyguy) - Tuesday, 29 March 2016, 06:23 GMT
Last edited by Doug Newgard (Scimmia) - Friday, 06 January 2017, 21:21 GMT
|
Details
Description:
After updating qt5-* to 5.6, I am unable to import the QtTest library in python-pyqt5. The problem goes away when python-pyqt5 (which seems to still be at 5.5 in the official repo) is manually built against qt5.6 (using PKGBUILD from rsync.archlinux.org::abs/x86_64/extra/pyqt5). $ python -c "from PyQt5 import QtTest" Traceback (most recent call last): File "<string>", line 1, in <module> ImportError: /usr/lib/python3.5/site-packages/PyQt5/QtTest.so: undefined symbol: _Z19qt_handleMouseEventP7QWindowRK7QPointFS3_6QFlagsIN2Qt11MouseButtonEES4_INS5_16KeyboardModifierEE Additional info: * package version(s) Name : pyqt5-common Version : 5.5.1-2 Name : python-pyqt5 Version : 5.5.1-2 Name : qt5-base Version : 5.6.0-2 Full pacman -Qi is attached Steps to reproduce: 1) update to qt5.6 in official repo using pacman 2) import QtTest: $ python -c "from PyQt5 import QtTest" |
This task depends upon
When I demangle the missing symbol, I get:
qt_handleMouseEvent(QWindow*, QPointF const&, QPointF const&, QFlags<Qt::MouseButton>, QFlags<Qt::KeyboardModifier>)
Looking at the Qt 5.6 header diff for qtest.h, I see:
-Q_GUI_EXPORT void qt_handleMouseEvent(QWindow *w, const QPointF & local, const QPointF & global, Qt::MouseButtons b, Qt::KeyboardModifiers mods = Qt::NoModifier);
+Q_GUI_EXPORT void qt_handleMouseEvent(QWindow *w, const QPointF &local, const QPointF &global, Qt::MouseButtons b, Qt::KeyboardModifiers mods, int timestamp);
(seedevelopment@qt-project.org/msg22054.html"> https://www.mail-archive.com/development@qt-project.org/msg22054.html)
It looks to me like this either was an unintentional ABI break from Qt, or qt_handleMouseEvent doesn't qualify as public API even though it's in a public header with a Q_GUI_EXPORT.
Maybe it should be added to rebuild.list either way, as it surely uses *a lot* of Qt, and there's a chance it'll break?
development@qt-project.org/msg23663.html"> https://www.mail-archive.com/development@qt-project.org/msg23663.html
So I guess since PyQt uses QtTest, it should indeed land on the rebuild.list.