1 |
commit: c11a6ec05f02601a7c2cb5455d1289b9dfed5f10 |
2 |
Author: Zac Medico <zmedico <AT> gentoo <DOT> org> |
3 |
AuthorDate: Mon Apr 30 06:06:56 2018 +0000 |
4 |
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> |
5 |
CommitDate: Mon Apr 30 06:24:15 2018 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=c11a6ec0 |
7 |
|
8 |
AbstractPollTask: add_reader asyncio compat (bug 654382) |
9 |
|
10 |
Migration to add_reader is now complete, so remove unused code related |
11 |
to io_add_watch (and source_remove). |
12 |
|
13 |
Bug: https://bugs.gentoo.org/654382 |
14 |
|
15 |
pym/_emerge/AbstractEbuildProcess.py | 5 ----- |
16 |
pym/_emerge/AbstractPollTask.py | 29 +++++---------------------- |
17 |
pym/_emerge/PipeReader.py | 2 +- |
18 |
pym/_emerge/SubProcess.py | 22 +------------------- |
19 |
pym/portage/util/_async/SchedulerInterface.py | 6 +----- |
20 |
5 files changed, 8 insertions(+), 56 deletions(-) |
21 |
|
22 |
diff --git a/pym/_emerge/AbstractEbuildProcess.py b/pym/_emerge/AbstractEbuildProcess.py |
23 |
index ccc3b8e32..370cac529 100644 |
24 |
--- a/pym/_emerge/AbstractEbuildProcess.py |
25 |
+++ b/pym/_emerge/AbstractEbuildProcess.py |
26 |
@@ -347,11 +347,6 @@ class AbstractEbuildProcess(SpawnProcess): |
27 |
log_path = self.settings.get("PORTAGE_LOG_FILE") |
28 |
self.scheduler.output(msg, log_path=log_path) |
29 |
|
30 |
- def _log_poll_exception(self, event): |
31 |
- self._elog("eerror", |
32 |
- ["%s received strange poll event: %s\n" % \ |
33 |
- (self.__class__.__name__, event,)]) |
34 |
- |
35 |
def _async_waitpid_cb(self, *args, **kwargs): |
36 |
""" |
37 |
Override _async_waitpid_cb to perform cleanup that is |
38 |
|
39 |
diff --git a/pym/_emerge/AbstractPollTask.py b/pym/_emerge/AbstractPollTask.py |
40 |
index 2c5403751..3a869cb46 100644 |
41 |
--- a/pym/_emerge/AbstractPollTask.py |
42 |
+++ b/pym/_emerge/AbstractPollTask.py |
43 |
@@ -44,18 +44,16 @@ class AbstractPollTask(AsynchronousTask): |
44 |
| --------------------------------------------------- |
45 |
| 0 | None |
46 |
""" |
47 |
- buf = None |
48 |
- if event & self.scheduler.IO_IN: |
49 |
- buf = array.array('B') |
50 |
- try: |
51 |
+ buf = array.array('B') |
52 |
+ try: |
53 |
buf.fromfile(f, self._bufsize) |
54 |
- except EOFError: |
55 |
+ except EOFError: |
56 |
pass |
57 |
- except TypeError: |
58 |
+ except TypeError: |
59 |
# Python 3.2: |
60 |
# TypeError: read() didn't return bytes |
61 |
pass |
62 |
- except IOError as e: |
63 |
+ except IOError as e: |
64 |
# EIO happens with pty on Linux after the |
65 |
# slave end of the pty has been closed. |
66 |
if e.errno == errno.EIO: |
67 |
@@ -121,23 +119,6 @@ class AbstractPollTask(AsynchronousTask): |
68 |
def _unregister(self): |
69 |
self._registered = False |
70 |
|
71 |
- def _log_poll_exception(self, event): |
72 |
- writemsg_level( |
73 |
- "!!! %s received strange poll event: %s\n" % \ |
74 |
- (self.__class__.__name__, event,), |
75 |
- level=logging.ERROR, noiselevel=-1) |
76 |
- |
77 |
- def _unregister_if_appropriate(self, event): |
78 |
- if self._registered: |
79 |
- if event & self._exceptional_events: |
80 |
- self._log_poll_exception(event) |
81 |
- self.cancel() |
82 |
- self.returncode = self.returncode or os.EX_OK |
83 |
- self._async_wait() |
84 |
- elif event & self.scheduler.IO_HUP: |
85 |
- self.returncode = self.returncode or os.EX_OK |
86 |
- self._async_wait() |
87 |
- |
88 |
def _wait_loop(self, timeout=None): |
89 |
loop = getattr(self.scheduler, '_asyncio_wrapper', self.scheduler) |
90 |
tasks = [self.async_wait()] |
91 |
|
92 |
diff --git a/pym/_emerge/PipeReader.py b/pym/_emerge/PipeReader.py |
93 |
index 6b567d8b1..6a3fc9ea6 100644 |
94 |
--- a/pym/_emerge/PipeReader.py |
95 |
+++ b/pym/_emerge/PipeReader.py |
96 |
@@ -79,7 +79,7 @@ class PipeReader(AbstractPollTask): |
97 |
break |
98 |
|
99 |
while True: |
100 |
- data = self._read_array(f, self.scheduler.IO_IN) |
101 |
+ data = self._read_array(f, None) |
102 |
if data is None: |
103 |
break |
104 |
if data: |
105 |
|
106 |
diff --git a/pym/_emerge/SubProcess.py b/pym/_emerge/SubProcess.py |
107 |
index a37482ca4..7d6b03272 100644 |
108 |
--- a/pym/_emerge/SubProcess.py |
109 |
+++ b/pym/_emerge/SubProcess.py |
110 |
@@ -12,7 +12,7 @@ import errno |
111 |
class SubProcess(AbstractPollTask): |
112 |
|
113 |
__slots__ = ("pid",) + \ |
114 |
- ("_dummy_pipe_fd", "_files", "_reg_id", "_waitpid_id") |
115 |
+ ("_dummy_pipe_fd", "_files", "_waitpid_id") |
116 |
|
117 |
# This is how much time we allow for waitpid to succeed after |
118 |
# we've sent a kill signal to our subprocess. |
119 |
@@ -70,10 +70,6 @@ class SubProcess(AbstractPollTask): |
120 |
|
121 |
self._registered = False |
122 |
|
123 |
- if self._reg_id is not None: |
124 |
- self.scheduler.source_remove(self._reg_id) |
125 |
- self._reg_id = None |
126 |
- |
127 |
if self._waitpid_id is not None: |
128 |
self.scheduler._asyncio_child_watcher.\ |
129 |
remove_child_handler(self._waitpid_id) |
130 |
@@ -86,19 +82,3 @@ class SubProcess(AbstractPollTask): |
131 |
else: |
132 |
f.close() |
133 |
self._files = None |
134 |
- |
135 |
- def _unregister_if_appropriate(self, event): |
136 |
- """ |
137 |
- Override the AbstractPollTask._unregister_if_appropriate method to |
138 |
- call _async_waitpid instead of wait(), so that event loop recursion |
139 |
- is not triggered when the pid exit status is not yet available. |
140 |
- """ |
141 |
- if self._registered: |
142 |
- if event & self._exceptional_events: |
143 |
- self._log_poll_exception(event) |
144 |
- self._unregister() |
145 |
- self.cancel() |
146 |
- self._async_waitpid() |
147 |
- elif event & self.scheduler.IO_HUP: |
148 |
- self._unregister() |
149 |
- self._async_waitpid() |
150 |
|
151 |
diff --git a/pym/portage/util/_async/SchedulerInterface.py b/pym/portage/util/_async/SchedulerInterface.py |
152 |
index 56b844616..718fbc8e7 100644 |
153 |
--- a/pym/portage/util/_async/SchedulerInterface.py |
154 |
+++ b/pym/portage/util/_async/SchedulerInterface.py |
155 |
@@ -11,11 +11,7 @@ from ..SlotObject import SlotObject |
156 |
|
157 |
class SchedulerInterface(SlotObject): |
158 |
|
159 |
- _event_loop_attrs = ("IO_ERR", "IO_HUP", "IO_IN", |
160 |
- "IO_NVAL", "IO_OUT", "IO_PRI", |
161 |
- "io_add_watch", |
162 |
- "source_remove", |
163 |
- |
164 |
+ _event_loop_attrs = ( |
165 |
"add_reader", |
166 |
"add_writer", |
167 |
"call_at", |