The basic layout of the portage tree is as follows:
app-editors
, sys-apps
app-admin/metadata.xml
app-editors/vim
app-editors/vim/metadata.xml
app-editors/vim/Manifest
app-editors/vim/vim-6.3.068.ebuild
,
app-editors/vim/vim-7.0_alpha20050326.ebuild
app-editors/vim/files
app-editors/vim/files/vim-completion
eclass/
licenses/
profiles/
categories
,
info_pkgs
, info_vars
, package.mask
, use.desc
profiles/updates/
profiles/updates/1Q-2005
scripts/
distfiles/
. This is not included in the main
git tree, but it will be found on most user systems.
packages
. Again, this is found on user systems but not
in the main git tree.
Things that do not belong in the tree:
[A-Za-z0-9._+-]
Software-wise, in general all of the following should be met in order for a package to be included in the tree:
If a package is undeveloped or unmaintained upstream, it can be extremely difficult to get problems fixed. If a package does not have an active upstream, the developers who add the package to the tree must ensure that they are able to fix any issues which may arise.
Sometimes upstream may have a reason for not wanting their package included in the tree. This should be respected.
package.mask
until things calm down, or better yet make
them available as overlay ebuilds.
If we can't patch packages as necessary ourselves, we end up relying entirely upon upstream for support. This can be problematic, especially if upstream are slow at fixing things. We don't want to be in the situation where we can't stable a critical package because we're still waiting for a closed-source vendor to get their act together.
Similarly, not being able to mirror and distribute tarballs ourselves makes us rely entirely upon upstream mirrors. Experience has shown that these are often extremely unreliable, with files changing, moving or vanishing at random.