public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/pkgcore/pkgcheck:master commit in: testdata/data/repos/standalone/ManifestCheck/DeprecatedManifestHash/, ...
@ 2023-07-14  6:01 Arthur Zamarin
  0 siblings, 0 replies; only message in thread
From: Arthur Zamarin @ 2023-07-14  6:01 UTC (permalink / raw
  To: gentoo-commits

commit:     2b9b8e7c9b3b66c338b1fa2182d6623391b99caa
Author:     Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Fri Jul  7 13:27:52 2023 +0000
Commit:     Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Fri Jul 14 05:48:41 2023 +0000
URL:        https://gitweb.gentoo.org/proj/pkgcore/pkgcheck.git/commit/?id=2b9b8e7c

DeprecatedManifestHash: check for deprecated checksums in Manifest files

Resolves: https://github.com/pkgcore/pkgcheck/issues/508
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>

 src/pkgcheck/checks/repo_metadata.py               | 28 +++++++++++++++++++---
 .../DeprecatedManifestHash/expected.json           |  1 +
 2 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/src/pkgcheck/checks/repo_metadata.py b/src/pkgcheck/checks/repo_metadata.py
index 2f28f805..0e1c7f84 100644
--- a/src/pkgcheck/checks/repo_metadata.py
+++ b/src/pkgcheck/checks/repo_metadata.py
@@ -564,6 +564,23 @@ class InvalidManifest(results.MetadataError, results.PackageResult):
     attr = "manifest"
 
 
+class DeprecatedManifestHash(results.PackageResult, results.Warning):
+    """Manifest uses deprecated hashes.
+
+    The package uses deprecated hash types in its Manifest file.
+    """
+
+    def __init__(self, hashes, **kwargs):
+        super().__init__(**kwargs)
+        self.hashes = tuple(hashes)
+
+    @property
+    def desc(self):
+        s = pluralism(self.hashes)
+        hashes = ", ".join(self.hashes)
+        return f"defines deprecated manifest hash types{s}: [ {hashes} ]"
+
+
 class ManifestCheck(Check):
     """Manifest related checks.
 
@@ -581,6 +598,7 @@ class ManifestCheck(Check):
             UnnecessaryManifest,
             DeprecatedChksum,
             InvalidManifest,
+            DeprecatedManifestHash,
         }
     )
 
@@ -623,9 +641,9 @@ class ManifestCheck(Check):
                     yield MissingChksum(
                         f_inst.filename, sorted(missing), sorted(f_inst.chksums), pkg=pkg
                     )
-                elif f_inst.chksums and self.preferred_checksums != frozenset(f_inst.chksums):
-                    deprecated = set(f_inst.chksums).difference(self.preferred_checksums)
-                    yield DeprecatedChksum(f_inst.filename, sorted(deprecated), pkg=pkg)
+                elif f_inst.chksums:
+                    if deprecated := frozenset(f_inst.chksums).difference(self.preferred_checksums):
+                        yield DeprecatedChksum(f_inst.filename, sorted(deprecated), pkg=pkg)
                 seen.add(f_inst.filename)
 
         if pkg_manifest.thin:
@@ -638,6 +656,10 @@ class ManifestCheck(Check):
         if unknown_manifests := manifest_distfiles.difference(seen):
             yield UnknownManifest(sorted(unknown_manifests), pkg=pkgset[0])
 
+        used_hashes = frozenset().union(*pkg_manifest.distfiles.values())
+        if deprecated_hashes := DEPRECATED_HASHES.intersection(used_hashes):
+            yield DeprecatedManifestHash(sorted(deprecated_hashes), pkg=pkgset[0])
+
 
 class ConflictingChksums(results.VersionResult, results.Error):
     """Checksum conflict detected between two files."""

diff --git a/testdata/data/repos/standalone/ManifestCheck/DeprecatedManifestHash/expected.json b/testdata/data/repos/standalone/ManifestCheck/DeprecatedManifestHash/expected.json
new file mode 100644
index 00000000..37e92d58
--- /dev/null
+++ b/testdata/data/repos/standalone/ManifestCheck/DeprecatedManifestHash/expected.json
@@ -0,0 +1 @@
+{"__class__": "DeprecatedManifestHash", "category": "ManifestCheck", "package": "MissingChksum", "hashes": ["rmd160", "sha1"]}


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2023-07-14  6:01 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-14  6:01 [gentoo-commits] proj/pkgcore/pkgcheck:master commit in: testdata/data/repos/standalone/ManifestCheck/DeprecatedManifestHash/, Arthur Zamarin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox