diff options
Diffstat (limited to 'dev-python/python-poppler-qt4/files/python-poppler-qt4-0.18.1-update_for_new_PyQt4_build.patch')
-rw-r--r-- | dev-python/python-poppler-qt4/files/python-poppler-qt4-0.18.1-update_for_new_PyQt4_build.patch | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/dev-python/python-poppler-qt4/files/python-poppler-qt4-0.18.1-update_for_new_PyQt4_build.patch b/dev-python/python-poppler-qt4/files/python-poppler-qt4-0.18.1-update_for_new_PyQt4_build.patch new file mode 100644 index 00000000000..ce56a780967 --- /dev/null +++ b/dev-python/python-poppler-qt4/files/python-poppler-qt4-0.18.1-update_for_new_PyQt4_build.patch @@ -0,0 +1,185 @@ +From 099924f9b359b82696e3aa9f159616ff09d2da97 Mon Sep 17 00:00:00 2001 +From: Philip Lorenz <philip@bithub.de> +Date: Tue, 8 Jul 2014 18:23:49 +0200 +Subject: [PATCH 3/3] Support PyQt's "new" build system + +PyQt4 ships with a configure.py and configure-ng.py script for +configuration. The former produced the "pyqtconfig" module which was +used to determine various flags required for compilation of +python-poppler-qt4. The configure.py script has been causing some issues +([1]) and upstream suggests to use configure-ng.py instead as the old +configuration script is deprecated ([2]). + +This patch adapts setup.py to work without the "pyqtconfig" module by +looking up the required config values via the new mechanisms endorsed by +upstream. Additionally, it adds the --qt-include-dir, --pyqt-sip-dir, +--pyqt-sip-flags command line arguments to the "build_ext" command which +can be used to set those values manually. + +[1] http://www.riverbankcomputing.com/pipermail/pyqt/2014-June/034344.html +[2] http://www.riverbankcomputing.com/pipermail/pyqt/2014-June/034354.html +--- + setup.py | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++----------- + 1 file changed, 94 insertions(+), 20 deletions(-) + +diff --git a/setup.py b/setup.py +index 56f3e3f..c43c5e4 100644 +--- a/setup.py ++++ b/setup.py +@@ -56,14 +56,6 @@ except ImportError: + pass + ### end + +-import PyQt4.pyqtconfig +-config = PyQt4.pyqtconfig.Configuration() +- +-pyqt_sip_dir = config.pyqt_sip_dir +-pyqt_sip_flags = config.pyqt_sip_flags +-qt_inc_dir = config.qt_inc_dir +- +- + def pkg_config(package, attrs=None, include_only=False): + """parse the output of pkg-config for a package. + +@@ -107,17 +99,8 @@ def pkg_config_version(package): + return tuple(map(int, re.findall(r'\d+', output))) + except OSError: + sys.stderr.write("Can't determine version of %s\n" % package) +- +- +-ext_args = { +- 'include_dirs': [ +- qt_inc_dir, +- os.path.join(qt_inc_dir, 'QtCore'), +- os.path.join(qt_inc_dir, 'QtGui'), +- os.path.join(qt_inc_dir, 'QtXml'), +- ], +-} + ++ext_args = {} + pkg_config('poppler-qt4', ext_args) + + if 'libraries' not in ext_args: +@@ -131,17 +114,108 @@ class build_ext(build_ext_base): + + user_options = build_ext_base.user_options + [ + ('poppler-version=', None, "version of the poppler library"), ++ ('qmake-bin=', None, "Path to qmake binary"), ++ ('qt-include-dir=', None, "Path to Qt headers"), ++ ('pyqt-sip-dir=', None, "Path to PyQt's SIP files"), ++ ('pyqt-sip-flags=', None, "SIP flags used to generate PyQt bindings") + ] + + def initialize_options (self): + build_ext_base.initialize_options(self) + self.poppler_version = None + ++ self.qmake_bin = 'qmake' ++ ++ self.qt_include_dir = None ++ self.pyqt_sip_dir = None ++ self.pyqt_sip_flags = None ++ + def finalize_options (self): + build_ext_base.finalize_options(self) ++ ++ if not self.qt_include_dir: ++ self.qt_include_dir = self.__find_qt_include_dir() ++ ++ if not self.pyqt_sip_dir: ++ self.pyqt_sip_dir = self.__find_pyqt_sip_dir() ++ ++ if not self.pyqt_sip_flags: ++ self.pyqt_sip_flags = self.__find_pyqt_sip_flags() ++ ++ if not self.qt_include_dir: ++ raise SystemExit('Could not find Qt4 headers. ' ++ 'Please specify via --qt-include-dir=') ++ ++ if not self.pyqt_sip_dir: ++ raise SystemExit('Could not find PyQt SIP files. ' ++ 'Please specify containing directory via ' ++ '--pyqt-sip-dir=') ++ ++ if not self.pyqt_sip_flags: ++ raise SystemExit('Could not find PyQt SIP flags. ' ++ 'Please specify via --pyqt-sip-flags=') ++ ++ self.include_dirs += (self.qt_include_dir, ++ os.path.join(self.qt_include_dir, 'QtCore'), ++ os.path.join(self.qt_include_dir, 'QtGui'), ++ os.path.join(self.qt_include_dir, 'QtXml')) ++ + if self.poppler_version is not None: + self.poppler_version = tuple(map(int, re.findall(r'\d+', self.poppler_version))) + ++ def __find_qt_include_dir(self): ++ if self.pyqtconfig: ++ return self.pyqtconfig.qt_inc_dir ++ ++ try: ++ qt_version = subprocess.check_output([self.qmake_bin, ++ '-query', ++ 'QT_VERSION']) ++ qt_version = qt_version.strip().decode("ascii") ++ except (OSError, subprocess.CalledProcessError) as e: ++ raise SystemExit('Failed to determine Qt version (%s).' % e) ++ ++ if not qt_version.startswith("4."): ++ raise SystemExit('Unsupported Qt version (%s). ' ++ 'Try specifying the path to qmake manually via ' ++ '--qmake-bin=' % qt_version) ++ ++ try: ++ result = subprocess.check_output([self.qmake_bin, ++ '-query', ++ 'QT_INSTALL_HEADERS']) ++ return result.strip().decode(sys.getfilesystemencoding()) ++ except (OSError, subprocess.CalledProcessError) as e: ++ raise SystemExit('Failed to determine location of Qt headers (%s).' % e) ++ ++ def __find_pyqt_sip_dir(self): ++ if self.pyqtconfig: ++ return self.pyqtconfig.pyqt_sip_dir ++ ++ import sipconfig ++ ++ return os.path.join(sipconfig.Configuration().default_sip_dir, 'PyQt4') ++ ++ def __find_pyqt_sip_flags(self): ++ if self.pyqtconfig: ++ return self.pyqtconfig.pyqt_sip_flags ++ ++ from PyQt4 import QtCore ++ ++ return QtCore.PYQT_CONFIGURATION.get('sip_flags', '') ++ ++ @property ++ def pyqtconfig(self): ++ if not hasattr(self, '_pyqtconfig'): ++ try: ++ from PyQt4 import pyqtconfig ++ ++ self._pyqtconfig = pyqtconfig.Configuration() ++ except ImportError: ++ self._pyqtconfig = None ++ ++ return self._pyqtconfig ++ + def _sip_compile(self, sip_bin, source, sbf): + + # Disable features if older poppler-qt4 version is found. +@@ -176,8 +250,8 @@ class build_ext(build_ext_base): + cmd += [ + "-c", self.build_temp, + "-b", sbf, +- "-I", pyqt_sip_dir] # find the PyQt4 stuff +- cmd += shlex.split(pyqt_sip_flags) # use same SIP flags as for PyQt4 ++ "-I", self.pyqt_sip_dir] # find the PyQt4 stuff ++ cmd += shlex.split(self.pyqt_sip_flags) # use same SIP flags as for PyQt4 + cmd.append(source) + self.spawn(cmd) + +-- +2.0.2 + |