summaryrefslogtreecommitdiff
path: root/src/leap/bitmask/gui/app.py
diff options
context:
space:
mode:
authorKali Kaneko <kali@leap.se>2018-02-11 22:31:54 +0100
committerKali Kaneko <kali@leap.se>2018-02-15 16:36:42 +0100
commit03e4bae0942c58344d6021fdaa08342baa7aea3c (patch)
treee9cf6154c44016bdca3c98ed2a4c174b5fb8b972 /src/leap/bitmask/gui/app.py
parentf5839b1938ba7ab96f0d9777520a564975470f51 (diff)
[feat] implement fallback to webkit for bundles
in the end, depending on webengine didn't seem to be such a great idea: it makes bundles more complex, heavy and brittle. I tried compiling qt5 and the maintained qtwebkit fork, but that had also its own set of problems (lastly, pyinstaller didn't work properly; pyqt also adds a lot of garbage even if you disabled lots of modules you don't need). so, this is a fallback to a stretch-based build. it fixes the libGL library by adding the right version into the bundle. in this commit I also add a dockerfile for an image that can build bundles by installing pip dependencies directly in the system. this has the advantage that the build process is very fast, but the downside that a new image needs to be pushed to the registry each time that new dependencies are added; we'll also miss any bug due to introducing new dependncies (but hopefully it will be catched by other steps in the CI). The good side of it is that it reduces the need for some hacks in the build process when bundling from a virtualenv.
Diffstat (limited to 'src/leap/bitmask/gui/app.py')
-rw-r--r--src/leap/bitmask/gui/app.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/leap/bitmask/gui/app.py b/src/leap/bitmask/gui/app.py
index d52636c2..ee8e9387 100644
--- a/src/leap/bitmask/gui/app.py
+++ b/src/leap/bitmask/gui/app.py
@@ -39,6 +39,8 @@ from leap.bitmask.gui.housekeeping import NoAuthTokenError
from leap.common.config import get_path_prefix
+HAS_WEBENGINE=False
+
if platform.system() == 'Windows':
from multiprocessing import freeze_support
from PySide import QtCore, QtGui
@@ -56,9 +58,15 @@ else:
from PyQt5.QtWidgets import QDialog
from PyQt5.QtWidgets import QMessageBox
- from PyQt5.QtWebEngineWidgets import QWebEngineView as QWebView
- from PyQt5.QtWebEngineWidgets import QWebEngineSettings as QWebSettings
- from PyQt5.QtWebChannel import QWebChannel
+ try:
+ from PyQt5.QtWebEngineWidgets import QWebEngineView as QWebView
+ from PyQt5.QtWebEngineWidgets import QWebEngineSettings as QWebSettings
+ from PyQt5.QtWebChannel import QWebChannel
+ HAS_WEBENGINE=True
+ except ImportError:
+ from PyQt5.QtWebKitWidgets import QWebView
+ from PyQt5.QtWebKit import QWebSettings
+
IS_WIN = platform.system() == "Windows"
DEBUG = os.environ.get("DEBUG", False)
@@ -100,7 +108,7 @@ class BrowserWindow(QWebView, WithTrayIcon):
self.bridge = AppBridge(self) if first else None
- if self.bridge is not None:
+ if self.bridge is not None and HAS_WEBENGINE:
print "[+] registering python<->js bridge"
channel = QWebChannel(self)
channel.registerObject("bitmaskApp", self.bridge)