Gentoo Archives: gentoo-commits

From: Zac Medico <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:master commit in: pym/_emerge/, pym/portage/util/_async/
Date: Mon, 30 Apr 2018 06:29:33
Message-Id: 1525069455.c11a6ec05f02601a7c2cb5455d1289b9dfed5f10.zmedico@gentoo
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",