| Avoid relying on the deprecated pyqtconfig module. |
| |
| When PyQt4 is configured using configure-ng.py then no pyqtconfig module |
| will be built, causing the automatic detection in the QGIS build system to |
| fail. |
| |
| This change tries to work around the problem by extracting or guessing all |
| the relevant settings. It should work reasonably well for a default |
| configuration of PyQt, but may fail if PyQt overrides the defaults from sip. |
| All may break if SIP v5 is used, since that version apparently won't contain |
| a sipconfig module any more. But we'll tackle that once we get there. |
| |
| References: |
| * https://bugs.gentoo.org/show_bug.cgi?id=525700 |
| |
| 2014-10-21 Martin von Gagern |
| |
| Index: qgis-2.4.0/cmake/FindPyQt.py |
| =================================================================== |
| --- qgis-2.4.0.orig/cmake/FindPyQt.py |
| +++ qgis-2.4.0/cmake/FindPyQt.py |
| @@ -30,9 +30,29 @@ |
| # 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 |
| +try: |
| + import PyQt4.pyqtconfig |
| + pyqtcfg = PyQt4.pyqtconfig.Configuration() |
| +except ImportError: |
| + import PyQt4.QtCore |
| + import sipconfig # won't work for SIP v5 |
| + import os.path |
| + cfg = sipconfig.Configuration() |
| + sip_dir = cfg.default_sip_dir |
| + for p in (os.path.join(sip_dir, "PyQt4"), sip_dir): |
| + if os.path.exists(os.path.join(p, "QtCore", "QtCoremod.sip")): |
| + sip_dir = p |
| + break |
| + cfg = { |
| + 'pyqt_version': PyQt4.QtCore.PYQT_VERSION, |
| + 'pyqt_version_str': PyQt4.QtCore.PYQT_VERSION_STR, |
| + 'pyqt_sip_flags': PyQt4.QtCore.PYQT_CONFIGURATION['sip_flags'], |
| + 'pyqt_mod_dir': cfg.default_mod_dir, |
| + 'pyqt_sip_dir': sip_dir, |
| + 'pyqt_bin_dir': cfg.default_bin_dir, |
| + } |
| + pyqtcfg = sipconfig.Configuration([cfg]) |
| |
| -pyqtcfg = PyQt4.pyqtconfig.Configuration() |
| print("pyqt_version:%06.0x" % pyqtcfg.pyqt_version) |
| print("pyqt_version_num:%d" % pyqtcfg.pyqt_version) |
| print("pyqt_version_str:%s" % pyqtcfg.pyqt_version_str) |