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 E5410138332 for ; Mon, 23 Apr 2018 18:52:41 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 0965AE0ADD; Mon, 23 Apr 2018 18:52:41 +0000 (UTC) Received: from smtp.gentoo.org (dev.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 CDA87E0AC1 for ; Mon, 23 Apr 2018 18:52:40 +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 476E0335C59 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 04A9128B 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: <1524508771.a0e96e92ae040052f9f11e1731e221346886aa3b.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: a0e96e92ae040052f9f11e1731e221346886aa3b 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: db389949-f256-476f-8711-404edf640a9a X-Archives-Hash: 5223b66fb50a9ed93d0ca179bc67074f commit: a0e96e92ae040052f9f11e1731e221346886aa3b Author: Zac Medico gentoo org> AuthorDate: Sun Apr 22 20:20:45 2018 +0000 Commit: Zac Medico gentoo org> CommitDate: Mon Apr 23 18:39:31 2018 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=a0e96e92 EbuildFetcher: inherit CompositeTask (bug 653810) Make EbuildFetcher inherit CompositeTask, and move remaining code to a _EbuildFetcherProcess class that still inherits ForkProcess. The CompositeTask framework will be used to split EbuildFetcher into subtasks, in order to prevent event loop recursion. Bug: https://bugs.gentoo.org/653810 Reviewed-by: Brian Dolbec gentoo.org> pym/_emerge/EbuildFetcher.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/pym/_emerge/EbuildFetcher.py b/pym/_emerge/EbuildFetcher.py index d98d00736..81eeb6dcd 100644 --- a/pym/_emerge/EbuildFetcher.py +++ b/pym/_emerge/EbuildFetcher.py @@ -15,12 +15,17 @@ from portage.elog.messages import eerror from portage.package.ebuild.fetch import _check_distfile, fetch from portage.util._async.ForkProcess import ForkProcess from portage.util._pty import _create_pty_or_pipe +from _emerge.CompositeTask import CompositeTask -class EbuildFetcher(ForkProcess): + +class EbuildFetcher(CompositeTask): __slots__ = ("config_pool", "ebuild_path", "fetchonly", "fetchall", - "pkg", "prefetch") + \ - ("_digests", "_manifest", "_settings", "_uri_map") + "logfile", "pkg", "prefetch", "_fetcher_proc") + + def __init__(self, **kwargs): + CompositeTask.__init__(self, **kwargs) + self._fetcher_proc = _EbuildFetcherProcess(**kwargs) def already_fetched(self, settings): """ @@ -32,7 +37,18 @@ class EbuildFetcher(ForkProcess): such messages. This will raise InvalidDependString if SRC_URI is invalid. """ + return self._fetcher_proc.already_fetched(settings) + + def _start(self): + self._start_task(self._fetcher_proc, self._default_final_exit) + +class _EbuildFetcherProcess(ForkProcess): + + __slots__ = ("config_pool", "ebuild_path", "fetchonly", "fetchall", + "pkg", "prefetch", "_digests", "_manifest", "_settings", "_uri_map") + + def already_fetched(self, settings): uri_map = self._get_uri_map() if not uri_map: return True