aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2023-12-26 13:37:24 -0800
committerZac Medico <zmedico@gentoo.org>2023-12-26 14:01:51 -0800
commitfbd6909c24f51ad79fb313ddd7043b4a40de91a6 (patch)
tree4f54e2482b3bf1324aff630b9504467fd2686183
parentdepclean: Strengthen IDEPEND in unmerge order (diff)
downloadportage-fbd6909c24f51ad79fb313ddd7043b4a40de91a6.tar.gz
portage-fbd6909c24f51ad79fb313ddd7043b4a40de91a6.tar.bz2
portage-fbd6909c24f51ad79fb313ddd7043b4a40de91a6.zip
Scheduler: Handle unpack_metadata SignatureException in _run_pkg_pretend
This will handle the InvalidSignature exception that triggered bug 920258, allowing emerge --keep-going to skip the package if possible. All of the gpg stderr output is dumped before the exception is raised, as shown in bug 920258 comment #0. Bug: https://bugs.gentoo.org/920258 Signed-off-by: Zac Medico <zmedico@gentoo.org>
-rw-r--r--lib/_emerge/Scheduler.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/_emerge/Scheduler.py b/lib/_emerge/Scheduler.py
index 4193ffdd0..620d51351 100644
--- a/lib/_emerge/Scheduler.py
+++ b/lib/_emerge/Scheduler.py
@@ -992,7 +992,16 @@ class Scheduler(PollScheduler):
infloc = os.path.join(build_dir_path, "build-info")
ensure_dirs(infloc)
- await bintree.dbapi.unpack_metadata(settings, infloc, loop=loop)
+ try:
+ await bintree.dbapi.unpack_metadata(settings, infloc, loop=loop)
+ except portage.exception.SignatureException as e:
+ writemsg(
+ f"!!! Invalid binary package: '{bintree.getname(x.cpv)}', {e}\n",
+ noiselevel=-1,
+ )
+ failures += 1
+ self._record_pkg_failure(x, settings, 1)
+ continue
ebuild_path = os.path.join(infloc, x.pf + ".ebuild")
settings.configdict["pkg"]["EMERGE_FROM"] = "binary"
settings.configdict["pkg"]["MERGE_TYPE"] = "binary"