proj/pkgcore/pkgcore:master commit in: src/pkgcore/ebuild/, /

"Arthur Zamarin" <[email protected]>
Newsgroups gmane.linux.gentoo.cvs
Message-ID <1786699376.b595439f5a181dd962df37836f7620f72fac3244.arthurzam@gentoo>
commit:     b595439f5a181dd962df37836f7620f72fac3244
Author:     Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Fri Aug 14 09:22:56 2026 +0000
Commit:     Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Fri Aug 14 09:22:56 2026 +0000
URL:        https://gitweb.gentoo.org/proj/pkgcore/pkgcore.git/commit/?id=b595439f

manifest: report the packages passed over when verbose

Every path which decides there is nothing to do for a package did so
silently, so a run over an up to date tree looked exactly like one that
found nothing to look at, which is how two reporters ended up unable to
tell whether the tool had done its job or ignored them.

Name each skipped package and the reason for it, past verbosity zero to
keep a whole tree run quiet by default: the manifest a thin repo has no
distfiles for, one already current, and a thick one which came out of
regeneration unchanged.

Relates: https://github.com/pkgcore/pkgdev/issues/80
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>

 NEWS.rst                         |  4 ++++
 src/pkgcore/ebuild/repository.py | 11 +++++++++--
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/NEWS.rst b/NEWS.rst
index 775b98f07..ddcaffa0c 100644
--- a/NEWS.rst
+++ b/NEWS.rst
@@ -23,6 +23,10 @@ Fixes
   distfiles matched and nothing else was looked at.  Such a file is now
   rewritten down to its ``DIST`` entries (Arthur Zamarin, pkgdev#78)
 
+- manifest generation: say why a package was passed over when verbose, rather
+  than leaving a run which had nothing to do indistinguishable from one which
+  did nothing at all (Arthur Zamarin, pkgdev#80)
+
 - ``pkgcore.const``: fix the user config, cache and data paths being taken
   verbatim from an XDG base dir variable set to an empty (or relative) value,
   as is common in containers and root shells, leaving them relative to the

diff --git a/src/pkgcore/ebuild/repository.py b/src/pkgcore/ebuild/repository.py
index f8946ed27..128805603 100644
--- a/src/pkgcore/ebuild/repository.py
+++ b/src/pkgcore/ebuild/repository.py
@@ -109,10 +109,13 @@ class repo_operations(_repo_ops.operations):
                         observer.info(f"removing manifest: {key}::{self.repo.repo_id}")
                     except OSError as exc:
                         observer.error(
-                            "failed removing old manifest: "
-                            f"{key}::{self.repo.repo_id}: {exc}"
+                            f"failed removing old manifest: {key}::{self.repo.repo_id}: {exc}"
                         )
                         ret.add(key)
+                elif observer.verbosity > 0:
+                    observer.info(
+                        f"manifest not needed, thin manifests and no distfiles: {key}::{self.repo.repo_id}"
+                    )
                 continue
 
             # Manifest file is current and not forcing a refresh; thick manifests
@@ -124,6 +127,8 @@ class repo_operations(_repo_ops.operations):
                 and manifest.distfiles.keys() == pkgdir_fetchables.keys()
                 and not (manifest.aux_files or manifest.ebuilds or manifest.misc)
             ):
+                if observer.verbosity > 0:
+                    observer.info(f"manifest is current: {key}::{self.repo.repo_id}")
                 continue
 
             # fetch distfiles
@@ -172,6 +177,8 @@ class repo_operations(_repo_ops.operations):
                 all_fetchables.update(fetchables)
                 if manifest.update(sorted(all_fetchables.values()), chfs=write_chksums):
                     observer.info(f"generating manifest: {key}::{self.repo.repo_id}")
+                elif observer.verbosity > 0:
+                    observer.info(f"manifest is current: {key}::{self.repo.repo_id}")
 
         # edge case: If all ebuilds for a package were masked bad,
         # then it was filtered out of the iterator for the above loop,
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.