In my opinion this is the preferred solution. Going the conda way is a tremendous amount of work, and work that is already being done by for example Linux distributions who, I think, will typically do a better job at that. By declaring dependencies, anybody can integrate this into their distribution of choice on whatever operating system/architecture they would like to.
Note that Haskell (Cabal) allows for specifying pkg-config
style dependencies. A certain Haskell on Nix distribution maintains mappings from pkg-config
style dependencies to Nixpkgs “system” dependencies.
The package manager of the D language, DUB, also allows for specifying pkg-config
style dependencies.
A short but interesting discussion for Rust/Cargo is also about pkg-config
and states how it is a limited solution, for example not helpful on Windows, and so that there should be a way you can describe dependencies for different platforms using different tools. A module exists for Cargo that offers pkg-config
support
What is needed is to declare:
- native build inputs (tools)
- build inputs, that is, run-time dependencies one links against and for which for example the headers need to be available during build-time.
Ideally we’d also declare: - run-time dependencies one needs to invoke or by any other mean need to have available during run-time only
Some of these are already handled by backends such as meson and cmake. Therefore, we should maybe not duplicate such efforts and instead bless (a) certain backend(s) that handle these well. With meson one can for example invoke meson introspect --scan-dependencies /path/to/meson.build
to get all declared dependencies. The metadeps
package allows specifying pkg-config
dependencies in a Cargo.toml
.
Somewhat related topics:
- How do we get out of the business of driving C compilers?
- Support for build-and-run-time dependencies
- PEP 621: how to specify dependencies? - #97 by FRidh
- Should Python packaging aim for meson as build system (in case of extension modules)?
- Setuptools-rust/maturin: fetching rust deps when building wheel - #10 by FRidh