|Summary:||[EAPI-1] new dependency type(s) for cross-compiling / alternate $ROOT support|
|Product:||Gentoo Hosted Projects||Reporter:||Zac Medico <zmedico>|
|Severity:||normal||CC:||alonbl, codehero, kingtaco|
|Package list:||Runtime testing required:||---|
|Bug Depends on:|
|Bug Blocks:||174380, 140606|
Description Zac Medico 2007-04-14 07:07:15 UTC
In EAPI 0, the DEPEND, RDEPEND, and PDEPEND variables do not provide enough granularity to fully model a cross-compiling environment. Portage currently interprets DEPEND as a build platform dependency, while there is no way to explicitly specify a build-time dependency that must be installed into the cross-compiled platform. Perhaps we should add a new BDEPEND variable that represents this type of dependency.
Comment 1 SpanKY 2007-04-14 11:23:53 UTC
i'm guessing ABI support falls into this realm as well ?
Comment 2 Zac Medico 2007-04-14 20:05:05 UTC
I consider ABI support to be an orthogonal concern. My main intention for this bug is simply to have better support for building packages and installing them to an alternate $ROOT that may or may not be cross-compiled. Portage interprets DEPEND as a build-time dependency that should be installed to ROOT=/ (the build platform). We currently have no way to specify a build-time dependency that should be installed to ROOT=/some/other/root/ (cross-compiled or not), so I've suggested that we use BDEPEND to represent that.
Comment 3 Ciaran McCreesh 2007-05-13 08:34:04 UTC
So with this change, what will the meanings of DEPEND, RDEPEND, PDEPEND and BDEPEND be in terms of what gets installed where?
Comment 4 Zac Medico 2007-05-13 09:09:15 UTC
For a package being installed to $ROOT, it's dependencies will be installed as follows: type location time DEPEND build platform before BDEPEND $ROOT before RDEPEND $ROOT before or approximately the same time PDEPEND $ROOT after or possibly before
Comment 5 Ciaran McCreesh 2007-05-13 09:19:04 UTC
Just a vague thought... Given that there is a high degree of overlay between DEPEND and RDEPEND in many cases, and that RDEPEND=DEPEND will be dropped... Are dependencies best specified as multiple variables? Or would a single DEPEND variable with a way of marking dependency classes on each item be better? Something like the following (syntax purely for demonstration): DEPENDENCIES=" dev-libs/libfoo dev-cpp/libtemplatestuff<build> app-misc/rootme<rootbuild> app-misc/sometextfiles<run> app-misc/fooplugins<post>" or: DEPENDENCIES=" dev-libs/libfoo build: dev-cpp/libtemplatestuff dev-cpp/andanother rootbuild: and/so-on build,run: blah" with a default of build,run? *shrug* Possibly worth considering. It'll avoid the need for an explosion of *DEPEND variables and can probably scale to handling ABI type dependencies.
Comment 6 Zac Medico 2007-05-13 10:03:08 UTC
The nice thing about BDEPEND is that it's a relatively simple extension of the existing multi-variable style. I'm not sure how far we should go in EAPI-1 but the single-variable approach is certainly worth considering (at least in the long run).
Comment 7 Alon Bar-Lev (RETIRED) 2007-11-23 10:24:25 UTC
*** Bug 200057 has been marked as a duplicate of this bug. ***
Comment 8 Zac Medico 2007-12-06 19:12:47 UTC
*** This bug has been marked as a duplicate of bug 201499 ***