inst-tester: Exploit eqv. table in compute_testing_installability

Use the equvilence table to skip some calls to _check_inst.

Signed-off-by: Niels Thykier <niels@thykier.net>
debian
Niels Thykier 11 years ago
parent 72daebd67c
commit 4babb75f8f

@ -81,11 +81,22 @@ class InstallabilityTester(object):
check_inst = self._check_inst check_inst = self._check_inst
cbroken = self._cache_broken cbroken = self._cache_broken
cache_inst = self._cache_inst cache_inst = self._cache_inst
tcopy = [x for x in self._testing] eqv_table = self._eqv_table
testing = self._testing
tcopy = [x for x in testing]
for t in ifilterfalse(cache_inst.__contains__, tcopy): for t in ifilterfalse(cache_inst.__contains__, tcopy):
if t in cbroken: if t in cbroken:
continue continue
check_inst(t) res = check_inst(t)
if t in eqv_table:
eqv = (x for x in eqv_table[t] if x in testing)
if res:
cache_inst.update(eqv)
else:
eqv_set = frozenset(eqv)
testing -= eqv_set
cbroken |= eqv_set
def add_testing_binary(self, pkg_name, pkg_version, pkg_arch): def add_testing_binary(self, pkg_name, pkg_version, pkg_arch):
"""Add a binary package to "testing" """Add a binary package to "testing"
@ -422,7 +433,7 @@ class InstallabilityTester(object):
else: else:
possible_eqv = set(x for x in candidates if x in eqv_table) possible_eqv = set(x for x in candidates if x in eqv_table)
if len(possible_eqv) > 1: if len(possible_eqv) > 1:
# Exploit equvialency to reduce the number of # Exploit equivalency to reduce the number of
# candidates if possible. Basically, this # candidates if possible. Basically, this
# code maps "similar" candidates into a single # code maps "similar" candidates into a single
# candidate that will give a identical result # candidate that will give a identical result

Loading…
Cancel
Save