QGIS/python/PyQt/CMakeLists.txt
Matthias Kuhn ae3db0a1bf Fix single process build
A race condition triggered that sometimes the file
output/python/qgis/__init__.py was not created before a python uic
compiler started and therefore the required module could not be
imported.

This leads to errors like

[ 82%] Generating ui_dialogAbout.py
Traceback (most recent call last):
  File "../../../../../scripts/pyuic-wrapper.py", line 26, in <module>
    import qgis.PyQt.uic.pyuic
ImportError: No module named qgis.PyQt.uic.pyuic
python/plugins/GdalTools/tools/CMakeFiles/zzz-GdalTools-2-depend.dir/build.make:117:
recipe for target 'python/plugins/GdalTools/tools/ui_dialogAbout.py'
failed
make[2]: *** [python/plugins/GdalTools/tools/ui_dialogAbout.py] Error 1
CMakeFiles/Makefile2:5074: recipe for target
'python/plugins/GdalTools/tools/CMakeFiles/zzz-GdalTools-2-depend.dir/all'
failed
make[1]: ***
[python/plugins/GdalTools/tools/CMakeFiles/zzz-GdalTools-2-depend.dir/all]
Error 2
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2
2016-07-12 11:40:00 +02:00

46 lines
1.1 KiB
CMake

SET (QGIS_PYQT_DIR ${PYTHON_SITE_PACKAGES_DIR}/qgis/PyQt)
SET (PYTHON_OUTPUT_DIRECTORY ${QGIS_OUTPUT_DIRECTORY}/python/qgis/PyQt)
SET(PYQT_COMPAT_FILES
__init__.py
QtWidgets.py
QtCore.py
QtGui.py
QtPrintSupport.py
QtWebKit.py
QtWebKitWidgets.py
QtNetwork.py
QtXml.py
QtSql.py
QtTest.py
QtSvg.py
Qsci.py
uic/__init__.py
uic/pyuic.py
uic/properties.py
)
ADD_CUSTOM_TARGET(pyqtcompat ALL)
ADD_DEPENDENCIES(pyqtcompat pyutils)
IF(ENABLE_QT5)
SET(PYQT_PREFIX PyQt5)
ELSE(ENABLE_QT5)
SET(PYQT_PREFIX PyQt4)
ENDIF(ENABLE_QT5)
FOREACH(pyfile ${PYQT_COMPAT_FILES})
GET_FILENAME_COMPONENT(_dir ${pyfile} PATH)
SET(pyfile ${PYQT_PREFIX}/${pyfile})
ADD_CUSTOM_COMMAND(TARGET pyqtcompat
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory ${PYTHON_OUTPUT_DIRECTORY}/${_dir}
COMMAND ${CMAKE_COMMAND} -E copy ${pyfile} ${PYTHON_OUTPUT_DIRECTORY}/${_dir}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS ${pyfile}
)
INSTALL(FILES ${pyfile} DESTINATION "${QGIS_PYQT_DIR}/${_dir}")
ENDFOREACH(pyfile)
PY_COMPILE(pyqtcompat "${PYTHON_OUTPUT_DIRECTORY}")