Historical bug tracker for the Pacman package manager.
The pacman bug tracker has moved to gitlab:
https://gitlab.archlinux.org/pacman/pacman/-/issues
This tracker remains open for interaction with historical bugs during the transition period. Any new bugs reports will be closed without further action.
The pacman bug tracker has moved to gitlab:
https://gitlab.archlinux.org/pacman/pacman/-/issues
This tracker remains open for interaction with historical bugs during the transition period. Any new bugs reports will be closed without further action.
FS#68662 - [makepkg]: Packages without version info in provides are ignored for depends
Attached to Project:
Pacman
Opened by gesh (gesh) - Wednesday, 18 November 2020, 11:31 GMT
Last edited by Allan McRae (Allan) - Wednesday, 18 November 2020, 12:53 GMT
Opened by gesh (gesh) - Wednesday, 18 November 2020, 11:31 GMT
Last edited by Allan McRae (Allan) - Wednesday, 18 November 2020, 12:53 GMT
|
DetailsSummary and Info:
Given a package that `depends=("foo>=$ver")`, an installed package that `provides=('foo')` and has `$pkgver` larger than `$ver` should as far as I can tell satisfy the dependency. However, makepkg ignores such packages, and instead opts for replacing the installed dependency with the most up-to-date version it can find. Concretely, this can be seen with the AUR package `stack-static`: it is currently at 2.5.1-1, whereas `stack` in community is at 2.5.1-26. The provided PKGBUILD for `stack-static` doesn't specify the version in its `provides` array. Now, with `stack-static` installed, trying to build a PKGBUILD that `depends=('stack>=1.7.0')` should succeed, accepting the installed package as good enough. Instead, makepkg tries installing `stack`, replacing it for `stack-static`. Steps to Reproduce: Write a PKGBUILD for a package `foo` in community with `pkgrel>1` that has the same `pkgver` but `pkgrel=1`, and have it installed. Write another PKGBUILD that `depends=('foo>=$pkgver')`. Try building the latter with `makepkg -s`. |
This task depends upon
Comment by Allan McRae (Allan) -
Wednesday, 18 November 2020, 11:43 GMT
You need to use provides=("foo=$ver"). The versions do not need to match. For example, libjpeg-turbo version 2.0.5 provides libjpeg=8.2.2
Comment by gesh (gesh) -
Wednesday, 18 November 2020, 12:51 GMT
- Field changed: Percent Complete (100% → 0%)
This policy means a bare provides=('foo') is useless when there is a package named foo. If this is the approach Arch wants to take, at least the documentation should reflect this.
Comment by Allan McRae (Allan) -
Wednesday, 18 November 2020, 12:53 GMT
provides=('foo') works for depends=('foo'). If you depend on a specific version, you are asking for that version. If the package does not have a provide with a version, there is no way to know if it satisfies a versioned dependency. Closing - will not be reopened.