aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Stevenson <james.al.stevenson@gmail.com>2021-05-16 11:58:13 +0100
committerZac Medico <zmedico@gentoo.org>2021-05-16 15:27:15 -0700
commite26a08896f098ff93530efcd2d77d60d2eff0257 (patch)
tree856cc5ce417c128370d533f3bf6acc6e4e53ab4c
parentAccumulated PROPERTIES and RESTRICT for EAPI 8 (diff)
downloadportage-e26a08896f098ff93530efcd2d77d60d2eff0257.tar.gz
portage-e26a08896f098ff93530efcd2d77d60d2eff0257.tar.bz2
portage-e26a08896f098ff93530efcd2d77d60d2eff0257.zip
emerge --fetchonly --quiet: use emerge-fetch.log when writable (bug 285614)
Closes: https://github.com/gentoo/portage/pull/707 Bug: https://bugs.gentoo.org/285614 Signed-off-by: James Stevenson <james.al.stevenson@gmail.com> Signed-off-by: Zac Medico <zmedico@gentoo.org>
-rw-r--r--lib/_emerge/EbuildBuild.py25
-rw-r--r--lib/_emerge/Scheduler.py4
2 files changed, 23 insertions, 6 deletions
diff --git a/lib/_emerge/EbuildBuild.py b/lib/_emerge/EbuildBuild.py
index aeb8a252b..db85b20b2 100644
--- a/lib/_emerge/EbuildBuild.py
+++ b/lib/_emerge/EbuildBuild.py
@@ -23,6 +23,7 @@ from portage.package.ebuild.digestcheck import digestcheck
from portage.package.ebuild.doebuild import _check_temp_dir
from portage.package.ebuild._spawn_nofetch import SpawnNofetchWithoutBuilddir
from portage.util._async.AsyncTaskFuture import AsyncTaskFuture
+from portage.util.path import first_existing
class EbuildBuild(CompositeTask):
@@ -160,16 +161,32 @@ class EbuildBuild(CompositeTask):
self._default_final_exit)
return
+ quiet_setting = settings.get("PORTAGE_QUIET", False)
+ fetch_log = None
+ logwrite_access = False
+ if quiet_setting:
+ fetch_log = os.path.join(
+ _emerge.emergelog._emerge_log_dir, "emerge-fetch.log"
+ )
+ logwrite_access = os.access(first_existing(fetch_log), os.W_OK)
+
fetcher = EbuildFetcher(
config_pool=self.config_pool,
ebuild_path=self._ebuild_path,
fetchall=self.opts.fetch_all_uri,
fetchonly=self.opts.fetchonly,
- background=False,
- logfile=None,
+ background=quiet_setting if logwrite_access else False,
+ logfile=fetch_log if logwrite_access else None,
pkg=self.pkg,
- scheduler=self.scheduler)
- self._start_task(fetcher, self._fetchonly_exit)
+ scheduler=self.scheduler,
+ )
+
+ if fetch_log and logwrite_access:
+ fetcher.addExitListener(self._fetchonly_exit)
+ self._task_queued(fetcher)
+ self.scheduler.fetch.schedule(fetcher, force_queue=True)
+ else:
+ self._start_task(fetcher, self._fetchonly_exit)
return
self._build_dir = EbuildBuildDir(
diff --git a/lib/_emerge/Scheduler.py b/lib/_emerge/Scheduler.py
index d3528ee68..5146863ab 100644
--- a/lib/_emerge/Scheduler.py
+++ b/lib/_emerge/Scheduler.py
@@ -560,7 +560,7 @@ class Scheduler(PollScheduler):
if pargs:
self.status = pargs[0]
- def _schedule_fetch(self, fetcher):
+ def _schedule_fetch(self, fetcher, force_queue=False):
"""
Schedule a fetcher, in order to control the number of concurrent
fetchers. If self._max_jobs is greater than 1 then the fetch
@@ -571,7 +571,7 @@ class Scheduler(PollScheduler):
would be required before it would be possible to enable
concurrent fetching within the parallel-fetch queue.
"""
- if self._max_jobs > 1:
+ if self._max_jobs > 1 and not force_queue:
fetcher.start()
else:
self._task_queues.fetch.addFront(fetcher)