[PyQt] Build issues with sipconfiq
Hans-Peter Jansen
hpj at urpla.net
Fri Sep 13 13:51:36 BST 2019
Am Donnerstag, 12. September 2019, 17:49:31 CEST schrieb Hans-Peter Jansen:
>
> The build fails, because sipconfig doesn't expand some macros anymore, but
> nothing changed with sip and PyQt5 meanwhile (well, Qt was updated to
> 5.13.1):
Well, I not sure anymore, that this isn't related to some sip/PyQt5 upgrade.
What's for sure, that sipconfig.SIPModuleMakefile fails to properly expand
$$[QT_INSTALL_LIBS]. Question is, where this came from in the first place.
Except from the generated Makefile:
LIBS = -L/home/abuild/rpmbuild/BUILD/PyQxtGlobalShortcut-0.2.3/build/
temp.linux-x86_64-2.7 -L/usr/lib64 -L/usr/X11R6/lib -lQxtGlobalShortcut -
lpython2.7 -lQt5Core -L$$[QT_INSTALL_LIBS] -lpthread -lQt5Gui -L$$
[QT_INSTALL_LIBS] $$[QT_INSTALL_LIBS]/libQt5Core.so -lpthread -lQt5Widgets -
lQt5PrintSupport -lXext -lX11 -lm -lpthread
Interestingly, Qt5Core is there already, but then it's appearing again within
the unexpanded macros, while the other Qt5 libraries arguments are dealt with
just fine.
sipconfig.Configuration is called with a config dict containing:
[ 13s] cfg:
[ 13s] {'pyqt_sip_dir': '/usr/share/sip/PyQt5',
[ 13s] 'pyqt_sip_flags': '-n PyQt5.sip -t WS_X11 -t Qt_5_13_0',
[ 13s] 'qt_data_dir': '/usr/share/qt5',
[ 13s] 'qt_dir': '/usr',
[ 13s] 'qt_edition': 'free',
[ 13s] 'qt_framework': 0,
[ 13s] 'qt_inc_dir': '/usr/include/qt5',
[ 13s] 'qt_lib_dir': '/usr/lib64',
[ 13s] 'qt_threaded': 1,
[ 13s] 'qt_version': 331009,
[ 13s] 'qt_winconfig': 'shared'}
which looks like all properties are set up correctly.
The QT_INSTALL_LIBS macro seems to stem from a qmake property:
[ 13s] qmake_props:
[...]
[ 13s] 'QT_INSTALL_LIBS': '/usr/lib64',
so it must be crept in somewhere internal to sipconfig.
With this hack appended:
with open('Makefile', 'r+') as fd:
mf = fd.read()
newmf = mf.replace('-L$$[QT_INSTALL_LIBS] ', '')
newmf = newmf.replace('$$[QT_INSTALL_LIBS]/libQt5Core.so ', '')
if mf != newmf:
fd.seek(0)
fd.write(newmf)
to the configure script:
https://github.com/frispete/PyQxtGlobalShortcut/blob/master/pyqxtgs/
configure.py
the build succeeds again. Hence, it looks like a sipconfig regression of some
kind.
The fixed linking command is now:
g++ -shared -Wl,--version-script=QxtGlobalShortcut.exp -o QxtGlobalShortcut.so
sipQxtGlobalShortcutcmodule.o sipQxtGlobalShortcutQxtGlobalShortcut.o -L/home/
abuild/rpmbuild/BUILD/PyQxtGlobalShortcut-0.2.3/build/temp.linux-x86_64-3.7 -
L/usr/lib64 -L/usr/X11R6/lib -lQxtGlobalShortcut -lpython3.7m -lQt5Core -
lpthread -lQt5Gui -lpthread -lQt5Widgets -lQt5PrintSupport -lXext -lX11 -lm -
lpthread
Apart from repeated -lpthread arguments, it's looking sane again, and working
fine.
It would be nice to locate and fix the source of this issue properly in order
to dispense with such gross hacks, wouldn't it?
Thanks,
Pete
More information about the PyQt
mailing list