namcap: Warn when PKGBUILD provides an unversioned package
TL;DR: Pacman gives up on version bounds checking if a package provides a package unversioned, warn against such behaviour to make pacman more robust.
Consider the following common scenario. A package D'
which is a variant of D
is made (eg a VCS nightly package).
The packager adds provides=(D)
to D'
's PKGBUILD
so that packages depending on D
can work with D'
instead.
Now a package P
needs some version guarantees on D
-- maybe it's tightly coupled with particular versions of D
and needs D=$verD
1, maybe it needs a bugfix in D
only provided in a certain version2 (in particular, a nightly D'
in AUR
might be ahead of D
in the official repos and might provide that version). So P
adds depends=('D>=$verD
)`.
Unfortunately, this combination does not work -- on a system with D'
installed, attempting to install P
will fail with target not found: D>=$verD
. Pacman's blindness to the existing D'
is confusing and hard to diagnose if one is unaware of this behaviour.
(To be fair to pacman, this conservatism makes sense -- perhaps eg the upstream changed versioning schemes when it changed names)
To make avoiding these kinds of situations easier, namcap
should warn against unversioned provides
in a PKGBUILD
, ie bare provides=(pkg)
lines with no versioning information.
See also pacman/pacman#225