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 21F1E138331 for ; Mon, 23 Apr 2018 18:52:42 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 21628E0ABA; Mon, 23 Apr 2018 18:52:41 +0000 (UTC) Received: from smtp.gentoo.org (mail.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 025D1E0AC1 for ; Mon, 23 Apr 2018 18:52:41 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (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 BB701335C74 for ; Mon, 23 Apr 2018 18:52:39 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 29B70297 for ; Mon, 23 Apr 2018 18:52:38 +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: <1524508782.e512275c2997a2069049bbb5acdb40e155cf19c7.zmedico@gentoo> Subject: [gentoo-commits] proj/portage:master commit in: pym/_emerge/ X-VCS-Repository: proj/portage X-VCS-Files: pym/_emerge/EbuildFetcher.py X-VCS-Directories: pym/_emerge/ X-VCS-Committer: zmedico X-VCS-Committer-Name: Zac Medico X-VCS-Revision: e512275c2997a2069049bbb5acdb40e155cf19c7 X-VCS-Branch: master Date: Mon, 23 Apr 2018 18:52:38 +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: 71d8e903-86a8-4cb2-a081-0e06d2bd5584 X-Archives-Hash: d3f6b23fd38d25859ba50247e5150d94 commit: e512275c2997a2069049bbb5acdb40e155cf19c7 Author: Zac Medico gentoo org> AuthorDate: Sun Apr 22 21:47:00 2018 +0000 Commit: Zac Medico gentoo org> CommitDate: Mon Apr 23 18:39:42 2018 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=e512275c EbuildFetcher: use _async_uri_map in _start (bug 653810) Use _async_uri_map to avoid event loop recursion in _start. Bug: https://bugs.gentoo.org/653810 Reviewed-by: Brian Dolbec gentoo.org> pym/_emerge/EbuildFetcher.py | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/pym/_emerge/EbuildFetcher.py b/pym/_emerge/EbuildFetcher.py index 1f574740b..8f6cc60fe 100644 --- a/pym/_emerge/EbuildFetcher.py +++ b/pym/_emerge/EbuildFetcher.py @@ -13,6 +13,7 @@ from portage import _unicode_decode from portage.checksum import _hash_filter from portage.elog.messages import eerror from portage.package.ebuild.fetch import _check_distfile, fetch +from portage.util._async.AsyncTaskFuture import AsyncTaskFuture from portage.util._async.ForkProcess import ForkProcess from portage.util._pty import _create_pty_or_pipe from _emerge.CompositeTask import CompositeTask @@ -40,6 +41,25 @@ class EbuildFetcher(CompositeTask): return self._fetcher_proc.already_fetched(settings) def _start(self): + self._start_task( + AsyncTaskFuture(future=self._fetcher_proc._async_uri_map()), + self._start_fetch) + + def _start_fetch(self, uri_map_task): + self._assert_current(uri_map_task) + try: + uri_map = uri_map_task.future.result() + except portage.exception.InvalidDependString as e: + msg_lines = [] + msg = "Fetch failed for '%s' due to invalid SRC_URI: %s" % \ + (self.pkg.cpv, e) + msg_lines.append(msg) + self._fetcher_proc._eerror(msg_lines) + self._current_task = None + self.returncode = 1 + self._async_wait() + return + self._start_task(self._fetcher_proc, self._default_final_exit) @@ -123,18 +143,8 @@ class _EbuildFetcherProcess(ForkProcess): root_config = self.pkg.root_config portdb = root_config.trees["porttree"].dbapi ebuild_path = self._get_ebuild_path() - - try: - uri_map = self.scheduler.run_until_complete(self._async_uri_map()) - except portage.exception.InvalidDependString as e: - msg_lines = [] - msg = "Fetch failed for '%s' due to invalid SRC_URI: %s" % \ - (self.pkg.cpv, e) - msg_lines.append(msg) - self._eerror(msg_lines) - self._set_returncode((self.pid, 1 << 8)) - self._async_wait() - return + # This is initialized by an earlier _async_uri_map call. + uri_map = self._uri_map if not uri_map: # Nothing to fetch.