import os import sipconfig import subprocess import os import site import pprint from distutils import sysconfig import pyqtconfig from PyQt5 import QtCore import PyQt5 class Configuration(sipconfig.Configuration): """The class that represents PyQt configuration values. """ def getEnv(self,name, default): return os.environ.get(name) or default def __init__(self): qtconfig = subprocess.check_output(["/usr/lib64/qt5/bin/qmake", "-query"], universal_newlines=True) qtconfig = dict(x.split(":", 1) for x in qtconfig.splitlines()) self.pyQtIncludePath = self.getEnv('PYQT_INCLUDE_PATH','/usr/share/sip/PyQt5' ) pyqtconfig = { "pyqt_config_args": "--confirm-license -v "+str(self.pyQtIncludePath)+" --qsci-api -q /usr/lib64/qt5/bin/qmake", "pyqt_version": QtCore.PYQT_VERSION, "pyqt_version_str": QtCore.PYQT_VERSION_STR, "pyqt_bin_dir": PyQt5.__path__[0], "pyqt_mod_dir": PyQt5.__path__[0], "pyqt_sip_dir": str(self.pyQtIncludePath), "pyqt_modules": "QtCore QtGui QtWidgets", #... and many more "pyqt_sip_flags": QtCore.PYQT_CONFIGURATION['sip_flags'], "qt_version": QtCore.QT_VERSION, "qt_edition": "free", "qt_winconfig": "shared", "qt_framework": 0, "qt_threaded": 1, "qt_dir": qtconfig['QT_INSTALL_PREFIX'], "qt_data_dir": qtconfig['QT_INSTALL_DATA'], "qt_archdata_dir": qtconfig['QT_INSTALL_DATA'], "qt_inc_dir": qtconfig['QT_INSTALL_HEADERS'], "qt_lib_dir": qtconfig['QT_INSTALL_LIBS'] } macros = sipconfig._default_macros.copy() macros['INCDIR_QT'] = qtconfig['QT_INSTALL_HEADERS'] macros['LIBDIR_QT'] = qtconfig['QT_INSTALL_LIBS'] macros['MOC'] = os.path.join(qtconfig['QT_INSTALL_BINS'], 'moc') sipconfig.Configuration.__init__(self, [pyqtconfig]) self.set_build_macros(macros) ## The name of the SIP build file generated by SIP and used by the build system. build_file = "qtermwidget.sbf" # Get the SIP configuration information. config = Configuration() # Run SIP to generate the build_file os.system(" ".join([config.sip_bin, '-I' , str(config.pyQtIncludePath), str(config.pyqt_sip_flags), "-b", build_file,"-o", "-c", ". " " qtermwidget.sip"])) installs = [] installs.append(["qtermwidget.sip", os.path.join(config.pyqt_sip_dir,"qtermwidget")]) installs.append(["qtermwidgetconfig.py", config.pyqt_mod_dir]) makefile = sipconfig.SIPModuleMakefile( configuration = config, build_file = build_file, installs = installs, qt=["QtCore" ,"QtGui", "QtWidgets"] ) # Add the library we are wrapping. The name doesn't include any platform # specific prefixes or extensions (e.g. the "lib" prefix on UNIX, or the # ".dll" extension on Windows). makefile.extra_lib_dirs.append("../lib/") makefile.extra_lib_dirs.append("..") makefile.extra_libs = ["qtermwidget5"] # Generate the Makefile itself. makefile.generate() content = { # Publish where the SIP specifications for this module will be # installed. "qtermwidget_sip_dir": config.pyqt_sip_dir, # Publish the set of SIP flags needed by this module. As these are the # same flags needed by the qt module we could leave it out, but this # allows us to change the flags at a later date without breaking # scripts that import the configuration module. "qtermwidget_sip_flags": config.pyqt_sip_flags } # This creates the qtermwidgetconfig.py module from the qtermwidgetconfig.py.in # template and the dictionary. sipconfig.create_config_module("qtermwidgetconfig.py", "config.py.in", content)