diff --git a/setup.cfg.template b/setup.cfg.template index 0c0848f5537a..237a7cd7464a 100644 --- a/setup.cfg.template +++ b/setup.cfg.template @@ -59,6 +59,8 @@ #tkagg = auto #macosx = auto #windowing = auto +#gtk3cairo = auto +#gtk3agg = auto [rc_options] # User-configurable options diff --git a/setupext.py b/setupext.py index 7bbde90b14e8..3a8f51f6ad08 100644 --- a/setupext.py +++ b/setupext.py @@ -1424,12 +1424,19 @@ def get_extension(self): def backend_gtk3agg_internal_check(x): try: - from gi.repository import Gtk, Gdk, GObject + import gi except ImportError: return (False, "Requires pygobject to be installed.") - if sys.version_info[0] >= 3: - return (False, "gtk3agg does not work on Python 3") + try: + gi.require_version("Gtk", "3.0") + except ValueError: + return (False, "Requires gtk3 development files to be installed.") + + try: + from gi.repository import Gtk, Gdk, GObject + except ImportError: + return (False, "Requires pygobject to be installed.") return (True, "version %s.%s.%s" % ( Gtk.get_major_version(), @@ -1444,6 +1451,9 @@ def check(self): if 'TRAVIS' in os.environ: raise CheckFailed("Can't build with Travis") + if sys.version_info[0] >= 3: + return "gtk3agg backend does not work on Python 3" + # This check needs to be performed out-of-process, because # importing gi and then importing regular old pygtk afterward # segfaults the interpreter. @@ -1468,6 +1478,16 @@ def backend_gtk3cairo_internal_check(x): except ImportError: return (False, "Requires cairo to be installed.") + try: + import gi + except ImportError: + return (False, "Requires pygobject to be installed.") + + try: + gi.require_version("Gtk", "3.0") + except ValueError: + return (False, "Requires gtk3 development files to be installed.") + try: from gi.repository import Gtk, Gdk, GObject except ImportError: @@ -1611,7 +1631,7 @@ def check(self): try: import pyqtconfig except ImportError: - raise CheckFailed("not found") + raise CheckFailed("pyqt not found") else: try: qt_version = pyqtconfig.Configuration().qt_version @@ -1641,7 +1661,7 @@ def check(self): try: from PyQt4 import pyqtconfig except ImportError: - raise CheckFailed("not found") + raise CheckFailed("PyQt4 not found") else: BackendAgg.force = True @@ -1660,7 +1680,7 @@ def check(self): from PySide import __version__ from PySide import QtCore except ImportError: - raise CheckFailed("not found") + raise CheckFailed("PySide not found") else: BackendAgg.force = True @@ -1675,7 +1695,7 @@ def check(self): try: import cairo except ImportError: - raise CheckFailed("not found") + raise CheckFailed("cairo not found") else: return "version %s" % cairo.version