From a9f42003e6935cc543d838993d53bc9a40fd0994 Mon Sep 17 00:00:00 2001 From: Martyn Gigg <martyn.gigg@stfc.ac.uk> Date: Wed, 22 Jan 2020 11:57:22 +0000 Subject: [PATCH] Add a wrapper script for internal pyuic script Refs #27631 --- buildconfig/CMake/ExternalSipPyQt4.cmake | 16 ++++++++++------ buildconfig/CMake/internal-pyuic.py.in | 3 +++ 2 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 buildconfig/CMake/internal-pyuic.py.in diff --git a/buildconfig/CMake/ExternalSipPyQt4.cmake b/buildconfig/CMake/ExternalSipPyQt4.cmake index cf9123222f2..d08a3210393 100644 --- a/buildconfig/CMake/ExternalSipPyQt4.cmake +++ b/buildconfig/CMake/ExternalSipPyQt4.cmake @@ -28,9 +28,13 @@ set(PYQT4_VERSION_STR "4.12.1" CACHE STRING "PyQt4's version as a human-readable set(PYQT4_VERSION_TAG "Qt_4_8_6" CACHE STRING "The Qt version tag used by PyQt4's .sip files" FORCE) set(PYQT4_SIP_DIR "${CMAKE_BINARY_DIR}/${_SIP_PYQT_INSTALL_DIR}/share/sip" CACHE PATH "The base directory where PyQt4's .sip files are installed" FORCE) set(PYQT4_SIP_FLAGS "-x VendorID -t WS_X11 -x PyQt_NoPrintRangeBug -t Qt_4_8_6" CACHE STRING "The SIP flags used to build PyQt4" FORCE) -set(_lib_site_packages ${CMAKE_BINARY_DIR}/${_SIP_PYQT_INSTALL_DIR}/lib/site-packages) -set(_pyqt4_lib_site_packages ${_lib_site_packages}/PyQt4) -set(PYQT4_PYUIC "${_pyqt4_lib_site_packages}/uic/pyuic.py" CACHE STRING "Location of the pyuic script" FORCE) +set(PRIVATE_PYQT_SITE_PACKAGES ${CMAKE_BINARY_DIR}/${_SIP_PYQT_INSTALL_DIR}/lib/site-packages) +set(_pyqt4_lib_site_packages ${PRIVATE_PYQT_SITE_PACKAGES}/PyQt4) + +# Write a wrapper pyuic script so it can find out internal copy of PyQt4 +set(PYQT4_PYUIC "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/internal-pyuic.py" CACHE STRING "Location of the pyuic script" FORCE) +configure_file(${CMAKE_MODULE_PATH}/internal-pyuic.py.in ${PYQT4_PYUIC} @ONLY) + ExternalProject_Add(extern-pyqt4 PREFIX ${_SIP_PYQT_DIR}/pyqt4 INSTALL_DIR ${_SIP_PYQT_INSTALL_DIR} @@ -51,7 +55,7 @@ ExternalProject_Add(extern-pyqt4 --no-deprecated --qmake=/usr/bin/qmake-qt4 --no-qsci-api - BUILD_COMMAND make 2> build.log + BUILD_COMMAND make -j24 2> build.log DEPENDS extern-pyqt4-sip ) @@ -59,13 +63,13 @@ ExternalProject_Add(extern-pyqt4 # We assume we only have to support a single-configuration build type on Linux file(WRITE ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/private-pyqt4.pth "import sys; sys.__plen = len(sys.path) -${_lib_site_packages} +${PRIVATE_PYQT_SITE_PACKAGES} ${_pyqt4_lib_site_packages} import sys; new = sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p = getattr(sys, '__egginsert', 0); sys.path[p:p] = new; sys.__egginsert = p + len(new) ") # Package PyQt. We assume this is for Python 3 -install(DIRECTORY ${_lib_site_packages}/PyQt4 +install(DIRECTORY ${PRIVATE_PYQT_SITE_PACKAGES}/PyQt4 DESTINATION ${LIB_DIR} PATTERN "__pycache__" EXCLUDE PATTERN "port_v2" EXCLUDE) diff --git a/buildconfig/CMake/internal-pyuic.py.in b/buildconfig/CMake/internal-pyuic.py.in new file mode 100644 index 00000000000..6cd825792ca --- /dev/null +++ b/buildconfig/CMake/internal-pyuic.py.in @@ -0,0 +1,3 @@ +import sys +sys.path.insert(0, "@PRIVATE_PYQT_SITE_PACKAGES@") +import PyQt4.uic.pyuic -- GitLab