[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Architecture: all binNMUs (was: deduplicating jquery/)



On Tue, 01 Dec 2020 at 11:05:54 +0100, Jonas Smedegaard wrote:
> Can someone remind me: Why is it that we cannot do arch-independent 
> auto-building?

We can and do autobuild arch-independent packages (since 2015: on the
timescale of multi-release transitions, this is relatively recent).

However, we cannot currently do arch-independent *binNMUs*, because a
large number of packages have patterns like this:

    Source: foo

    Package: foo-bin
    Architecture: any
    Depends: foo-data (= ${source:Version})

    Package: foo-data
    Architecture: all

which is based on the assumption that foo-data cannot be binNMU'd.

For example, consider foo_1.2-3, and suppose it has been binNMU'd 5
times on amd64, so we have foo-bin_1.2-3+b5_amd64.deb and
foo-data_1.2-3_all.deb. foo-bin Depends: foo-data (= 1.2-3) and the
dependency is satisfied.

Now suppose we also binNMU foo-data. We get foo-data_1.2-3+b1_all.deb,
which no longer satisfies foo-data (= 1.2-3), so foo-bin is uninstallable.

https://lintian.debian.org/tags/maybe-not-arch-all-binnmuable.html lists
622 affected packages. I don't know whether there are other problematic
patterns that Lintian does not detect.

Possible solutions:

- Change at least 622 packages so they have something more like
  Depends: foo-data (>= ${source:Version}), foo-data (<< ${source:Version}+c)
  (also hope that all of their maintainers can get those runes right, taking
  into account what the binNMU suffix is, and hope that it won't break
  derivatives like Ubuntu that use a source-upload suffix like ubuntu1 that
  compares less than +b1)

- Change at least 622 packages so that when foo-data is binNMU'd, it
  automatically gets Provides: foo-data (= 1.2-3)

- Change some more central component so that the dependencies are edited
  or the Provides is added globally

- Something clever that I haven't thought of

    smcv


Reply to: