@@ -217,49 +217,52 @@ IF (@QSCINTILLA_LIBRARY@ MATCHES ".*libqscintilla2.dylib")
217
217
ENDIF (QSCI_CHG )
218
218
ENDIF ()
219
219
220
- # PyQt
221
-
222
- MESSAGE (STATUS "Copying PyQt..." )
223
- IF (NOT EXISTS "${QGISPYDIR} /sip.so" )
224
- MYMESSAGE ("ditto ${QARCHS} \" @SIP_MOD_DIR@/sip.so\" \" ${QGISPYDIR} /\" " )
225
- EXECUTE_PROCESS (COMMAND ditto ${QARCHS} "@SIP_MOD_DIR@/sip.so" "${QGISPYDIR} /" )
226
- EXECUTE_PROCESS (COMMAND cp -fp "@SIP_MOD_DIR@/sipconfig.py" "${QGISPYDIR} /" )
227
- ENDIF ()
228
-
229
- # if PYQT4_MOD_DIR not defined, assume "PyQt4" next to SIP
230
- SET (PYQT4MODDIR "@SIP_MOD_DIR@/PyQt${QT_FWVER} " )
231
- IF (EXISTS "@PYQT4_MOD_DIR@" )
232
- SET (PYQT4MODDIR "@PYQT4_MOD_DIR@" )
233
- # MESSAGE (STATUS "Defined PYQT4_MOD_DIR: @PYQT4_MOD_DIR@")
220
+ # Tell user what Python paths are being searched for modules and packages
221
+ # see: PYTHON_MODULE_PATHS in 0vars.cmake.in for why not all PyQt-related modules
222
+ # can be assumed to exist in symlinked-resolved PyQt or sip module directories
223
+ MESSAGE (STATUS "PYTHON_MODULE_PATHS to be searched:" )
224
+ FOREACH (PYPATH ${PYTHON_MODULE_PATHS} )
225
+ MESSAGE (STATUS " ${PYPATH} " )
226
+ ENDFOREACH (PYPATH )
227
+
228
+ # sip and PyQt
229
+
230
+ MESSAGE (STATUS "Copying sip..." )
231
+ PYTHONMODULEDIR ("sip.so" SIPMODDIR )
232
+ IF (SIPMODDIR )
233
+ IF (NOT EXISTS "${QGISPYDIR} /sip.so" )
234
+ # MYMESSAGE ("ditto ${QARCHS} \"${SIPMODDIR}/sip.so\" \"${QGISPYDIR}/\"")
235
+ EXECUTE_PROCESS (COMMAND ditto ${QARCHS} "${SIPMODDIR} /sip.so" "${QGISPYDIR} /" )
236
+ EXECUTE_PROCESS (COMMAND cp -fp "${SIPMODDIR} /sipconfig.py" "${QGISPYDIR} /" )
237
+ ENDIF ()
238
+ ELSE ()
239
+ MESSAGE (STATUS " sip module not found" )
234
240
ENDIF ()
235
- # also search python site-packages/PyQt4, in case module packages installed elsewhere and symlinked
236
- # (common with binary installers like homebrew)
237
- SET (PYQT4MODALT "@PYTHON_SITE_PACKAGES_SYS@/PyQt4" )
238
- #MESSAGE (STATUS "Defined PYQT4MODALT: ${PYQT4MODALT}")
239
241
242
+ MESSAGE (STATUS "Copying PyQt..." )
240
243
EXECUTE_PROCESS (COMMAND mkdir -p "${QGISPYDIR} /PyQt${QT_FWVER} " )
241
244
FOREACH (PQ ${PYQTLIST} )
242
- SET (MODNAME "${PQ} .so" )
243
- IF (EXISTS "${PYQT4MODDIR} /${MODNAME} " )
244
- SET (PYQT4MOD "${PYQT4MODDIR} /${MODNAME} " )
245
- ELSEIF (EXISTS "${PYQT4MODALT} /${MODNAME} " )
246
- SET (PYQT4MOD "${PYQT4MODALT} /${MODNAME} " )
247
- ENDIF ()
248
- IF (EXISTS "${PYQT4MOD} " )
249
- IF (NOT EXISTS "${QGISPYDIR} /PyQt${QT_FWVER} /${MODNAME} " )
250
- # MESSAGE (STATUS "ditto ${QARCHS} \"${PYQT4MOD}\" \"${QGISPYDIR}/PyQt${QT_FWVER}/${MODNAME}\"")
251
- EXECUTE_PROCESS (COMMAND ditto ${QARCHS} "${PYQT4MOD} " "${QGISPYDIR} /PyQt${QT_FWVER} /${MODNAME} " )
245
+ SET (MODNAME "${PQ} .so" )
246
+ SET (MODSUBPATH "PyQt${QT_FWVER} /${MODNAME} " )
247
+ # search for each module separately, instead of only in first found PyQt directory, since PyQt may
248
+ # be installed to its a specific prefix, like with Homebrew, then symlinked into common 'site-packages'
249
+ PYTHONMODULEDIR ("${MODSUBPATH} " MODDIR )
250
+ IF (MODDIR )
251
+ IF (NOT EXISTS "${QGISPYDIR} /${MODSUBPATH} " )
252
+ # MESSAGE (STATUS "ditto ${QARCHS} \"${PYQT4MOD}\" \"${QGISPYDIR}/${MODSUBPATH}\"")
253
+ EXECUTE_PROCESS (COMMAND ditto ${QARCHS} "${MODDIR} /${MODSUBPATH} " "${QGISPYDIR} /${MODSUBPATH} " )
252
254
ENDIF ()
253
- ELSE (EXISTS " ${PYQT4MOD} " )
254
- MESSAGE (STATUS "PyQt4 module ${MODNAME} not found" )
255
- ENDIF (EXISTS " ${PYQT4MOD} " )
255
+ ELSE (MODDIR )
256
+ MESSAGE (STATUS " PyQt4 module ${MODNAME} not found" )
257
+ ENDIF (MODDIR )
256
258
UNSET (PYQT4MOD )
257
259
ENDFOREACH (PQ )
258
- FILE (GLOB PQPYLIST "${PYQT4MODDIR} /*.py" )
260
+ PYTHONMODULEDIR ("PyQt${QT_FWVER} " PYQTMODDIR )
261
+ FILE (GLOB PQPYLIST "${PYQTMODDIR} /PyQt${QT_FWVER} /*.py" )
259
262
FOREACH (PQPY ${PQPYLIST} )
260
263
EXECUTE_PROCESS (COMMAND cp -fp "${PQPY} " "${QGISPYDIR} /PyQt${QT_FWVER} /" )
261
264
ENDFOREACH (PQPY )
262
- EXECUTE_PROCESS (COMMAND cp -Rfp "${PYQT4MODDIR } /uic" "${QGISPYDIR} /PyQt${QT_FWVER} " )
265
+ EXECUTE_PROCESS (COMMAND cp -Rfp "${PYQTMODDIR} /PyQt ${QT_FWVER } /uic" "${QGISPYDIR} /PyQt${QT_FWVER} " )
263
266
264
267
# PyQt utilities
265
268
@@ -277,17 +280,17 @@ ENDIF ()
277
280
278
281
# PyQwt
279
282
# only if it's available, not compatible with newer PyQt
280
-
281
- IF (EXISTS " ${PYQT4MODDIR} /Qwt5/_iqt.so" )
283
+ PYTHONMODULEDIR ( "Qwt5/_iqt.so" QWT4MODDIR )
284
+ IF (QWT4MODDIR )
282
285
MESSAGE (STATUS "Copying PyQwt and updating library paths..." )
283
286
EXECUTE_PROCESS (COMMAND mkdir -p "${QGISPYDIR} /PyQt${QT_FWVER} /Qwt5" )
284
287
IF (NOT EXISTS "${QGISPYDIR} /PyQt${QT_FWVER} /Qwt5/_iqt.so" )
285
- EXECUTE_PROCESS (COMMAND ditto ${QARCHS} "${PYQT4MODDIR } /Qwt5/_iqt.so" "${QGISPYDIR} /PyQt${QT_FWVER} /Qwt5/" )
288
+ EXECUTE_PROCESS (COMMAND ditto ${QARCHS} "${QWT4MODDIR } /Qwt5/_iqt.so" "${QGISPYDIR} /PyQt${QT_FWVER} /Qwt5/" )
286
289
ENDIF ()
287
290
IF (NOT EXISTS "${QGISPYDIR} /PyQt${QT_FWVER} /Qwt5/Qwt.so" )
288
- EXECUTE_PROCESS (COMMAND ditto ${QARCHS} "${PYQT4MODDIR } /Qwt5/Qwt.so" "${QGISPYDIR} /PyQt${QT_FWVER} /Qwt5/" )
291
+ EXECUTE_PROCESS (COMMAND ditto ${QARCHS} "${QWT4MODDIR } /Qwt5/Qwt.so" "${QGISPYDIR} /PyQt${QT_FWVER} /Qwt5/" )
289
292
ENDIF ()
290
- FILE (GLOB PQWPYLIST "${PYQT4MODDIR } /Qwt5/*.py" )
293
+ FILE (GLOB PQWPYLIST "${QWT4MODDIR } /Qwt5/*.py" )
291
294
FOREACH (PQWPY ${PQWPYLIST} )
292
295
EXECUTE_PROCESS (COMMAND cp -fp "${PQWPY} " "${QGISPYDIR} /PyQt${QT_FWVER} /Qwt5/" )
293
296
ENDFOREACH (PQWPY )
0 commit comments