Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Gtk: Add gi.require_version to specify versions.
Use gi.require_version before import to ensure that the right
versions of libraries get loaded.

Resolves: rhbz#1433943
  • Loading branch information
poncovka authored and rvykydal committed Apr 4, 2017
1 parent e67c285 commit df62c06
Show file tree
Hide file tree
Showing 32 changed files with 145 additions and 3 deletions.
3 changes: 3 additions & 0 deletions anaconda
Expand Up @@ -465,6 +465,9 @@ def setupLoggingFromOpts(options):
anaconda_log.logger.updateRemote(options.syslog)

def gtk_warning(title, reason):
import gi
gi.require_version("Gtk", "3.0")

from gi.repository import Gtk
dialog = Gtk.MessageDialog(type=Gtk.MessageType.ERROR,
buttons=Gtk.ButtonsType.CLOSE,
Expand Down
4 changes: 4 additions & 0 deletions pyanaconda/exception.py
Expand Up @@ -44,6 +44,9 @@
from pyanaconda import startup_utils
from pyanaconda import product

import gi
gi.require_version("GLib", "2.0")

from gi.repository import GLib

import logging
Expand Down Expand Up @@ -106,6 +109,7 @@ def handleException(self, dump_info):
sys.exit(0)
else:
try:
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk

# XXX: Gtk stopped raising RuntimeError if it fails to
Expand Down
3 changes: 3 additions & 0 deletions pyanaconda/keyboard.py
Expand Up @@ -37,6 +37,9 @@
from pyanaconda.constants import DEFAULT_VC_FONT, DEFAULT_KEYBOARD
from pyanaconda.flags import can_touch_runtime_system

import gi
gi.require_version("GLib", "2.0")

from gi.repository import GLib

import logging
Expand Down
3 changes: 3 additions & 0 deletions pyanaconda/network.py
Expand Up @@ -47,6 +47,9 @@
from pyanaconda.i18n import _
from pyanaconda.regexes import HOSTNAME_PATTERN_WITHOUT_ANCHORS, IBFT_CONFIGURED_DEVICE_NAME

import gi
gi.require_version("NM", "1.0")

from gi.repository import NetworkManager
# Register the types so that the use in threads is safe
NetworkManager.State # pylint: disable=pointless-statement
Expand Down
7 changes: 6 additions & 1 deletion pyanaconda/nm.py
Expand Up @@ -19,8 +19,13 @@
# Red Hat Author(s): Radek Vykydal <rvykydal@redhat.com>
#

from gi.repository import Gio, GLib
import gi
gi.require_version("GLib", "2.0")
gi.require_version("Gio", "2.0")
gi.require_version("NM", "1.0")
gi.require_version("NetworkManager", "1.0")

from gi.repository import Gio, GLib
from gi.repository import NetworkManager
# Register the types so that the use in threads is safe
NetworkManager.ActiveConnectionState # pylint: disable=pointless-statement
Expand Down
7 changes: 7 additions & 0 deletions pyanaconda/packaging/rpmostreepayload.py
Expand Up @@ -26,6 +26,11 @@
from pyanaconda import iutil
from pyanaconda.i18n import _
from pyanaconda.progress import progressQ

import gi
gi.require_version("GLib", "2.0")
gi.require_version("Gio", "2.0")

from gi.repository import GLib
from gi.repository import Gio

Expand Down Expand Up @@ -127,6 +132,7 @@ def install(self):
mainctx.push_thread_default()

cancellable = None
gi.require_version("OSTree", "1.0")
from gi.repository import OSTree
ostreesetup = self.data.ostreesetup
log.info("executing ostreesetup=%r", ostreesetup)
Expand Down Expand Up @@ -249,6 +255,7 @@ def recreateInitrds(self, force=False):
def postInstall(self):
super(RPMOSTreePayload, self).postInstall()

gi.require_version("OSTree", "1.0")
from gi.repository import OSTree
cancellable = None

Expand Down
7 changes: 6 additions & 1 deletion pyanaconda/safe_dbus.py
Expand Up @@ -20,8 +20,13 @@

"""Module providing thread-safe and mainloop-safe DBus operations."""

import os
import gi
gi.require_version("GLib", "2.0")
gi.require_version("Gio", "2.0")

from gi.repository import GLib, Gio

import os
from pyanaconda.constants import DEFAULT_DBUS_TIMEOUT

DBUS_PROPS_IFACE = "org.freedesktop.DBus.Properties"
Expand Down
4 changes: 4 additions & 0 deletions pyanaconda/screensaver.py
Expand Up @@ -20,6 +20,10 @@
#

from pyanaconda import safe_dbus

import gi
gi.require_version("GLib", "2.0")

from gi.repository import GLib

import logging
Expand Down
9 changes: 9 additions & 0 deletions pyanaconda/ui/gui/__init__.py
Expand Up @@ -23,6 +23,15 @@

from contextlib import contextmanager

import gi
gi.require_version("Gdk", "3.0")
gi.require_version("Gtk", "3.0")
gi.require_version("AnacondaWidgets", "3.0")
gi.require_version("Keybinder", "3.0")
gi.require_version("GdkPixbuf", "2.0")
gi.require_version("GLib", "2.0")
gi.require_version("GObject", "2.0")

from gi.repository import Gdk, Gtk, AnacondaWidgets, Keybinder, GdkPixbuf, GLib, GObject

from pyanaconda.i18n import _
Expand Down
4 changes: 4 additions & 0 deletions pyanaconda/ui/gui/helpers.py
Expand Up @@ -26,6 +26,10 @@
log = logging.getLogger("anaconda")

from abc import ABCMeta, abstractproperty, abstractmethod

import gi
gi.require_version("Gtk", "3.0")

from gi.repository import Gtk

from pyanaconda.ui.helpers import InputCheck, InputCheckHandler
Expand Down
6 changes: 6 additions & 0 deletions pyanaconda/ui/gui/hubs/__init__.py
Expand Up @@ -18,6 +18,8 @@
#
# Red Hat Author(s): Chris Lumens <clumens@redhat.com>
#
import gi
gi.require_version("GLib", "2.0")

from gi.repository import GLib

Expand Down Expand Up @@ -102,6 +104,9 @@ def __init__(self, data, storage, payload, instclass):
self._spokeAutostepIndex = 0

def _createBox(self):
gi.require_version("Gtk", "3.0")
gi.require_version("AnacondaWidgets", "3.0")

from gi.repository import Gtk, AnacondaWidgets
from pyanaconda.ui.gui.utils import setViewportBackground

Expand Down Expand Up @@ -345,6 +350,7 @@ def refresh(self):
### SIGNAL HANDLERS

def _on_spoke_clicked(self, selector, event, spoke):
gi.require_version("Gdk", "3.0")
from gi.repository import Gdk

# This handler only runs for these two kinds of events, and only for
Expand Down
4 changes: 4 additions & 0 deletions pyanaconda/ui/gui/hubs/progress.py
Expand Up @@ -21,6 +21,10 @@

from __future__ import division

import gi
gi.require_version("GLib", "2.0")
gi.require_version("Gtk", "3.0")

from gi.repository import GLib, Gtk

import itertools
Expand Down
4 changes: 4 additions & 0 deletions pyanaconda/ui/gui/spokes/advstorage/iscsi.py
Expand Up @@ -21,6 +21,10 @@

from IPy import IP
from collections import namedtuple

import gi
gi.require_version("GLib", "2.0")

from gi.repository import GLib

from pyanaconda import constants
Expand Down
5 changes: 5 additions & 0 deletions pyanaconda/ui/gui/spokes/custom.py
Expand Up @@ -89,6 +89,11 @@
from pyanaconda.ui.gui.utils import really_hide, really_show, GtkActionList, timed_action
from pyanaconda.ui.categories.system import SystemCategory

import gi
gi.require_version("Gtk", "3.0")
gi.require_version("Gdk", "3.0")
gi.require_version("AnacondaWidgets", "3.0")

from gi.repository import Gdk, Gtk
from gi.repository.AnacondaWidgets import MountpointSelector

Expand Down
6 changes: 6 additions & 0 deletions pyanaconda/ui/gui/spokes/datetime_spoke.py
Expand Up @@ -22,6 +22,12 @@
import logging
log = logging.getLogger("anaconda")

import gi
gi.require_version("GLib", "2.0")
gi.require_version("Gdk", "3.0")
gi.require_version("Gtk", "3.0")
gi.require_version("TimezoneMap", "1.0")

from gi.repository import GLib, Gdk, Gtk, TimezoneMap

from pyanaconda.ui.communication import hubQ
Expand Down
2 changes: 2 additions & 0 deletions pyanaconda/ui/gui/spokes/filter.py
Expand Up @@ -18,6 +18,8 @@
#
# Red Hat Author(s): Chris Lumens <clumens@redhat.com>
#
import gi
gi.require_version("Gtk", "3.0")

from gi.repository import Gtk

Expand Down
4 changes: 4 additions & 0 deletions pyanaconda/ui/gui/spokes/keyboard.py
Expand Up @@ -19,6 +19,10 @@
# Red Hat Author(s): Chris Lumens <clumens@redhat.com>
# Vratislav Podzimek <vpodzime@redhat.com>
#
import gi
gi.require_version("Gkbd", "3.0")
gi.require_version("Gdk", "3.0")
gi.require_version("Gtk", "3.0")

from gi.repository import Gkbd, Gdk, Gtk

Expand Down
3 changes: 3 additions & 0 deletions pyanaconda/ui/gui/spokes/langsupport.py
Expand Up @@ -19,6 +19,9 @@
# Red Hat Author(s): Radek Vykydal <rvykydal@redhat.com>
# Vratislav Podzimek <vpodzime@redhat.com>
#
import gi
gi.require_version("Pango", "1.0")
gi.require_version("Gdk", "3.0")

from gi.repository import Pango, Gdk
from pyanaconda.flags import flags
Expand Down
5 changes: 5 additions & 0 deletions pyanaconda/ui/gui/spokes/lib/accordion.py
Expand Up @@ -26,6 +26,10 @@
from pyanaconda.ui.gui.utils import escape_markup, really_hide, really_show
from pyanaconda.storage_utils import AUTOPART_CHOICES

import gi
gi.require_version("AnacondaWidgets", "3.0")
gi.require_version("Gtk", "3.0")

from gi.repository.AnacondaWidgets import MountpointSelector
from gi.repository import Gtk

Expand Down Expand Up @@ -208,6 +212,7 @@ def _mountpointType(self, mountpoint):
return DATA_DEVICE

def _onSelectorClicked(self, selector, event, cb):
gi.require_version("Gdk", "3.0")
from gi.repository import Gdk

if event and not event.type in [Gdk.EventType.BUTTON_PRESS, Gdk.EventType.KEY_RELEASE, Gdk.EventType.FOCUS_CHANGE]:
Expand Down
2 changes: 2 additions & 0 deletions pyanaconda/ui/gui/spokes/lib/cart.py
Expand Up @@ -19,6 +19,8 @@
# Red Hat Author(s): David Lehman <dlehman@redhat.com>
# Chris Lumens <clumens@redhat.com>
#
import gi
gi.require_version("Gtk", "3.0")

from gi.repository import Gtk

Expand Down
4 changes: 4 additions & 0 deletions pyanaconda/ui/gui/spokes/lib/entropy_dialog.py
Expand Up @@ -22,6 +22,10 @@
import time
import math

import gi
gi.require_version("Gtk", "3.0")
gi.require_version("GLib", "2.0")

from gi.repository import Gtk, GLib

from pyanaconda.i18n import P_
Expand Down
5 changes: 5 additions & 0 deletions pyanaconda/ui/gui/spokes/lib/lang_locale_handler.py
Expand Up @@ -25,6 +25,11 @@
"""

import os

import gi
gi.require_version("Gtk", "3.0")
gi.require_version("Pango", "1.0")

from gi.repository import Gtk, Pango
from pyanaconda import localization
from pyanaconda.iutil import strip_accents
Expand Down
3 changes: 3 additions & 0 deletions pyanaconda/ui/gui/spokes/lib/passphrase.py
Expand Up @@ -19,6 +19,9 @@
# Red Hat Author(s): David Lehman <dlehman@redhat.com>
#

import gi
gi.require_version("Gtk", "3.0")

from gi.repository import Gtk

from pyanaconda.ui.helpers import InputCheck
Expand Down
3 changes: 3 additions & 0 deletions pyanaconda/ui/gui/spokes/lib/refresh.py
Expand Up @@ -19,6 +19,9 @@
# Red Hat Author(s): Chris Lumens <clumens@redhat.com>
#

import gi
gi.require_version("GLib", "2.0")

from gi.repository import GLib

from pyanaconda.threads import threadMgr, AnacondaThread
Expand Down
4 changes: 4 additions & 0 deletions pyanaconda/ui/gui/spokes/lib/resize.py
Expand Up @@ -22,6 +22,10 @@
from __future__ import division
from collections import namedtuple

import gi
gi.require_version("Gdk", "3.0")
gi.require_version("Gtk", "3.0")

from gi.repository import Gdk, Gtk

from pyanaconda.i18n import _, C_, N_, P_
Expand Down
11 changes: 10 additions & 1 deletion pyanaconda/ui/gui/spokes/network.py
Expand Up @@ -29,7 +29,17 @@
# - NMClient.CLIENT_WIRELESS_ENABLED callback (hw switch?) - test
# - nm-c-e run: blocking? logging?

import gi
gi.require_version("Gtk", "3.0")
gi.require_version("GLib", "2.0")
gi.require_version("GObject", "2.0")
gi.require_version("Pango", "1.0")
gi.require_version("Gio", "2.0")
gi.require_version("NM", "1.0")
gi.require_version("NMClient", "1.0")

from gi.repository import Gtk
from gi.repository import GLib, GObject, Pango, Gio, NetworkManager, NMClient

from pyanaconda.flags import can_touch_runtime_system
from pyanaconda.i18n import _, N_, C_, CN_
Expand All @@ -47,7 +57,6 @@
from pyanaconda import network
from pyanaconda import nm

from gi.repository import GLib, GObject, Pango, Gio, NetworkManager, NMClient
import dbus
import dbus.service
import string
Expand Down
3 changes: 3 additions & 0 deletions pyanaconda/ui/gui/spokes/software.py
Expand Up @@ -18,6 +18,9 @@
#
# Red Hat Author(s): Chris Lumens <clumens@redhat.com>
#
import gi
gi.require_version("Gtk", "3.0")
gi.require_version("Pango", "1.0")

from gi.repository import Gtk, Pango

Expand Down
4 changes: 4 additions & 0 deletions pyanaconda/ui/gui/spokes/source.py
Expand Up @@ -28,6 +28,10 @@

import os, signal, re

import gi
gi.require_version("GLib", "2.0")
gi.require_version("Gtk", "3.0")

from gi.repository import GLib, Gtk

from pyanaconda.flags import flags
Expand Down
5 changes: 5 additions & 0 deletions pyanaconda/ui/gui/spokes/storage.py
Expand Up @@ -39,6 +39,11 @@
"""

import gi
gi.require_version("Gdk", "3.0")
gi.require_version("GLib", "2.0")
gi.require_version("AnacondaWidgets", "3.0")

from gi.repository import Gdk, GLib, AnacondaWidgets

from pyanaconda.iutil import firstNotNone
Expand Down
3 changes: 3 additions & 0 deletions pyanaconda/ui/gui/tools/run-spoke.py
Expand Up @@ -9,6 +9,9 @@
for p in os.environ.get("ANACONDA_WIDGETS_OVERRIDES", "").split(":"):
gi.overrides.__path__.insert(0, p)

import gi
gi.require_version("Gtk", "3.0")

from gi.repository import Gtk

import ctypes
Expand Down

0 comments on commit df62c06

Please sign in to comment.