[opam-devel] Managing $PKG_CONFIG_PATH in opam

Thomas Leonard talex5 at gmail.com
Sun Sep 13 14:07:50 BST 2015

On 12 September 2015 at 08:49, Tim Cuthbertson <tim at gfxmonk.net> wrote:
> On the MirageOS mailing list, I submitted some patches[0] to make some
> mirage libraries build without assuming a strict `opam` destination
> directory layout. Mainly this was about the build scripts explicitly
> setting PKG_CONFIG_PATH to `opam config var prefix`/lib/pkgconfig.
> When building in a nixpkgs environment (using the `opam2nix` tool I'm
> building[1]), there is no such path, but that's OK - the build
> environment will have already set $PKG_CONFIG_PATH correctly.
> [0] http://lists.xenproject.org/archives/html/mirageos-devel/2015-09/msg00000.html
> [1] https://github.com/gfxmonk/opam2nix
> It was generally agreed that having the build scripts perform this
> task is not ideal, and Thomas Leonard suggested we could change `opam`
> itself to export $PKG_CONFIG_PATH, rather than having build scripts
> assume too much about their environment. That way a build script can
> assume its pkg-config dependencies are available without caring
> exactly where they live.
> This seems like a good idea to me, and I've written up a fairly simple
> patch which (I think) will do so:
> https://github.com/ocaml/opam/compare/master...gfxmonk:pkg-config
> I have only superficially tested it, but in thinking about that it
> seems like this almost certainly won't be enough. All "pure" opam
> packages providing pkg-config libraries should work just fine, however
> there exist a large number of opam packages (conf-*) which exist
> solely to force installation of system packages, and therefore most of
> them actually rely on the system $PKG_CONFIG_PATH being used.
> We could make `opam` prefix the opam pkgconfig path with the system
> one, but this could lead to accidental impurity (in the case of these
> mirage libraries, it would mean that dependencies might accidentally
> be provided by the system rather than opam deps, which makes builds
> fragile).

Since the opam environment is also the user's shell environment, we
should always add to the path, I think. Using opam shouldn't prevent
compiling non-OCaml software.

> Any ideas how we can have opam manage PKG_CONFIG_PATH so that build
> scripts don't have to?
> (I've sent this to both the mirage & opam lists - apologies if that
> causes too much noise, but I figure it affects both projects).
> Cheers,
>  - Tim.

Dr Thomas Leonard        http://roscidus.com/blog/
GPG: DA98 25AE CAD0 8975 7CDA  BD8E 0713 3F96 CA74 D8BA

More information about the opam-devel mailing list