mirror of
https://git.launchpad.net/~ubuntu-release/britney/+git/britney2-ubuntu
synced 2025-02-13 15:37:02 +00:00
Don't flag unbuilt binary *pu binNMUs for removal in excuses
Originally when binNMUs for packages in testing were scheduled, the binaries would be installed into tpu with no accompanying source. This allowed the "removed binary" portions of should_upgrade_srcarch() to be skipped (as britney had generated a faux source record). dak now adds the source package to tpu in such cases which lead to the "removed binary" checks being applied to binNMUs in tpu with potentially destructive consequences. For example, if a package with amd64 and i386 binaries in testing were binNMUed on just amd64, britney would notice that there were no i386 binaries in tpu and subsequently remove the i386 binaries from testing as well. In order to resolve this, we skip the check for removed binaries when building excuses for a binary-only migration via *pu. Signed-off-by: Adam D. Barratt <adam@adam-barratt.org.uk>
This commit is contained in:
parent
cf79fe5618
commit
74d1b70096
25
britney.py
25
britney.py
@ -1213,17 +1213,20 @@ class Britney(object):
|
||||
if not anywrongver and (anyworthdoing or not self.sources[suite][src][FAKESRC]):
|
||||
srcv = self.sources[suite][src][VERSION]
|
||||
ssrc = self.same_source(source_t[VERSION], srcv)
|
||||
# for every binary package produced by this source in testing for this architecture
|
||||
for pkg in sorted([x.split("/")[0] for x in self.sources['testing'][src][BINARIES] if x.endswith("/"+arch)]):
|
||||
# if the package is architecture-independent, then ignore it
|
||||
if self.binaries['testing'][arch][0][pkg][ARCHITECTURE] == 'all':
|
||||
excuse.addhtml("Ignoring removal of %s as it is arch: all" % (pkg))
|
||||
continue
|
||||
# if the package is not produced by the new source package, then remove it from testing
|
||||
if pkg not in self.binaries[suite][arch][0]:
|
||||
tpkgv = self.binaries['testing'][arch][0][pkg][VERSION]
|
||||
excuse.addhtml("Removed binary: %s %s" % (pkg, tpkgv))
|
||||
if ssrc: anyworthdoing = True
|
||||
# if this is a binary-only migration via *pu, we never want to try
|
||||
# removing binary packages
|
||||
if not (ssrc and suite != 'unstable'):
|
||||
# for every binary package produced by this source in testing for this architecture
|
||||
for pkg in sorted([x.split("/")[0] for x in self.sources['testing'][src][BINARIES] if x.endswith("/"+arch)]):
|
||||
# if the package is architecture-independent, then ignore it
|
||||
if self.binaries['testing'][arch][0][pkg][ARCHITECTURE] == 'all':
|
||||
excuse.addhtml("Ignoring removal of %s as it is arch: all" % (pkg))
|
||||
continue
|
||||
# if the package is not produced by the new source package, then remove it from testing
|
||||
if pkg not in self.binaries[suite][arch][0]:
|
||||
tpkgv = self.binaries['testing'][arch][0][pkg][VERSION]
|
||||
excuse.addhtml("Removed binary: %s %s" % (pkg, tpkgv))
|
||||
if ssrc: anyworthdoing = True
|
||||
|
||||
# if there is nothing wrong and there is something worth doing, this is a valid candidate
|
||||
if not anywrongver and anyworthdoing:
|
||||
|
Loading…
x
Reference in New Issue
Block a user