This overlay contains curated unmodified(*) Gentoo packages that are part of
the Chromium OS build and are exact copies of upstream Gentoo packages.

For information on updating ebuilds here, see:
	https://www.chromium.org/chromium-os/developer-library/guides/portage/package-upgrade-process/

Note: While there are tools to help automate importing of updates, the overall
process is not fully automatic: a developer must initiate the process as well
as run all the proper tests themselves (trybots/etc...).

Licensing information can be found in the respective files, so consult them
directly, or refer to the upstream Gentoo copy:
	http://sources.gentoo.org/gentoo-x86/

(*)
The spirit of this repo is that any package may be blindly blown away when
upgrading to a newer version.  So we sometimes allow minor changes to be
merged as long as that spirit is maintained.

We also munge the ebuild to set KEYWORDS="*" when importing.  The upstream
values have no bearing on our usage or porting efforts.
