Closed rgommers closed 10 months ago
This should also cover a more general "one-to-many mapping". The issue isn't specific to python
, for example blas
and blas-devel
are often separate too. And distros may decide by themselves to split up packages more (e.g., separate out data files).
IIUC, that's a slightly separate issue which applies to all virtual dependencies (but not the PURL cases). When there's an interface/blas
involved, it's not explicit whether you need just the binaries/.so
s/.dll
s to run with (i.e. blas
) vs need the headers/libraries to compile against (i.e. blas-devel
).
What to do about Python headers themselves when a compiler is involved, is separate from what to do about virtual dependencies when they're specified and it's unclear if they're needed as something to compile or link or run against.
IIUC, that's a slightly separate issue which applies to all virtual dependencies
I think the headers and -devel
package split applies just as much to concrete dependencies (when they're shared or static libraries) as virtual ones.
it's not explicit whether you need just the binaries/
.so
s/.dll
s to run with (i.e.blas
) vs need the headers/libraries to compile against (i.e.blas-devel
).
It is not 100% explicit, but this is where build-requires
vs. host-requires
helps. For build-requires
, you typically do not need headers - these are things like compilers and code generators. For host-requires
, those are things that need to be present on the host system. And those are almost always libraries (for which you then need a -devel
package if that exists). So the way I'd implement this is to always install -devel
packages for host-requires
dependencies, and not for build-requires
.
What to do about Python headers themselves when a compiler is involved, is separate
Yes, this is a completely separate question. The problem is that Python itself is an assumed external dependency, it's really special-cased in pyproject.toml
. While it's not special-cased in any way in other packaging systems, it's just a package.
Included in version 2 of the PEP draft, which is up now - so closing.
This question was asked several times in https://discuss.python.org/t/pep-725-specifying-external-dependencies-in-pyproject-toml/31888. Probably should be implicit, since Python itself is implicit too. But either way there should be some recommendation here about how to think about having the Python headers and supporting files like
python.pc
available when needed.