diff options
author | Kali Kaneko <kali@leap.se> | 2018-02-11 22:31:54 +0100 |
---|---|---|
committer | Kali Kaneko <kali@leap.se> | 2018-02-15 16:36:42 +0100 |
commit | 03e4bae0942c58344d6021fdaa08342baa7aea3c (patch) | |
tree | e9cf6154c44016bdca3c98ed2a4c174b5fb8b972 /src | |
parent | f5839b1938ba7ab96f0d9777520a564975470f51 (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')
-rw-r--r-- | src/leap/bitmask/gui/app.py | 16 |
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) |