From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 6330C1382C5 for ; Mon, 30 Apr 2018 06:29:32 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 604C8E0C4D; Mon, 30 Apr 2018 06:29:30 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 37CADE0C4D for ; Mon, 30 Apr 2018 06:29:30 +0000 (UTC) Received: from oystercatcher.gentoo.org (unknown [IPv6:2a01:4f8:202:4333:225:90ff:fed9:fc84]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id AC5E4335C95 for ; Mon, 30 Apr 2018 06:29:27 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 212052A2 for ; Mon, 30 Apr 2018 06:29:26 +0000 (UTC) From: "Zac Medico" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Zac Medico" Message-ID: <1525068805.dfbb97f20ad7cc537f73c204eb740f8e376e27bb.zmedico@gentoo> Subject: [gentoo-commits] proj/portage:master commit in: pym/_emerge/ X-VCS-Repository: proj/portage X-VCS-Files: pym/_emerge/AsynchronousLock.py X-VCS-Directories: pym/_emerge/ X-VCS-Committer: zmedico X-VCS-Committer-Name: Zac Medico X-VCS-Revision: dfbb97f20ad7cc537f73c204eb740f8e376e27bb X-VCS-Branch: master Date: Mon, 30 Apr 2018 06:29:26 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: bb02665b-df3c-424d-b5cf-e40b0ea28bb8 X-Archives-Hash: 58db4f8087adf814343903568836ba28 commit: dfbb97f20ad7cc537f73c204eb740f8e376e27bb Author: Zac Medico gentoo org> AuthorDate: Mon Apr 30 02:55:14 2018 +0000 Commit: Zac Medico gentoo org> CommitDate: Mon Apr 30 06:13:25 2018 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=dfbb97f2 _LockProcess: add_reader asyncio compat (bug 654382) Use add_reader for asyncio compatibility. Bug: https://bugs.gentoo.org/654382 pym/_emerge/AsynchronousLock.py | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/pym/_emerge/AsynchronousLock.py b/pym/_emerge/AsynchronousLock.py index c5991bcff..6cf37369f 100644 --- a/pym/_emerge/AsynchronousLock.py +++ b/pym/_emerge/AsynchronousLock.py @@ -2,7 +2,6 @@ # Distributed under the terms of the GNU General Public License v2 import fcntl -import errno import logging import sys @@ -181,8 +180,7 @@ class _LockProcess(AbstractPollTask): """ __slots__ = ('path',) + \ - ('_acquired', '_kill_test', '_proc', '_files', - '_reg_id','_unlock_future') + ('_acquired', '_kill_test', '_proc', '_files', '_unlock_future') def _start(self): in_pr, in_pw = os.pipe() @@ -204,8 +202,7 @@ class _LockProcess(AbstractPollTask): fcntl.fcntl(in_pr, fcntl.F_SETFD, fcntl.fcntl(in_pr, fcntl.F_GETFD) | fcntl.FD_CLOEXEC) - self._reg_id = self.scheduler.io_add_watch(in_pr, - self.scheduler.IO_IN, self._output_handler) + self.scheduler.add_reader(in_pr, self._output_handler) self._registered = True self._proc = SpawnProcess( args=[portage._python_interpreter, @@ -268,14 +265,8 @@ class _LockProcess(AbstractPollTask): self._proc.poll() return self.returncode - def _output_handler(self, f, event): - buf = None - if event & self.scheduler.IO_IN: - try: - buf = os.read(self._files['pipe_in'], self._bufsize) - except OSError as e: - if e.errno not in (errno.EAGAIN,): - raise + def _output_handler(self): + buf = self._read_buf(self._files['pipe_in'], None) if buf: self._acquired = True self._unregister() @@ -287,16 +278,13 @@ class _LockProcess(AbstractPollTask): def _unregister(self): self._registered = False - if self._reg_id is not None: - self.scheduler.source_remove(self._reg_id) - self._reg_id = None - if self._files is not None: try: pipe_in = self._files.pop('pipe_in') except KeyError: pass else: + self.scheduler.remove_reader(pipe_in) os.close(pipe_in) def _unlock(self):