Admin message

Due to an influx of spam, we have had to require each new account to be manually approved. Please register an account and then write an email to accountsupport@archlinux.org to get it approved. Sorry for the inconvenience.

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 version[2] (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 https://gitlab.archlinux.org/pacman/pacman/-/issues/225 This was also (mistakenly) reported at: https://gitlab.archlinux.org/archlinux/devtools/-/issues/265 [1]: https://aur.archlinux.org/packages/pandoc-crossref-static-git [2]: https://aur.archlinux.org/packages/python-habanero
issue