aboutsummaryrefslogtreecommitdiff
path: root/attic
diff options
context:
space:
mode:
authorJonathan Riddell <jr@jriddell.org>2014-07-17 17:17:50 +0200
committerJonathan Riddell <jr@jriddell.org>2014-07-17 17:17:50 +0200
commit0912b2468881286b508915b17d204f1c17fc93dd (patch)
treee1a33c858f0a7e37824f16996bfd832b5eee5d64 /attic
parent14a983f26ae0c39eb9f66312f6e25e91527194e7 (diff)
downloadextra-cmake-modules-0912b2468881286b508915b17d204f1c17fc93dd.tar.gz
extra-cmake-modules-0912b2468881286b508915b17d204f1c17fc93dd.tar.bz2
forward port https://git.reviewboard.kde.org/r/119302 "Make FindPyQt4 work with PyQt's new build system."
REVIEW:119339
Diffstat (limited to 'attic')
-rw-r--r--attic/modules/FindPyQt.py58
-rw-r--r--attic/modules/FindPyQt4.cmake34
2 files changed, 67 insertions, 25 deletions
diff --git a/attic/modules/FindPyQt.py b/attic/modules/FindPyQt.py
index 5d2f9514..fa5618d0 100644
--- a/attic/modules/FindPyQt.py
+++ b/attic/modules/FindPyQt.py
@@ -1,24 +1,48 @@
# Copyright (c) 2007, Simon Edwards <simon@simonzone.com>
+# Copyright (c) 2014, Raphael Kubo da Costa <rakuco@FreeBSD.org>
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
-import PyQt4.pyqtconfig
+import PyQt4.QtCore
+import os
+import sys
-pyqtcfg = PyQt4.pyqtconfig.Configuration()
-print("pyqt_version:%06.0x" % pyqtcfg.pyqt_version)
-print("pyqt_version_str:%s" % pyqtcfg.pyqt_version_str)
-
-pyqt_version_tag = ""
-in_t = False
-for item in pyqtcfg.pyqt_sip_flags.split(' '):
- if item=="-t":
- in_t = True
- elif in_t:
- if item.startswith("Qt_4"):
- pyqt_version_tag = item
+def get_default_sip_dir():
+ # This is based on QScintilla's configure.py, and only works for the
+ # default case where installation paths have not been changed in PyQt's
+ # configuration process.
+ if sys.platform == 'win32':
+ pyqt_sip_dir = os.path.join(sys.platform, 'sip', 'PyQt4')
else:
- in_t = False
-print("pyqt_version_tag:%s" % pyqt_version_tag)
+ pyqt_sip_dir = os.path.join(sys.platform, 'share', 'sip', 'PyQt4')
+ return pyqt_sip_dir
+
+def get_qt4_tag(sip_flags):
+ in_t = False
+ for item in sip_flags.split(' '):
+ if item == '-t':
+ in_t = True
+ elif in_t:
+ if item.startswith('Qt_4'):
+ return item
+ else:
+ in_t = False
+ raise ValueError('Cannot find Qt\'s tag in PyQt4\'s SIP flags.')
+
+if __name__ == '__main__':
+ try:
+ import PyQt4.pyqtconfig
+ pyqtcfg = PyQt4.pyqtconfig.Configuration()
+ sip_dir = pyqtcfg.pyqt_sip_dir
+ sip_flags = pyqtcfg.pyqt_sip_flags
+ except ImportError:
+ # PyQt4 >= 4.10.0 was built with configure-ng.py instead of
+ # configure.py, so pyqtconfig.py is not installed.
+ sip_dir = get_default_sip_dir()
+ sip_flags = PyQt4.QtCore.PYQT_CONFIGURATION['sip_flags']
-print("pyqt_sip_dir:%s" % pyqtcfg.pyqt_sip_dir)
-print("pyqt_sip_flags:%s" % pyqtcfg.pyqt_sip_flags)
+ print('pyqt_version:%06.x' % PyQt4.QtCore.PYQT_VERSION)
+ print('pyqt_version_str:%s' % PyQt4.QtCore.PYQT_VERSION_STR)
+ print('pyqt_version_tag:%s' % get_qt4_tag(sip_flags))
+ print('pyqt_sip_dir:%s' % sip_dir)
+ print('pyqt_sip_flags:%s' % sip_flags)
diff --git a/attic/modules/FindPyQt4.cmake b/attic/modules/FindPyQt4.cmake
index 37f645ea..c0cb108e 100644
--- a/attic/modules/FindPyQt4.cmake
+++ b/attic/modules/FindPyQt4.cmake
@@ -9,7 +9,8 @@
# Find the installed version of PyQt4. FindPyQt4 should only be called after
# Python has been found.
#
-# This file defines the following variables:
+# This file defines the following variables, which can also be overriden by
+# users:
#
# PYQT4_VERSION - The version of PyQt4 found expressed as a 6 digit hex number
# suitable for comparision as a string
@@ -18,7 +19,10 @@
#
# PYQT4_VERSION_TAG - The PyQt version tag using by PyQt's sip files.
#
-# PYQT4_SIP_DIR - The directory holding the PyQt4 .sip files.
+# PYQT4_SIP_DIR - The directory holding the PyQt4 .sip files. This can be unset
+# if PyQt4 was built using its new build system and pyqtconfig.py is not
+# present on the system, as in this case its value cannot be determined
+# automatically.
#
# PYQT4_SIP_FLAGS - The SIP flags used to build PyQt.
@@ -31,13 +35,27 @@ ELSE(EXISTS PYQT4_VERSION)
EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ${_find_pyqt_py} OUTPUT_VARIABLE pyqt_config)
IF(pyqt_config)
- STRING(REGEX REPLACE "^pyqt_version:([^\n]+).*$" "\\1" PYQT4_VERSION ${pyqt_config})
- STRING(REGEX REPLACE ".*\npyqt_version_str:([^\n]+).*$" "\\1" PYQT4_VERSION_STR ${pyqt_config})
- STRING(REGEX REPLACE ".*\npyqt_version_tag:([^\n]+).*$" "\\1" PYQT4_VERSION_TAG ${pyqt_config})
- STRING(REGEX REPLACE ".*\npyqt_sip_dir:([^\n]+).*$" "\\1" PYQT4_SIP_DIR ${pyqt_config})
- STRING(REGEX REPLACE ".*\npyqt_sip_flags:([^\n]+).*$" "\\1" PYQT4_SIP_FLAGS ${pyqt_config})
+ STRING(REGEX MATCH "^pyqt_version:([^\n]+).*$" _dummy ${pyqt_config})
+ SET(PYQT4_VERSION "${CMAKE_MATCH_1}" CACHE STRING "PyQt4's version as a 6-digit hexadecimal number")
- SET(PYQT4_FOUND TRUE)
+ STRING(REGEX MATCH ".*\npyqt_version_str:([^\n]+).*$" _dummy ${pyqt_config})
+ SET(PYQT4_VERSION_STR "${CMAKE_MATCH_1}" CACHE STRING "PyQt4's version as a human-readable string")
+
+ STRING(REGEX MATCH ".*\npyqt_version_tag:([^\n]+).*$" _dummy ${pyqt_config})
+ SET(PYQT4_VERSION_TAG "${CMAKE_MATCH_1}" CACHE STRING "The Qt4 version tag used by PyQt4's .sip files")
+
+ STRING(REGEX MATCH ".*\npyqt_sip_dir:([^\n]+).*$" _dummy ${pyqt_config})
+ SET(PYQT4_SIP_DIR "${CMAKE_MATCH_1}" CACHE FILEPATH "The base directory where PyQt4's .sip files are installed")
+
+ STRING(REGEX MATCH ".*\npyqt_sip_flags:([^\n]+).*$" _dummy ${pyqt_config})
+ SET(PYQT4_SIP_FLAGS "${CMAKE_MATCH_1}" CACHE STRING "The SIP flags used to build PyQt4")
+
+ IF(NOT IS_DIRECTORY PYQT4_SIP_DIR)
+ MESSAGE(WARNING "The base directory where PyQt4's SIP files are installed could not be determined. This usually means PyQt4 was built with its new build system and pyqtconfig.py is not present.\n"
+ "Please set the PYQT4_SIP_DIR variable manually.")
+ ELSE(NOT PYQT4_SIP_DIR)
+ SET(PYQT4_FOUND TRUE)
+ ENDIF(NOT PYQT4_SIP_DIR)
ENDIF(pyqt_config)
IF(PYQT4_FOUND)