On 2021-12-15 16:40 +1000 Allan McRae via arch-dev-public wrote:
LIB_DIRS is specified in makepkg.conf, not in PKGBUILDs. Given usr/lib/ is not even standard for 64bit libraries, I do not want to hard code anything.
I somehow completely missed the part where you explicitly said it would be in makepkg.conf. That's exactly what I was suggesting precisely for the sake of having a centralized yet configurable setting. Sorry for the noise.
The dependencies added are purely sonames that the binary are explicitly linked to. So the binary will be non-function without libraries providing that exact soname. Thus all these dependencies are necessary.
Of course it will be up to the distribution to decide how much they use this feature - should all libraries provide their lib:soname value or just some? Dependencies are only added if there is a relevant provide.
What happens if a package includes "optional" binaries that depend on optdeps? Do those become hard deps?
As for extending this to other dependency types such as commands, I wonder if cmd:name would be specific enough. It's rare but sometimes unrelated commands can have the same name. Some sort of unique identifier may be required. I only mention it in case it should be considered for generalizing the syntax now before settling on a final format. Possibly something like "prefix:identifier/object", where "identifer/" is optional. So you would have "cmd:unique_cmd" for something unique but "cmd:foo/common_cmd" for some generic fungible common_cmd provided by different packages when a conflicting common_cmd exists in another package.
I don't see why we can not have multiple packages provide the same command. We already have multiple packages with the same provides entry, just with a package name and not a command name.
You can have multiple packages that provide the same command, but there may be rare cases where two conflicting packages provide unrelated commands with the same name, or a restricted version of a command that may not support the full argument set. It's worth considering how to handle such cases now before settling on a syntax.
How would this syntax work for optional deps btw? Also, if this is added, it would be useful to have an option to display the provider package of such deps in the output of pacman -Qi (e.g. -Qii).
For optdeps, what I mean is if the normal dependency would be "lib:libgpgme.so.11", how will you parse the normal optdep syntax of "pkgname: reason"? "lib:libfoo.so.13: required for the command foo". Won't using the same delimiter in two different contexts be problematic?
People can manually add such things as optional dependencies. I will need to look and see if pacman recognises provides as being installed (I think it does...).
I assumed that it did for dependency resolution.