[arch-dev-public] Library dependencies

Allan McRae allan at archlinux.org
Mon Dec 13 08:35:59 UTC 2021

Hi all,

I submitted a patchset to pacman that I would like some packager 
feed-back on. [1]

Essentially this replaces the old libdepends/libprovides system into
something akin to that used by APK.  In short, makepkg.conf will have
a variable like:

LIB_DIRS=('lib:usr/lib' 'lib32:usr/lib32')

At the end of package building, makepkg will look in the library
directories and add a provide.  E.g. for pacman:

provide = lib:libalpm.so.13

Note the prefix matches the prefix given to the relevant directory in
LIB_DIRS.  Similarly, makepkg can add dependencies on libraries. E.g.
pacman may have:

depends = lib:libgpgme.so.11

Note, to help with bootstrapping this system, or if packages just do
not want to add libprovides, the depends entries are only added if a
package actually provides them.

This is different to the APK system for libraries which uses "so" as the
prefix and is not configurable.  But Alpine used musl, which has no
concept of multilib, so we need to be a bit more flexible.  Note the 
"lib" and "lib32" prefixes are just for discussion.  Arch can configure 
how they want.

The dependency/provides additions can all be disabled in pacman.conf
with the '!autodeps' option.

Note that APK has similar things for binaries and pkg-config files. e.g.
provides = cmd:pacman
provides = pc:libalpm

These can now be readily be added as dropins to libmakepkg.

Any opinions on this would be greatly appreciated. Is this a better 
system than the current one?  Is adding automatic dependencies against 
the spirit of makepkg where everything is in the PKGBUILD?


[1] https://gitlab.archlinux.org/pacman/pacman/-/commits/allan/autodeps

More information about the arch-dev-public mailing list