Gentoo Linux Portage Development
The Portage Development Project works to provide a continuously
expanding and developing tool for the management and installation
of packages. The developers work on providing a coherent system
that is as trouble free as possible (backwards compatible, automated,
and simple). Bugs are tracked and fixed from the
Gentoo bug tracker and
developer-developer correspondence is maintained on the
gentoo-portage-dev mailing list. Another communication channel is
the #gentoo-portage IRC channel on the freenode network.
The goal of the Portage Development Project stands at providing
a seamless integration of developer and user tools to aid the growth
and maintenance of the Gentoo Portage Tree.
||Lead ( Release Coordinator )
||Member ( Documentation )
|Members from subproject
Gentoo Portage Tools
||Lead ( gentoolkit )
||Member ( gentoolkit-dev )
|Harald van Dijk
||Member ( ufed )
All developers can be reached by e-mail using firstname.lastname@example.org.
Contributing to Portage
Please report all bugs you encounter on
our bug tracking system.
Before opening a new bug report please make sure that the bug has not
already been reported by another user.
Important: Do not report bugs/requests about anything other than sys-apps/portage in the Portage Development product
In your bug report please state clearly:
- How you triggered the bug (commands executed, files edited, ...)
- What portage version you used when you found the bug
- If the bug is reproducable
- The output of the emerge --info command
Please don't get too impatient if there is no immideate reaction on your bug,
it can sometimes take a while before a developer has time to look at it (this
also applies to non-Portage bug reports). Often we'll need additional information
from you while trying to resolve a bug, please provide it as soon as you can, if we
have to wait too long (over a month) we'll likely close the bug as RESOLVED:NEEDINFO,
you can however reopen it when you posted the requested information.
Please do not reopen bugs unless you're in one of the following situations:
- The bug was marked as RESOLVED:FIXED, but you can still reproduce it with the new
version that is suposed to contain the fix (the version is generally stated when
the bug is closed)
- The bug was marked as RESOLVED:NEEDINFO and you have provided the requested information
- The bug was marked as RESOLVED:WONTFIX, RESOLVED:CANTFIX or RESOLVED:LATER
and you think we misunderstood you. Do not reopen a bug just because you disagree
with our resolution.
Be aware that we will still read comments on bug reports even if the report itself is closed,
so you don't have to reopen it just to get our attention.
Every bug report deals with one specific problem, please respect that and don't talk about
other not directly related bugs on a bug report.
Testing multiple Portage versions
Note: This section only applies to Portage 2.1.2 or later
There are various reasons why you'd want to have multiple versions of portage
available at the same time without having to install them as system default.
Examples would be to check which versions are affected by a specific bug, to
test new features before deploying a new version or have a git checkout available
for testing while keeping a stable release for normal operation.
As of Portage-2.1.2 one can have and use an arbitrary number of Portage
installations parallel to each other by adjusting the two environment variables
PATH and PYTHONPATH. For example if you have a checkout of the
master branch at /checkouts/portage you'd set them like this:
Code Listing 4.1: settings to use portage master branch
With those settings calling tools like emerge, repoman or
ebuild will pickup the correct locations to import libraries. External
tools like gentoolkit or porthole may or may not respect those settings though.
Setting PATH isn't even necessary if you always call the commands by their full
name (e.g. /checkouts/portage/bin/emerge instead of emerge).
If you want to submit a patch to sys-apps/portage or a related package, please make
sure the patch follows these criteria:
- Use TABS. Some people like 8 spaces, some people like 4, and some
like 2. Tabs are the happy medium. Patches that use spaces and/or a mix of
tabs and spaces for indentation will likely be rejected.
- Generally submit diff files instead of whole files, only when the diff is
significantly larger than the file itself or the file didn't exist previously
submitting the whole file is acceptable.
- Diffs have to be in unified form (diff -u, git diff).
- Always submit a detailed explanation of what the patch does and, if necessary,
why you chose the specific implementation you submitted (IOW: what's the
benefit of the patch). Also include any problems and/or drawbacks you think the patch has.
- Always state against which version (for releases) or revision and branch (for git patches)
the patch was made.
- Only submit clean patches. Do not include other patches in a
submitted patch. If the code found in a patch does not match the
description of the patch, it will be rejected. Also don't add any unrelated code cleanups
in your patch
- Python docstrings should conform to the
Portage Docstring Specification.
If the patch is related to a specific bug report, please attach it there as text/plain.
If it is not directly related to a bug report (to your knowledge) please send it to the
gentoo-portage-dev mailing list and tag the subject with '[PATCH]'.
Note: Patches for packages NOT related to sys-apps/portage go on
http://bugs.gentoo.org, please do not send them to the gentoo-portage-dev
Access to Portage GIT repositories
The Portage sourcecode is maintained within a GIT repository on
If you are a dev: The main repository is located at
please note that it is subject to strict access controls, only people listed
in the developers section on this page are able to commit to it.
Note: The repository can be viewed over
The repository currently contains the following branches (incomplete list):
- master: the current main development line
- prefix: experimental branch with support for prefix installs
- 2.1.7: current stable maintenance branch
Note: The old SVN repository still exists, but is not updated anymore or used in any other way.
project has the following subprojects:
||The Portage Development Sandbox Project is devoted to maintaining and updating the portage sandbox library.
Updating and Creating documentation for the tools of Portage.
Gentoo Portage Tools
||The Tools subproject deals with portage related tools that are not included in the core portage package. This covers maintaining ebuilds for external packages as well as developing and improving our own utilities and scripts.
Resources offered by the
External Documentation Resources
Unless otherwise noted the following resources are maintained by the documentation project,
but as they are the primary online documentation for portage we will list them here.