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/
Date: Sun, 29 Apr 2018 22:24:28
Message-Id: 1525040308.28fd93d4de0c1adcecb7ce10c7514d5718ccf43f.zmedico@gentoo
1 commit: 28fd93d4de0c1adcecb7ce10c7514d5718ccf43f
2 Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
3 AuthorDate: Sun Apr 29 21:58:38 2018 +0000
4 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
5 CommitDate: Sun Apr 29 22:18:28 2018 +0000
6 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=28fd93d4
7
8 Scheduler: call_later asyncio compat (bug 591760)
9
10 Use call_later for asyncio compatibility.
11
12 Bug: https://bugs.gentoo.org/591760
13
14 pym/_emerge/Scheduler.py | 39 +++++++++++++++++++--------------------
15 1 file changed, 19 insertions(+), 20 deletions(-)
16
17 diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py
18 index 4c1ea5078..422308184 100644
19 --- a/pym/_emerge/Scheduler.py
20 +++ b/pym/_emerge/Scheduler.py
21 @@ -74,8 +74,8 @@ class Scheduler(PollScheduler):
22 # max time between loadavg checks (seconds)
23 _loadavg_latency = 30
24
25 - # max time between display status updates (milliseconds)
26 - _max_display_latency = 3000
27 + # max time between display status updates (seconds)
28 + _max_display_latency = 3
29
30 _opts_ignore_blockers = \
31 frozenset(["--buildpkgonly",
32 @@ -1398,10 +1398,15 @@ class Scheduler(PollScheduler):
33 failed_pkgs = self._failed_pkgs
34 portage.locks._quiet = self._background
35 portage.elog.add_listener(self._elog_listener)
36 - display_timeout_id = None
37 +
38 + def display_callback():
39 + self._status_display.display()
40 + display_callback.handle = self._event_loop.call_later(
41 + self._max_display_latency, display_callback)
42 + display_callback.handle = None
43 +
44 if self._status_display._isatty and not self._status_display.quiet:
45 - display_timeout_id = self._event_loop.timeout_add(
46 - self._max_display_latency, self._status_display.display)
47 + display_callback()
48 rval = os.EX_OK
49
50 try:
51 @@ -1410,8 +1415,8 @@ class Scheduler(PollScheduler):
52 self._main_loop_cleanup()
53 portage.locks._quiet = False
54 portage.elog.remove_listener(self._elog_listener)
55 - if display_timeout_id is not None:
56 - self._event_loop.source_remove(display_timeout_id)
57 + if display_callback.handle is not None:
58 + display_callback.handle.cancel()
59 if failed_pkgs:
60 rval = failed_pkgs[-1].returncode
61
62 @@ -1625,12 +1630,11 @@ class Scheduler(PollScheduler):
63 elapsed_seconds < self._sigcont_delay:
64
65 if self._job_delay_timeout_id is not None:
66 - self._event_loop.source_remove(
67 - self._job_delay_timeout_id)
68 + self._job_delay_timeout_id.cancel()
69
70 - self._job_delay_timeout_id = self._event_loop.timeout_add(
71 - 1000 * (self._sigcont_delay - elapsed_seconds),
72 - self._schedule_once)
73 + self._job_delay_timeout_id = self._event_loop.call_later(
74 + self._sigcont_delay - elapsed_seconds,
75 + self._schedule)
76 return True
77
78 # Only set this to None after the delay has expired,
79 @@ -1651,19 +1655,14 @@ class Scheduler(PollScheduler):
80 if elapsed_seconds > 0 and elapsed_seconds < delay:
81
82 if self._job_delay_timeout_id is not None:
83 - self._event_loop.source_remove(
84 - self._job_delay_timeout_id)
85 + self._job_delay_timeout_id.cancel()
86
87 - self._job_delay_timeout_id = self._event_loop.timeout_add(
88 - 1000 * (delay - elapsed_seconds), self._schedule_once)
89 + self._job_delay_timeout_id = self._event_loop.call_later(
90 + delay - elapsed_seconds, self._schedule)
91 return True
92
93 return False
94
95 - def _schedule_once(self):
96 - self._schedule()
97 - return False
98 -
99 def _schedule_tasks_imp(self):
100 """
101 @rtype: bool