Skip to content

Autotools: Move libmount from Libs.private to Requires.private

Simon McVittie requested to merge smcv/glib:libmount into master

libmount depends on libblkid, so if we statically link a trivial executable to GIO, we need to pull in both libmount and libblkid. Linking with -lmount is not enough to achieve that, but recursing into mount.pc is.

This makes the Autotools build a bit more like the Meson build, which already puts mount in Requires.private.


I first noticed this as a difference between Meson and Autotools builds (Meson uses more Requires.private and less Libs.private in general), then wrote a test-case for static linking in Debian and discovered that we can't currently statically link libgio without providing a spurious -lblkid or $(pkg-config --libs mount).

Strictly speaking zlib and libselinux should ideally also move to Requires.private, but the Autotools build currently detects them the old way instead of via pkg-config (as a fallback for zlib, or in all cases for selinux), so that would break systems on which they don't provide .pc files; and they don't actually have non-libc dependencies anyway (other than pcre, which GLib also depends on directly), so those aren't a practical problem.

Similarly, strictly speaking libffi should also move from GObject's Libs.private to its Requires.private, but it doesn't have non-libc dependencies, so this is a non-issue in practice.

Edited by Simon McVittie

Merge request reports