This BoF is to discuss the state of pkg-config and pkgconf in Debian, and the proposal to switch from pkg-config to pkgconf: its benefits and downsides, approaches etc.
pkgconf is a newer, actively maintained implementation of pkg-config that supports more aspects of the pkg-config file specification and provides a library interface that applications can use to incorporate intelligent handling of pkg-config files into themselves (such as build file generators, IDEs, and compilers). Through its pkg-config compatibility interface (activated when it is run as “pkg-config”), it also can completely replace the original implementation.
Debian would benefit from switching to pkgconf by utilising a more complete implementation of pkg-config that handles aspects of .pc files that pkg-config does not. For example, Provides rules and Cflags.private rules are supported, and pkgconf has a better (and less costly) dependency resolver for .pc files.
pkgconf doesn’t depend on glib, making it easier to bootstrap new architectures, since there won’t be a cyclic dependency to break (pkg-config → glib → pkg-config).
pristine-tar is a magical tool that can regenerate a pristine upstream tarball using only a small binary delta file and a revision control checkout of the upstream branch. Since its creation, it’s become part of the Mercurial- and Git-based workflows of many individual maintainers and teams, as it provides a way to essentially produce Debian source packages using Git-based tooling only, without the need to be able to talk to the archive or a package mirror.
Despite its usefulness,
pristine-tar suffers from some inherent drawbacks. It attempts to reconstruct output of unknown versions of compressors such as gzip, including all of their quirks and weirdness, generating byte-by-byte identical compressed files. This task is very difficult as compressors evolve and their output changes.
pristine-lfs attempts to be a replacement for
pristine-tar, while attacking the problem differently. It utilises the Git LFS mechanism to store the tarballs next to the Git repository in the dedicated file storage. Git LFS is supported by GitLab (and hence by Salsa), GitHub and other online Git hosting providers.