diff --git a/recipes/python3crystax/__init__.py b/recipes/python3crystax/__init__.py index 9cc6814c..6ad59123 100644 --- a/recipes/python3crystax/__init__.py +++ b/recipes/python3crystax/__init__.py @@ -161,7 +161,7 @@ class Python3Recipe(TargetPythonRecipe): def prebuild_arch(self, arch): super(Python3Recipe, self).prebuild_arch(arch) if self.version == '3.6': - Python3Recipe.patches = ['patch_python3.6.patch'] + Python3Recipe.patches = ['patch_python3.6.patch', 'selectors.patch'] build_dir = self.get_build_dir(arch.arch) shprint(sh.ln, '-sf', realpath(join(build_dir, 'Lib/site-packages/README.txt')), diff --git a/recipes/python3crystax/selectors.patch b/recipes/python3crystax/selectors.patch new file mode 100644 index 00000000..89e49668 --- /dev/null +++ b/recipes/python3crystax/selectors.patch @@ -0,0 +1,15 @@ +--- a/Lib/selectors.py 2018-06-27 00:39:50.000000000 +0100 ++++ b/Lib/selectors.py 2018-10-28 17:39:46.027757518 +0100 +@@ -599,9 +599,9 @@ + # Choose the best implementation, roughly: + # epoll|kqueue|devpoll > poll > select. + # select() also can't accept a FD > FD_SETSIZE (usually around 1024) +-if 'KqueueSelector' in globals(): +- DefaultSelector = KqueueSelector +-elif 'EpollSelector' in globals(): ++#if 'KqueueSelector' in globals(): ++# DefaultSelector = KqueueSelector ++if 'EpollSelector' in globals(): + DefaultSelector = EpollSelector + elif 'DevpollSelector' in globals(): + DefaultSelector = DevpollSelector diff --git a/src/main/python/lbrynetservice.py b/src/main/python/lbrynetservice.py index f95ef63d..adc3c1ee 100644 --- a/src/main/python/lbrynetservice.py +++ b/src/main/python/lbrynetservice.py @@ -1,10 +1,24 @@ +import sys +from twisted.internet import asyncioreactor +if 'twisted.internet.reactor' not in sys.modules: + asyncioreactor.install() +else: + from twisted.internet import reactor + if not isinstance(reactor, asyncioreactor.AsyncioSelectorReactor) and getattr(sys, 'frozen', False): + # pyinstaller hooks install the default reactor before + # any of our code runs, see kivy for similar problem: + # https://github.com/kivy/kivy/issues/4182 + del sys.modules['twisted.internet.reactor'] + asyncioreactor.install() + from twisted.internet import reactor + import keyring.backend import platform import ssl +from jnius import autoclass # Fixes / patches / overrides # platform.platform() in libc_ver: IOError: [Errno 21] Is a directory -from jnius import autoclass lbrynet_utils = autoclass('io.lbry.browser.Utils') service = autoclass('io.lbry.browser.LbrynetService').serviceInstance platform.platform = lambda: 'Android %s (API %s)' % (lbrynet_utils.getAndroidRelease(), lbrynet_utils.getAndroidSdk()) @@ -76,7 +90,7 @@ keyring.set_keyring(LbryAndroidKeyring()) import logging.handlers from lbrynet.core import log_support -from twisted.internet import defer, reactor +from twisted.internet import reactor from lbrynet import analytics from lbrynet import conf