Skip to content

Commit 33a0fe9

Browse files
committed
MissingManifest: fix behavior under thick repos
Resolves: #530 Signed-off-by: Arthur Zamarin <arthurzam@gentoo.org>
1 parent 72ec9a3 commit 33a0fe9

1 file changed

Lines changed: 17 additions & 17 deletions

File tree

src/pkgcheck/checks/repo_metadata.py

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from itertools import chain
55

66
from pkgcore import fetch
7+
from pkgcore.ebuild.digest import Manifest
78
from snakeoil.sequences import iflatten_instance
89
from snakeoil.strings import pluralism
910

@@ -80,14 +81,14 @@ class PackageUpdatesCheck(RepoCheck):
8081

8182
_source = (sources.EmptySource, (base.profiles_scope,))
8283
known_results = frozenset(
83-
[
84+
{
8485
MultiMovePackageUpdate,
8586
OldMultiMovePackageUpdate,
8687
OldPackageUpdate,
8788
MovedPackageUpdate,
8889
BadPackageUpdate,
8990
RedundantPackageUpdate,
90-
]
91+
}
9192
)
9293

9394
def __init__(self, *args):
@@ -377,17 +378,16 @@ class GlobalUseCheck(RepoCheck):
377378
"""Check global USE and USE_EXPAND flags for various issues."""
378379

379380
_source = (sources.RepositoryRepoSource, (), (("source", sources.PackageRepoSource),))
380-
required_addons = (addons.UseAddon,)
381381
known_results = frozenset(
382-
[
382+
{
383383
PotentialLocalUse,
384384
PotentialGlobalUse,
385385
UnusedGlobalUse,
386386
UnusedGlobalUseExpand,
387-
]
387+
}
388388
)
389389

390-
def __init__(self, *args, use_addon):
390+
def __init__(self, *args):
391391
super().__init__(*args)
392392
self.global_flag_usage = defaultdict(set)
393393
self.repo = self.options.target_repo
@@ -405,8 +405,8 @@ def _similar_flags(pkgs):
405405
"""Yield groups of packages with similar local USE flag descriptions."""
406406
# calculate USE flag description difference ratios
407407
diffs = {}
408-
for i, (i_pkg, i_desc) in enumerate(pkgs):
409-
for j, (j_pkg, j_desc) in enumerate(pkgs[i + 1 :]):
408+
for i, (_i_pkg, i_desc) in enumerate(pkgs):
409+
for j, (_j_pkg, j_desc) in enumerate(pkgs[i + 1 :]):
410410
diffs[(i, i + j + 1)] = SequenceMatcher(None, i_desc, j_desc).ratio()
411411

412412
# create an adjacency list using all closely matching flags pairs
@@ -571,17 +571,17 @@ class ManifestCheck(Check):
571571
required_addons = (addons.UseAddon,)
572572
_source = sources.PackageRepoSource
573573
known_results = frozenset(
574-
[
574+
{
575575
MissingChksum,
576576
MissingManifest,
577577
UnknownManifest,
578578
UnnecessaryManifest,
579579
DeprecatedChksum,
580580
InvalidManifest,
581-
]
581+
}
582582
)
583583

584-
def __init__(self, *args, use_addon):
584+
def __init__(self, *args, use_addon: addons.UseAddon):
585585
super().__init__(*args)
586586
repo = self.options.target_repo
587587
self.preferred_checksums = frozenset(
@@ -593,7 +593,8 @@ def __init__(self, *args, use_addon):
593593
self.iuse_filter = use_addon.get_filter("fetchables")
594594

595595
def feed(self, pkgset):
596-
pkg_manifest = pkgset[0].manifest
596+
pkg_manifest: Manifest = pkgset[0].manifest
597+
pkg_manifest.allow_missing = True
597598
manifest_distfiles = set(pkg_manifest.distfiles.keys())
598599
seen = set()
599600
for pkg in pkgset:
@@ -625,14 +626,13 @@ def feed(self, pkgset):
625626
seen.add(f_inst.filename)
626627

627628
if pkg_manifest.thin:
628-
unnecessary_manifests = []
629+
unnecessary_manifests = set()
629630
for attr in ("aux_files", "ebuilds", "misc"):
630-
unnecessary_manifests.extend(getattr(pkg_manifest, attr, []))
631+
unnecessary_manifests.update(getattr(pkg_manifest, attr, ()))
631632
if unnecessary_manifests:
632633
yield UnnecessaryManifest(sorted(unnecessary_manifests), pkg=pkgset[0])
633634

634-
unknown_manifests = manifest_distfiles.difference(seen)
635-
if unknown_manifests:
635+
if unknown_manifests := manifest_distfiles.difference(seen):
636636
yield UnknownManifest(sorted(unknown_manifests), pkg=pkgset[0])
637637

638638

@@ -753,6 +753,6 @@ def __init__(self, *args):
753753
self.repo = self.options.target_repo
754754

755755
def finish(self):
756-
for key, project in self.repo.projects_xml.projects.items():
756+
for _key, project in self.repo.projects_xml.projects.items():
757757
if not project.recursive_members:
758758
yield EmptyProject(project)

0 commit comments

Comments
 (0)