Future EAPI/New dependency types

This page provides a summary of new dependency types requested for various features.

The types
BADEPEND
 * Build-against dependencies; . It would be used to inject additional DEPEND into a package being built against the package in question.
 * Use case: xorg packages, where e.g. building against libX11 requires header files in xproto. However, libX11 can still be used without xproto installed, so RDEPEND is not really correct. An alternative is to specify xproto in every single ebuild linking against libX11 directly or indirectly.

FDEPEND
 * Fetch dependencies; . If implemented, it will be used to specify the dependencies necessary for the pkg_fetch phase (e.g. a particular VCS). Thus, the package manager will be required to delay the execution of that phase until all fetch dependencies have been satisfied.
 * Alternative solution: put fetch dependencies in DEPEND, and request src_fetch implementation to check whether the tool requirements are satisfied already. Allow the package manager to execute src_fetch without satisfying the dependencies and if it fails, re-try when the dependencies are satisfied.

HDEPEND
 * Host dependencies; . These will be required to be installed on the host machine when cross-compiling.

IDEPEND
 * Install-time dependencies. Tools required for pkg_* phases; useful when binary a package is being installed and thus DEPEND does not fit.

LDEPEND
 * Library dependencies. Packages providing a library that is linked to, the first dependency type listed for BSD ports, cf: LIB_DEPENDS, which portage descends from. These would automatically be considered both HDEPEND (or equivalently DEPEND for earlier EAPIs) and RDEPEND, but soname changes would be tracked, and this would provide better data for both embedded and normal builds, eg: for --preserved-rebuild.

SDEPEND
 * Suggested dependencies; . A way of providing suggestions to install additional packages which can provide additional features to the package in question.

Listing of suggested 'longer' names
If we decide to switch to a more meaningful dependency variable names, here are some ideas:


 * BADEPEND -> BUILD_AGAINST_DEPEND
 * DEPEND -> BUILD_DEPEND
 * FDEPEND -> FETCH_DEPEND
 * HDEPEND -> HOST_DEPEND (HOST_BUILD_DEPEND?)
 * IDEPEND -> INSTALL_DEPEND (PKG_DEPEND?)
 * LDEPEND -> LIB_DEPEND (LINK_DEPEND?)
 * PDEPEND -> POST_DEPEND
 * RDEPEND -> RUN_DEPEND (RUNTIME_DEPEND?)
 * SDEPEND -> SUGGESTED_DEPEND