Package: lintian
Version: 2.5.48
Severity: wishlist

Hi,

Using the Build-Depends-Arch header doesn't make sense if there are no
Architecture:any packages in debian/control. Conversely, using
Build-Depends-Indep doesn't make any sense if there are no
Architecture:all packages.

The situation where a maintainer would miss this can easily arise.
Picture the situation where the maintainer removes an Architecture:any
package from a debian/control that otherwise only has Architecture:all
packages. At this point, there should be no Build-Depends-Arch header,
because no architecture-specific binary packages are being built. But
this problem might easily go undetected by the maintainer as even if
they use sbuild or pbuilder, they might run full builds which in turn
will also install the B-D-A dependencies and thus let the build pass. If
now a source-only upload is done, it will fail on the Arch:all
autobuilders. This exact thing just happened to me.

It would be nice if lintian could detect this kind of problem before the
upload is done and building the package fails.

Unfortunately, implementing this *properly* might become a bit tricky.
Imagine this situation:

Source: foo
Build-Depends-Indep: blub <stage1>

Package: foo
Architecture: all
Build-Profiles: <!stage1>

This package build depends on "blub" but only if the "stage1" profile is
active. But with the stage1 profile active, no Arch:all packages are
being built. Thus, lintian should throw a warning here about an
apparently wrong B-D-I header - it is of no use what-so-ever. A similar
example can be constructed with architecture restrictions instead of
build profiles.

Thanks!

cheers, josch

Reply via email to