mirror of
https://git.launchpad.net/~ubuntu-release/britney/+git/britney2-ubuntu
synced 2025-04-14 20:51:11 +00:00
Track packages (source and binary) for excuses
This commit is contained in:
parent
f11d92bf8f
commit
b5285f21d7
@ -92,6 +92,17 @@ class Excuse(object):
|
||||
self.infoline = []
|
||||
self.detailed_info = []
|
||||
|
||||
# packages (source and binary) that will migrate to testing if the
|
||||
# item from this excuse migrates
|
||||
self.packages = defaultdict(set)
|
||||
|
||||
# for each deptype, there is a set that contains
|
||||
# frozensets of PackageIds (of sources or binaries) that can satisfy
|
||||
# the dep
|
||||
self.depends_packages = defaultdict(set)
|
||||
# contains all PackageIds in any over the sets above
|
||||
self.depends_packages_flattened = set()
|
||||
|
||||
self.bounty = {}
|
||||
self.penalty = {}
|
||||
|
||||
@ -210,6 +221,14 @@ class Excuse(object):
|
||||
def add_hint(self, hint):
|
||||
self.hints.append(hint)
|
||||
|
||||
def add_package(self, pkg_id):
|
||||
self.packages[pkg_id.architecture].add(pkg_id)
|
||||
|
||||
def add_package_depends(self, deptype, depends):
|
||||
"""depends is a set of PackageIds (source or binary) that can satisfy the dependency"""
|
||||
self.depends_packages[deptype].add(frozenset(depends))
|
||||
self.depends_packages_flattened |= depends
|
||||
|
||||
def _format_verdict_summary(self):
|
||||
verdict = self._policy_verdict
|
||||
if verdict in VERDICT2DESC:
|
||||
|
@ -3,7 +3,7 @@ from urllib.parse import quote
|
||||
|
||||
import apt_pkg
|
||||
|
||||
from britney2 import DependencyType
|
||||
from britney2 import DependencyType, PackageId
|
||||
from britney2.excuse import Excuse
|
||||
from britney2.policies import PolicyVerdict
|
||||
from britney2.utils import (invalidate_excuses, find_smooth_updateable_binaries, compute_item_name,
|
||||
@ -198,6 +198,8 @@ class ExcuseFinder(object):
|
||||
# for every binary package produced by this source in unstable for this architecture
|
||||
for pkg_id in sorted(x for x in source_u.binaries if x.architecture == arch):
|
||||
pkg_name = pkg_id.package_name
|
||||
# TODO filter binaries based on checks below?
|
||||
excuse.add_package(pkg_id)
|
||||
|
||||
# retrieve the testing (if present) and unstable corresponding binary packages
|
||||
binary_t = packages_t_a[pkg_name] if pkg_name in packages_t_a else None
|
||||
@ -372,6 +374,7 @@ class ExcuseFinder(object):
|
||||
excuse.set_vers(source_t and source_t.version or None, source_u.version)
|
||||
source_u.maintainer and excuse.set_maint(source_u.maintainer)
|
||||
source_u.section and excuse.set_section(source_u.section)
|
||||
excuse.add_package(PackageId(src, source_u.version, "source"))
|
||||
|
||||
# if the version in unstable is older, then stop here with a warning in the excuse and return False
|
||||
if source_t and apt_pkg.version_compare(source_u.version, source_t.version) < 0:
|
||||
@ -438,6 +441,9 @@ class ExcuseFinder(object):
|
||||
if binary_u.architecture != arch:
|
||||
continue
|
||||
|
||||
# TODO filter binaries based on checks below?
|
||||
excuse.add_package(pkg_id)
|
||||
|
||||
# if it wasn't built by the same source, it is out-of-date
|
||||
# if there is at least one binary on this arch which is
|
||||
# up-to-date, there is a build on this arch
|
||||
|
Loading…
x
Reference in New Issue
Block a user