commit: b274e2aa89271710357abea944cddd1a1a331877 Author: Eric Huber <echuber2 <AT> illinois <DOT> edu> AuthorDate: Thu Jun 29 06:42:16 2023 +0000 Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org> CommitDate: Fri Jun 30 20:08:44 2023 +0000 URL: https://gitweb.gentoo.org/proj/pkgcore/pkgcore.git/commit/?id=b274e2aa
manifest: fix missing errors when all ebuilds for package are masked bad If all of a package's ebuild files have been masked bad, that package gets filtered out of the iterator for the previous loop in this function, so a followup loop over the masked bad packages can help to emit the unreported errors. Resolves: https://github.com/pkgcore/pkgdev/issues/55 Co-authored-by: YiFei Zhu <zhuyifei1999 <AT> gmail.com> Authored-by: Eric Huber <echuber2 <AT> illinois.edu> Closes: https://github.com/pkgcore/pkgcore/pull/406 Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org> src/pkgcore/ebuild/repository.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/pkgcore/ebuild/repository.py b/src/pkgcore/ebuild/repository.py index 800e6e5dd..164aa0c97 100644 --- a/src/pkgcore/ebuild/repository.py +++ b/src/pkgcore/ebuild/repository.py @@ -161,6 +161,18 @@ class repo_operations(_repo_ops.operations): observer.info(f"generating manifest: {key}::{self.repo.repo_id}") manifest.update(sorted(all_fetchables.values()), chfs=write_chksums) + # edge case: If all ebuilds for a package were masked bad, + # then it was filtered out of the iterator for the above loop, + # so we handle unreported bad packages here. + missed_bad_set = set() + for pkg in self.repo._bad_masked: + if pkg.key not in ret: + observer.error( + f"{pkg.cpvstr}: {pkg.data.msg(verbosity=observer.verbosity)}" + ) + missed_bad_set.add(pkg.key) + ret.update(missed_bad_set) + return ret