Python 3 asyncio selectors fix (#344)

This commit is contained in:
Akinwale Ariwodola 2018-10-28 19:12:40 +01:00 committed by GitHub
parent 425a83faec
commit 8ece8cc14d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 3 deletions

View file

@ -161,7 +161,7 @@ class Python3Recipe(TargetPythonRecipe):
def prebuild_arch(self, arch): def prebuild_arch(self, arch):
super(Python3Recipe, self).prebuild_arch(arch) super(Python3Recipe, self).prebuild_arch(arch)
if self.version == '3.6': 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) build_dir = self.get_build_dir(arch.arch)
shprint(sh.ln, '-sf', shprint(sh.ln, '-sf',
realpath(join(build_dir, 'Lib/site-packages/README.txt')), realpath(join(build_dir, 'Lib/site-packages/README.txt')),

View file

@ -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

View file

@ -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 keyring.backend
import platform import platform
import ssl import ssl
from jnius import autoclass
# Fixes / patches / overrides # Fixes / patches / overrides
# platform.platform() in libc_ver: IOError: [Errno 21] Is a directory # platform.platform() in libc_ver: IOError: [Errno 21] Is a directory
from jnius import autoclass
lbrynet_utils = autoclass('io.lbry.browser.Utils') lbrynet_utils = autoclass('io.lbry.browser.Utils')
service = autoclass('io.lbry.browser.LbrynetService').serviceInstance service = autoclass('io.lbry.browser.LbrynetService').serviceInstance
platform.platform = lambda: 'Android %s (API %s)' % (lbrynet_utils.getAndroidRelease(), lbrynet_utils.getAndroidSdk()) platform.platform = lambda: 'Android %s (API %s)' % (lbrynet_utils.getAndroidRelease(), lbrynet_utils.getAndroidSdk())
@ -76,7 +90,7 @@ keyring.set_keyring(LbryAndroidKeyring())
import logging.handlers import logging.handlers
from lbrynet.core import log_support from lbrynet.core import log_support
from twisted.internet import defer, reactor from twisted.internet import reactor
from lbrynet import analytics from lbrynet import analytics
from lbrynet import conf from lbrynet import conf