About Portage
=============

Portage is a package management system based on ports collections. The
Package Manager Specification Project (PMS) standardises and documents the
behaviour of Portage so that the Portage tree can be used by other package
managers.


Dependencies
============

Python and Bash should be the only hard dependencies. Python 2.6 is the
minimum supported version.


Licensing and Legalese
=======================

Portage is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 2 as published by the Free Software Foundation.

Portage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Portage; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.


More information
================

-DEVELOPING contains some code guidelines.
-LICENSE contains the GNU General Public License version 2.
-NEWS contains new features/major bug fixes for each version.
-RELEASE NOTES contains mainly upgrade information for each version.
-TEST-NOTES contains Portage unit test information.


Links
=====
Gentoo project page: <http://www.gentoo.org/proj/en/portage/>
PMS: <https://dev.gentoo.org/~ulm/pms/head/pms.html>
PMS git repository: <http://git.overlays.gentoo.org/gitweb/?p=proj/pms.git>
