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

Bug 174530

Summary: Document new style virtual RDEPEND behaviour
Product: Documentation Reporter: Petteri Räty (RETIRED) <betelgeuse>
Component: DevmanualAssignee: Gentoo Quality Assurance Team <qa>
Status: CONFIRMED ---    
Severity: normal CC: alex_y_xu, binki, sam
Priority: High    
Version: unspecified   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---

Description Petteri Räty (RETIRED) gentoo-dev 2007-04-13 21:51:56 UTC
Petteri Räty wrote:
> > so only three virtual ebuilds have a DEPEND

According to GLEP 37 [1], they should only define RDEPEND.  The
reason that only RDEPEND is needed is that a package that has a
virtual dependency has freedom to include the virtual atom in any of
DEPEND, RDEPEND, and PDEPEND as necessary.  Note that when portage's
$ROOT feature is used, DEPEND is installed to the build platform.
The virtual ebuild itself does not make this decision, but rather
the package that has a virtual dependency.

> > So it seems most ebuilds for new style virtuals don't have DEPENDs.
> > Anyone have any idea on how these are supposed to work or are they
> > buggy? PMS currently says that RDEPEND doesn't have to be installed at
> > the time a package is emerged so as far as I understand it this means
> > that DEPEND="virtual/foobar" could mean that it could happen that
> > nothing providing the virtual is available.

The bit about "RDEPEND doesn't have to be installed" is only for
solving circular RDEPEND during the installation process.  When a
package has RDEPEND that is not installed, it must be considered
unusable and therefore this state should only exist for a relatively
short period of time during the installation process.

> > So should we be changing the
> > DEPEND atoms to DEPEND="${RDEPEND}" or is there something I am missing here?

We should not, as I've explained above.

Zac

[1] http://www.gentoo.org/proj/en/glep/glep-0037.html
Comment 1 Alex Xu (Hello71) 2015-06-21 16:17:08 UTC
for reference:

$ grep '^DEPEND="$' /usr/portage/virtual/*/*.ebuild
$ grep '^DEPEND="[^"]' /usr/portage/virtual/*/*.ebuild
/usr/portage/virtual/fortran/fortran-0.ebuild:DEPEND="${RDEPEND}"
/usr/portage/virtual/gsasl/gsasl-2.ebuild:DEPEND="|| ( net-libs/libgsasl net-misc/gsasl )"
/usr/portage/virtual/linux-sources/linux-sources-1.ebuild:DEPEND="firmware? ( sys-kernel/linux-firmware )"
/usr/portage/virtual/yacc/yacc-0.ebuild:DEPEND="|| ( sys-devel/bison dev-util/byacc dev-util/yacc )"