diff options
author | Kali Kaneko <kali@leap.se> | 2015-08-05 19:17:43 -0700 |
---|---|---|
committer | Ivan Alejandro <ivanalejandro0@gmail.com> | 2015-08-07 19:02:24 -0300 |
commit | f220d32702eddbd18be167b2742bb60043f60a45 (patch) | |
tree | 7fcc4cfdfc55b23a507f767e2ea0e1ed1c5403c0 /src | |
parent | 154109b9b08a782e2a7f6b6dddbe33e576b2b8a0 (diff) |
[bug] workaround wrong qtplugins path rewritten in the libs
this is a bug in macholib, there's a missing letter in the plugins path, so
unless we fix this they cannot be loaded from the bundle.
See:
https://bitbucket.org/pydica/pyside-setup/commits/4b8be97e5a00b577fe30ce9aa7e5723ff2a66f94
Quoting from http://code.activestate.com/lists/pythonmac-sig/23278/:
"""
The problem might be this line:
@rpath/Contents/mageformats/libqtiff.dylib
The "i" from "imageformats" is missing!
This _might_ be related to the unusual case that "libqtiff" has no path
at all, or something else
is funny, and we end up with a name that will not be found at all.
Then the loader finds the plugin in the installed Qt, which causes it to
load everything
again from there.
"""
Diffstat (limited to 'src')
-rw-r--r-- | src/leap/bitmask/app.py | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/leap/bitmask/app.py b/src/leap/bitmask/app.py index be1fc424..a2e2aa1a 100644 --- a/src/leap/bitmask/app.py +++ b/src/leap/bitmask/app.py @@ -60,7 +60,7 @@ from leap.bitmask.frontend_app import run_frontend from leap.bitmask.logs.utils import get_logger from leap.bitmask.platform_init.locks import we_are_the_one_and_only from leap.bitmask.services.mail import plumber -from leap.bitmask.util import leap_argparse, flags_to_dict +from leap.bitmask.util import leap_argparse, flags_to_dict, here from leap.bitmask.util.requirement_checker import check_requirements from leap.mail import __version__ as MAIL_VERSION @@ -68,7 +68,6 @@ from leap.mail import __version__ as MAIL_VERSION import codecs codecs.register(lambda name: codecs.lookup('utf-8') if name == 'cp65001' else None) - import psutil @@ -134,6 +133,15 @@ def log_lsb_release_info(logger): for line in distro_info: logger.info(line) +def fix_qtplugins_path(): + # This is a small workaround for a bug in macholib, there is a slight typo + # in the path for the qt plugins that is added to the dynamic loader path + # in the libs. + if sys.platform in ('win32', 'darwin'): + from PySide import QtCore + plugins_path = os.path.join(os.path.dirname(here(QtCore)), 'plugins') + QtCore.QCoreApplication.setLibraryPaths([plugins_path]) + def start_app(): """ @@ -200,7 +208,6 @@ def start_app(): logger.info('leap.mail version %s' % MAIL_VERSION) log_lsb_release_info(logger) logger.info('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') - logger.info('Starting app') backend_running = BackendProxy().check_online() @@ -220,6 +227,7 @@ def start_app(): backend_process.start() backend_pid = backend_process.pid + fix_qtplugins_path() run_frontend(options, flags_dict, backend_pid=backend_pid) |