mirror of
https://git.launchpad.net/~ubuntu-release/britney/+git/britney2-ubuntu
synced 2025-05-23 08:21:30 +00:00
Let the BinaryPackageUniverse track essential packages
Signed-off-by: Niels Thykier <niels@thykier.net>
This commit is contained in:
parent
07a407e810
commit
8867ef0cf9
@ -308,12 +308,11 @@ class InstallabilityTesterBuilder(object):
|
|||||||
|
|
||||||
relations, eqv_table = self._build_eqv_packages_table(package_table, reverse_package_table)
|
relations, eqv_table = self._build_eqv_packages_table(package_table, reverse_package_table)
|
||||||
|
|
||||||
universe = BinaryPackageUniverse(relations)
|
universe = BinaryPackageUniverse(relations, intern_set(self._essentials))
|
||||||
|
|
||||||
solver = InstallabilityTester(universe,
|
solver = InstallabilityTester(universe,
|
||||||
self._testing,
|
self._testing,
|
||||||
self._broken,
|
self._broken,
|
||||||
self._essentials,
|
|
||||||
eqv_table)
|
eqv_table)
|
||||||
|
|
||||||
return universe, solver
|
return universe, solver
|
||||||
|
@ -22,7 +22,7 @@ from britney2.utils import iter_except
|
|||||||
|
|
||||||
class InstallabilityTester(object):
|
class InstallabilityTester(object):
|
||||||
|
|
||||||
def __init__(self, universe, testing, broken, essentials, eqv_table):
|
def __init__(self, universe, testing, broken, eqv_table):
|
||||||
"""Create a new installability tester
|
"""Create a new installability tester
|
||||||
|
|
||||||
universe is a BinaryPackageUniverse
|
universe is a BinaryPackageUniverse
|
||||||
@ -33,8 +33,6 @@ class InstallabilityTester(object):
|
|||||||
broken is a (mutable) set of package ids that are known to
|
broken is a (mutable) set of package ids that are known to
|
||||||
be uninstallable.
|
be uninstallable.
|
||||||
|
|
||||||
essentials is a set of packages with "Essential: yes".
|
|
||||||
|
|
||||||
Package id: (pkg_name, pkg_version, pkg_arch)
|
Package id: (pkg_name, pkg_version, pkg_arch)
|
||||||
- NB: arch:all packages are "re-mapped" to given architecture.
|
- NB: arch:all packages are "re-mapped" to given architecture.
|
||||||
(simplifies caches and dependency checking)
|
(simplifies caches and dependency checking)
|
||||||
@ -43,7 +41,6 @@ class InstallabilityTester(object):
|
|||||||
self._universe = universe
|
self._universe = universe
|
||||||
self._testing = testing
|
self._testing = testing
|
||||||
self._broken = broken
|
self._broken = broken
|
||||||
self._essentials = essentials
|
|
||||||
self._eqv_table = eqv_table
|
self._eqv_table = eqv_table
|
||||||
self._stats = InstallabilityStats()
|
self._stats = InstallabilityStats()
|
||||||
logger_name = ".".join((self.__class__.__module__, self.__class__.__name__))
|
logger_name = ".".join((self.__class__.__module__, self.__class__.__name__))
|
||||||
@ -136,7 +133,7 @@ class InstallabilityTester(object):
|
|||||||
# Re-add broken packages as some of them may now be installable
|
# Re-add broken packages as some of them may now be installable
|
||||||
self._testing |= self._cache_broken
|
self._testing |= self._cache_broken
|
||||||
self._cache_broken = set()
|
self._cache_broken = set()
|
||||||
if pkg_id in self._essentials and pkg_id.architecture in self._cache_ess:
|
if pkg_id in self._universe.essential_packages and pkg_id.architecture in self._cache_ess:
|
||||||
# Adds new essential => "pseudo-essential" set needs to be
|
# Adds new essential => "pseudo-essential" set needs to be
|
||||||
# recomputed
|
# recomputed
|
||||||
del self._cache_ess[pkg_id.architecture]
|
del self._cache_ess[pkg_id.architecture]
|
||||||
@ -519,7 +516,7 @@ class InstallabilityTester(object):
|
|||||||
universe = self._universe
|
universe = self._universe
|
||||||
stats = self._stats
|
stats = self._stats
|
||||||
|
|
||||||
ess_base = [x for x in self._essentials if x.architecture == arch and x in testing]
|
ess_base = [x for x in self._universe.essential_packages if x.architecture == arch and x in testing]
|
||||||
start = set(ess_base)
|
start = set(ess_base)
|
||||||
ess_never = set()
|
ess_never = set()
|
||||||
ess_choices = set()
|
ess_choices = set()
|
||||||
|
@ -38,8 +38,9 @@ class BinaryPackageUniverse(object):
|
|||||||
in that suite?".
|
in that suite?".
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, relations):
|
def __init__(self, relations, essential_packages):
|
||||||
self._relations = relations
|
self._relations = relations
|
||||||
|
self._essential_packages = essential_packages
|
||||||
|
|
||||||
def dependencies_of(self, pkg_id):
|
def dependencies_of(self, pkg_id):
|
||||||
"""Returns the set of dependencies of a given package
|
"""Returns the set of dependencies of a given package
|
||||||
@ -109,6 +110,15 @@ class BinaryPackageUniverse(object):
|
|||||||
"""
|
"""
|
||||||
return self._relations[pkg_id]
|
return self._relations[pkg_id]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def essential_packages(self):
|
||||||
|
"""A frozenset of all "Essential: yes" binaries in the universe
|
||||||
|
|
||||||
|
:return A frozenset of BinaryPackageIds of all binaries that are
|
||||||
|
marked as essential.
|
||||||
|
"""
|
||||||
|
return self._essential_packages
|
||||||
|
|
||||||
def __contains__(self, pkg_id):
|
def __contains__(self, pkg_id):
|
||||||
return pkg_id in self._relations
|
return pkg_id in self._relations
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user