In 'partial source' mode, which we use in Ubuntu, we merge the target
(release pocket) with the source (proposed), so that proposed-migration
has a view of the complete state of the archive when it is migrating.
This merging must not be done when a package has been built in the
source suite. If it is done incorrectly, proposed-migration will see the
previous binary packages as existing when they should not.
We have code to handle this already, but it's wrong in the case of
arch:all binaries. This comes up in two ways
- If a source package builds *only* arch:all binaries, it is not
expected that builds will be created on arches other than the one
which builds arch:all packages (amd64 currently). If that is built
then the package is complete, we shouldn't merge any old binaries
such as dropped arch:all ones from the target.
- Relatedly, if other non-arch-all packages exist, an arch:all package
isn't an indication that a build has taken place on other arches
than the all buildd arch.
Fixing both of these stops old binaries being merged into a new source
when it's been built and arch:all packages are involved.