Virtuals are merely packages that are in the category of virtual. They use their dependency string to specify the providers for the virtual and should not install any files. Since they are regular ebuilds, there can be several versions of a virtual (which can be helpful when a package may be provided by another in some versions, and not others — see the perl virtuals for an example of this). One other difference (besides not installing any files) is that a virtual does not define HOMEPAGE and LICENSE variables. Since it installs no files, it really does not have a license.

Before adding a new virtual, it should be discussed on gentoo-dev.

An example of a virtual:


DESCRIPTION="Virtual for C++ tr1 <type_traits>"
KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 ~s390 sparc x86 ~x86-fbsd"

RDEPEND="|| ( >=sys-devel/gcc-4.1 dev-libs/boost )"
Looks familar...right? It should since its going to look just like a regular ebuild.