Merge branch 'pyqt5_improvements' into 'master'

pyqt5: improve autodetection of tools and add flag support

See merge request ita1024/waf!2343
This commit is contained in:
ita1024 2022-06-09 06:26:40 +00:00
commit b0dc159bc4
2 changed files with 17 additions and 14 deletions

View File

@ -14,16 +14,19 @@ def options(opt):
opt.load('python pyqt5') opt.load('python pyqt5')
def configure(conf): def configure(conf):
# Recent UIC/RCC versions require explicit python generator selection
conf.env.QT_PYUIC_FLAGS = ['-g', 'python']
conf.env.QT_PYRCC_FLAGS = ['-g', 'python']
# Load also python to demonstrate mixed calls # Load also python to demonstrate mixed calls
conf.load('python pyqt5') conf.load('python pyqt5')
conf.check_python_version((2,7,4)) conf.check_python_version((2,7,4))
def build(bld): def build(bld):
# Demonstrates mixed usage of py and pyqt5 module, and tests also install_path and install_from # Demonstrates mixed usage of py and pyqt5 module, and tests also install_path and install_from
# (since generated files go into build it has to be reset inside the pyqt5 tool) # (since generated files go into build it has to be reset inside the pyqt5 tool)
bld(features="py pyqt5", source="src/sample.py src/firstgui.ui", install_path="${PREFIX}/play/", install_from="src/") bld(features="py pyqt5", source="src/sample.py src/firstgui.ui", install_path="${PREFIX}/play/", install_from="src/")
# Simple usage on a resource file. If a file referenced inside the resource changes it will be rebuilt # Simple usage on a resource file. If a file referenced inside the resource changes it will be rebuilt
# as the qrc XML is parsed and dependencies are calculated # as the qrc XML is parsed and dependencies are calculated
bld(features="pyqt5", source="sampleRes.qrc") bld(features="pyqt5", source="sampleRes.qrc")

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python #!/usr/bin/env python
# encoding: utf-8 # encoding: utf-8
# Federico Pellegrin, 2016-2019 (fedepell) adapted for Python # Federico Pellegrin, 2016-2022 (fedepell) adapted for Python
""" """
This tool helps with finding Python Qt5 tools and libraries, This tool helps with finding Python Qt5 tools and libraries,
@ -137,7 +137,7 @@ class pyrcc(Task.Task):
Processes ``.qrc`` files Processes ``.qrc`` files
""" """
color = 'BLUE' color = 'BLUE'
run_str = '${QT_PYRCC} ${SRC} -o ${TGT}' run_str = '${QT_PYRCC} ${QT_PYRCC_FLAGS} ${SRC} -o ${TGT}'
ext_out = ['.py'] ext_out = ['.py']
def rcname(self): def rcname(self):
@ -175,7 +175,7 @@ class ui5py(Task.Task):
Processes ``.ui`` files for python Processes ``.ui`` files for python
""" """
color = 'BLUE' color = 'BLUE'
run_str = '${QT_PYUIC} ${SRC} -o ${TGT}' run_str = '${QT_PYUIC} ${QT_PYUIC_FLAGS} ${SRC} -o ${TGT}'
ext_out = ['.py'] ext_out = ['.py']
class ts2qm(Task.Task): class ts2qm(Task.Task):
@ -216,17 +216,17 @@ def find_pyqt5_binaries(self):
self.find_program(['pyrcc5'], var='QT_PYRCC') self.find_program(['pyrcc5'], var='QT_PYRCC')
self.find_program(['pylupdate5'], var='QT_PYLUPDATE') self.find_program(['pylupdate5'], var='QT_PYLUPDATE')
elif getattr(Options.options, 'want_pyside2', True): elif getattr(Options.options, 'want_pyside2', True):
self.find_program(['pyside2-uic'], var='QT_PYUIC') self.find_program(['pyside2-uic','uic-qt5'], var='QT_PYUIC')
self.find_program(['pyside2-rcc'], var='QT_PYRCC') self.find_program(['pyside2-rcc','rcc-qt5'], var='QT_PYRCC')
self.find_program(['pyside2-lupdate'], var='QT_PYLUPDATE') self.find_program(['pyside2-lupdate','lupdate-qt5'], var='QT_PYLUPDATE')
elif getattr(Options.options, 'want_pyqt4', True): elif getattr(Options.options, 'want_pyqt4', True):
self.find_program(['pyuic4'], var='QT_PYUIC') self.find_program(['pyuic4'], var='QT_PYUIC')
self.find_program(['pyrcc4'], var='QT_PYRCC') self.find_program(['pyrcc4'], var='QT_PYRCC')
self.find_program(['pylupdate4'], var='QT_PYLUPDATE') self.find_program(['pylupdate4'], var='QT_PYLUPDATE')
else: else:
self.find_program(['pyuic5','pyside2-uic','pyuic4'], var='QT_PYUIC') self.find_program(['pyuic5','pyside2-uic','pyuic4','uic-qt5'], var='QT_PYUIC')
self.find_program(['pyrcc5','pyside2-rcc','pyrcc4'], var='QT_PYRCC') self.find_program(['pyrcc5','pyside2-rcc','pyrcc4','rcc-qt5'], var='QT_PYRCC')
self.find_program(['pylupdate5', 'pyside2-lupdate','pylupdate4'], var='QT_PYLUPDATE') self.find_program(['pylupdate5', 'pyside2-lupdate','pylupdate4','lupdate-qt5'], var='QT_PYLUPDATE')
if not env.QT_PYUIC: if not env.QT_PYUIC:
self.fatal('cannot find the uic compiler for python for qt5') self.fatal('cannot find the uic compiler for python for qt5')