Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 174552

Summary: [EAPI-1] new dependency type(s) for cross-compiling / alternate $ROOT support
Product: Gentoo Hosted Projects Reporter: Zac Medico <zmedico>
Component: PMS/EAPIAssignee: PMS/EAPI <pms>
Status: RESOLVED DUPLICATE    
Severity: normal CC: alonbl, codehero, kingtaco
Priority: High    
Version: unspecified   
Hardware: All   
OS: All   
Whiteboard:
Package list:
Runtime testing required: ---
Bug Depends on:    
Bug Blocks: 174380, 140606    

Description Zac Medico gentoo-dev 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 gentoo-dev 2007-04-14 11:23:53 UTC
i'm guessing ABI support falls into this realm as well ?
Comment 2 Zac Medico gentoo-dev 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 gentoo-dev 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 gentoo-dev 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) gentoo-dev 2007-11-23 10:24:25 UTC
*** Bug 200057 has been marked as a duplicate of this bug. ***
Comment 8 Zac Medico gentoo-dev 2007-12-06 19:12:47 UTC

*** This bug has been marked as a duplicate of bug 201499 ***
Comment 9 Zac Medico gentoo-dev 2008-04-28 21:52:39 UTC
*** Bug 219623 has been marked as a duplicate of this bug. ***