From 842c17c10b2112b0d92ab287d76e374900736065 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Sat, 14 Nov 2015 11:31:43 +0100 Subject: [PATCH] Deduplicated FindPyQt(4|5).py --- cmake/{FindPyQt4.py => FindPyQt.py} | 33 ++++++++++--- cmake/FindPyQt4.cmake | 4 +- cmake/FindPyQt5.cmake | 2 +- cmake/FindPyQt5.py | 75 ----------------------------- 4 files changed, 27 insertions(+), 87 deletions(-) rename cmake/{FindPyQt4.py => FindPyQt.py} (81%) delete mode 100644 cmake/FindPyQt5.py diff --git a/cmake/FindPyQt4.py b/cmake/FindPyQt.py similarity index 81% rename from cmake/FindPyQt4.py rename to cmake/FindPyQt.py index a4fb88bba73..bd64081e153 100644 --- a/cmake/FindPyQt4.py +++ b/cmake/FindPyQt.py @@ -30,28 +30,45 @@ # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. +import argparse + +parser = argparse.ArgumentParser(description='Find the PyQt on the system.') +parser.add_argument('--version', type=int, help='The major pyqt version to find (4 or 5, Default: 4)', default=4) + +version = parser.parse_args().version + +if version == 4: + from PyQt4 import QtCore + pyqt_sip_dir = 'PyQt4' +elif version == 5: + from PyQt5 import QtCore + pyqt_sip_dir = 'PyQt5' +else: + parser.print_help() + exit(1) + 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): + for p in (os.path.join(sip_dir, pyqt_sip_dir), 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_version': QtCore.PYQT_VERSION, + 'pyqt_version_str': QtCore.PYQT_VERSION_STR, + 'pyqt_sip_flags': 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]) +except AttributeError: + # Legacy code + import PyQt4.pyqtconfig + pyqtcfg = PyQt4.pyqtconfig.Configuration() print("pyqt_version:%06.0x" % pyqtcfg.pyqt_version) print("pyqt_version_num:%d" % pyqtcfg.pyqt_version) diff --git a/cmake/FindPyQt4.cmake b/cmake/FindPyQt4.cmake index 8bf90f4c878..8fc8fd22355 100644 --- a/cmake/FindPyQt4.cmake +++ b/cmake/FindPyQt4.cmake @@ -27,7 +27,7 @@ IF(EXISTS PYQT4_VERSION) SET(PYQT4_FOUND TRUE) ELSE(EXISTS PYQT4_VERSION) - FIND_FILE(_find_pyqt_py FindPyQt4.py PATHS ${CMAKE_MODULE_PATH}) + FIND_FILE(_find_pyqt_py FindPyQt.py --version=4 PATHS ${CMAKE_MODULE_PATH}) EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ${_find_pyqt_py} OUTPUT_VARIABLE pyqt_config) IF(pyqt_config) @@ -54,5 +54,3 @@ ELSE(EXISTS PYQT4_VERSION) ENDIF(PYQT4_FOUND) ENDIF(EXISTS PYQT4_VERSION) - - diff --git a/cmake/FindPyQt5.cmake b/cmake/FindPyQt5.cmake index eee0b827cbe..446393cee19 100644 --- a/cmake/FindPyQt5.cmake +++ b/cmake/FindPyQt5.cmake @@ -27,7 +27,7 @@ IF(EXISTS PYQT5_VERSION) SET(PYQT5_FOUND TRUE) ELSE(EXISTS PYQT5_VERSION) - FIND_FILE(_find_pyqt_py FindPyQt5.py PATHS ${CMAKE_MODULE_PATH}) + FIND_FILE(_find_pyqt_py FindPyQt.py --version=5 PATHS ${CMAKE_MODULE_PATH}) EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ${_find_pyqt_py} OUTPUT_VARIABLE pyqt_config) IF(pyqt_config) diff --git a/cmake/FindPyQt5.py b/cmake/FindPyQt5.py deleted file mode 100644 index 6fb69c7c118..00000000000 --- a/cmake/FindPyQt5.py +++ /dev/null @@ -1,75 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (c) 2007, Simon Edwards -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the Simon Edwards nor the -# names of its contributors may be used to endorse or promote products -# derived from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY Simon Edwards ''AS IS'' AND ANY -# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL Simon Edwards BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# FindPyQt.py -# Copyright (c) 2007, Simon Edwards -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - -try: - import PyQt5.pyqtconfig - pyqtcfg = PyQt5.pyqtconfig.Configuration() -except ImportError: - import PyQt5.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, "PyQt5"), sip_dir): - if os.path.exists(os.path.join(p, "QtCore", "QtCoremod.sip")): - sip_dir = p - break - cfg = { - 'pyqt_version': PyQt5.QtCore.PYQT_VERSION, - 'pyqt_version_str': PyQt5.QtCore.PYQT_VERSION_STR, - 'pyqt_sip_flags': PyQt5.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]) - -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) - -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 - else: - in_t = False -print("pyqt_version_tag:%s" % pyqt_version_tag) - -print("pyqt_mod_dir:%s" % pyqtcfg.pyqt_mod_dir) -print("pyqt_sip_dir:%s" % pyqtcfg.pyqt_sip_dir) -print("pyqt_sip_flags:%s" % pyqtcfg.pyqt_sip_flags) -print("pyqt_bin_dir:%s" % pyqtcfg.pyqt_bin_dir)