Mark packages as uninstallable, even if this doesn't block migration

This allows the autopkgtest policy to skip tests for these packages.
ubuntu/rebased
Ivo De Decker 5 years ago
parent c308361fc5
commit a567dfd58d

@ -821,6 +821,11 @@ class DependsPolicy(BasePolicy):
binary_u = packages_s_a[pkg_name] binary_u = packages_s_a[pkg_name]
pkg_arch = binary_u.architecture pkg_arch = binary_u.architecture
# in some cases, we want to track the uninstallability of a
# package (because the autopkgtest policy uses this), but we still
# want to allow the package to be uninstallable
skip_dep_check = False
if (binary_u.source_version != source_data_srcdist.version): if (binary_u.source_version != source_data_srcdist.version):
# don't check cruft in unstable # don't check cruft in unstable
continue continue
@ -829,12 +834,15 @@ class DependsPolicy(BasePolicy):
# we don't care about the existing arch: all binaries when # we don't care about the existing arch: all binaries when
# checking a binNMU item, because the arch: all binaries won't # checking a binNMU item, because the arch: all binaries won't
# migrate anyway # migrate anyway
continue skip_dep_check = True
if pkg_arch == 'all' and arch not in self.nobreakall_arches:
skip_dep_check = True
if pkg_name in self.allow_uninst[arch]: if pkg_name in self.allow_uninst[arch]:
# this binary is allowed to become uninstallable, so we don't # this binary is allowed to become uninstallable, so we don't
# need to check anything # need to check anything
continue skip_dep_check = True
if pkg_name in packages_t_a: if pkg_name in packages_t_a:
oldbin = packages_t_a[pkg_name] oldbin = packages_t_a[pkg_name]
@ -843,16 +851,16 @@ class DependsPolicy(BasePolicy):
# uninstallable, the newer version is allowed to be # uninstallable, the newer version is allowed to be
# uninstallable as well, so we don't need to check # uninstallable as well, so we don't need to check
# anything # anything
continue skip_dep_check = True
if pkg_id in self.broken_packages: if pkg_id in self.broken_packages:
# dependencies can't be satisfied by all the known binaries - # dependencies can't be satisfied by all the known binaries -
# this certainly won't work... # this certainly won't work...
excuse.add_unsatisfiable_on_arch(arch) excuse.add_unsatisfiable_on_arch(arch)
if pkg_arch == 'all' and arch not in self.nobreakall_arches: if skip_dep_check:
# ...but if the binary is arch all on a non-nobreakarch # ...but if the binary is allowed to become uninstallable,
# all, we don't care # we don't care
# we still wan't the binary to be listed as uninstallable, # we still want the binary to be listed as uninstallable,
# so the autopkgtest policy knows not to try to run tests # so the autopkgtest policy knows not to try to run tests
continue continue
verdict = PolicyVerdict.REJECTED_PERMANENTLY verdict = PolicyVerdict.REJECTED_PERMANENTLY
@ -860,7 +868,7 @@ class DependsPolicy(BasePolicy):
pkg_name, arch)) pkg_name, arch))
excuse.addreason("depends") excuse.addreason("depends")
if pkg_arch == 'all' and arch not in self.nobreakall_arches: if skip_dep_check:
continue continue
deps = self.pkg_universe.dependencies_of(pkg_id) deps = self.pkg_universe.dependencies_of(pkg_id)

Loading…
Cancel
Save