Virtuals are merely packages that are in the category of
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
Since it installs no files, it really does not have a license.
Before adding a new virtual, it should be discussed on
An example of a virtual:
EAPI=4 DESCRIPTION="Virtual for C++ tr1 <type_traits>" SLOT="0" 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.
PROVIDEtype virtuals have been banned from the Portage tree.