public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] dev/heroxbd:master commit in: sys-apps/portage/, sys-apps/portage/files/
@ 2014-12-10 10:05 Benda XU
  0 siblings, 0 replies; 3+ messages in thread
From: Benda XU @ 2014-12-10 10:05 UTC (permalink / raw
  To: gentoo-commits

commit:     6ae8a5e1cb096ca7ccce9f02c462dd5181f1120d
Author:     Benda Xu <heroxbd <AT> gentoo <DOT> org>
AuthorDate: Wed Dec 10 10:11:39 2014 +0000
Commit:     Benda XU <heroxbd <AT> gentoo <DOT> org>
CommitDate: Wed Dec 10 10:12:31 2014 +0000
URL:        http://sources.gentoo.org/gitweb/?p=dev/heroxbd.git;a=commit;h=6ae8a5e1

sys-apps/portage: track for bug 532100, call ldconfig via env-update

---
 sys-apps/portage/ChangeLog                         | 2773 ++++++++++++++++++++
 sys-apps/portage/Manifest                          |   26 +
 sys-apps/portage/files/05portage.envd              |    1 +
 .../portage-2.2.00.15801-prefix-chaining.patch     |  693 +++++
 .../files/portage-2.2.01.18213-ebuildshell.patch   |  105 +
 .../portage-2.2.01.18826-aix-preservelibs.patch    |   32 +
 .../files/portage-2.2.01.18980-ebuildshell.patch   |  103 +
 .../portage-2.2.01.19247-aix-preserve-libs.patch   |  163 ++
 .../files/portage-2.2.01.19247-ebuildshell.patch   |  105 +
 .../files/portage-2.2.01.19981-ebuildshell.patch   |  105 +
 .../files/portage-2.2.01.20020-ebuildshell.patch   |  137 +
 .../files/portage-2.2.01.20239-ebuildshell.patch   |  148 ++
 .../portage-2.2.10.1-case-insensitive-fs.patch     |  375 +++
 .../portage/files/portage-2.2.14-ldconfig.patch    |   28 +
 .../portage/files/portage-2.2.7-ebuildshell.patch  |  158 ++
 ...ortage-2.2.7-macho-relative-install_names.patch |   68 +
 sys-apps/portage/files/portage-2.2.7-sandbox.patch |   21 +
 .../files/portage-2.2.7-shebang-fixes.patch        |  153 ++
 .../portage/files/portage-2.2.8-ebuildshell.patch  |  157 ++
 sys-apps/portage/metadata.xml                      |   13 +
 sys-apps/portage/portage-2.2.10.1-r1.ebuild        |  592 +++++
 sys-apps/portage/portage-2.2.10.1.ebuild           |  586 +++++
 sys-apps/portage/portage-2.2.14.ebuild             |  583 ++++
 sys-apps/portage/portage-2.2.8.ebuild              |  585 +++++
 24 files changed, 7710 insertions(+)

diff --git a/sys-apps/portage/ChangeLog b/sys-apps/portage/ChangeLog
new file mode 100644
index 0000000..d6f32f1
--- /dev/null
+++ b/sys-apps/portage/ChangeLog
@@ -0,0 +1,2773 @@
+# ChangeLog for sys-apps/portage
+# Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2
+# $Id$
+
+*portage-2.2.10.1-r1 (12 Nov 2014)
+*portage-2.2.14 (12 Nov 2014)
+
+  12 Nov 2014; Fabian Groffen <grobian@gentoo.org>
+  +files/portage-2.2.10.1-case-insensitive-fs.patch,
+  +portage-2.2.10.1-r1.ebuild, +portage-2.2.14.ebuild, -portage-2.2.10.ebuild,
+  -portage-2.2.14_rc1.ebuild, -portage-2.2.7-r2.ebuild:
+  Version bump, also revbump on 2.2.10.1 for case-insensitive-fs patch.  This
+  version needs to be installed in order to install 2.2.14.  Unfortunately we
+  cannot force this with dependencies, hence 2.2.14 is masked for the time
+  being.
+
+  29 Oct 2014; Fabian Groffen <grobian@gentoo.org> portage-2.2.10.1.ebuild,
+  portage-2.2.14_rc1.ebuild:
+  Use pool for default rsync server
+
+  18 Oct 2014; Fabian Groffen <grobian@gentoo.org> portage-2.2.10.1.ebuild,
+  portage-2.2.14_rc1.ebuild:
+  portage: let's face it, prefix.ge.org is dead
+
+*portage-2.2.14_rc1 (30 Sep 2014)
+
+  30 Sep 2014; Fabian Groffen <grobian@gentoo.org> +portage-2.2.14_rc1.ebuild:
+  Version bump
+
+*portage-2.2.10.1 (20 Jun 2014)
+
+  20 Jun 2014; Fabian Groffen <grobian@gentoo.org> +portage-2.2.10.1.ebuild:
+  Version bump, suppot for QA_INSTALL_NAME in ebuilds
+
+  25 May 2014; Fabian Groffen <grobian@gentoo.org> portage-2.2.10.ebuild:
+  Fix ever fixing make.conf, bug #511404 by Greg Turner
+
+*portage-2.2.10 (26 Apr 2014)
+
+  26 Apr 2014; Fabian Groffen <grobian@gentoo.org> +portage-2.2.10.ebuild,
+  -portage-2.2.4.22351.ebuild, -portage-2.2.6.22374.ebuild:
+  Version bump
+
+  03 Apr 2014; Michael Haubenwallner <haubi@gentoo.org> portage-2.2.8.ebuild,
+  +files/portage-2.2.8-ebuildshell.patch:
+  update ebuildshell patch
+
+*portage-2.2.7-r2 (22 Dec 2013)
+
+  22 Dec 2013; Fabian Groffen <grobian@gentoo.org>
+  +files/portage-2.2.7-macho-relative-install_names.patch,
+  +portage-2.2.7-r2.ebuild, -portage-2.2.7-r1.ebuild:
+  Add relative install_names patch for Darwin
+
+  15 Dec 2013; Benda Xu <heroxbd@gentoo.org> portage-2.2.7-r1.ebuild:
+  Add patch to fix nosandbox behaviour
+
+*portage-2.2.7-r1 (12 Nov 2013)
+
+  12 Nov 2013; Fabian Groffen <grobian@gentoo.org>
+  +files/portage-2.2.7-shebang-fixes.patch, +portage-2.2.7-r1.ebuild,
+  -portage-2.2.7.ebuild:
+  Revbump to provide repos.conf/ and fix some shebangs
+
+  25 Oct 2013; Michael Haubenwallner <haubi@gentoo.org> portage-2.2.7.ebuild,
+  +files/portage-2.2.7-ebuildshell.patch:
+  Bump ebuildshell patch, bug#155161.
+
+*portage-2.2.7 (24 Sep 2013)
+
+  24 Sep 2013; Fabian Groffen <grobian@gentoo.org> +portage-2.2.7.ebuild,
+  -portage-2.2.01.22288.ebuild:
+  Version bump, align versioning with gx86
+
+  19 Sep 2013; Fabian Groffen <grobian@gentoo.org> portage-2.2.4.22351.ebuild,
+  portage-2.2.6.22374.ebuild:
+  Drop more legacy sedding
+
+  19 Sep 2013; Fabian Groffen <grobian@gentoo.org> portage-2.2.01.22288.ebuild,
+  portage-2.2.4.22351.ebuild, portage-2.2.6.22374.ebuild:
+  Drop legacy sed replacements (vars were moved)
+
+*portage-2.2.6.22374 (18 Sep 2013)
+
+  18 Sep 2013; Fabian Groffen <grobian@gentoo.org> +portage-2.2.6.22374.ebuild,
+  -portage-2.2.01.22124-r1.ebuild:
+  Version bump
+
+*portage-2.2.4.22351 (13 Sep 2013)
+
+  13 Sep 2013; Fabian Groffen <grobian@gentoo.org> +portage-2.2.4.22351.ebuild,
+  -portage-2.2.01.22097.ebuild, -portage-2.2.01.22124.ebuild:
+  Version bump
+
+  13 Aug 2013; Benda Xu <heroxbd@gentoo.org> +portage-2.2.01.22288.ebuild:
+  portage lib is usr/lib regardless of multilib. fix variable
+  portage_base introduced in portage-2.2.00.7209.ebuild rev 7277.
+
+*portage-2.2.01.22288 (12 Aug 2013)
+
+  12 Aug 2013; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.22288.ebuild,
+  -portage-2.2.01.22013.ebuild:
+  Version bump, matches v2.2.0_alpha196+
+
+*portage-2.2.01.22124-r1 (13 Jul 2013)
+
+  13 Jul 2013; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.01.22124-r1.ebuild:
+  Bring ebuild in line with gentoo-x86 version
+
+*portage-2.2.01.22124 (10 Jul 2013)
+
+  10 Jul 2013; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.22124.ebuild,
+  -portage-2.2.01.22120.ebuild:
+  Version bump, matches 2.2.0_alpha188
+
+*portage-2.2.01.22120 (08 Jul 2013)
+
+  08 Jul 2013; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.22120.ebuild,
+  -portage-2.2.01.22007.ebuild:
+  Version bump, matches 2.2.0_alpha187
+
+*portage-2.2.01.22097 (29 Jun 2013)
+
+  29 Jun 2013; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.22097.ebuild,
+  -portage-2.2.01.21938.ebuild:
+  Version bump, matches v2.2.0_alpha186
+
+*portage-2.2.01.22013 (12 Jun 2013)
+
+  12 Jun 2013; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.22013.ebuild,
+  -portage-2.2.01.21890.ebuild:
+  bump for fix for bug #472984
+
+*portage-2.2.01.22007 (09 Jun 2013)
+
+  09 Jun 2013; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.22007.ebuild,
+  -portage-2.2.01.21882.ebuild:
+  Version bump, matches 2.2.0_alpha179
+
+*portage-2.2.01.21938 (05 May 2013)
+
+  05 May 2013; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.21938.ebuild,
+  -portage-2.2.01.21933.ebuild:
+  Bump for Darwin preserve-libs fix
+
+*portage-2.2.01.21933 (05 May 2013)
+
+  05 May 2013; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.21933.ebuild,
+  -portage-2.2.01.21864.ebuild:
+  Version bump, matches 2.2.0_alpha174
+
+*portage-2.2.01.21890 (02 Apr 2013)
+
+  02 Apr 2013; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.21890.ebuild,
+  -portage-2.2.01.21476.ebuild:
+  Version bump, matches v2.2.0_alpha171, fixes bug #460382
+
+*portage-2.2.01.21882 (31 Mar 2013)
+
+  31 Mar 2013; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.21882.ebuild,
+  -portage-2.2.01.21418.ebuild:
+  Version bump, matches 2.2.0_alpha170+
+
+*portage-2.2.01.21864 (24 Mar 2013)
+
+  24 Mar 2013; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.21864.ebuild,
+  -portage-2.2.01.21863.ebuild:
+  Apply patch for MacOSX sandbox by Michael Weiser, bug #462054
+
+*portage-2.2.01.21863 (24 Mar 2013)
+
+  24 Mar 2013; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.21863.ebuild,
+  -portage-2.2.01.21858.ebuild:
+  Version bump, more silent during bootstraps
+
+*portage-2.2.01.21858 (23 Mar 2013)
+
+  23 Mar 2013; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.21858.ebuild,
+  -portage-2.2.01.21688.ebuild:
+  Version bump, matches 2.2.0_alpha169+, fixes Error 35 on Darwin, bug #456296
+
+*portage-2.2.01.21688 (27 Jan 2013)
+
+  27 Jan 2013; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.21688.ebuild,
+  -portage-2.2.01.21580.ebuild:
+  Version bump, matches portage-2.2.0_alpha160+
+
+*portage-2.2.01.21580 (13 Jan 2013)
+
+  13 Jan 2013; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.21580.ebuild,
+  -portage-2.2.01.21313.ebuild:
+  Version bump, matches portage-2.2.0_alpha151.
+
+*portage-2.2.01.21476 (26 Dec 2012)
+
+  26 Dec 2012; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.21476.ebuild,
+  -portage-2.2.01.21165.ebuild:
+  Version bump, matches 2.2.0_alpha149+, fixes bugs #439488 and #442348
+
+*portage-2.2.01.21418 (02 Dec 2012)
+
+  02 Dec 2012; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.21418.ebuild,
+  -portage-2.2.01.21143.ebuild:
+  Version bump, matches 2.2.0_alpha144+, support for Python 3
+
+*portage-2.2.01.21313 (22 Oct 2012)
+
+  22 Oct 2012; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.21313.ebuild,
+  -portage-2.2.01.21003.ebuild:
+  Version bump, matches 2.2.0_alpha141+, has EAPI5 support
+
+*portage-2.2.01.21165 (30 Sep 2012)
+
+  30 Sep 2012; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.21165.ebuild,
+  -portage-2.2.01.20972.ebuild:
+  Version bump, matches 2.2.0_alpha134+, includes updated seatbelt/macosx
+  sandbox support
+
+*portage-2.2.01.21143 (26 Sep 2012)
+
+  26 Sep 2012; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.21143.ebuild,
+  -portage-2.2.01.20894.ebuild:
+  Version bump, matches v2.2.0_alpha133
+
+*portage-2.2.01.21003 (12 Sep 2012)
+
+  12 Sep 2012; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.21003.ebuild,
+  -portage-2.2.01.20837.ebuild:
+  Version bump, matches 2.2.0_alpha127
+
+*portage-2.2.01.20972 (09 Sep 2012)
+
+  09 Sep 2012; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.20972.ebuild,
+  -portage-2.2.01.20796.ebuild:
+  Version bump, matches 2.2.0_alpha125+
+
+*portage-2.2.01.20894 (27 Aug 2012)
+
+  27 Aug 2012; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.20894.ebuild,
+  -portage-2.2.01.20757.ebuild:
+  Version bump, matches 2.2.0_alpha123
+
+  20 Aug 2012; Fabian Groffen <grobian@gentoo.org> portage-2.2.01.20837.ebuild:
+  Up the requirement for bash to 4.1, since redirect_alloc_fd better relies on
+  bash' built-in to find a free filedescriptor than a rather Linux-specific way
+  to figure one out.
+
+  12 Aug 2012; Fabian Groffen <grobian@gentoo.org> portage-2.2.01.20837.ebuild:
+  Add sys-devel/patch to DEPEND for bug #429746
+
+  12 Aug 2012; Fabian Groffen <grobian@gentoo.org> portage-2.2.01.20837.ebuild:
+  Remove /etc/make.globals symlink code (bug #427862)
+
+*portage-2.2.01.20837 (12 Aug 2012)
+
+  12 Aug 2012; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.20837.ebuild,
+  -portage-2.2.01.20430.ebuild:
+  Version bump, matches 2.2.0_alpha121
+
+*portage-2.2.01.20796 (19 Jul 2012)
+
+  19 Jul 2012; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.20796.ebuild,
+  -portage-2.2.01.20389.ebuild:
+  Version bump, matches v2.2.0_alpha120
+
+*portage-2.2.01.20757 (08 Jul 2012)
+
+  08 Jul 2012; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.20757.ebuild:
+  Version bump, matches portage-2.2.0_alpha116+
+
+*portage-2.2.01.20430 (23 Apr 2012)
+
+  23 Apr 2012; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.20430.ebuild,
+  -portage-2.2.01.20271.ebuild, portage-2.2.01.20366.ebuild,
+  portage-2.2.01.20389.ebuild:
+  Version bump, matches 2.2.0_alpha101
+
+*portage-2.2.01.20389 (03 Apr 2012)
+
+  03 Apr 2012; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.20389.ebuild,
+  -portage-2.2.01.20239.ebuild:
+  Version bump, matches v2.2.0_alpha99+
+
+*portage-2.2.01.20366 (31 Mar 2012)
+
+  31 Mar 2012; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.20366.ebuild,
+  -portage-2.2.01.20153.ebuild:
+  Version bump, matches 2.2.0_alpha96+
+
+*portage-2.2.01.20271 (01 Mar 2012)
+
+  01 Mar 2012; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.20271.ebuild,
+  -portage-2.2.01.20062.ebuild, files/portage-2.2.01.20239-ebuildshell.patch:
+  Version bump, matches portage-2.2.0_alpha89+
+
+  29 Feb 2012; Michael Haubenwallner <haubi@gentoo.org>
+  portage-2.2.01.20239.ebuild, +files/portage-2.2.01.20239-ebuildshell.patch:
+  handle 'ebuildshell' feature like the 'interactive' property in
+  stdio-redirection
+
+*portage-2.2.01.20239 (19 Feb 2012)
+
+  19 Feb 2012; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.20239.ebuild,
+  -portage-2.2.01.20048.ebuild:
+  Version bump, matches portage-2.2.0_alpha87
+
+*portage-2.2.01.20153 (09 Feb 2012)
+
+  09 Feb 2012; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.20153.ebuild,
+  -portage-2.2.01.19572.ebuild:
+  Version bump, potential fixes for bugs #402413 and #398805.
+
+*portage-2.2.01.20062 (10 Jan 2012)
+
+  10 Jan 2012; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.20062.ebuild,
+  -portage-2.2.01.19981.ebuild:
+  Version bump to fix bug #397613
+
+*portage-2.2.01.20048 (31 Dec 2011)
+
+  31 Dec 2011; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.20048.ebuild,
+  -portage-2.2.01.20043.ebuild:
+  Version bump, matches 2.2.0_alpha84, fixes #396577
+
+*portage-2.2.01.20043 (26 Dec 2011)
+
+  26 Dec 2011; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.20043.ebuild,
+  -portage-2.2.01.20023.ebuild:
+  Version bump, matches portage-2.2.0_alpha83+, fix for Prefix bug #395911
+
+*portage-2.2.01.20023 (23 Dec 2011)
+
+  23 Dec 2011; Fabian Groffen <grobian@gentoo.org>
+  +files/portage-2.2.01.20020-ebuildshell.patch, +portage-2.2.01.20023.ebuild,
+  -portage-2.2.01.19941.ebuild:
+  Version bump
+
+*portage-2.2.01.19981 (19 Dec 2011)
+
+  19 Dec 2011; Fabian Groffen <grobian@gentoo.org>
+  +files/portage-2.2.01.19981-ebuildshell.patch, +portage-2.2.01.19981.ebuild,
+  -portage-2.2.01.19893.ebuild:
+  Version bump, matches portage-2.1.10.41+, fixes bug #395241
+  (FEATURES=installsources installing sources to incorrect path)
+
+*portage-2.2.01.19941 (14 Dec 2011)
+
+  14 Dec 2011; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.19941.ebuild,
+  -portage-2.2.01.19295.ebuild, -portage-2.2.01.19478.ebuild:
+  Version bump, quite some commits after portage-2.2.0_alpha80.  Contains
+  lockfile fixes.
+
+*portage-2.2.01.19893 (10 Dec 2011)
+
+  10 Dec 2011; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.19893.ebuild,
+  -portage-2.2.01.19833.ebuild:
+  Bump, replace previous faulty snapshot, ebuilds could cause out-of-prefix
+  installations with funcs like doman.
+
+*portage-2.2.01.19833 (08 Dec 2011)
+
+  08 Dec 2011; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.19833.ebuild:
+  Version bump, matches portage-2.2.0_alpha79+
+
+*portage-2.2.01.19572 (21 Oct 2011)
+
+  21 Oct 2011; Fabian Groffen <grobian@gentoo.org> +portage-2.2.01.19572.ebuild,
+  -portage-2.2.01.19247.ebuild:
+  Version bump, matches portage-2.2.0_alpha70
+
+*portage-2.2.01.19478 (15 Oct 2011)
+
+  15 Oct 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.19120.ebuild, +portage-2.2.01.19478.ebuild:
+  Version bump, matches portage-2.2.0_alpha67
+
+*portage-2.2.01.19295 (20 Sep 2011)
+
+  20 Sep 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.19074.ebuild, +portage-2.2.01.19295.ebuild:
+  Version bump, matches portage-2.2.0_alpha59+, fixes preserve-libs on AIX and
+  Darwin, bug #383691
+
+  16 Sep 2011; Michael Haubenwallner <haubi@gentoo.org>
+  portage-2.2.01.19247.ebuild,
+  +files/portage-2.2.01.19247-aix-preserve-libs.patch,
+  +files/portage-2.2.01.19247-ebuildshell.patch:
+  Fix preserve-libs for AIX. Fix ebuildshell patch for portage-2.2.01.19247.
+
+*portage-2.2.01.19247 (14 Sep 2011)
+
+  14 Sep 2011; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.01.19247.ebuild:
+  Version bump, portage-2.2.0_alpha56+ including repoman fixes for repodirs
+
+*portage-2.2.01.19235 (13 Sep 2011)
+
+  13 Sep 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.19234.ebuild, +portage-2.2.01.19235.ebuild:
+  Replace faulty snapshot that had a broken enough repoman to die on committing
+  the Manifest
+
+*portage-2.2.01.19234 (13 Sep 2011)
+
+  13 Sep 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.19062.ebuild, +portage-2.2.01.19234.ebuild:
+  Version bump, matches portage-2.2.0_alpha55+, ebuildshell patch
+  disabled due to failure to apply
+
+*portage-2.2.01.19120 (30 Aug 2011)
+
+  30 Aug 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.18890.ebuild, -portage-2.2.01.18980.ebuild,
+  +portage-2.2.01.19120.ebuild:
+  New snapshot with patches for bugs #378625, #381125 and another
+  unicode_decode bug reported on -alt ML
+
+*portage-2.2.01.19074 (25 Aug 2011)
+
+  25 Aug 2011; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.01.19074.ebuild:
+  Version bump, fix for bug #379469
+
+*portage-2.2.01.19062 (20 Aug 2011)
+
+  20 Aug 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.19011.ebuild, +portage-2.2.01.19062.ebuild:
+  Version bump, matches portage-2.2.0_alpha51+, fixes bug #378515
+
+*portage-2.2.01.19011 (26 Jul 2011)
+
+  26 Jul 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.18826.ebuild, +portage-2.2.01.19011.ebuild:
+  Version bump, matches portage-2.2.0_alpha47+
+
+*portage-2.2.01.18980 (17 Jul 2011)
+
+  17 Jul 2011; Fabian Groffen <grobian@gentoo.org>
+  -files/portage-2.2.00.13849-ebuildshell.patch,
+  -files/portage-2.2.00.15842-configshell.patch,
+  -files/portage-2.2.00.15842-shebangcheck.patch, -portage-2.2.01.18761.ebuild,
+  +portage-2.2.01.18980.ebuild, +files/portage-2.2.01.18980-ebuildshell.patch:
+  Version bump, matches portage-2.2.0_alpha45+, cleanup
+
+*portage-2.2.01.18890 (01 Jul 2011)
+
+  01 Jul 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.18706.ebuild, +portage-2.2.01.18890.ebuild:
+  Version bump, matches portage-2.2.0_alpha43
+
+  17 Jun 2011; Michael Haubenwallner <haubi@gentoo.org>
+  portage-2.2.01.18826.ebuild,
+  +files/portage-2.2.01.18826-aix-preservelibs.patch:
+  fix the preserve-libs feature for AIX once more
+
+*portage-2.2.01.18826 (14 Jun 2011)
+
+  14 Jun 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15842-r1.ebuild, -portage-2.2.01.15553.ebuild,
+  +portage-2.2.01.18826.ebuild:
+  Version bump, matches portage-2.2.0_alpha40
+
+*portage-2.2.01.18761 (07 Jun 2011)
+
+  07 Jun 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.18252.ebuild, +portage-2.2.01.18761.ebuild:
+  Version bump, matches portage-2.2.0_alpha38
+
+*portage-2.2.01.18706 (29 May 2011)
+
+  29 May 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.18703.ebuild, +portage-2.2.01.18706.ebuild:
+  Fix for find error with e.g. virtual packages, bug #368839, changed fowners
+  not to operate in Prefix for non-privileged users
+
+*portage-2.2.01.18703 (28 May 2011)
+
+  28 May 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.18213.ebuild, +portage-2.2.01.18703.ebuild:
+  Version bump, matches portage-2.2.0_alpha37
+
+*portage-2.2.01.18252 (17 Apr 2011)
+
+  17 Apr 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.18125.ebuild, +portage-2.2.01.18252.ebuild:
+  Version bump, matches portage-2.2.0_alpha30
+
+  10 Apr 2011; Fabian Groffen <grobian@gentoo.org>
+  portage-2.2.00.15842-r1.ebuild, portage-2.2.01.15553.ebuild,
+  portage-2.2.01.18125.ebuild, portage-2.2.01.18213.ebuild:
+  Remove PROVIDE=virtual/portage, bug #358847
+
+  01 Apr 2011; Michael Haubenwallner <haubi@gentoo.org>
+  portage-2.2.01.18213.ebuild, +files/portage-2.2.01.18213-ebuildshell.patch:
+  update ebuildshell patch (#155161)
+
+*portage-2.2.01.18213 (28 Mar 2011)
+
+  28 Mar 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.18091.ebuild, +portage-2.2.01.18213.ebuild:
+  Version bump, matches portage-2.2.0_alpha29
+
+*portage-2.2.01.18125 (17 Mar 2011)
+
+  17 Mar 2011; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.01.18125.ebuild:
+  Version bump
+
+*portage-2.2.01.18091 (13 Mar 2011)
+
+  13 Mar 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.17901.ebuild, +portage-2.2.01.18091.ebuild:
+  Version bump, matches portage-2.2.0_alpha26, includes loadavg patch for AIX
+  and HP-UX
+
+*portage-2.2.01.18036 (27 Feb 2011)
+
+  27 Feb 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.17865.ebuild, +portage-2.2.01.18036.ebuild:
+  Version bump, matches portage-2.2.0_alpha25
+
+*portage-2.2.01.17901 (10 Feb 2011)
+
+  10 Feb 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.17757.ebuild, +portage-2.2.01.17901.ebuild:
+  Version bump, matches portage-2.2.0_alpha23
+
+*portage-2.2.01.17865 (06 Feb 2011)
+
+  06 Feb 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.17693.ebuild, +portage-2.2.01.17865.ebuild:
+  Version bump, FreeMiNT fixes
+
+*portage-2.2.01.17757 (02 Feb 2011)
+
+  02 Feb 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.17721.ebuild, +portage-2.2.01.17757.ebuild:
+  Bump, hopefully with fixes for backtraces like bug #353395
+
+*portage-2.2.01.17721 (30 Jan 2011)
+
+  30 Jan 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.17680.ebuild, +portage-2.2.01.17721.ebuild:
+  Bump, updated 'no offset with helpers' check
+
+  27 Jan 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.17649.ebuild:
+  Drop old
+
+  26 Jan 2011; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.01.17693.ebuild:
+  Bump, repoman now has prefix.usedwithhelpers check added
+
+*portage-2.2.01.17693 (26 Jan 2011)
+
+  26 Jan 2011; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.01.17693.ebuild:
+  Bump, repoman now has prefix.usedwithhelpers check added
+
+*portage-2.2.01.17680 (22 Jan 2011)
+
+  22 Jan 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.17583.ebuild, +portage-2.2.01.17680.ebuild:
+  Version bump, matches portage-2.2.0_alpha19
+
+*portage-2.2.01.17649 (18 Jan 2011)
+
+  18 Jan 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.17555.ebuild, +portage-2.2.01.17649.ebuild:
+  Version bump, matches portage-2.2.0_alpha17
+
+*portage-2.2.01.17583 (07 Jan 2011)
+
+  07 Jan 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.17422.ebuild, +portage-2.2.01.17583.ebuild:
+  Version bump, matches portage-2.2.0_alpha14
+
+*portage-2.2.01.17555 (03 Jan 2011)
+
+  03 Jan 2011; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.17409.ebuild, +portage-2.2.01.17555.ebuild:
+  Version bump, matches portage-2.2.0_alpha12
+
+*portage-2.2.01.17422 (21 Dec 2010)
+
+  21 Dec 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.17304.ebuild, +portage-2.2.01.17422.ebuild:
+  Version bump, matches portage-2.2.0_alpha10
+
+*portage-2.2.01.17409 (20 Dec 2010)
+
+  20 Dec 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.17390.ebuild, +portage-2.2.01.17409.ebuild:
+  Version bump, matches portage-2.2_alpha9
+
+*portage-2.2.01.17390 (15 Dec 2010)
+
+  15 Dec 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.17380.ebuild, +portage-2.2.01.17390.ebuild:
+  Bump for fix for bug #348790, fixup fix for detection of python.
+
+*portage-2.2.01.17380 (13 Dec 2010)
+
+  13 Dec 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.17377.ebuild, +portage-2.2.01.17380.ebuild:
+  Fix detection of python, leading to bugs like #348369
+
+*portage-2.2.01.17377 (13 Dec 2010)
+
+  13 Dec 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.17133.ebuild, -portage-2.2.01.17168.ebuild,
+  +portage-2.2.01.17377.ebuild:
+  Version bump, matches portage-2.2_alpha8
+
+*portage-2.2.01.17304 (30 Nov 2010)
+
+  30 Nov 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.17294.ebuild, +portage-2.2.01.17304.ebuild:
+  Bump, fixes for bugs #344307 (numeric group ids), #345633 (unmerge out of
+  prefix) and permission denied errors during merging on directories before
+  the prefix
+
+*portage-2.2.01.17294 (29 Nov 2010)
+
+  29 Nov 2010; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.01.17294.ebuild:
+  Version bump, matches portage-2.2.0_alpha6
+
+*portage-2.2.01.17168 (07 Nov 2010)
+
+  07 Nov 2010; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.01.17168.ebuild:
+  Version bump, matches portage-2.2.0_alpha4
+
+  04 Nov 2010; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.01.17133.ebuild, -portage-2.2.01.17146.ebuild:
+  Undo latest version bump, it has a broken shebang check
+
+*portage-2.2.01.17146 (03 Nov 2010)
+
+  03 Nov 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.17086.ebuild, -portage-2.2.01.17133.ebuild,
+  +portage-2.2.01.17146.ebuild:
+  Version bump, matches portage-2.2.0_alpha3
+
+*portage-2.2.01.17133 (28 Oct 2010)
+
+  28 Oct 2010; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.01.17133.ebuild:
+  Version bump, this version matches portage-2.2.0_alpha2
+
+  26 Oct 2010; Fabian Groffen <grobian@gentoo.org>
+  portage-2.2.01.17086.ebuild:
+  Drop no longer existing bsd-chflags installation, bug #342711
+
+*portage-2.2.01.17086 (24 Oct 2010)
+
+  24 Oct 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.16711.ebuild, -portage-2.2.01.17063.ebuild,
+  +portage-2.2.01.17086.ebuild:
+  Version bump, improved install_name check for Darwin users, fixes many
+  bugs since 2.2.01.16711, hence, supersedes that version, matches
+  portage-2.2.0_alpha1
+
+*portage-2.2.01.17063 (23 Oct 2010)
+
+  23 Oct 2010; Fabian Groffen <grobian@gentoo.org>
+  portage-2.2.01.16711.ebuild, +portage-2.2.01.17063.ebuild:
+  Drop EAPI=2 from 2.2.01.16711, add testing version up-to-date with master
+
+  23 Oct 2010; Fabian Groffen <grobian@gentoo.org>
+  portage-2.2.01.16711.ebuild:
+  Sync ipc enabling/disabling code from portage-2.2.0_alpha1
+
+*portage-2.2.01.16711 (29 Sep 2010)
+
+  29 Sep 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.16706.ebuild, +portage-2.2.01.16711.ebuild:
+  Bump for preserved-libs on ELF-system fixes
+
+*portage-2.2.01.16706 (29 Sep 2010)
+
+  29 Sep 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.16626.ebuild, -portage-2.2.01.16692.ebuild,
+  +portage-2.2.01.16706.ebuild:
+  Drop broken versions wrt preserve-libs, add fixed one
+
+*portage-2.2.01.16692 (28 Sep 2010)
+
+  28 Sep 2010; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.01.16692.ebuild:
+  Bump, add macossandbox support by Michael Weiser
+
+*portage-2.2.01.16626 (25 Sep 2010)
+
+  25 Sep 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.16616.ebuild, +portage-2.2.01.16626.ebuild, metadata.xml:
+  Replace snapshot, disable ipc by default as it is causing too many
+  problems
+
+*portage-2.2.01.16616 (23 Sep 2010)
+
+  23 Sep 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.16610.ebuild, +portage-2.2.01.16616.ebuild:
+  Replace snapshot for bug #338441
+
+  22 Sep 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15838.ebuild, -portage-2.2.01.15417.ebuild:
+  Drop some versions now we know that at least 15553 was stable enough (off
+  git)
+
+*portage-2.2.01.16610 (22 Sep 2010)
+
+  22 Sep 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.16365.ebuild, +portage-2.2.01.16610.ebuild:
+  Drop masked version (bug #337945), new snapshot for a new try
+
+*portage-2.2.01.16365 (17 Sep 2010)
+
+  17 Sep 2010; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.01.16365.ebuild:
+  Bump, this release has patched up EROOT support from master
+
+  05 Sep 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.16270.ebuild:
+  Drop totally faulty version
+
+  05 Sep 2010; Fabian Groffen <grobian@gentoo.org>
+  portage-2.2.01.16270.ebuild:
+  dekeyword 2.2.01.16270 as it seems to have weird issues with merging
+  packages
+
+*portage-2.2.01.16270 (05 Sep 2010)
+
+  05 Sep 2010; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.01.16270.ebuild:
+  Bump, many main-stream EROOT support changes, includes fix for bug #334271
+
+*portage-2.2.01.15553 (09 Aug 2010)
+
+  09 Aug 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.15478.ebuild, +portage-2.2.01.15553.ebuild:
+  Replace last snapshot by one that is tested better
+
+*portage-2.2.01.15478 (07 Aug 2010)
+
+  07 Aug 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.01.15354-r1.ebuild, +portage-2.2.01.15478.ebuild:
+  Bump snapshot
+
+*portage-2.2.01.15417 (23 Jul 2010)
+
+  23 Jul 2010; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.01.15417.ebuild:
+  Version bump, includes darkside's redundant mirror patch
+
+*portage-2.2.01.15354-r1 (22 Jul 2010)
+
+  22 Jul 2010; Jeremy Olexa <darkside@gentoo.org>
+  +files/0001-emerge-webrsync-Redundant-Mirroring.patch,
+  +portage-2.2.01.15354-r1.ebuild:
+  Add emerge-webrsync patch to use a redundant mirror
+
+*portage-2.2.01.15354 (07 Jul 2010)
+
+  07 Jul 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15819.ebuild, -portage-2.2.01.15352.ebuild,
+  +portage-2.2.01.15354.ebuild:
+  Bump, shebang fixing now also considers scripts that are symlinked from
+  inside path but reside outside path
+
+*portage-2.2.01.15352 (02 Jul 2010)
+
+  02 Jul 2010; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.01.15352.ebuild:
+  New snapshot, first one off git/hg
+
+*portage-2.2.00.15842-r1 (24 Apr 2010)
+
+  24 Apr 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15842.ebuild, +portage-2.2.00.15842-r1.ebuild,
+  +files/portage-2.2.00.15842-shebangcheck.patch:
+  Add patch to fix shebang check being overaggressive, bug #313731
+
+  16 Apr 2010; Michael Haubenwallner <haubi@gentoo.org>
+  portage-2.2.00.15842.ebuild,
+  +files/portage-2.2.00.15842-configshell.patch:
+  add patch for bug#308835, need to use CONFIG_SHELL on AIX
+
+*portage-2.2.00.15842 (23 Mar 2010)
+
+  23 Mar 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15801.ebuild, +portage-2.2.00.15842.ebuild:
+  Bump, fix AIX hooks.  This is the last SVN-based version.
+
+*portage-2.2.00.15838 (21 Mar 2010)
+
+  21 Mar 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15754.ebuild, +portage-2.2.00.15838.ebuild:
+  Bump, shebang check got more strict by checking existence of already
+  prefixed shebangs as well now
+
+*portage-2.2.00.15819 (11 Mar 2010)
+
+  11 Mar 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15817.ebuild, +portage-2.2.00.15819.ebuild:
+  Replace snapshot, added fix for summary.log misplacement when
+  EPREFIX='', and fix for chpathtool to better detect textfiles.
+
+*portage-2.2.00.15817 (11 Mar 2010)
+
+  11 Mar 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15444.ebuild, +portage-2.2.00.15817.ebuild:
+  Bump, matches 2.2_rc67
+
+  11 Mar 2010; Markus Duft <mduft@gentoo.org> portage-2.2.00.15801.ebuild,
+  +files/portage-2.2.00.15801-prefix-chaining.patch:
+  updated prefix-chaining patch once more.
+
+*portage-2.2.00.15801 (09 Mar 2010)
+
+  09 Mar 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15431.ebuild, +portage-2.2.00.15801.ebuild:
+  Bump, matches 2.2_rc66+, includes fix for shebang check regarding files
+  with DOS line endings
+
+*portage-2.2.00.15754 (06 Mar 2010)
+
+  06 Mar 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15742.ebuild, -files/portage-2.2.00.15742-aix-imp.patch,
+  +portage-2.2.00.15754.ebuild:
+  Replace faulty snapshot with fixed one (unknown variable EPREFIX_LSTRIP),
+  matches 2.2_rc65
+
+*portage-2.2.00.15742 (03 Mar 2010)
+
+  03 Mar 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15335.ebuild, +portage-2.2.00.15742.ebuild:
+  Bump, matches 2.2_rc64+. This version has a changed chpathtool to overcome
+  problems with certain binary files.
+
+*portage-2.2.00.15444 (23 Feb 2010)
+
+  23 Feb 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15443.ebuild, +portage-2.2.00.15444.ebuild:
+  Fix shebang code even more, so it doesn't prevent most merges
+
+*portage-2.2.00.15443 (23 Feb 2010)
+
+  23 Feb 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15320.ebuild, +portage-2.2.00.15443.ebuild:
+  New snapshot, including fixes to the auto-shebang-fix-and-detect-problems
+  code.
+
+*portage-2.2.00.15431 (22 Feb 2010)
+
+  22 Feb 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15274.ebuild, +portage-2.2.00.15431.ebuild:
+  New version, this revision matches 2.2_rc63
+
+*portage-2.2.00.15335 (10 Feb 2010)
+
+  10 Feb 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15210.ebuild, +portage-2.2.00.15335.ebuild:
+  New snapshot
+
+*portage-2.2.00.15320 (04 Feb 2010)
+
+  04 Feb 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15200.ebuild, +portage-2.2.00.15320.ebuild:
+  New snapshot, fix version comparisons with -r0, bug #303145
+
+*portage-2.2.00.15274 (29 Jan 2010)
+
+  29 Jan 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15187.ebuild, +portage-2.2.00.15274.ebuild:
+  New snapshot, this version supports EAPI=3
+
+*portage-2.2.00.15210 (26 Jan 2010)
+
+  26 Jan 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15171.ebuild, +portage-2.2.00.15210.ebuild:
+  New snapshot, adds repoman Mercurial (hg) support
+
+*portage-2.2.00.15200 (14 Jan 2010)
+
+  14 Jan 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15134.ebuild, +portage-2.2.00.15200.ebuild:
+  Bump, small fix in repoman's bzr support
+
+*portage-2.2.00.15187 (10 Jan 2010)
+
+  10 Jan 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15184.ebuild, +portage-2.2.00.15187.ebuild:
+  New snapshot, repoman now has Bazaar (bzr) support
+
+*portage-2.2.00.15184 (09 Jan 2010)
+
+  09 Jan 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15178.ebuild, +portage-2.2.00.15184.ebuild:
+  Replace previous snapshot, fix spurious ValueError and NameErrors, added
+  back setting of EPREFIX in the internal environment.
+
+*portage-2.2.00.15178 (08 Jan 2010)
+
+  08 Jan 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15176.ebuild, +portage-2.2.00.15178.ebuild:
+  Replace previous snapshot. Include possible fix for installation problems
+  on AIX (bug #299163) and fix Portage behaviour for EPREFIX=''
+
+*portage-2.2.00.15176 (08 Jan 2010)
+
+  08 Jan 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15123.ebuild, +portage-2.2.00.15176.ebuild:
+  New snapshot, whitelists UNIXMODE for MiNT platforms. Perhaps the last
+  snapshot from the original SVN repository
+
+*portage-2.2.00.15171 (05 Jan 2010)
+
+  05 Jan 2010; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15027.ebuild, +portage-2.2.00.15171.ebuild:
+  New snapshot
+
+*portage-2.2.00.15134 (22 Dec 2009)
+
+  22 Dec 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.14964.ebuild, +portage-2.2.00.15134.ebuild:
+  Bump, brings back the binpkg functionality of Prefix Portage that got
+  broken somehow.
+
+*portage-2.2.00.15123 (20 Dec 2009)
+
+  20 Dec 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.15118.ebuild, +portage-2.2.00.15123.ebuild:
+  Replace latest snapshot, it doesn't properly set the full path during
+  merges.
+
+*portage-2.2.00.15118 (18 Dec 2009)
+
+  18 Dec 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.14896.ebuild, +portage-2.2.00.15118.ebuild:
+  Bump, resembles version 2.2_rc60
+
+*portage-2.2.00.15027 (10 Dec 2009)
+
+  10 Dec 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.14994.ebuild, +portage-2.2.00.15027.ebuild:
+  Replace faulty snapshot (SRC_URI fetch weirdness) with version which
+  resembles 2.2_rc58+
+
+*portage-2.2.00.14994 (09 Dec 2009)
+
+  09 Dec 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.14813.ebuild, +portage-2.2.00.14994.ebuild:
+  Version bump, one step closer to the same behaviour as trunk with
+  EPREFIX=''
+
+  07 Dec 2009; Fabian Groffen <grobian@gentoo.org>
+  -files/portage-2.2.00.14487-brokentty-more-platforms.patch,
+  -files/portage-2.2.00.14487-prefix-chaining.patch,
+  -files/portage-2.2.00.14555-prefix-chaining.patch:
+  Drop stale patches
+
+*portage-2.2.00.14964 (07 Dec 2009)
+
+  07 Dec 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.14555.ebuild, -portage-2.2.00.14771.ebuild,
+  +portage-2.2.00.14964.ebuild:
+  Bump, this version resembles 2.2_rc56
+
+*portage-2.2.00.14896 (26 Nov 2009)
+
+  26 Nov 2009; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.00.14896.ebuild:
+  New revision, this one is equal to portage-2.2_rc52 feature wise.
+
+*portage-2.2.00.14813 (13 Nov 2009)
+
+  13 Nov 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.14487.ebuild, +portage-2.2.00.14813.ebuild:
+  Bump, restore bash-3 compatability, no longer provide ld.so.conf file for
+  offset installs
+
+*portage-2.2.00.14771 (01 Nov 2009)
+
+  01 Nov 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.14748-r1.ebuild,
+  -files/portage-2.2.00.14748-fix-crash-on-new-cat-install.patch,
+  +portage-2.2.00.14771.ebuild:
+  Bump, including proper fix replacing the new category crash hack. This
+  version resembles portage-2.2_rc48.
+
+*portage-2.2.00.14748-r1 (31 Oct 2009)
+
+  31 Oct 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.14748.ebuild, +portage-2.2.00.14748-r1.ebuild,
+  +files/portage-2.2.00.14748-fix-crash-on-new-cat-install.patch:
+  Add fix for bug #291271, Portage crashing on installing new categories,
+  separate patch because I expect this not going to be the final patch, so
+  at least fix the problem for now
+
+*portage-2.2.00.14748 (30 Oct 2009)
+
+  30 Oct 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.14746.ebuild,
+  -files/portage-2.2.00.14746-aix-finetuning.patch,
+  +portage-2.2.00.14748.ebuild:
+  Replace 2.2.00.14746 with 2.2.00.14748 that includes the additional fixes
+  for AIX, and fixes accidential aix QA code being run on ELF platforms
+
+  30 Oct 2009; Michael Haubenwallner <haubi@gentoo.org>
+  -portage-2.2.00.14724.ebuild,
+  -files/portage-2.2.00.14724-aix-preservelibs.patch,
+  -files/portage-2.2.00.14724-aix-qa.patch:
+  dropped
+
+  30 Oct 2009; Michael Haubenwallner <haubi@gentoo.org>
+  portage-2.2.00.14724.ebuild,
+  -files/portage-2.2.00.14724-aix-finetuning.patch,
+  portage-2.2.00.14746.ebuild,
+  +files/portage-2.2.00.14746-aix-finetuning.patch:
+  added fine tuning/fixes for preserve-libs feature for AIX for 14746,
+  dropped from 14724
+
+*portage-2.2.00.14746 (30 Oct 2009)
+
+  30 Oct 2009; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.00.14746.ebuild:
+  Bump, include AIX preserve-libs patches
+
+*portage-2.2.00.14724 (24 Oct 2009)
+
+  24 Oct 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.14701.ebuild, +portage-2.2.00.14724.ebuild:
+  Bump, fix emerge hangs on Solaris and wrong path for CONFIG_MEMORY_FILE,
+  bug #290254
+
+*portage-2.2.00.14701 (21 Oct 2009)
+
+  21 Oct 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.14700.ebuild, +portage-2.2.00.14701.ebuild:
+  Replace last snapshot, fixed a bug in dohtml complaining about missing
+  dohtml.py
+
+*portage-2.2.00.14700 (20 Oct 2009)
+
+  20 Oct 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.14200.ebuild, +portage-2.2.00.14700.ebuild:
+  Bump, fixes hang on FreeBSD, fixes emaint double prefix error, bug #289835
+
+  15 Oct 2009; Fabian Groffen <grobian@gentoo.org>
+  portage-2.2.00.14555.ebuild:
+  We need python-2.6 for exception syntax
+
+*portage-2.2.00.14555 (10 Oct 2009)
+
+  10 Oct 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.14183.ebuild, +portage-2.2.00.14555.ebuild, metadata.xml:
+  Bump, openpty is now only tried on FreeBSD and Linux, possible fix for bug
+  #285720 (backslashes in groupname), fix for bug #288025 (unconditional
+  statvfs usage)
+
+*portage-2.2.00.14487 (04 Oct 2009)
+
+  04 Oct 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.14277.ebuild, +portage-2.2.00.14487.ebuild:
+  Bump, this version equals the code from 2.2_rc43 with Prefix patches.
+  Shebang check is now restricted to only abort when the offending file
+  is in $PATH.
+
+*portage-2.2.00.14277 (21 Sep 2009)
+
+  21 Sep 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.14160.ebuild, +portage-2.2.00.14277.ebuild:
+  Bump, add QA check for shebangs, bug #282539. You may see messages about
+  fixed shebangs from now on.
+
+*portage-2.2.00.14200 (14 Sep 2009)
+
+  14 Sep 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.13878.ebuild, +portage-2.2.00.14200.ebuild:
+  Simple bump
+
+*portage-2.2.00.14183 (04 Sep 2009)
+
+  04 Sep 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.14179.ebuild, +portage-2.2.00.14183.ebuild:
+  Bump for Interix users, fixing an unicode problem
+
+*portage-2.2.00.14179 (02 Sep 2009)
+
+  02 Sep 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.14178.ebuild, +portage-2.2.00.14179.ebuild:
+  Bump to fix bug #283541, dispatch-conf backtracing on config-archive
+
+*portage-2.2.00.14178 (01 Sep 2009)
+
+  01 Sep 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.13849.ebuild, +portage-2.2.00.14178.ebuild:
+  Bump, small unicode fixes
+
+  27 Aug 2009; Fabian Groffen <grobian@gentoo.org>
+  portage-2.2.00.14160.ebuild:
+  Add back old style way to retrieve rootuser, for those who don't have an
+  up-to-date Portage yet
+
+*portage-2.2.00.14160 (26 Aug 2009)
+
+  26 Aug 2009; Fabian Groffen <grobian@gentoo.org>
+  -files/portage-2.2.00.13683-prefix-chaining.patch,
+  -portage-2.2.00.14153-r1.ebuild,
+  -files/portage-2.2.00.14153-imports.patch, +portage-2.2.00.14160.ebuild:
+  Version bump with appropriate fixes for dispatch-conf (replaces imports
+  patch)
+
+*portage-2.2.00.14153-r1 (26 Aug 2009)
+
+  26 Aug 2009; Markus Duft <mduft@gentoo.org> -portage-2.2.00.14153.ebuild,
+  +portage-2.2.00.14153-r1.ebuild,
+  +files/portage-2.2.00.14153-imports.patch:
+  added patch to fix dispatch-conf and quickpkg - imports where wrong
+
+*portage-2.2.00.14153 (24 Aug 2009)
+
+  24 Aug 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.13830.ebuild, +portage-2.2.00.14153.ebuild:
+  Quantum leap jump, this version resembles version 2.2_rc40+
+
+  19 Aug 2009; Fabian Groffen <grobian@gentoo.org>
+  portage-2.2.00.13878.ebuild:
+  update eselect-news dependency to be able to deal with eselect-1.2
+
+*portage-2.2.00.13878 (03 Aug 2009)
+
+  03 Aug 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.13876.ebuild, +portage-2.2.00.13878.ebuild:
+  Replace broken version by new one, fixing bug #280189 (setsid script not
+  Prefix-aware), and the backtrace in comment 21 of bug #279550
+
+*portage-2.2.00.13876 (02 Aug 2009)
+
+  02 Aug 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.13683.ebuild, +portage-2.2.00.13876.ebuild:
+  Version bump, fixes bug #279550
+
+*portage-2.2.00.13849 (22 Jul 2009)
+
+  22 Jul 2009; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.00.13849.ebuild:
+  Version bump, fix bug #278373, add preserve-libs support for Interix and
+  Windows
+
+  22 Jul 2009; Fabian Groffen <grobian@gentoo.org>
+  -files/portage-2.2.00.13133-prefix-chaining.patch,
+  -files/portage-2.2.00.13243-prefix-chaining-path-noportage.patch,
+  -files/portage-2.2.00.13243-prefix-chaining-sync.patch,
+  -files/portage-2.2.00.13243-prefix-chaining-utils.patch,
+  -files/portage-2.2.00.13286-dest-fix.patch,
+  -files/portage-2.2.00.13369-interix-estale.patch,
+  -files/portage-2.2.00.13369-nodeps-order.patch,
+  -files/portage-2.2.00.13625-prefix-chaining.patch:
+  Drop stale patches
+
+  22 Jul 2009; Markus Duft <mduft@gentoo.org> portage-2.2.00.13830.ebuild,
+  +files/portage-2.2.00.13830-prefix-chaining.patch,
+  +files/portage-2.2.00.13830-preserve-pecoff.patch:
+  updated prefix-chaining patch to match new split-up sources. added
+  preserve-libs support for winnt and interix - should go to svn soon.
+
+*portage-2.2.00.13830 (16 Jul 2009)
+
+  16 Jul 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.13827.ebuild, +portage-2.2.00.13830.ebuild:
+  Bump for fix for bug #278014
+
+  16 Jul 2009; Jeremy Olexa <darkside@gentoo.org>
+  -portage-2.2.00.13797.ebuild:
+  remove old, masked version
+
+*portage-2.2.00.13827 (14 Jul 2009)
+
+  14 Jul 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.13825.ebuild, +portage-2.2.00.13827.ebuild:
+  Let's try it another time. Fixed bugs #277011 and #277815.
+
+*portage-2.2.00.13825 (13 Jul 2009)
+
+  13 Jul 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.13629.ebuild, +portage-2.2.00.13825.ebuild:
+  New snapshot, without bugs this time?
+
+*portage-2.2.00.13797 (07 Jul 2009)
+
+  07 Jul 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.13734.ebuild, +portage-2.2.00.13797.ebuild:
+  Replace last snapshot with a new one that has reverse order with --nodeps
+  fixed.
+
+*portage-2.2.00.13734 (01 Jul 2009)
+
+  01 Jul 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.13625.ebuild, +portage-2.2.00.13734.ebuild:
+  New snapshot, using a 'modular' emerge/__init__.py
+
+  30 Jun 2009; Jeremy Olexa <darkside@gentoo.org>
+  portage-2.2.00.13683.ebuild:
+  sys-apps/sandbox has caused multiple headaches in the past weeks, for now
+  we no longer hard depend on it. If it is emerged, you can still use it,
+  however
+
+*portage-2.2.00.13683 (24 Jun 2009)
+
+  24 Jun 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.13621.ebuild, +portage-2.2.00.13683.ebuild:
+  Version bump for haubi's postsync fix
+
+*portage-2.2.00.13629 (12 Jun 2009)
+
+  12 Jun 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.13595.ebuild, +portage-2.2.00.13629.ebuild:
+  Version bump
+
+*portage-2.2.00.13625 (19 May 2009)
+
+  19 May 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.13405.ebuild, +portage-2.2.00.13625.ebuild:
+  New snapshot, probable fix for bug #267887
+
+*portage-2.2.00.13621 (10 May 2009)
+
+  10 May 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.13398.ebuild, +portage-2.2.00.13621.ebuild:
+  New snapshot, should no longer install Makefile* files
+
+*portage-2.2.00.13595 (02 May 2009)
+
+  02 May 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.13369.ebuild, +portage-2.2.00.13595.ebuild:
+  New snapshot, no longer kills airplanes, no longer barfs about mtree
+  missing on FreeBSD, matches 2.2_rc32+
+
+*portage-2.2.00.13405 (28 Apr 2009)
+
+  28 Apr 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.13346.ebuild, +portage-2.2.00.13405.ebuild:
+  New snapshot, including fix for bug #267556 and problem with sandbox reading
+  ~root/.history
+
+*portage-2.2.00.13398 (26 Apr 2009)
+
+  26 Apr 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.13286-r1.ebuild, +portage-2.2.00.13398.ebuild:
+  New snapshot, matches Portage 2.2_rc31+, revamped buildsystem which should
+  speed up installing Portage.  From this point EAPI="prefix" really is
+  over.
+
+*portage-2.2.00.13369 (19 Apr 2009)
+
+  19 Apr 2009; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.00.13369.ebuild:
+  New snapshot, fixing repoman issues, and converting the vdb more properly
+
+*portage-2.2.00.13346 (15 Apr 2009)
+
+  15 Apr 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.13200.ebuild, -portage-2.2.00.13280.ebuild,
+  +portage-2.2.00.13346.ebuild:
+  Version bump to 2.2_rc30+, this version no longer accepts
+  EAPI="prefix", note: you cannot downgrade from this version
+
+*portage-2.2.00.13286-r1 (14 Apr 2009)
+
+  14 Apr 2009; Jeremy Olexa <darkside@gentoo.org>
+  +files/portage-2.2.00.13286-dest-fix.patch, -portage-2.2.00.13286.ebuild,
+  +portage-2.2.00.13286-r1.ebuild:
+  Add a patch from svn to fix issues with _many_ packages - will be in next
+  portage release
+
+*portage-2.2.00.13286 (10 Apr 2009)
+
+  10 Apr 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.13133.ebuild, +portage-2.2.00.13286.ebuild:
+  New snapshot. This version uses BASH and MV from the locations configure
+  found, which should help to reduce the prefix-chaining patch a bit.
+
+*portage-2.2.00.13280 (02 Apr 2009)
+
+  02 Apr 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.13243.ebuild, +portage-2.2.00.13280.ebuild:
+  Bump for bug #264245, ecompress was broken
+
+*portage-2.2.00.13243 (29 Mar 2009)
+
+  29 Mar 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.12807.ebuild, +portage-2.2.00.13243.ebuild:
+  Version bump, this is a hybrid Portage that accepts both EAPI with and
+  without 'prefix' meant to be used only during the transition period of our
+  tree while EAPI=prefix is being removed.
+
+*portage-2.2.00.13200 (26 Mar 2009)
+
+  26 Mar 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.12790.ebuild, +portage-2.2.00.13200.ebuild:
+  New snapshot, some glep55 preparations included
+
+  26 Mar 2009; Markus Duft <mduft@gentoo.org>
+  -files/portage-2.2.00.12425-cross-prefix.patch,
+  -files/portage-2.2.00.12540-cross-prefix.patch,
+  -files/portage-2.2.00.12574-cross-prefix.patch,
+  +files/portage-2.2.00.13133-prefix-chaining.patch,
+  portage-2.2.00.13133.ebuild:
+  removed cross-prefix stuff - not working since a few revisions now. added
+  prefix-chain stuff as a successor to cross-prefix
+
+*portage-2.2.00.13133 (18 Mar 2009)
+
+  18 Mar 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.12699.ebuild, +portage-2.2.00.13133.ebuild:
+  New snapshot, portage no longer includes eprefixify, so you need to 'inherit
+  prefix' to use it
+
+*portage-2.2.00.12807 (12 Mar 2009)
+
+  12 Mar 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.12671.ebuild, +portage-2.2.00.12807.ebuild:
+  Bump
+
+*portage-2.2.00.12790 (09 Mar 2009)
+
+  09 Mar 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.12652.ebuild, +portage-2.2.00.12790.ebuild:
+  New snapshot
+
+*portage-2.2.00.12699 (05 Mar 2009)
+
+  05 Mar 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.12565.ebuild, +portage-2.2.00.12699.ebuild:
+  New snapshot
+
+*portage-2.2.00.12671 (21 Feb 2009)
+
+  21 Feb 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.12528.ebuild, +portage-2.2.00.12671.ebuild:
+  New snapshot, includes code that makes resolving much faster for packages
+  without a category.
+
+*portage-2.2.00.12652 (19 Feb 2009)
+
+  19 Feb 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.12608.ebuild, +portage-2.2.00.12652.ebuild:
+  New snapshot
+
+*portage-2.2.00.12608 (18 Feb 2009)
+
+  18 Feb 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.12425.ebuild, +portage-2.2.00.12608.ebuild:
+  New snapshot
+
+  03 Feb 2009; Markus Duft <mduft@gentoo.org>
+  -files/portage-2.2.00.12387-cross-prefix.patch,
+  +files/portage-2.2.00.12574-cross-prefix.patch,
+  portage-2.2.00.12565.ebuild:
+  updated cross-prefix patchery
+
+*portage-2.2.00.12565 (31 Jan 2009)
+
+  31 Jan 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.12396.ebuild, +portage-2.2.00.12565.ebuild:
+  New snapshot, 2.2_rc23+, including emake SHELL=bash change for Interix
+
+  20 Jan 2009; User generated by SUA Setup Script <mduft@gentoo.org>
+  -files/portage-2.2.00.12182-cross-prefix.patch,
+  +files/portage-2.2.00.12540-cross-prefix.patch,
+  portage-2.2.00.12528.ebuild:
+  updated cross-prefix patchery. added bits to support environments in child
+  prefixes properly.
+
+*portage-2.2.00.12528 (18 Jan 2009)
+
+  18 Jan 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.12527.ebuild, +portage-2.2.00.12528.ebuild:
+  Small bump for Darwin users to catch more reference problems
+
+*portage-2.2.00.12527 (17 Jan 2009)
+
+  17 Jan 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.12347.ebuild, +portage-2.2.00.12527.ebuild:
+  Bump, matches 2.2_rc22+
+
+*portage-2.2.00.12425 (11 Jan 2009)
+
+  11 Jan 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.12288.ebuild, +portage-2.2.00.12425.ebuild:
+  New snapshot
+
+*portage-2.2.00.12396 (08 Jan 2009)
+
+  08 Jan 2009; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.12182.ebuild, +portage-2.2.00.12396.ebuild:
+  New snapshot, 2.2_rc20+, depends on eselect-news
+
+  07 Jan 2009; Markus Duft <mduft@gentoo.org>
+  -files/portage-2.2.00.12040-cross-prefix.patch,
+  +files/portage-2.2.00.12387-cross-prefix.patch,
+  portage-2.2.00.12347.ebuild:
+  updated cross-prefix patchery
+
+*portage-2.2.00.12347 (25 Dec 2008)
+
+  25 Dec 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.12172.ebuild, +portage-2.2.00.12347.ebuild:
+  New shapshot, matches 2.2_rc19+, with more debugging aids
+
+*portage-2.2.00.12288 (23 Dec 2008)
+
+  23 Dec 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.12276.ebuild, +portage-2.2.00.12288.ebuild:
+  New snapshot, .dll made executable, some poll() related code to avoid hangs
+
+*portage-2.2.00.12276 (22 Dec 2008)
+
+  22 Dec 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.12040.ebuild, +portage-2.2.00.12276.ebuild:
+  Bump, matches 2.2_rc18+
+
+  18 Dec 2008; Fabian Groffen <grobian@gentoo.org>
+  portage-2.2.00.12182.ebuild:
+  Add back master mirror to avoid screwups due to unavailable distfiles, no
+  need for explicit mirror:// as portage should try that by default
+
+*portage-2.2.00.12182 (08 Dec 2008)
+
+  08 Dec 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11947.ebuild, +portage-2.2.00.12182.ebuild:
+  New version with fix for not seeing profile's deprecated files
+
+*portage-2.2.00.12172 (06 Dec 2008)
+
+  06 Dec 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.12165.ebuild, +portage-2.2.00.12172.ebuild:
+  Fix issue with stripping unwritable files, fix backtrace on unmerge
+
+*portage-2.2.00.12165 (06 Dec 2008)
+
+  06 Dec 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11799.ebuild, +portage-2.2.00.12165.ebuild:
+  Version bump, matches 2.2_rc17+
+
+*portage-2.2.00.12040 (22 Nov 2008)
+
+  22 Nov 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11736.ebuild, +portage-2.2.00.12040.ebuild:
+  New snapshot, matching 2.2_rc15+
+
+*portage-2.2.00.11947 (15 Nov 2008)
+
+  15 Nov 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11700.ebuild, +portage-2.2.00.11947.ebuild:
+  New revision, 2.2_rc14+, with git support in repoman
+
+  03 Nov 2008; Markus Duft <mduft@gentoo.org>
+  -files/portage-2.2.00.11514-cross-prefix.patch,
+  +files/portage-2.2.00.11799-cross-prefix.patch,
+  portage-2.2.00.11799.ebuild:
+  updated portage cross-prefix-ability patchery for windows.
+
+*portage-2.2.00.11799 (02 Nov 2008)
+
+  02 Nov 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11694.ebuild, +portage-2.2.00.11799.ebuild:
+  New snapshot, roughly comparable to 2.2_rc13
+
+*portage-2.2.00.11736 (28 Oct 2008)
+
+  28 Oct 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11675.ebuild, +portage-2.2.00.11736.ebuild:
+  New snapshot, nothing groovy that I know of
+
+*portage-2.2.00.11700 (18 Oct 2008)
+
+  18 Oct 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11635.ebuild, +portage-2.2.00.11700.ebuild:
+  New snapshot with a repoman that shouldn't be happy with zero-length
+  distfiles any more
+
+*portage-2.2.00.11694 (15 Oct 2008)
+
+  15 Oct 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11620.ebuild, +portage-2.2.00.11694.ebuild:
+  Bump, hopefully fix repoman not to commit twice most of the time, bug #229033
+
+*portage-2.2.00.11675 (11 Oct 2008)
+
+  11 Oct 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11580.ebuild, +portage-2.2.00.11675.ebuild:
+  New snapshot, some fixes
+
+*portage-2.2.00.11635 (05 Oct 2008)
+
+  05 Oct 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11567.ebuild, +portage-2.2.00.11635.ebuild:
+  New snapshot, better fix for Solaris rmdir problem
+
+*portage-2.2.00.11620 (04 Oct 2008)
+
+  04 Oct 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11616.ebuild, +portage-2.2.00.11620.ebuild:
+  Replace snapshot with a new one which turns changelog.ebuildadded into a
+  warning instead of error.
+
+*portage-2.2.00.11616 (03 Oct 2008)
+
+  03 Oct 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11505.ebuild, +portage-2.2.00.11616.ebuild:
+  New snapshot, now picks EAPIPREFIX from the environment if set.
+
+*portage-2.2.00.11580 (28 Sep 2008)
+
+  28 Sep 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11579.ebuild, +portage-2.2.00.11580.ebuild:
+  New bump to fix AttributeError on Darwin
+
+*portage-2.2.00.11579 (28 Sep 2008)
+
+  28 Sep 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11572.ebuild, +portage-2.2.00.11579.ebuild:
+  Replace 2.2.00.11572 with 2.2.00.11579 which has a rmdir fix for Solaris users
+
+*portage-2.2.00.11572 (27 Sep 2008)
+
+  27 Sep 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11477.ebuild, -portage-2.2.00.11484.ebuild,
+  +portage-2.2.00.11572.ebuild:
+  New snapshot, doing a quantum jump into the current: EAPI=2
+
+*portage-2.2.00.11567 (27 Sep 2008)
+
+  27 Sep 2008; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.00.11567.ebuild:
+  New snapshot, making use of scanmacho on Darwin
+
+  17 Sep 2008; Markus Duft <mduft@gentoo.org>
+  +files/portage-2.2.00.11514-cross-prefix.patch,
+  portage-2.2.00.11505.ebuild, portage-2.2.00.11505.ebuild:
+  added cross-prefix patch for current prefix-portage, conditional with
+  (temporary) use flag
+
+*portage-2.2.00.11505 (11 Sep 2008)
+
+  11 Sep 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11421.ebuild, +portage-2.2.00.11505.ebuild:
+  New snapshot, mainly to fix bug #237323
+
+*portage-2.2.00.11484 (01 Sep 2008)
+
+  01 Sep 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11409.ebuild, +portage-2.2.00.11484.ebuild:
+  New snapshot, just to make sure I have the latest fixes
+
+*portage-2.2.00.11477 (27 Aug 2008)
+
+  27 Aug 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11472.ebuild, +portage-2.2.00.11477.ebuild:
+  Another bump to try and fix bug #235858
+
+*portage-2.2.00.11472 (24 Aug 2008)
+
+  24 Aug 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11469.ebuild, +portage-2.2.00.11472.ebuild:
+  Hopefully last replacement tonight.  Fix an IndexError due to a stray line.
+
+*portage-2.2.00.11469 (24 Aug 2008)
+
+  24 Aug 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11465.ebuild, +portage-2.2.00.11469.ebuild:
+  Sort of emergency update, to fix a fatal problem with preserved-libs that do
+  not exist
+
+*portage-2.2.00.11465 (24 Aug 2008)
+
+  24 Aug 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11445.ebuild, +portage-2.2.00.11465.ebuild:
+  Replace latest snapshot with one that avoids more keyerrors in the odcctools
+  case :/
+
+*portage-2.2.00.11445 (20 Aug 2008)
+
+  20 Aug 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.10815.ebuild, +portage-2.2.00.11445.ebuild:
+  New snapshot, should fix an issue when updating odcctools
+
+*portage-2.2.00.11421 (16 Aug 2008)
+
+  16 Aug 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11391.ebuild, +portage-2.2.00.11421.ebuild:
+  New snapshot, with repoman that only warns about IUSE.invalid
+
+*portage-2.2.00.11409 (14 Aug 2008)
+
+  14 Aug 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11322.ebuild, +portage-2.2.00.11409.ebuild:
+  New snapshot, this matches 2.2_rc8+
+
+*portage-2.2.00.11391 (10 Aug 2008)
+
+  10 Aug 2008; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.00.11391.ebuild:
+  New snapshot, this one should do it, EAPI=+-2
+
+  06 Aug 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11334.ebuild:
+  Remove 2.2.00.11334, it seems to make ncurses fail to compile, and I don't
+  like this repoman IUSE stuff either
+
+*portage-2.2.00.11334 (05 Aug 2008)
+
+  05 Aug 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11287.ebuild, +portage-2.2.00.11334.ebuild:
+  New snapshot which installs symlink to emerge-webrsync
+
+*portage-2.2.00.11322 (03 Aug 2008)
+
+  03 Aug 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11248.ebuild, +portage-2.2.00.11322.ebuild:
+  New snapshot, nothing special I know of
+
+  01 Aug 2008; Fabian Groffen <grobian@gentoo.org>
+  portage-2.2.00.11287.ebuild:
+  Fix stupid inverted logic
+
+*portage-2.2.00.11287 (30 Jul 2008)
+
+  30 Jul 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11225.ebuild, +portage-2.2.00.11287.ebuild:
+  New snapshot, with support for EAPI 2_pre1
+
+*portage-2.2.00.11248 (28 Jul 2008)
+
+  28 Jul 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11243.ebuild, +portage-2.2.00.11248.ebuild:
+  Replace snapshot with one that has a working depclean on the Mac, and
+  hopefully preserves http proxy settings on all platforms.
+
+*portage-2.2.00.11243 (28 Jul 2008)
+
+  28 Jul 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11187.ebuild, +portage-2.2.00.11243.ebuild:
+  New snapshot, support for EAPI 2_pre0
+
+*portage-2.2.00.11225 (27 Jul 2008)
+
+  27 Jul 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11215.ebuild, +portage-2.2.00.11225.ebuild:
+  Replace last snapshot with one that doesn't throw so many QA errors.
+
+*portage-2.2.00.11215 (27 Jul 2008)
+
+  27 Jul 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11125.ebuild, +portage-2.2.00.11215.ebuild:
+  New snapshot, with repoman that commits the Manifest file in one go if
+  possible.
+
+*portage-2.2.00.11187 (25 Jul 2008)
+
+  25 Jul 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11110.ebuild, +portage-2.2.00.11187.ebuild:
+  New snapshot, misc fixes, stay ahead of gentoo-x86, don't fall behind ;)
+
+*portage-2.2.00.11125 (18 Jul 2008)
+
+  18 Jul 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11060.ebuild, +portage-2.2.00.11125.ebuild:
+  New snapshot, fix for 'ebuild ... install'
+
+*portage-2.2.00.11110 (17 Jul 2008)
+
+  17 Jul 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11087.ebuild, +portage-2.2.00.11110.ebuild:
+  Fix for etc-update, and misc parallel merging (cosmetic) improvements
+
+*portage-2.2.00.11087 (16 Jul 2008)
+
+  16 Jul 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11048.ebuild, +portage-2.2.00.11087.ebuild:
+  New snapshot, misc fixes, huge change internally with handling the EPREFIX,
+  should now better recognise settings.
+
+*portage-2.2.00.11060 (15 Jul 2008)
+
+  15 Jul 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.10788.ebuild, +portage-2.2.00.11060.ebuild:
+  New snapshot, bugfixes
+
+*portage-2.2.00.11048 (14 Jul 2008)
+
+  14 Jul 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.11041.ebuild, +portage-2.2.00.11048.ebuild:
+  Replace previous snapshot with a new one, hopefully with less backtraces
+
+*portage-2.2.00.11041 (13 Jul 2008)
+
+  13 Jul 2008; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.00.11041.ebuild:
+  After a number of seriously broken snapshots, finally one that works at
+  least on Darwin (and Linux hopefully). To repeat, this snapshot should
+  finally be useful for Interix. This snapshots contains parallel merge
+  feature, use --jobs to use it!
+
+*portage-2.2.00.10884 (01 Jul 2008)
+
+  01 Jul 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.10770.ebuild, +portage-2.2.00.10884.ebuild:
+  New snapshot, this should actually be the first snapshot that will install
+  on my Interix installation without horribly breaking down.
+
+*portage-2.2.00.10815 (27 Jun 2008)
+
+  27 Jun 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.10760.ebuild, +portage-2.2.00.10815.ebuild:
+  New snapshot, try out the cool new --keep-going option
+
+*portage-2.2.00.10788 (25 Jun 2008)
+
+  25 Jun 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.10738.ebuild, +portage-2.2.00.10788.ebuild:
+  New snapshot, with fix for backtrace on coloured output
+
+*portage-2.2.00.10770 (24 Jun 2008)
+
+  24 Jun 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.10625.ebuild, +portage-2.2.00.10770.ebuild:
+  Add snapshot of latest sources to reproduce some backtraces with
+
+  24 Jun 2008; Fabian Groffen <grobian@gentoo.org>
+  portage-2.2.00.10760.ebuild:
+  Drop SVN repo check, what we force doesn't work (see many bugs on svn:
+  connection closed unexpectedly) and we need http for commits anyway at the
+  moment. Besides, most users should be on an rsync tree now, which is much
+  better for many reasons.
+
+*portage-2.2.00.10760 (22 Jun 2008)
+
+  22 Jun 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.10585.ebuild, +portage-2.2.00.10760.ebuild:
+  New snapshot that gets rid of the repo_name warning
+
+*portage-2.2.00.10738 (20 Jun 2008)
+
+  20 Jun 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.10729.ebuild, +portage-2.2.00.10738.ebuild:
+  Replace previous snapshot, this new snapshot has better 'working'
+  preserve-libs support for Darwin
+
+*portage-2.2.00.10729 (19 Jun 2008)
+
+  19 Jun 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.10708.ebuild, +portage-2.2.00.10729.ebuild:
+  Fix brokenness for Darwin users
+
+*portage-2.2.00.10708 (17 Jun 2008)
+
+  17 Jun 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.10347.ebuild, +portage-2.2.00.10708.ebuild:
+  New snapshot, preserve-libs fixes
+
+  10 Jun 2008; Fabian Groffen <grobian@gentoo.org>
+  portage-2.2.00.10347.ebuild, portage-2.2.00.10585.ebuild,
+  portage-2.2.00.10625.ebuild:
+  Restrict 'test', it can't work in Prefix currently, since it needs the
+  sources to be installed first.  bug #223193
+
+*portage-2.2.00.10625 (09 Jun 2008)
+
+  09 Jun 2008; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.00.10625.ebuild:
+  New snapshot, hopefully fixes preserve-libs issue
+
+*portage-2.2.00.10585 (05 Jun 2008)
+
+  05 Jun 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.10577.ebuild, +portage-2.2.00.10585.ebuild:
+  Replace previous snapshot with new one which got a fix for bug #224713
+
+*portage-2.2.00.10577 (04 Jun 2008)
+
+  04 Jun 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.10385.ebuild, -portage-2.2.00.10418.ebuild,
+  +portage-2.2.00.10577.ebuild:
+  New snapshot, remove masked versions
+
+*portage-2.2.00.10418 (25 May 2008)
+
+  25 May 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.10249.ebuild, +portage-2.2.00.10418.ebuild:
+  New snapshot, including trunk USE-deps feature
+
+*portage-2.2.00.10385 (21 May 2008)
+
+  21 May 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.10181.ebuild, +portage-2.2.00.10385.ebuild:
+  New snapshot, new chances for b0rkage ;)
+
+*portage-2.2.00.10347 (16 May 2008)
+
+  16 May 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9894.ebuild, +portage-2.2.00.10347.ebuild:
+  New snapshot, readded rsync dependency, since we're about to switch to rsync
+  for normal installations
+
+*portage-2.2.00.10249 (08 May 2008)
+
+  08 May 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9962.ebuild, +portage-2.2.00.10249.ebuild:
+  New snapshot should solve downgrade problems (bug #220689)
+
+*portage-2.2.00.10181 (04 May 2008)
+
+  04 May 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9831.ebuild, +portage-2.2.00.10181.ebuild:
+  New version that includes fixes for Interix' usernames with spaces in them.
+  Preserve-libs may be wonky (broken).
+
+*portage-2.2.00.9962 (24 Apr 2008)
+
+  24 Apr 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9583.ebuild, +portage-2.2.00.9962.ebuild:
+  New snapshot, should contain zmedico's new blocker resultion voodoo, we'll see!
+
+  19 Apr 2008; Fabian Groffen <grobian@gentoo.org>
+  portage-2.2.00.9894.ebuild:
+  Don't do repo check if we don't have svn availble, saves us from an ugly
+  error message during bootstrap.
+
+*portage-2.2.00.9894 (14 Apr 2008)
+
+  14 Apr 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9869.ebuild, +portage-2.2.00.9894.ebuild:
+  Replace previous snapshot which contains a backtrace on unmerging packages
+  which have preserved-libs
+
+*portage-2.2.00.9869 (13 Apr 2008)
+
+  13 Apr 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9500.ebuild, +portage-2.2.00.9869.ebuild:
+  New snapshot, with a wannabe workaround for bug #217481
+
+*portage-2.2.00.9831 (11 Apr 2008)
+
+  11 Apr 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9812.ebuild, +portage-2.2.00.9831.ebuild:
+  New snapshot, fix for backtrace on preserve-libs; getlibpaths
+
+*portage-2.2.00.9812 (10 Apr 2008)
+
+  10 Apr 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9494.ebuild, +portage-2.2.00.9812.ebuild:
+  New snapshot, includes important fix in chpathtool
+
+*portage-2.2.00.9583 (28 Mar 2008)
+
+  28 Mar 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9468.ebuild, +portage-2.2.00.9583.ebuild:
+  New snapshot, important fixes for NEEDED recording such that preserve-libs
+  doesn't get all upset
+
+*portage-2.2.00.9500 (24 Mar 2008)
+
+  24 Mar 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9450.ebuild, +portage-2.2.00.9500.ebuild:
+  New snapshot, with support for preserve-libs functionality for Darwin users,
+  little fixes for others in there
+
+*portage-2.2.00.9494 (20 Mar 2008)
+
+  20 Mar 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9405.ebuild, +portage-2.2.00.9494.ebuild:
+  New snapshot and ebuild to fix bug #212818, regarding retaining the
+  root-user when updating per ebuild
+
+*portage-2.2.00.9468 (15 Mar 2008)
+
+  15 Mar 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9380.ebuild, +portage-2.2.00.9468.ebuild:
+  New snapshot, defaulting to parallel fetch
+
+*portage-2.2.00.9450 (07 Mar 2008)
+
+  07 Mar 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9271.ebuild, +portage-2.2.00.9450.ebuild:
+  New snapshot, hopefully finally releasing us from many duplicate post emerge
+  messages
+
+*portage-2.2.00.9405 (01 Mar 2008)
+
+  01 Mar 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9233.ebuild, +portage-2.2.00.9405.ebuild:
+  New snapshot, with window titles support for interix.
+
+*portage-2.2.00.9380 (24 Feb 2008)
+
+  24 Feb 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9376.ebuild, +portage-2.2.00.9380.ebuild:
+  New snapshot which fixes the masked packages output of the previous two
+  masked releases.
+
+*portage-2.2.00.9376 (24 Feb 2008)
+
+  24 Feb 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9300.ebuild, +portage-2.2.00.9376.ebuild:
+  New snapshot, replacing the older masked one, this one still has the same
+  problem, which I think is bug #209538
+
+*portage-2.2.00.9300 (08 Feb 2008)
+
+  08 Feb 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9214.ebuild, +portage-2.2.00.9300.ebuild:
+  New snapshot, nothing spectacular
+
+*portage-2.2.00.9271 (01 Feb 2008)
+
+  01 Feb 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9208.ebuild, +portage-2.2.00.9271.ebuild:
+  New snapshot, experimental NEEDED recording for Darwin, repoman no longer
+  knows manifest1 mode
+
+*portage-2.2.00.9233 (30 Jan 2008)
+
+  30 Jan 2008; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.00.9233.ebuild:
+  New snapshot with important fix for preserve libs
+
+*portage-2.2.00.9214 (20 Jan 2008)
+
+  20 Jan 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9154.ebuild, -portage-2.2.00.9205.ebuild,
+  +portage-2.2.00.9214.ebuild:
+  Add new snapshot with improved Portage error messages, remove old snapshots
+  that don't force svn repo switches
+
+*portage-2.2.00.9208 (19 Jan 2008)
+
+  19 Jan 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9150.ebuild, +portage-2.2.00.9208.ebuild:
+  Important update, support for svn:// and svn+https:// schemes. This ebuild
+  forces the user to switch from svn+http:// as it scheduled for removal.
+
+*portage-2.2.00.9205 (13 Jan 2008)
+
+  13 Jan 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9139.ebuild, +portage-2.2.00.9205.ebuild:
+  New snapshot
+
+*portage-2.2.00.9154 (07 Jan 2008)
+
+  07 Jan 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9133.ebuild, +portage-2.2.00.9154.ebuild:
+  New snapshot with slight binpkg install fix
+
+*portage-2.2.00.9150 (05 Jan 2008)
+
+  05 Jan 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9063.ebuild, +portage-2.2.00.9150.ebuild:
+  Fixes for binpkg installing, portage env and chpathtool
+
+*portage-2.2.00.9139 (03 Jan 2008)
+
+  03 Jan 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9049.ebuild, +portage-2.2.00.9139.ebuild:
+  New snapshot
+
+*portage-2.2.00.9133 (01 Jan 2008)
+
+  01 Jan 2008; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9044.ebuild, +portage-2.2.00.9133.ebuild:
+  New snapshot, with fix for OSX applications with relative install_names
+
+*portage-2.2.00.9063 (28 Dec 2007)
+
+  28 Dec 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.9058.ebuild, +portage-2.2.00.9063.ebuild:
+  Last portage had a regression with regard to digest generation. New snapshot
+  with a fix.
+
+*portage-2.2.00.9058 (27 Dec 2007)
+
+  27 Dec 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8872.ebuild, +portage-2.2.00.9058.ebuild:
+  New snapshot with fix for chpathtool generating symlinks with garbage in the
+  target
+
+*portage-2.2.00.9049 (24 Dec 2007)
+
+  24 Dec 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8843.ebuild, +portage-2.2.00.9049.ebuild:
+  New snapshot. Most notably is the new import logic that should cater for
+  Portage loading its own modules.
+
+*portage-2.2.00.9044 (22 Dec 2007)
+
+  22 Dec 2007; Fabian Groffen <grobian@gentoo.org>
+  -files/eprefix_dyn_install.patch, -portage-2.2.00.8820.ebuild,
+  -portage-2.2.00.9001-r0.01.ebuild, +portage-2.2.00.9044.ebuild:
+  New snapshot to replace faulty 9001 snapshot
+
+*portage-2.2.00.9001 (20 Dec 2007)
+
+  20 Dec 2007; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.2.00.9001.ebuild:
+  New snapshot
+
+*portage-2.2.00.8872 (08 Dec 2007)
+
+  08 Dec 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8815.ebuild, +portage-2.2.00.8872.ebuild:
+  New snapshot
+
+*portage-2.2.00.8843 (04 Dec 2007)
+
+  04 Dec 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8661.ebuild, +portage-2.2.00.8843.ebuild:
+  A new day, a new bunch of fixes
+
+*portage-2.2.00.8820 (03 Dec 2007)
+
+  03 Dec 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8627.ebuild, +portage-2.2.00.8820.ebuild:
+  Yesterday's mistakes
+
+*portage-2.2.00.8815 (02 Dec 2007)
+
+  02 Dec 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8592.ebuild, +portage-2.2.00.8815.ebuild:
+  Catch up with zmedico
+
+*portage-2.2.00.8661 (25 Nov 2007)
+
+  25 Nov 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8530.ebuild, +portage-2.2.00.8661.ebuild:
+  New snapshot
+
+*portage-2.2.00.8627 (23 Nov 2007)
+
+  23 Nov 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8523.ebuild, +portage-2.2.00.8627.ebuild:
+  New snapshot that fixes Portage spitting out all kinds of 'cannot unset'
+  scary messages
+
+*portage-2.2.00.8592 (21 Nov 2007)
+
+  21 Nov 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8515.ebuild, +portage-2.2.00.8592.ebuild:
+  New snapshot with fix for bug #199665 which was a regression I introduced
+  when I added binhost == repository eye-candy
+
+*portage-2.2.00.8530 (19 Nov 2007)
+
+  19 Nov 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8470.ebuild, +portage-2.2.00.8530.ebuild:
+  New snapshot
+
+*portage-2.2.00.8523 (18 Nov 2007)
+
+  18 Nov 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8435.ebuild, +portage-2.2.00.8523.ebuild:
+  New snapshot with performance fixes and binary merge fix
+
+*portage-2.2.00.8515 (16 Nov 2007)
+
+  16 Nov 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8510.ebuild, +portage-2.2.00.8515.ebuild:
+  Replace 8510 by 8515 because the former contains a logic bug
+
+*portage-2.2.00.8510 (15 Nov 2007)
+
+  15 Nov 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8508.ebuild, +portage-2.2.00.8510.ebuild:
+  Fix dosym to run dodir for the target if necessary (fixes texlive problem)
+
+*portage-2.2.00.8508 (15 Nov 2007)
+
+  15 Nov 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8400.ebuild, +portage-2.2.00.8508.ebuild:
+  New snapshot, now also installing emaint
+
+*portage-2.2.00.8470 (08 Nov 2007)
+
+  08 Nov 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8459.ebuild, +portage-2.2.00.8470.ebuild:
+  Replace just released snapshot with one that fixes a bug in binpkg handling.
+  Includes quickpg fix to create PKGDIR if it doesn't exist
+
+*portage-2.2.00.8459 (08 Nov 2007)
+
+  08 Nov 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8340.ebuild, +portage-2.2.00.8459.ebuild:
+  New snapshot, added support for eapi identification from the main tree
+
+*portage-2.2.00.8435 (05 Nov 2007)
+
+  05 Nov 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8328.ebuild, +portage-2.2.00.8435.ebuild:
+  New snapshot with hack/fix/workaround for binpkg's Packages file and elibc_*
+  etc USE conditionals, compilation support for Interix
+
+*portage-2.2.00.8400 (03 Nov 2007)
+
+  03 Nov 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8280.ebuild, +portage-2.2.00.8400.ebuild:
+  New snapshot that hopefully dies when installing files with wrong links on
+  Darwin
+
+*portage-2.2.00.8340 (29 Oct 2007)
+
+  29 Oct 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8299.ebuild, +portage-2.2.00.8340.ebuild:
+  New snapshot, mainly for a Darwin7 compilation fix.
+
+*portage-2.2.00.8328 (27 Oct 2007)
+
+  27 Oct 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8321.ebuild, +portage-2.2.00.8328.ebuild:
+  New snapshot, this snapshot contains a few fixes which makes it usable when
+  configured with --offset-prefix="".
+
+*portage-2.2.00.8321 (27 Oct 2007)
+
+  27 Oct 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8127.ebuild, +portage-2.2.00.8321.ebuild:
+  New snapshot, condensed digest checking for distfiles
+
+*portage-2.2.00.8299 (25 Oct 2007)
+
+  25 Oct 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8228.ebuild, +portage-2.2.00.8299.ebuild:
+  New snapshot, fixes doins problem. I retained 2.2.00.8127 as it is the only
+  one with ~ia64-hpux keyword.
+
+*portage-2.2.00.8280 (24 Oct 2007)
+
+  24 Oct 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8276.ebuild, +portage-2.2.00.8280.ebuild:
+  Replace version by a version of portage I just used to commit the previous
+  portage (with repoman, fixing it untill it worked)
+
+*portage-2.2.00.8276 (24 Oct 2007)
+
+  24 Oct 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8123.ebuild, +portage-2.2.00.8276.ebuild:
+  New snapshot, includes makefile fix, includes a complete cleanup of repoman,
+  so I expect breakage there.
+
+*portage-2.2.00.8227 (22 Oct 2007)
+
+  22 Oct 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8112.ebuild, +portage-2.2.00.8228.ebuild:
+  New snapshot, should now also compile on HPUX
+
+*portage-2.2.00.8127 (15 Oct 2007)
+
+  15 Oct 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8079.ebuild, +portage-2.2.00.8127.ebuild:
+  Fix compilation on Linux
+
+*portage-2.2.00.8123 (14 Oct 2007)
+
+  14 Oct 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.8027.ebuild, +portage-2.2.00.8123.ebuild:
+  New snapshot that gets rid of the usr/share: no such file or directory error
+
+*portage-2.2.00.8110 (13 Oct 2007)
+
+  13 Oct 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.7961.ebuild, +portage-2.2.00.8112.ebuild:
+  Essential fixes to emerge binpkgs in prefix right. Solves problem with for
+  example ghc binpkg
+
+*portage-2.2.00.8079 (12 Oct 2007)
+
+  12 Oct 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.7903.ebuild, +portage-2.2.00.8079.ebuild:
+  New snapshot, should include some binpkg fixes
+
+*portage-2.2.00.8027 (09 Oct 2007)
+
+  09 Oct 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.7791.ebuild, +portage-2.2.00.8027.ebuild:
+  New snapshot.  Most important: a fixed repoman
+
+*portage-2.2.00.7961 (05 Oct 2007)
+
+  05 Oct 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.7783.ebuild, +portage-2.2.00.7965.ebuild:
+  More EAPI voodoo, some set support (?)
+
+*portage-2.2.00.7903 (02 Oct 2007)
+
+  02 Oct 2007; Fabian Groffen <grobian@gentoo.org>
+  -files/portage-2.2.00.7889-fix_indentation.prefix,
+  -portage-2.2.00.7889.ebuild, +portage-2.2.00.7903.ebuild:
+  New snapshot which includes the fix pipping checked in yesterday as patch
+
+*portage-2.2.00.7889 (29 Sep 2007)
+
+  29 Sep 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.7724.ebuild, +portage-2.2.00.7889.ebuild:
+  New snapshot with fresh blessings from zmedico
+
+*portage-2.2.00.7791 (18 Sep 2007)
+
+  18 Sep 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.7722.ebuild, +portage-2.2.00.7791.ebuild:
+  New snapshot, with a somewhat cleaned up repoman
+
+*portage-2.2.00.7783 (14 Sep 2007)
+
+  14 Sep 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.7716.ebuild, +portage-2.2.00.7783.ebuild:
+  New snapshot
+
+*portage-2.2.00.7724 (02 Sep 2007)
+
+  02 Sep 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.7698.ebuild, +portage-2.2.00.7724.ebuild:
+  New snapshot, includes install_name check on Darwin, and correction of those
+  where possible
+
+*portage-2.2.00.7722 (01 Sep 2007)
+
+  01 Sep 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.7586.ebuild, -portage-2.2.00.7595.ebuild,
+  +portage-2.2.00.7722.ebuild:
+  Hotfix that makes it really possible to use binary packages from another prefix
+
+*portage-2.2.00.7716 (28 Aug 2007)
+
+  28 Aug 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.7708.ebuild, +portage-2.2.00.7716.ebuild:
+  Previous version didn't include a special field in binary packages, this
+  version does.
+
+*portage-2.2.00.7708 (27 Aug 2007)
+
+  27 Aug 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.7707.ebuild, +portage-2.2.00.7708.ebuild:
+  New snapshot which has theoretical support for binary packages on different
+  prefixes
+
+*portage-2.2.00.7698 (25 Aug 2007)
+
+  25 Aug 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.7571.ebuild, +portage-2.2.00.7698.ebuild:
+  New snapshot, should have some speed improvements brought to you by Zac ;)
+
+*portage-2.2.00.7595 (12 Aug 2007)
+
+  12 Aug 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.7563.ebuild, +portage-2.2.00.7595.ebuild:
+  New snapshot, fixing issue where installed files could be removed when
+  upgrading
+
+*portage-2.2.00.7586 (10 Aug 2007)
+
+  10 Aug 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.7521.ebuild, +portage-2.2.00.7586.ebuild:
+  New snapshot which solves creating double prefixes
+
+*portage-2.2.00.7571 (04 Aug 2007)
+
+  04 Aug 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.7307.ebuild, +portage-2.2.00.7571.ebuild:
+  New snapshot that doesn't leave .ecompress.file files behind when
+  ruby.eclass is in use
+
+*portage-2.2.00.7563 (04 Aug 2007)
+
+  04 Aug 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.7245.ebuild, +portage-2.2.00.7563.ebuild:
+  New portage snapshot, doesn't do useless metadata import after sync, doesn't
+  show repo any more if the ebuild comes from the standard PORTDIR
+
+*portage-2.2.00.7521 (30 Jul 2007)
+
+  30 Jul 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.7209.ebuild, +portage-2.2.00.7521.ebuild:
+  New snapshot, with new goodies!
+
+*portage-2.2.00.7307 (19 Jul 2007)
+
+  19 Jul 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.7130.ebuild, +portage-2.2.00.7307.ebuild:
+  New snapshot
+
+*portage-2.2.00.7245 (13 Jul 2007)
+
+  13 Jul 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.7085.ebuild, +portage-2.2.00.7245.ebuild:
+  New snapshot which solves an issue with emerge -av crashing when PORTDIR
+  contains symlinks.
+
+*portage-2.2.00.7209 (09 Jul 2007)
+
+  09 Jul 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.7037.ebuild, +portage-2.2.00.7209.ebuild:
+  New snapshot, may be dangerous.  Synced ebuild logic with the main tree.
+
+*portage-2.2.00.7130 (02 Jul 2007)
+
+  02 Jul 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.7033.ebuild, +portage-2.2.00.7130.ebuild:
+  New snapshot with revised configure script and user/group management, beware!
+
+*portage-2.2.00.7085 (28 Jun 2007)
+
+  28 Jun 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.6949.ebuild, +portage-2.2.00.7085.ebuild:
+  new snapshot
+
+*portage-2.2.00.7037 (26 Jun 2007)
+
+  26 Jun 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.2.00.6804.ebuild, +portage-2.2.00.7037.ebuild:
+  New snapshot, fixes make.conf.example incorrectnesses
+
+*portage-2.2.00.7033 (25 Jun 2007)
+
+  25 Jun 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.29.6752.ebuild, +portage-2.2.00.7033.ebuild:
+  New snapshot
+
+*portage-2.2.00.6949 (22 Jun 2007)
+
+  22 Jun 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.29.6710.ebuild, +portage-2.2.00.6949.ebuild:
+  New snapshot, many code changes, beware
+
+*portage-2.2.00.6804 (11 Jun 2007)
+
+  11 Jun 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.28.6626.ebuild, +portage-2.2.00.6804.ebuild:
+  New snapshot.  Based on version 2.2, including GLEP 42 support.
+
+*portage-2.1.29.6752 (08 Jun 2007)
+
+  08 Jun 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.27.6539.ebuild, +portage-2.1.29.6752.ebuild:
+  New snapshot
+
+*portage-2.1.29.6710 (01 Jun 2007)
+
+  01 Jun 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.27.6534.ebuild, +portage-2.1.29.6710.ebuild:
+  New snapshot with big cleanups
+
+*portage-2.1.28.6626 (25 May 2007)
+
+  25 May 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.27.6600.ebuild, +portage-2.1.28.6626.ebuild:
+  New snapshot which fixes pty problems on Solaris
+
+*portage-2.1.27.6600 (23 May 2007)
+
+  23 May 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.27.6502.ebuild, +portage-2.1.27.6600.ebuild:
+  Many many fixes from trunk, including cPickle fix by Michael Haubenwallner
+
+*portage-2.1.27.6539 (15 May 2007)
+
+  15 May 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.25.6465.ebuild, +portage-2.1.27.6539.ebuild:
+  New snapshot with a small fix for Interix/Windows
+
+*portage-2.1.27.6534 (13 May 2007)
+
+  13 May 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.25.6450.ebuild, +portage-2.1.27.6534.ebuild:
+  Fix for outside prefix QA check not aborting the merge, but silently
+  continuing.
+
+*portage-2.1.27.6502 (08 May 2007)
+
+  08 May 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.23.6400.ebuild, +portage-2.1.27.6502.ebuild:
+  New snapshot, misc fixes
+
+*portage-2.1.25.6464 (01 May 2007)
+
+  01 May 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.25.6460.ebuild, +portage-2.1.25.6465.ebuild:
+  Add bugfix replacement for 6460, fixes backtrace on invalid digest, crash on
+  elog_summary (touching /var/log/portage), leaving behind of
+  man.ecompress.dir files, repoman dieing during commit in
+  manifest1_obsolete repositories
+
+*portage-2.1.25.6460 (30 Apr 2007)
+
+  30 Apr 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.23.6391.ebuild, +portage-2.1.25.6460.ebuild:
+  New snapshot, now generates portage cache after --sync
+
+*portage-2.1.25.6450 (28 Apr 2007)
+
+  28 Apr 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.23.6370.ebuild, +portage-2.1.25.6450.ebuild:
+  New snapshot, two leap jumps forward
+
+*portage-2.1.23.6400 (14 Apr 2007)
+
+  14 Apr 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.23.6338.ebuild, +portage-2.1.23.6400.ebuild:
+  New snapshot, fix for Solaris configure issue, fix for improper handling of
+  files/paths with spaces
+
+*portage-2.1.23.6391 (13 Apr 2007)
+
+  13 Apr 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.23.6381.ebuild, +portage-2.1.23.6391.ebuild:
+  New snapshot, fixes issues with newexe, doexe, that 6381 seemed to have
+  introduced.
+
+*portage-2.1.23.6381 (12 Apr 2007)
+
+  12 Apr 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.22.6320.ebuild, +portage-2.1.23.6381.ebuild:
+  New snapshot that uses deb2targz for AIX users
+
+*portage-2.1.23.6370 (10 Apr 2007)
+
+  10 Apr 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.22.6250.ebuild, +portage-2.1.23.6370.ebuild:
+  New snapshot, fixes dispatch-conf
+
+*portage-2.1.23.6336 (05 Apr 2007)
+
+  05 Apr 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.22.6248.ebuild, +portage-2.1.23.6338.ebuild:
+  New snapshot with IRIX support, and interrevision handling bugfix
+
+*portage-2.1.22.6320 (28 Mar 2007)
+
+  28 Mar 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.22.6239.ebuild, +portage-2.1.22.6320.ebuild:
+  New snapshot, misc fixes, improvements and more
+
+*portage-2.1.22.6250 (20 Mar 2007)
+
+  20 Mar 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.22.6209.ebuild, +portage-2.1.22.6250.ebuild:
+  New snapshot that allows emerge --config to work in prefix
+
+*portage-2.1.22.6248 (18 Mar 2007)
+
+  18 Mar 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.22.6245.ebuild, +portage-2.1.22.6248.ebuild:
+  New snapshot, fixing fowners and fperms behaviour
+
+*portage-2.1.22.6245 (18 Mar 2007)
+
+  18 Mar 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.22.6243.ebuild, +portage-2.1.22.6245.ebuild:
+  New snapshot, fix fperms and fowners to work again
+
+*portage-2.1.22.6243 (18 Mar 2007)
+
+  18 Mar 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.6185.ebuild, -portage-2.1.22.6204.ebuild,
+  +portage-2.1.22.6243.ebuild:
+  New snapshot which fixes a collision-protect endless-recursion bug on
+  circular symlinks, patch thanks to Tobias Hahn
+
+*portage-2.1.22.6239 (17 Mar 2007)
+
+  17 Mar 2007; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.1.22.6239.ebuild:
+  New snapshot, with repoman QuickCommit(tm) feature
+
+*portage-2.1.22.6209 (15 Mar 2007)
+
+  15 Mar 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.6173.ebuild, +portage-2.1.22.6209.ebuild:
+  New snapshot with fixed config-protect functionality
+
+*portage-2.1.22.6204 (11 Mar 2007)
+
+  11 Mar 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.6152.ebuild, +portage-2.1.22.6204.ebuild:
+  Add new snapshot, fixes bug in quickpgk
+
+*portage-2.1.20.6185 (06 Mar 2007)
+
+  06 Mar 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.6132.ebuild, +portage-2.1.20.6185.ebuild:
+  New snapshot, most important: a fix for repoman when used in locales other
+  than C
+
+*portage-2.1.20.6173 (04 Mar 2007)
+
+  04 Mar 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.6097.ebuild, +portage-2.1.20.6173.ebuild:
+  New revision, fixes from upstream for prefix, fix for double-D check in prefix
+
+*portage-2.1.20.6152 (03 Mar 2007)
+
+  03 Mar 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.6151.ebuild, +portage-2.1.20.6152.ebuild:
+  Fix a bug for users not having a gentoo patched portage, making them unable
+  to run emerge
+
+*portage-2.1.20.6151 (03 Mar 2007)
+
+  03 Mar 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.6085.ebuild, +portage-2.1.20.6151.ebuild:
+  New bump, mainly fixes.  Added support for AIX.
+
+*portage-2.1.20.6132 (02 Mar 2007)
+
+  02 Mar 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5937.ebuild, +portage-2.1.20.6132.ebuild:
+  New release, mainly bugfixes
+
+*portage-2.1.20.6097 (27 Feb 2007)
+
+  27 Feb 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5894.ebuild, +portage-2.1.20.6097.ebuild:
+  Fixes for backtraces reported on the gentoo-alt mailing list, added QA check
+  on Darwin for .so and .dylib files
+
+*portage-2.1.20.6085 (26 Feb 2007)
+
+  26 Feb 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5886.ebuild, +portage-2.1.20.6085.ebuild:
+  New version with lots of upstream changes. Note: this portage includes
+  support for deprecation of Manifest1 which will soon be used, so update ASAP
+
+*portage-2.1.20.5937 (10 Feb 2007)
+
+  10 Feb 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5839.ebuild, +portage-2.1.20.5937.ebuild:
+  New snapshot with new configure logic that should fix some bugs, and
+  probably introduces some new ones
+
+*portage-2.1.20.5894 (05 Feb 2007)
+
+  05 Feb 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5820.ebuild, +portage-2.1.20.5894.ebuild:
+  New snapshot with fix for emerge -s being broken
+
+*portage-2.1.20.5886 (03 Feb 2007)
+
+  03 Feb 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5758.ebuild, +portage-2.1.20.5886.ebuild:
+  New snapshot, with fix for emerge --metadata erroring out
+
+*portage-2.1.20.5839 (30 Jan 2007)
+
+  30 Jan 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5732.ebuild, +portage-2.1.20.5839.ebuild:
+  Misc fixes to avoid python backtraces
+
+*portage-2.1.20.5819 (28 Jan 2007)
+
+  28 Jan 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5501.ebuild, +portage-2.1.20.5820.ebuild:
+  New snapshot with new and improved *cough* package structure. Might result
+  in some pythonic errors.
+
+*portage-2.1.20.5732 (19 Jan 2007)
+
+  19 Jan 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5447.ebuild, +portage-2.1.20.5732.ebuild:
+  New snapshot with glep 42 (news items) support
+
+*portage-2.1.20.5501 (09 Jan 2007)
+
+  09 Jan 2007; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5400.ebuild, +portage-2.1.20.5501.ebuild:
+  New snapshot
+
+*portage-2.1.20.5476 (06 Jan 2007)
+
+  06 Jan 2007; Fabian Groffen <grobian@gentoo.org>
+  +portage-2.1.20.5476.ebuild:
+  New snapshot
+
+  02 Jan 2007; Fabian Groffen <grobian@gentoo.org> ChangeLog:
+  New snapshot, doesn't install sed wrapper in usr/bin any more
+
+*portage-2.1.20.5400 (27 Dec 2006)
+
+  27 Dec 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5377.ebuild, -portage-2.1.20.5380.ebuild,
+  -portage-2.1.20.5396.ebuild, +portage-2.1.20.5400.ebuild:
+  New snapshot, add back --with-default-path again, which seems to have been
+  dropped by accident.
+
+*portage-2.1.20.5396 (26 Dec 2006)
+
+  26 Dec 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5336.ebuild, +portage-2.1.20.5396.ebuild:
+  New snapshot with fix in emerge --sync code
+
+*portage-2.1.20.5380 (24 Dec 2006)
+
+  24 Dec 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5320.ebuild, +portage-2.1.20.5380.ebuild:
+  Cosmetic fixes in emerge --info output
+
+*portage-2.1.20.5377 (24 Dec 2006)
+
+  24 Dec 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5376.ebuild, +portage-2.1.20.5377.ebuild:
+  Fix for repoman not accepting inter-revision ebuilds
+
+*portage-2.1.20.5376 (24 Dec 2006)
+
+  24 Dec 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5284.ebuild, +portage-2.1.20.5376.ebuild:
+  New snapshot with fixes/cleanup from the main trunk. Includes special prefix
+  inter-revision version support
+
+*portage-2.1.20.5336 (20 Dec 2006)
+
+  20 Dec 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5261.ebuild, +portage-2.1.20.5336.ebuild:
+  New snapshot with fix for a bug which caused weird python behaviour
+  introduced in 5320
+
+*portage-2.1.20.5320 (18 Dec 2006)
+
+  18 Dec 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5226.ebuild, +portage-2.1.20.5320.ebuild:
+  New snapshot, mainly performance improvements
+
+*portage-2.1.20.5284 (13 Dec 2006)
+
+  13 Dec 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5188.ebuild, +portage-2.1.20.5284.ebuild:
+  New snapshot
+
+*portage-2.1.20.5261 (10 Dec 2006)
+
+  10 Dec 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5172.ebuild, +portage-2.1.20.5261.ebuild:
+  New snapshort, cleanup and optimisation stuff from trunk
+
+*portage-2.1.20.5226 (08 Dec 2006)
+
+  08 Dec 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5165.ebuild, +portage-2.1.20.5226.ebuild:
+  New snapshot, with possible performance improvements from the trunk
+
+*portage-2.1.20.5188 (06 Dec 2006)
+
+  06 Dec 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5145.ebuild, +portage-2.1.20.5188.ebuild:
+  New snapshot, fix for DEFAULT_PATH screwup, fix for XCU_ID check to look in
+  prefix first, repoman identification clearification.
+
+*portage-2.1.20.5172 (04 Dec 2006)
+
+  04 Dec 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5138.ebuild, +portage-2.1.20.5172.ebuild:
+  New snapshot, fixes emerge --sync in SVN mode
+
+*portage-2.1.20.5165 (03 Dec 2006)
+
+  03 Dec 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5162.ebuild, +portage-2.1.20.5165.ebuild:
+  New snapshot with fix for portage not informing about files that need
+  updating after emerging.
+
+*portage-2.1.20.5162 (03 Dec 2006)
+
+  03 Dec 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5132.ebuild, +portage-2.1.20.5162.ebuild:
+  New snapshot, more strictness on Manifests
+
+*portage-2.1.20.5145 (29 Nov 2006)
+
+  29 Nov 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5141.ebuild, +portage-2.1.20.5145.ebuild:
+  New snapshot, portage's binpath is now added to DEFAULT_PATH by portage itself
+
+*portage-2.1.20.5141 (29 Nov 2006)
+
+  29 Nov 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5139.ebuild, +portage-2.1.20.5141.ebuild:
+  Remove faulty version, new version with fix for a correct DEFAULT_PATH
+
+*portage-2.1.20.5140 (29 Nov 2006)
+
+  29 Nov 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5139.ebuild, +portage-2.1.20.5140.ebuild:
+  Default path didn't include portage's own bins, fixed now
+
+*portage-2.1.20.5139 (29 Nov 2006)
+
+  29 Nov 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5120.ebuild, +portage-2.1.20.5139.ebuild:
+  New snapshot, including a DEFAULT_PATH order fix.
+
+*portage-2.1.20.5138 (26 Nov 2006)
+
+  26 Nov 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5090.ebuild, +portage-2.1.20.5138.ebuild:
+  New snapshot, contains some important etc-update related fixes
+
+*portage-2.1.20.5132 (26 Nov 2006)
+
+  26 Nov 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5077.ebuild, +portage-2.1.20.5132.ebuild:
+  New snapshot
+
+*portage-2.1.20.5120 (22 Nov 2006)
+
+  22 Nov 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5060.ebuild, +portage-2.1.20.5120.ebuild:
+  New snapshot.  Includes a fix for repoman not seeing added digests.
+
+*portage-2.1.20.5090 (19 Nov 2006)
+
+  19 Nov 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5020.ebuild, +portage-2.1.20.5090.ebuild:
+  Fix for repoman's SVN support.  It now properly detects added ebuilds.
+
+*portage-2.1.20.5089 (19 Nov 2006)
+
+  19 Nov 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5020.ebuild, +portage-2.1.20.5089.ebuild:
+  New snapshot, most particular, all traces of ACCEPT_LICENSE support have
+  been removed again
+
+*portage-2.1.20.5077 (17 Nov 2006)
+
+  17 Nov 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.5016.ebuild, +portage-2.1.20.5077.ebuild:
+  New snapshot, mainly with fixes for portage niceness, and (new style)
+  virtuals
+
+*portage-2.1.20.5060 (16 Nov 2006)
+
+  16 Nov 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.4986.ebuild, +portage-2.1.20.5060.ebuild:
+  New snapshot.  Includes prefix patch for repoman not honouring the
+  portage group given during configure call.
+
+*portage-2.1.20.5020 (12 Nov 2006)
+
+  12 Nov 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.4965.ebuild, +portage-2.1.20.5020.ebuild:
+  New snapshot that includes a SVN aware repoman.  The initial work was
+  done by Kito, I just finished the job.
+
+*portage-2.1.20.5016 (12 Nov 2006)
+
+  12 Nov 2006; Fabian Groffen <grobian@gentoo.org>
+  -portage-2.1.20.4942.ebuild, +portage-2.1.20.5016.ebuild:
+  New snapshot from main-line, plus additional SVN support, such that
+  `emerge --sync` now also works with our SVN tree.
+
+  16 Oct 2006; Fabian Groffen <grobian@gentoo.org> ChangeLog:
+  New release 4721 which is based on a complete merge of the trunk code.
+
+  11 Oct 2006; Fabian Groffen <grobian@gentoo.org> ChangeLog:
+  Since the bootstrap script now uses 4497, removed 4415.  Bumped 4497
+  to -r6, to include root_slash patch, such that original ebuilds and
+  eclasses work without modifying ${ROOT} handling.
+
+  08 Oct 2006; Fabian Groffen <grobian@gentoo.org> ChangeLog:
+  Rewrote QA patch from Matt, to actually work and die on double prefixed
+  files. Added QA check for files installed outside the prefix, which also
+  dies if it finds files.  Bumping to -r5 to force everyone using the
+  new QA checks for better feedback on problem packages in the tree.

diff --git a/sys-apps/portage/Manifest b/sys-apps/portage/Manifest
new file mode 100644
index 0000000..8005081
--- /dev/null
+++ b/sys-apps/portage/Manifest
@@ -0,0 +1,26 @@
+AUX 05portage.envd 58 SHA256 3caa7956606d288cffaca28d4016c5f75e24ff55307d9d8c1c889f2dba67da06 SHA512 a6e314b21e4d2e640eeefb8caf7e89540aac404dafe70895e7dcfd59b4832d82a9e9ebee9c3efe0406a614cde0c78dc39a2fd17f6ef98b5ad701b8fad14a97bc WHIRLPOOL a480018676c8d568323220536843671bef657a1f457cc3d185e478fa7941ab7836d9bca073a503bc3eecef0d34c2a1324718645721661100223423839ebc3313
+AUX portage-2.2.00.15801-prefix-chaining.patch 27681 SHA256 f9484fa6c899bd023c80888b961392639c7ce6b1662f37b89da22d7a2b84f354 SHA512 578526c1e4d5f4f514b9f289b00b954392ac3aabad7da6fcb89d9881f5b8210a8145d4aa03c3c8f6532ec146f7167330c83e8914404315d586fd16fe9ebc37bd WHIRLPOOL 682d08421e4186f14b9307fe269d8fd7441693547171e3c74385fb7e1ebd55c3d6fe2bb774934c306581655148f2d0c9a919de1657a2761cde0f7a6fbbf1c7c0
+AUX portage-2.2.01.18213-ebuildshell.patch 3216 SHA256 3b84dc57b27a3b4e88c93919a9188d9747957bd1d9ea57f12cf9ba2af7bc171e SHA512 bb016e8e909fed75c1ac18b263d6202001851dc186cfd3550eeae0e12116083435a8f097b72112920d98f8841287e22494dc0dbd0ed97fcf50aa98c2e44007dd WHIRLPOOL acc323f6f048ab991c12e8b9a6702ea10d9d62bb58d64204ccee55dc6f068209f9a373a17f8aab270f1c8e5a55acf32f0496cdb86610de5ffcc56e584b96b30d
+AUX portage-2.2.01.18826-aix-preservelibs.patch 1188 SHA256 663221d2b16604d2dff922ef6126e3589d0ab070aa45b06bc60141be3518e8ff SHA512 cf39861eb914605321c4e5491113d109b0426bd3a20024aabc9bcfcb32c84b6959e203277af685d9b3377f9f126c2db03da5acd65f77ed900a665eeedb42f338 WHIRLPOOL 47f2ae377f9dc6027c4a4d69e9ebd27472f6271017f37e38614ffb395e67c82344e07165136b8aab2480bc0a08b1a10ef0dfad63e8e5a213b2028db3a6b5f0ec
+AUX portage-2.2.01.18980-ebuildshell.patch 3196 SHA256 f6afb0dade46de4f6ddd263b7ed73a7f48580315e88802008ed6b2bfae054dcf SHA512 658acd8a6252ce1e28c87888b3503d4d5bb3f0461e34dde59c99b0887f06a0ff76d7ddd80ce87ead980229ec02f2596f0e4226694591cd43bf6d1549ec77de1f WHIRLPOOL 316aa7cd283f4f9f32b1c8dc00180dee4587b287c724af8b7ffff9926784d7e18d507bb24ec6d8a9ffe0a1c8441cff8c3cd6c80b3e0645f568293325e0465cd4
+AUX portage-2.2.01.19247-aix-preserve-libs.patch 6502 SHA256 c8f1ac40f9adffeee7158650d9b9c79bb27a0b52694471308df853d4ed1cd197 SHA512 d3de61418db143885771fca0bf3aadb7a1767cf5ccde2333f6948d35392fd4548976e7483c9b9fc865fbf2d672169581fbf9f687ac24d19083910c2cd3a8e059 WHIRLPOOL 66196536936c3bf1b3c8927b2569060913d2947e30e23b04af9ad3b9608b6d7894bcfb97f657a145bc3cc765dbbfca8913ef95a6fd74944d89f15249aa10215b
+AUX portage-2.2.01.19247-ebuildshell.patch 3296 SHA256 8cee3ddf8f4b03e9440407ecd414b31b072f76a26c7f01c7798fc9072004ea1b SHA512 4b3399576f10d2eee5e3f560eba2fb7003dc7a94bc45f2f5a83629511a39398abef50c86793848f08998982466369ce56d89911dd6ee878d02f2e07e71e77b4e WHIRLPOOL 65668006e8c7c0e7241ef76dc2728803a2723c18217fd8a99ff98ce2c59a99e755e43a4031757a5a7e48a2b54be8f531089ea82c28a4a26fc4ba86112bc8e664
+AUX portage-2.2.01.19981-ebuildshell.patch 3304 SHA256 2b7f313afe62815b791835da8cdfc3991732712cbdf4c7d4ac7f4e9a310b9ed0 SHA512 782598093305b4d51c32af5f79a1f512f6a42162fa8e37e02758bb0c742ff32ac712969e20f5042e04e14a7e919c644d4ad53638ff6d865551f1b15b6dd47b82 WHIRLPOOL 2103b1f02de4dd288f441e486fb36f98c8348135961e12e3ce0f113ca370a39c8aee2d14d5a7c149d48c3ed9c9b6a940a8f7faf4e5fb446c53f243d1eddf61bc
+AUX portage-2.2.01.20020-ebuildshell.patch 4736 SHA256 92f91c788e3591fb71f55b7a04df8bd0baee767e2561649182bf1b814a0451a8 SHA512 785059ad71e1d9172338926df22883bf70560c3f22f84da74aa21b872b52c9dd05ca61fe8bb786a2da7e4756ae3568f35ca6d7a6ec22b9be419efab6529b8f52 WHIRLPOOL 63ba30a2fa005cca2a6866178938e4ce83bed8ca3a5cbc9bcbcffc888ef4561c27d45f29707db26574c96b8a0c0ed565a0224d64bed8191a1179ae6ace325904
+AUX portage-2.2.01.20239-ebuildshell.patch 5292 SHA256 602efac969b76b33e46f927bb6d5ddaff837f2d69dba446c05116fd6e9d6aaf9 SHA512 9f79c62482cacfe4d52d9b7a42969c5090ec1dd6c55ac67ac0697fa3261d00d437e32a46987d242d3380b459d1af2cdfdacec5d72b7aa905146bbf5759158bdf WHIRLPOOL 2ee6f82ec9dc8c44704c1badeafa207656dac9ce49443616b4ebfd402e872c71434e049f4436ed04009e633a00b4863dd35e79a80ba4e710ac1af6579a9decdf
+AUX portage-2.2.10.1-case-insensitive-fs.patch 13475 SHA256 e9ca3560b580e1df7bdf7424c76b5bf022c4189ed6ae51370f88895d5c00031d SHA512 6c7b4cba0827d0b29f1be1fc6fb42b1703f373f6825be14f43506921e71075b6967191cf79e4e659c0f37c96de6cbdbdc1e04cd0e668a563a4a3c3be9e97f773 WHIRLPOOL 839ebc4214add69531f9f8a387ed155006c77c396031a116a6b79814a09e6591d5e8905e8398541ca213e60aacd0265e2f941858bbfcc3551a2ff5768a87f432
+AUX portage-2.2.14-ldconfig.patch 1139 SHA256 3ccf2649dd76a1093aec62479da57bd53f3e2a4995bec5bd312149aa78ecff9b SHA512 c94602e611edc8363abc0c904ac9b12fb5d19bc3d80a6cfda5d4aef70c936b77eb376bf0c63cb21b4e6fce14c113f6be1ae9950705b3f6e9d35fba766a35e147 WHIRLPOOL 02128e5ddde6969450fb17da55e335f2d64423d73864b98806092db8e669d290f56e57b3e166df7909408729068c9637f72ea97b418958203f35efc87e5d8cae
+AUX portage-2.2.7-ebuildshell.patch 6030 SHA256 c654f5e0b60a4a930ec973b306246d9e920d89b7536bda56c72f38d1ed56445d SHA512 c4bfa44be5d706a9206fcab884e3ad7b0530ec315f9b824fd77f06ff5482414af3e3aaadbc059a49712b2a2e203320f367e2d8c64bf1fceb78495d940fd3fd2a WHIRLPOOL a468e4d5b5d1c493415188c500ea04388e34bc5e5f5a03d61ea5aea8d5b029e2a4426c52471729345a4293eb7c9b747948f75b64982452d96a920a3ac5e528e6
+AUX portage-2.2.7-macho-relative-install_names.patch 2811 SHA256 de767ffb6d29625ca9ba0f33765a59a55bbdf2f3b2c1d9989a73a474ae55c388 SHA512 8555d04e4fc361c500d6c18c30f54f178164477f6c1fbb5fd30d5f89671f95915243e92b655e4264f748c2f29f0cf3e7a5fe439316cc6faebc752172557f0a89 WHIRLPOOL f5f92a762e7455dddfa2ffe3ba27c78ec1533c40920acc96a5e65d89ea93f7657f8bf7771e805d7d62c6f60944dccde72de3f34cee1d14c7db667b27cdd76d55
+AUX portage-2.2.7-sandbox.patch 723 SHA256 b6b941659a4cdbdafc65bf9977d7a92255b553c49e8f445862dcb00567906fec SHA512 fcf4bc7826bab92b1847dcecaf5def212b4eecdb4ac87b10b0668ea470d5836f3d68eb4ccf61345b39f9265c7f31ef3562de58b2ee4bb3096a71c0567343d810 WHIRLPOOL 3699c7a2a0e6229d337760d07ce40e45b949614518ae292d74ca4297d3e9e5f3eb5edeb7f59c8821a6bfcf981cf1363f4f3d03c16af533276f577b1ff3d8c264
+AUX portage-2.2.7-shebang-fixes.patch 5159 SHA256 726bec5b4be8906b58cad7729e4a9697a6a5270181809aa69412e07e3630656b SHA512 79ab1ddfea57e11c7a21fd8c685b5bc9ab668d1816c994eb2a2f2dbc7680c898fcc79286f760f927bc8e5188af99b66ff6ca5fe6d4cb55880ef5f48dae100964 WHIRLPOOL 3c39362990eb86c5319c13f4abad3bf2cff55c1be61583c4ec9a8a452fee0de3cce6d4b7f3b000c255225403e1c17f7a0d7cbf36a3797e9e8d6ea7313db9e47a
+AUX portage-2.2.8-ebuildshell.patch 5417 SHA256 e3160c33568155727f2243f49b92f455c134f583e8eb95e4d0727237f0948bc2 SHA512 6de4e9ce0304577740144db6eb395b223cf28cb4ecd02418fb06a90385062859f3f04eb94ecb4c4f059e47cb1cf0234977cc12f2228b0dffb5937e84d53d2471 WHIRLPOOL 4e54834681cd0af7747fa50c68395fd336bb85a6f38323c97cd0cadbfc1d84ac9cb2f85c7a02af155b29e5f430e14877ccd2d8b7b83e9cfa7354b41ca788a869
+DIST prefix-portage-2.2.10.1.tar.bz2 1116228 SHA256 c0b3960b466098dc1913890e6aacc6b64e0f1bb97fbf18c96ab2f648a6daa1e9 SHA512 4d824119707936b6c73ec90a4dff8916a59d0d339e94dddbb9d0b241b550e1a982b475ca8708badf413aaca0aceab2b37f7dfeb62fa90eef7e27c91e41a61cec WHIRLPOOL 9910b2486c513d5b61a8985acf7318d6801d2b425bb3e79759c1d7e692762b02f8489275bb9d361fe5be01e8847cbc540d9dd157afa7a27bbfa9aec9f5834bc5
+DIST prefix-portage-2.2.14.tar.bz2 1133962 SHA256 5e7aa542f99fbad1bd371d9e6b5ba5ebaeb8b613a8730dd8966a1be5c9dabf72 SHA512 a107f603139c484caef11eade196876679a79c3800cce1aac58e958aff62a28df734e30d0e66b2f14f4622c6111106610e7527d59ed7677ced2c475f17768ea1 WHIRLPOOL bb857797d0db06e7dead010346887be36ed066979298efba3598361aca06df3cb19a5da924fae65a0ace7a6ad25b9d59d757e058d0c97036a10fb43ac2698b33
+DIST prefix-portage-2.2.8.tar.bz2 1104086 SHA256 cb9a1802be6e66c104316f7860c9e0d5cd78799d0d1e9964ac1a0df7d9e2ee0e SHA512 803adbfa17b6b05b84c727189208fb745435adee746751f51b6af364be7ef8ff7b0536cbc48551143965b246a2adfc8be3ffb0377a47451e1f4a524b991f272f WHIRLPOOL 8d4716ce2af9ade202249e50ce9bbd5df32455415a0b640000522e877ba912724e91e719881b768d99b5c9b2eb15a40374a8242df5b67f31bd1804f2e7288de6
+EBUILD portage-2.2.10.1-r1.ebuild 19901 SHA256 cb018131657d9eb8867f8a46345ae6085f9f6356b1d4a58dbc3c14803b9631c3 SHA512 73fb6daade66027bbedaf7d4a4092c2203e1355ec8b7131c5f0d72836ee763c88af948de38a2cd6d4047218d81825c0ce07c4cd838600519c6c26332b7dc81ff WHIRLPOOL 1794d599c414a04c0e081313d2cc5d7d1551b2ddd0646fde8fb3c6ab6fbf50ddedb5fbc62e31fc8f2e17f2f23481fedf55974eae67f7a5d5e9d0757be879a7c7
+EBUILD portage-2.2.10.1.ebuild 19700 SHA256 e71efa93de48797000bc015b9a9854ecba2d803d0c1f3eb85fe44ff39429a7b1 SHA512 ed65c5f5c481f26d92214e0f5b1d943fbd04e81e5319c8ef99d424ac296efc5d2da8ab5b93376b7c2fbe4f6cc8fc283fb17f46b4186cad31dd3fe303b62d3f37 WHIRLPOOL 3e6bc1a8b229bb815e5ef6a008f4d1c5c3f871dbd418fecfa48460aa0c2ccaab145a766bc02d7b57e0c4f27a6b4401093ad3114d2fe2b9eb1b19615113cbc8ef
+EBUILD portage-2.2.14.ebuild 19599 SHA256 69a1150530585dad83dd7c9d022db6fe2c0dab6bb5c518afbf569f857e8787ac SHA512 b831085854abc9d3f668d33215ea46b5eb6565051742e2156d8f70f1e9bf4965e949200bddb38bde76b280b47f166256c7b463766fadecb140c756736ad1fbe9 WHIRLPOOL 048272ca135ed7ad2382c54553f29669b22a46063f9b7b97d6cf3a0b6bbd669b2121d9b7849890b6731a5753c35a50bce580ab8266591a4ed516575a1fc1eb9e
+EBUILD portage-2.2.8.ebuild 19617 SHA256 49933ae1bb31cce87940e5aa0479aee04a458cb859bdb5009554e26994e77211 SHA512 24705ca09b375dd1350fe95974318fd39cf3760a8316ebcef331adab77a92068d4858143da3aba1b31b4b5259c804ad74a6c17765003df12ca4af7ad44efc28e WHIRLPOOL 218b7a88e9ef1d93dfd61c2903f27fd2a82fddb0eade185f90af5b6d978c45d48af5d307d7c3eead7dcde574558862b9dd6e30201ce1c3c33cf62fd4cb1d1d1d
+MISC ChangeLog 96567 SHA256 5b1873573b98ebe0b9fba668b3cf51eb42f7c710c6cae5de2832079abcb1a375 SHA512 310340f91090972d9a6751e5cb03d0b2e75907b97df3d1ce8ed7e53458b1aed386275441ee5b21efc579e9b7bfc4558173b87b8bc85d4a6ad1886a36545b5497 WHIRLPOOL d8e8722250edcab4f4c2b8065ea46e4fd55dfa38de5d116897caa43e8b1edca3d5e411e9051210001554424895e7c01b28b65a2e6a8b6164efe949d2feb5ef3f
+MISC metadata.xml 570 SHA256 caa1a631e6fe0d42012260b948ab80a89ca449ec33f911c22bdaa84f1ff5e95a SHA512 8b7232056c81963d3ea91d718ba95c253731a9c4f827414e13e94b4c0cab1d4d013481bf2f90c3b9d381fc1c6e31a9b81958da5d652d40f5040a8575014d67ee WHIRLPOOL b2a448ff69a9b29d71afbe731cb058e3ed28e11929dc6ea2d74f9f894d1c41241dac81814e0124d17fa048118d12d304d224bca5484edd66a3f5e2a547d05b31

diff --git a/sys-apps/portage/files/05portage.envd b/sys-apps/portage/files/05portage.envd
new file mode 100644
index 0000000..ec94905
--- /dev/null
+++ b/sys-apps/portage/files/05portage.envd
@@ -0,0 +1 @@
+PYTHONPATH="@GENTOO_PORTAGE_EPREFIX@/usr/lib/portage/pym"

diff --git a/sys-apps/portage/files/portage-2.2.00.15801-prefix-chaining.patch b/sys-apps/portage/files/portage-2.2.00.15801-prefix-chaining.patch
new file mode 100644
index 0000000..01e5934
--- /dev/null
+++ b/sys-apps/portage/files/portage-2.2.00.15801-prefix-chaining.patch
@@ -0,0 +1,693 @@
+diff -ru prefix-portage-2.2.00.15801.orig/bin/ebuild.sh prefix-portage-2.2.00.15801/bin/ebuild.sh
+--- prefix-portage-2.2.00.15801.orig/bin/ebuild.sh	2010-03-11 10:39:16 +0100
++++ prefix-portage-2.2.00.15801/bin/ebuild.sh	2010-03-11 10:38:21 +0100
+@@ -123,6 +123,83 @@
+ # Unset some variables that break things.
+ unset GZIP BZIP BZIP2 CDPATH GREP_OPTIONS GREP_COLOR GLOBIGNORE
+ 
++if [[ -n "${PORTAGE_READONLY_EPREFIXES}" ]]; then
++	new_PATH=${PATH}
++
++	prefixes="${PORTAGE_READONLY_EPREFIXES}:${EPREFIX}"
++
++	# build up a PATH for the current environment. the path has to
++	# contain all the paths the start with $EPREFIX _first_, and
++	# after that, all the others. We have to re-order the new_PATH,
++	# so that EPREFIX paths move to the front. after that, the paths
++	# of all parent prefixes are added, and finally, after that, the
++	# paths not containing any prefix are added.
++
++	save_IFS=$IFS
++	IFS=':'
++	pth_pfx=
++	pth_nopfx=
++	for pth in ${new_PATH}; do
++		IFS=$save_IFS
++		if [[ "${pth#${EPREFIX}}" == "${pth}" ]]; then
++			[[ ":${pth_nopfx}:" == *":${pth}:"* ]] && continue
++			if [[ -z "${pth_nopfx}" ]]; then
++				pth_nopfx="${pth}"
++			else
++				pth_nopfx="${pth_nopfx}:${pth}"
++			fi
++		else
++			[[ ":${pth_pfx}:" == *":${pth}:"* ]] && continue
++			if [[ -z "${pth_pfx}" ]]; then
++				pth_pfx="${pth}"
++			else
++				pth_pfx="${pth_pfx}:${pth}"
++			fi
++		fi
++	done
++	IFS=$save_IFS
++
++	new_PATH=
++
++	save_IFS=$IFS
++	IFS=':'
++	for eroot in ${prefixes}; do
++		IFS=$save_IFS
++		if [[ -f ${eroot}/usr/share/portage/config/make.globals ]]; then
++			# ok, there is a portage instance installed in this prefix,
++			# so we can ask (politely) for the DEFAULT_PATH of it :)
++
++			defpath="$(. ${eroot}/etc/make.globals && echo $DEFAULT_PATH)"
++			okpath=
++			save_IFS2=$IFS
++			IFS=':'
++			for p in $defpath; do
++				IFS=$save_IFS2
++				# we have that one already...
++				[[ ":${new_PATH}:" == *":$p:"* ]] && continue
++				# we skip paths, that are outside our prefix ...
++				[[ "${p#${eroot}}" == "${p}" ]] && continue
++				if [[ -z "${okpath}" ]]; then
++					okpath="${p}"
++				else
++					okpath="${okpath}:${p}"
++				fi
++			done
++			IFS=$save_IFS2
++
++			new_PATH="${okpath}:${new_PATH}"
++		else
++			# no portage installed in this prefix. this means we have to
++			# somehow fiddle together a sane path for that prefix for at
++			# least the standard things to work.
++			new_PATH="${eroot}/usr/bin:${eroot}/usr/sbin:${eroot}/bin:${eroot}/sbin:${new_PATH}"
++		fi
++	done
++	IFS=$save_IFS
++
++	export PATH=${pth_pfx}:$new_PATH:${pth_nopfx}
++fi
++
+ source "${PORTAGE_BIN_PATH}/isolated-functions.sh"  &>/dev/null
+ 
+ [[ $PORTAGE_QUIET != "" ]] && export PORTAGE_QUIET
+@@ -1988,7 +2065,11 @@
+ 
+ 			#PATH=$_ebuild_helpers_path:$PREROOTPATH${PREROOTPATH:+:}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin${ROOTPATH:+:}$ROOTPATH
+ 			# PREFIX: same notes apply as at the top of this file
+-			PATH="$_ebuild_helpers_path:$PREROOTPATH${PREROOTPATH:+:}${DEFAULT_PATH}${ROOTPATH:+:}$ROOTPATH${EXTRA_PATH:+:}${EXTRA_PATH}"
++			#PATH="$_ebuild_helpers_path:$PREROOTPATH${PREROOTPATH:+:}${DEFAULT_PATH}${ROOTPATH:+:}$ROOTPATH${EXTRA_PATH:+:}${EXTRA_PATH}"
++			# PREFIX (with CHAINING!): why the heck not simply pre-pend the paths? hell,
++			# this shot down prefix-chaining, and made me search a while...
++			# PATH has been set up at the top of the file already.
++			PATH="${ebuild_helpers_path}:${PATH}"
+ 			unset _ebuild_helpers_path
+ 
+ 			if hasq distcc $FEATURES ; then
+diff -ru prefix-portage-2.2.00.15801.orig/pym/_emerge/actions.py prefix-portage-2.2.00.15801/pym/_emerge/actions.py
+--- prefix-portage-2.2.00.15801.orig/pym/_emerge/actions.py	2010-03-11 10:39:16 +0100
++++ prefix-portage-2.2.00.15801/pym/_emerge/actions.py	2010-03-11 10:38:21 +0100
+@@ -1783,8 +1783,9 @@
+ 				"control (contains %s).\n!!! Aborting rsync sync.\n") % \
+ 				(myportdir, vcs_dir), level=logging.ERROR, noiselevel=-1)
+ 			return 1
+-		if not os.path.exists(EPREFIX + "/usr/bin/rsync"):
+-			print("!!! " + EPREFIX + "/usr/bin/rsync does not exist, so rsync support is disabled.")
++		rsync_bin = portage.readonly_pathmatch_any(settings, "/usr/bin/rsync")
++		if not os.path.exists(rsync_bin):
++			print("!!! rsync binary does not exist, so rsync support is disabled.")
+ 			print("!!! Type \"emerge net-misc/rsync\" to enable rsync support.")
+ 			sys.exit(1)
+ 		mytimeout=180
+@@ -1957,7 +1958,7 @@
+ 			if mytimestamp != 0 and "--quiet" not in myopts:
+ 				print(">>> Checking server timestamp ...")
+ 
+-			rsynccommand = [EPREFIX + "/usr/bin/rsync"] + rsync_opts + extra_rsync_opts
++			rsynccommand = [rsync_bin] + rsync_opts + extra_rsync_opts
+ 
+ 			if "--debug" in myopts:
+ 				print(rsynccommand)
+@@ -2108,8 +2109,9 @@
+ 				out.eerror(line)
+ 			sys.exit(exitcode)
+ 	elif syncuri[:6]=="cvs://":
+-		if not os.path.exists(EPREFIX + "/usr/bin/cvs"):
+-			print("!!! " + EPREFIX + "/usr/bin/cvs does not exist, so CVS support is disabled.")
++		cvs_bin = portage.readonly_pathmatch_any(settings, "/usr/bin/cvs")
++		if not os.path.exists(cvs_bin):
++			print("!!! cvs binary does not exist, so CVS support is disabled.")
+ 			print("!!! Type \"emerge dev-util/cvs\" to enable CVS support.")
+ 			sys.exit(1)
+ 		cvsroot=syncuri[6:]
+@@ -2128,7 +2130,7 @@
+ 						"!!! existing '%s' directory; exiting.\n" % myportdir)
+ 					sys.exit(1)
+ 				del e
+-			if portage.spawn("cd "+cvsdir+"; cvs -z0 -d "+cvsroot+" co -P gentoo-x86",settings,free=1):
++			if portage.spawn("cd "+cvsdir+"; "+cvs_bin+" -z0 -d "+cvsroot+" co -P gentoo-x86",settings,free=1):
+ 				print("!!! cvs checkout error; exiting.")
+ 				sys.exit(1)
+ 			os.rename(os.path.join(cvsdir, "gentoo-x86"), myportdir)
+@@ -2136,15 +2138,16 @@
+ 			#cvs update
+ 			print(">>> Starting cvs update with "+syncuri+"...")
+ 			retval = portage.process.spawn_bash(
+-				"cd %s; cvs -z0 -q update -dP" % \
+-				(portage._shell_quote(myportdir),), **spawn_kwargs)
++				"cd %s; %s -z0 -q update -dP" % \
++				(portage._shell_quote(myportdir),cvs_bin), **spawn_kwargs)
+ 			if retval != os.EX_OK:
+ 				sys.exit(retval)
+ 		dosyncuri = syncuri
+ 	elif syncuri[:11]=="svn+http://" or syncuri[:6]=="svn://" or syncuri[:12]=="svn+https://":
+ 		# Gentoo Prefix hardcoded SVN support
+-		if not os.path.exists(EPREFIX + "/usr/bin/svn"):
+-			print("!!! " + EPREFIX + "/usr/bin/svn does not exist, so SVN support is disabled.")
++		svn_bin = portage.readonly_pathmatch_any(settings, "/usr/bin/svn")
++		if not os.path.exists(svn_bin):
++			print("!!! svn binary does not exist, so SVN support is disabled.")
+ 			print("!!! Type \"emerge dev-util/subversion\" to enable SVN support.")
+ 			sys.exit(1)
+ 		svndir=os.path.dirname(myportdir)
+@@ -2171,7 +2174,7 @@
+ 		else:
+ 			#svn update
+ 			print(">>> Starting svn update...")
+-			retval = portage.spawn("cd '%s'; svn update" % myportdir, \
++			retval = portage.spawn("cd '%s'; %s update" % (myportdir,svn_bin), \
+ 				settings, free=1)
+ 			if retval != os.EX_OK:
+ 				sys.exit(retval)
+diff -ru prefix-portage-2.2.00.15801.orig/pym/_emerge/depgraph.py prefix-portage-2.2.00.15801/pym/_emerge/depgraph.py
+--- prefix-portage-2.2.00.15801.orig/pym/_emerge/depgraph.py	2010-03-11 10:39:16 +0100
++++ prefix-portage-2.2.00.15801/pym/_emerge/depgraph.py	2010-03-11 10:39:49 +0100
+@@ -17,6 +17,7 @@
+ from portage.dbapi import dbapi
+ from portage.dbapi.dep_expand import dep_expand
+ from portage.dep import Atom
++from portage.dep.dep_check import ro_selected
+ from portage.output import bold, blue, colorize, create_color_func, darkblue, \
+ 	darkgreen, green, nc_len, red, teal, turquoise, yellow
+ bad = create_color_func("BAD")
+@@ -1143,14 +1144,14 @@
+ 					edepend["DEPEND"] = ""
+ 
+ 		deps = (
+-			(bdeps_root, edepend["DEPEND"],
++			(bdeps_root, "DEPEND",
+ 				self._priority(buildtime=(not bdeps_optional),
+ 				optional=bdeps_optional),
+ 				pkg.built),
+-			(myroot, edepend["RDEPEND"],
++			(myroot, "RDEPEND",
+ 				self._priority(runtime=True),
+ 				False),
+-			(myroot, edepend["PDEPEND"],
++			(myroot, "PDEPEND",
+ 				self._priority(runtime_post=True),
+ 				False)
+ 		)
+@@ -1161,7 +1162,8 @@
+ 			if not strict:
+ 				portage.dep._dep_check_strict = False
+ 
+-			for dep_root, dep_string, dep_priority, ignore_blockers in deps:
++			for dep_root, dep_type, dep_priority, ignore_blockers in deps:
++				dep_string = edepend[dep_type]
+ 				if not dep_string:
+ 					continue
+ 				if debug:
+@@ -1180,7 +1182,7 @@
+ 						uselist=pkg.use.enabled))
+ 
+ 					dep_string = list(self._queue_disjunctive_deps(
+-						pkg, dep_root, dep_priority, dep_string))
++						pkg, dep_root, dep_priority, dep_string, dep_type))
+ 
+ 				except portage.exception.InvalidDependString as e:
+ 					if pkg.installed:
+@@ -1196,7 +1198,7 @@
+ 
+ 				if not self._add_pkg_dep_string(
+ 					pkg, dep_root, dep_priority, dep_string,
+-					allow_unsatisfied, ignore_blockers=ignore_blockers):
++					allow_unsatisfied, ignore_blockers=ignore_blockers, dep_type=dep_type):
+ 					return 0
+ 
+ 		except portage.exception.AmbiguousPackageName as e:
+@@ -1224,7 +1226,7 @@
+ 		return 1
+ 
+ 	def _add_pkg_dep_string(self, pkg, dep_root, dep_priority, dep_string,
+-		allow_unsatisfied, ignore_blockers=False):
++		allow_unsatisfied, ignore_blockers=False, dep_type=None):
+ 		depth = pkg.depth + 1
+ 		debug = "--debug" in self._frozen_config.myopts
+ 		strict = pkg.type_name != "installed"
+@@ -1240,7 +1242,7 @@
+ 		try:
+ 			selected_atoms = self._select_atoms(dep_root,
+ 				dep_string, myuse=pkg.use.enabled, parent=pkg,
+-				strict=strict, priority=dep_priority)
++				strict=strict, priority=dep_priority, dep_type=dep_type)
+ 		except portage.exception.InvalidDependString as e:
+ 			show_invalid_depstring_notice(pkg, dep_string, str(e))
+ 			del e
+@@ -1395,7 +1397,7 @@
+ 				child_pkgs = atom_pkg_graph.child_nodes(atom)
+ 				yield (atom, child_pkgs[0])
+ 
+-	def _queue_disjunctive_deps(self, pkg, dep_root, dep_priority, dep_struct):
++	def _queue_disjunctive_deps(self, pkg, dep_root, dep_priority, dep_struct, dep_type=None):
+ 		"""
+ 		Queue disjunctive (virtual and ||) deps in self._dynamic_config._dep_disjunctive_stack.
+ 		Yields non-disjunctive deps. Raises InvalidDependString when 
+@@ -1406,11 +1408,11 @@
+ 			x = dep_struct[i]
+ 			if isinstance(x, list):
+ 				for y in self._queue_disjunctive_deps(
+-					pkg, dep_root, dep_priority, x):
++					pkg, dep_root, dep_priority, x, dep_type):
+ 					yield y
+ 			elif x == "||":
+ 				self._queue_disjunction(pkg, dep_root, dep_priority,
+-					[ x, dep_struct[ i + 1 ] ] )
++					[ x, dep_struct[ i + 1 ] ] , dep_type)
+ 				i += 1
+ 			else:
+ 				try:
+@@ -1425,25 +1427,25 @@
+ 					# purpose.
+ 					if x.cp.startswith('virtual/'):
+ 						self._queue_disjunction( pkg, dep_root,
+-							dep_priority, [ str(x) ] )
++							dep_priority, [ str(x) ] , dep_type)
+ 					else:
+ 						yield str(x)
+ 			i += 1
+ 
+-	def _queue_disjunction(self, pkg, dep_root, dep_priority, dep_struct):
++	def _queue_disjunction(self, pkg, dep_root, dep_priority, dep_struct, dep_type=None):
+ 		self._dynamic_config._dep_disjunctive_stack.append(
+-			(pkg, dep_root, dep_priority, dep_struct))
++			(pkg, dep_root, dep_priority, dep_struct, dep_type))
+ 
+ 	def _pop_disjunction(self, allow_unsatisfied):
+ 		"""
+ 		Pop one disjunctive dep from self._dynamic_config._dep_disjunctive_stack, and use it to
+ 		populate self._dynamic_config._dep_stack.
+ 		"""
+-		pkg, dep_root, dep_priority, dep_struct = \
++		pkg, dep_root, dep_priority, dep_struct, dep_type = \
+ 			self._dynamic_config._dep_disjunctive_stack.pop()
+ 		dep_string = portage.dep.paren_enclose(dep_struct)
+ 		if not self._add_pkg_dep_string(
+-			pkg, dep_root, dep_priority, dep_string, allow_unsatisfied):
++			pkg, dep_root, dep_priority, dep_string, allow_unsatisfied, dep_type):
+ 			return 0
+ 		return 1
+ 
+@@ -2063,12 +2065,18 @@
+ 		return self._select_atoms_highest_available(*pargs, **kwargs)
+ 
+ 	def _select_atoms_highest_available(self, root, depstring,
+-		myuse=None, parent=None, strict=True, trees=None, priority=None):
++		myuse=None, parent=None, strict=True, trees=None, priority=None, dep_type=None):
+ 		"""This will raise InvalidDependString if necessary. If trees is
+ 		None then self._dynamic_config._filtered_trees is used."""
+ 		pkgsettings = self._frozen_config.pkgsettings[root]
+ 		if trees is None:
+ 			trees = self._dynamic_config._filtered_trees
++
++		# this one is needed to guarantee good readonly root
++		# resolution display in the merge list. required since
++		# parent (below) can be None
++		trees[root]["disp_parent"] = parent
++
+ 		atom_graph = digraph()
+ 		if True:
+ 			try:
+@@ -2081,7 +2089,7 @@
+ 					portage.dep._dep_check_strict = False
+ 				mycheck = portage.dep_check(depstring, None,
+ 					pkgsettings, myuse=myuse,
+-					myroot=root, trees=trees)
++					myroot=root, trees=trees, dep_type=dep_type)
+ 			finally:
+ 				if parent is not None:
+ 					trees[root].pop("parent")
+@@ -2116,6 +2124,7 @@
+ 				selected_atoms[pkg] = [atom for atom in \
+ 					atom_graph.child_nodes(node) if atom in chosen_atoms]
+ 
++		trees[root].pop("disp_parent")
+ 		return selected_atoms
+ 
+ 	def _show_unsatisfied_dep(self, root, atom, myparent=None, arg=None,
+@@ -4633,6 +4642,37 @@
+ 		for x in blockers:
+ 			print(x)
+ 
++		# print readonly selected packages
++		if len(ro_selected) > 0:
++			out.write("\n%s\n\n" % (darkgreen("Packages resolved from readonly installations:")))
++
++		ro_mismatch_warning = False
++		ro_dupcheck = []
++		for x in ro_selected:
++			tmp_type = x["type"].replace("END","")
++			while len(tmp_type) < 4:
++				tmp_type += " "
++			if str(x["atom"]) not in ro_dupcheck:
++				out.write("[%s %s] %s %s %s (%s by %s)" % (teal("readonly"), 
++					green(tmp_type), green(str(x["matches"][0])), yellow("from"), 
++					blue(x["ro_root"]), turquoise(str(x["atom"])), green(x["parent"].cpv)))
++
++				ro_dupcheck.append(str(x["atom"]))
++
++				if x["host_mismatch"]:
++					ro_mismatch_warning = True
++					out.write(" %s\n" % (red("**")))
++				else:
++					out.write("\n")
++
++		if ro_mismatch_warning:
++			out.write("\n%s:" % (red("**")))
++			out.write(yellow(" WARNING: packages marked with ** have been resolved as a\n"))
++			out.write(yellow("    runtime dependency, but the CHOST variable for the parent\n"))
++			out.write(yellow("    and dependency package don't match. This could cause link\n"))
++			out.write(yellow("    errors. It is recommended to use RDEPEND READONLY_EPREFIX's\n"))
++			out.write(yellow("    only with matching CHOST portage instances.\n"))
++
+ 		if verbosity == 3:
+ 			print()
+ 			print(counters)
+diff -ru prefix-portage-2.2.00.15801.orig/pym/portage/__init__.py prefix-portage-2.2.00.15801/pym/portage/__init__.py
+--- prefix-portage-2.2.00.15801.orig/pym/portage/__init__.py	2010-03-11 10:39:16 +0100
++++ prefix-portage-2.2.00.15801/pym/portage/__init__.py	2010-03-11 10:40:37 +0100
+@@ -85,7 +85,7 @@
+ 		'portage.dep:best_match_to_list,dep_getcpv,dep_getkey,' + \
+ 			'flatten,get_operator,isjustname,isspecific,isvalidatom,' + \
+ 			'match_from_list,match_to_list',
+-		'portage.dep.dep_check:dep_check,dep_eval,dep_wordreduce,dep_zapdeps',
++		'portage.dep.dep_check:dep_check,dep_eval,dep_wordreduce,dep_zapdeps,dep_wordreduce_readonly',
+ 		'portage.eclass_cache',
+ 		'portage.env.loaders',
+ 		'portage.exception',
+diff -ru prefix-portage-2.2.00.15801.orig/pym/portage/dbapi/vartree.py prefix-portage-2.2.00.15801/pym/portage/dbapi/vartree.py
+--- prefix-portage-2.2.00.15801.orig/pym/portage/dbapi/vartree.py	2010-03-11 10:39:16 +0100
++++ prefix-portage-2.2.00.15801/pym/portage/dbapi/vartree.py	2010-03-11 10:38:21 +0100
+@@ -1837,9 +1837,20 @@
+ 		self._counter_path = os.path.join(root,
+ 			CACHE_PATH, "counter")
+ 
++		plibreg_path = os.path.join(self.root, PRIVATE_PATH, "preserved_libs_registry")
++
++		if vartree:
++			self._kill_eprefix = vartree._kill_eprefix
++		else:
++			self._kill_eprefix = False
++
++		if self._kill_eprefix:
++			self._aux_cache_filename = os.path.join(self.root, self._aux_cache_filename.replace(EPREFIX, ""))
++			self._counter_path = os.path.join(self.root, self._counter_path.replace(EPREFIX, ""))
++			plibreg_path = os.path.join(self.root, plibreg_path.replace(EPREFIX, ""))
++
+ 		try:
+-			self.plib_registry = PreservedLibsRegistry(self.root,
+-				os.path.join(self.root, PRIVATE_PATH, "preserved_libs_registry"))
++			self.plib_registry = PreservedLibsRegistry(self.root, plibreg_path)
+ 		except PermissionDenied:
+ 			# apparently this user isn't allowed to access PRIVATE_PATH
+ 			self.plib_registry = None
+@@ -1861,6 +1872,9 @@
+ 		# This is an optimized hotspot, so don't use unicode-wrapped
+ 		# os module and don't use os.path.join().
+ 		rValue = self.root + _os.sep + VDB_PATH + _os.sep + mykey
++		if self._kill_eprefix:
++			rValue = rValue.replace(EPREFIX, "")
++
+ 		if filename is not None:
+ 			# If filename is always relative, we can do just
+ 			# rValue += _os.sep + filename
+@@ -2012,6 +2026,9 @@
+ 		returnme = []
+ 		basepath = os.path.join(self.root, VDB_PATH) + os.path.sep
+ 
++		if self._kill_eprefix:
++			basepath = os.path.join(self.root, basepath.replace(EPREFIX, ""))
++
+ 		if use_cache:
+ 			from portage import listdir
+ 		else:
+@@ -2102,7 +2119,12 @@
+ 			return list(self._iter_match(mydep,
+ 				self.cp_list(mydep.cp, use_cache=use_cache)))
+ 		try:
+-			curmtime = os.stat(os.path.join(self.root, VDB_PATH, mycat)).st_mtime
++			_tmp_path = os.path.join(self.root, VDB_PATH, mycat)
++			
++			if self._kill_eprefix:
++				_tmp_path = os.path.join(self.root, _tmp_path.replace(EPREFIX, ""))
++
++			curmtime = os.stat(_tmp_path).st_mtime
+ 		except (IOError, OSError):
+ 			curmtime=0
+ 
+@@ -2689,7 +2711,7 @@
+ class vartree(object):
+ 	"this tree will scan a var/db/pkg database located at root (passed to init)"
+ 	def __init__(self, root="/", virtual=None, clone=None, categories=None,
+-		settings=None):
++		settings=None, kill_eprefix=False):
+ 		if clone:
+ 			writemsg("vartree.__init__(): deprecated " + \
+ 				"use of clone parameter\n", noiselevel=-1)
+@@ -2698,6 +2720,7 @@
+ 			self.populated = 1
+ 			from portage import config
+ 			self.settings = config(clone=clone.settings)
++			self._kill_eprefix = clone._kill_eprefix
+ 		else:
+ 			self.root = root[:]
+ 			if settings is None:
+@@ -2705,6 +2728,7 @@
+ 			self.settings = settings
+ 			if categories is None:
+ 				categories = settings.categories
++			self._kill_eprefix=kill_eprefix
+ 			self.dbapi = vardbapi(self.root, categories=categories,
+ 				settings=settings, vartree=self)
+ 			self.populated = 1
+@@ -2736,6 +2760,10 @@
+ 			raise
+ 		except Exception as e:
+ 			mydir = os.path.join(self.root, VDB_PATH, mycpv)
++
++			if self._kill_eprefix:
++				mydir = os.path.join(self.root, mydir.replace(EPREFIX, ""))
++
+ 			writemsg(_("\nParse Error reading PROVIDE and USE in '%s'\n") % mydir,
+ 				noiselevel=-1)
+ 			if mylines:
+diff -ru prefix-portage-2.2.00.15801.orig/pym/portage/dep/dep_check.py prefix-portage-2.2.00.15801/pym/portage/dep/dep_check.py
+--- prefix-portage-2.2.00.15801.orig/pym/portage/dep/dep_check.py	2010-03-11 10:39:16 +0100
++++ prefix-portage-2.2.00.15801/pym/portage/dep/dep_check.py	2010-03-11 10:40:52 +0100
+@@ -244,6 +244,95 @@
+ 				return 0
+ 		return 1
+ 
++ro_trees={}
++ro_vartrees={}
++ro_selected=[]
++
++def dep_match_readonly_roots(settings, atom, dep_type, parent=None):
++	if len(ro_trees) < len(settings.readonly_roots):
++		# MDUFT: create additional vartrees for every readonly root here.
++		# the ro_vartrees instances are created below as they are needed to
++		# avoid reading vartrees of portage instances which aren't required
++		# while resolving this dependencies.
++		for type in ("DEPEND","RDEPEND", "PDEPEND"):
++			ro_trees[type] = []
++			
++			for ro_root, ro_dep_types in settings.readonly_roots.items():
++				if type in ro_dep_types:
++					ro_trees[type].append(ro_root)
++
++	if len(ro_trees) == 0:
++		return []
++	
++	matches = []
++
++	for ro_root in ro_trees[dep_type]:
++		if not ro_vartrees.has_key(ro_root):
++			# target_root=ro_root ok? or should it be the real target_root?
++			_tmp_settings = portage.config(config_root=ro_root, target_root=ro_root,
++				config_incrementals=portage.const.INCREMENTALS)
++			
++			ro_vartrees[ro_root] = portage.vartree(root=ro_root, 
++				categories=_tmp_settings.categories, 
++				settings=_tmp_settings, kill_eprefix=True)
++				
++		ro_matches = ro_vartrees[ro_root].dbapi.match(atom)
++
++		if ro_matches:
++			ro_host_mismatch = False
++			if dep_type is "RDEPEND":
++				# we need to assure binary compatability, so it needs to be
++				# the same CHOST! But how? for now i cannot do anything...
++				if parent and parent.metadata["CHOST"] != ro_vartrees[ro_root].settings.get("CHOST", ""):
++					# provocate a big fat warning in the list of external packages.
++					ro_host_mismatch = True
++				pass
++
++			matches.append({ "ro_root": ro_root, "atom": atom, "matches": ro_matches, 
++				"type": dep_type, "parent": parent, "host_mismatch": ro_host_mismatch })
++
++	return matches
++
++def dep_wordreduce_readonly(reduced, unreduced, settings, dep_type, parent):
++	for mypos, token in enumerate(unreduced):
++		# recurse if it's a list.
++		if isinstance(reduced[mypos], list):
++			reduced[mypos] = dep_wordreduce_readonly(reduced[mypos], 
++				unreduced[mypos], settings, dep_type, parent)
++		# do nothing if it's satisfied already.
++		elif not reduced[mypos]:
++			ro_matches = dep_match_readonly_roots(settings, unreduced[mypos], dep_type, parent)
++
++			if ro_matches:
++				# TODO: select a match if there are more than one?
++				# for now, the first match is taken...
++				ro_selected.append(ro_matches[0])
++				reduced[mypos] = True
++
++	return reduced
++
++# this may be better placed somewhere else, but i put it here for now, to
++# keep all functions in the patch on one big heap.
++def readonly_pathmatch_any(settings, path):
++	path = path.lstrip('/')
++	# first try locally, and match that if it exists.
++	if os.path.exists(os.path.join(EPREFIX,path)):
++		return os.path.join(EPREFIX,path)
++
++	# after that try all readonly roots where DEPEND is allowed. this makes
++	# sure that executing binaries is possible from there.
++	for ro_root, ro_deps in settings.readonly_roots.items():
++		if "DEPEND" in ro_deps:
++			print(" --- checking %s --- " % (os.path.join(ro_root,path)))
++			if os.path.exists(os.path.join(ro_root,path)):
++				return os.path.join(ro_root,path)
++			break
++	
++	# as a fallback make the string the same as it was originally.
++	# even though this path doesn't exist.
++	return os.path.join(EPREFIX,path)
++
++
+ def dep_zapdeps(unreduced, reduced, myroot, use_binaries=0, trees=None):
+ 	"""
+ 	Takes an unreduced and reduced deplist and removes satisfied dependencies.
+@@ -501,7 +590,7 @@
+ 	assert(False) # This point should not be reachable
+ 
+ def dep_check(depstring, mydbapi, mysettings, use="yes", mode=None, myuse=None,
+-	use_cache=1, use_binaries=0, myroot="/", trees=None):
++	use_cache=1, use_binaries=0, myroot="/", trees=None , dep_type=None):
+ 	"""Takes a depend string and parses the condition."""
+ 	edebug = mysettings.get("PORTAGE_DEBUG", None) == "1"
+ 	#check_config_instance(mysettings)
+@@ -579,6 +668,14 @@
+ 	writemsg("mysplit:  %s\n" % (mysplit), 1)
+ 	writemsg("mysplit2: %s\n" % (mysplit2), 1)
+ 
++	if dep_type is not None:
++		mysplit2=dep_wordreduce_readonly(unreduced=mysplit[:], 
++			reduced=mysplit2, settings=mysettings, 
++			dep_type=dep_type, parent=trees[myroot].get("disp_parent"))
++
++		writemsg("\n", 1)
++		writemsg("mysplit2 after readonly reduce: %s\n" % (mysplit2), 1)
++
+ 	try:
+ 		selected_atoms = dep_zapdeps(mysplit, mysplit2, myroot,
+ 			use_binaries=use_binaries, trees=trees)
+diff -ru prefix-portage-2.2.00.15801.orig/pym/portage/exception.py prefix-portage-2.2.00.15801/pym/portage/exception.py
+--- prefix-portage-2.2.00.15801.orig/pym/portage/exception.py	2010-03-11 10:39:16 +0100
++++ prefix-portage-2.2.00.15801/pym/portage/exception.py	2010-03-11 10:38:21 +0100
+@@ -128,3 +128,6 @@
+ class UntrustedSignature(SignatureException):
+ 	"""Signature was not certified to the desired security level"""
+ 
++class InvalidReadonlyERoot(PortageException):
++	"""Readonly EROOT definition string in make.conf invalid."""
++
+diff -ru prefix-portage-2.2.00.15801.orig/pym/portage/package/ebuild/config.py prefix-portage-2.2.00.15801/pym/portage/package/ebuild/config.py
+--- prefix-portage-2.2.00.15801.orig/pym/portage/package/ebuild/config.py	2010-03-11 10:39:16 +0100
++++ prefix-portage-2.2.00.15801/pym/portage/package/ebuild/config.py	2010-03-11 10:38:21 +0100
+@@ -427,6 +427,7 @@
+ 			self.prevmaskdict = copy.deepcopy(clone.prevmaskdict)
+ 			self.pprovideddict = copy.deepcopy(clone.pprovideddict)
+ 			self.features = copy.deepcopy(clone.features)
++			self.readonly_roots = copy.deepcopy(clone.readonly_roots)
+ 
+ 			self._accept_license = copy.deepcopy(clone._accept_license)
+ 			self._plicensedict = copy.deepcopy(clone._plicensedict)
+@@ -1017,6 +1018,50 @@
+ 				_validate_cache_for_unsupported_eapis = False
+ 				_glep_55_enabled = True
+ 
++			# expand READONLY_EPREFIX to a list of all readonly portage instances
++			# all the way down to the last one. beware that ATM a deeper instance
++			# in the chain can provide more than the toplevel! this means that
++			# if you only inherit DEPENDS from one instance, that instance may
++			# inherit RDEPENDs from another one, making the top-level instance
++			# inherit RDEPENDs from there too - even if the intermediate prefix
++			# does not do this.
++			self.readonly_roots = {}
++			my_ro_current_instance = config_root
++			my_ro_widest_depset = set(['DEPEND', 'RDEPEND', 'PDEPEND'])
++
++			while True:
++				my_ro_current_make_conf_file = os.path.join(my_ro_current_instance,MAKE_CONF_FILE.lstrip(os.path.sep))
++
++				if os.path.exists(my_ro_current_make_conf_file):
++					my_ro_cfg = getconfig(my_ro_current_make_conf_file, tolerant=1)
++					
++					if my_ro_cfg.has_key("READONLY_EPREFIX"):
++						if not my_ro_cfg["READONLY_EPREFIX"].find(":"):
++							raise portage.exception.InvalidReadonlyERoot("ERROR: malformed READONLY_EPREFIX in %s" % (my_ro_current_make_conf_file))
++
++						(my_ro_cfg_root,my_ro_cfg_root_deps) = my_ro_cfg["READONLY_EPREFIX"].rsplit(":",1)
++
++						if not os.path.exists(my_ro_cfg_root):
++							raise portage.exception.InvalidReadonlyERoot("ERROR: malformed READONLY_EPREFIX in %s: path does not exist!" % (my_ro_current_instance))
++
++						if self.readonly_roots.has_key(my_ro_cfg_root):
++							raise portage.exception.InvalidReadonlyERoot("ERROR: circular READONLY_EPREFIX's in %s. %s already checked for %s" % (my_ro_current_make_conf_file, my_ro_cfg_root, self.readonly_roots[my_ro_cfg_root]))
++
++						if my_ro_cfg_root == config_root:
++							raise portage.exception.InvalidReadonlyERoot("ERROR: cannot add this instance as READONLY_EPREFIX in %s." % (my_ro_current_make_conf_file))
++
++						# intersect the widest depset with the current one to strip down
++						# the allowed dependency resolution to not be wider than the
++						# next higher one. this way we can prevent for a given prefix
++						# to resolve RDEPENDs from a prefix with a different CHOST that
++						# is a few levels deeper in the chain.
++						my_ro_widest_depset = set(my_ro_cfg_root_deps.split(",")) & my_ro_widest_depset
++						self.readonly_roots[my_ro_cfg_root] = my_ro_widest_depset
++						my_ro_current_instance = my_ro_cfg_root
++						continue
++
++				break
++
+ 		for k in self._case_insensitive_vars:
+ 			if k in self:
+ 				self[k] = self[k].lower()
+@@ -2574,6 +2619,10 @@
+ 		if eapi not in ("0", "1", "2", "3", "3_pre2"):
+ 			mydict.pop("AA", None)
+ 
++		# populate with PORTAGE_READONLY_EPREFIXES
++		if self.readonly_roots and len(self.readonly_roots) > 0:
++			mydict["PORTAGE_READONLY_EPREFIXES"] = ':'.join(self.readonly_roots)
++
+ 		# Prefix variables are supported starting with EAPI 3.
+ 		# but during transition, we just support them anywhere
+ 		#if phase == 'depend' or eapi in (None, "0", "1", "2"):

diff --git a/sys-apps/portage/files/portage-2.2.01.18213-ebuildshell.patch b/sys-apps/portage/files/portage-2.2.01.18213-ebuildshell.patch
new file mode 100644
index 0000000..59e98af
--- /dev/null
+++ b/sys-apps/portage/files/portage-2.2.01.18213-ebuildshell.patch
@@ -0,0 +1,105 @@
+http://bugs.gentoo.org/show_bug.cgi?id=155161
+
+--- portage/bin/ebuild.sh.orig	2010-12-15 11:12:12.466527126 +0100
++++ portage/bin/ebuild.sh	2010-12-15 11:11:04.757062756 +0100
+@@ -59,7 +59,7 @@
+ qa_call() {
+ 	local shopts=$(shopt) OLDIFS="$IFS"
+ 	local retval
+-	"$@"
++	call-ebuildshell "$@"
+ 	retval=$?
+ 	set +e
+ 	[[ $shopts != $(shopt) ]] &&
+@@ -1765,7 +1765,7 @@
+ filter_readonly_variables() {
+ 	local x filtered_vars
+ 	local readonly_bash_vars="BASHOPTS BASHPID DIRSTACK EUID
+-		FUNCNAME GROUPS PIPESTATUS PPID SHELLOPTS UID"
++		FUNCNAME GROUPS PIPESTATUS PPID SHELLOPTS UID BASH_VERSINFO"
+ 	local bash_misc_vars="BASH BASH_.* COMP_WORDBREAKS HISTCMD
+ 		HISTFILE HOSTNAME HOSTTYPE IFS LINENO MACHTYPE OLDPWD
+ 		OPTERR OPTIND OSTYPE POSIXLY_CORRECT PS4 PWD RANDOM
+@@ -1774,8 +1774,10 @@
+ 		SANDBOX_DEBUG_LOG SANDBOX_DISABLED SANDBOX_LIB
+ 		SANDBOX_LOG SANDBOX_ON"
+ 	local misc_garbage_vars="_portage_filter_opts"
+-	filtered_vars="$readonly_bash_vars $bash_misc_vars
+-		$PORTAGE_READONLY_VARS $misc_garbage_vars"
++	filtered_vars="$readonly_bash_vars"
++	if ! hasq --filter-for-subshell $* ; then
++		filtered_vars="$filtered_vars $bash_misc_vars $PORTAGE_READONLY_VARS $misc_garbage_vars"
++	fi
+ 
+ 	# Don't filter/interfere with prefix variables unless they are
+ 	# supported by the current EAPI.
+@@ -1805,7 +1807,11 @@
+ 			LC_CTYPE LC_MESSAGES LC_MONETARY
+ 			LC_NUMERIC LC_PAPER LC_TIME"
+ 	fi
+-	if ! hasq --allow-extra-vars $* ; then
++	if hasq --filter-metadata $* ; then
++		filtered_vars="$filtered_vars $PORTAGE_READONLY_METADATA"
++	fi
++	if ! hasq --allow-extra-vars $* &&
++	   ! hasq --filter-for-subshell $* ; then
+ 		filtered_vars="
+ 			${filtered_vars}
+ 			${PORTAGE_SAVED_READONLY_VARS}
+@@ -1936,6 +1942,56 @@
+ 	unset BIN_PATH BIN BODY FUNC_SRC
+ fi
+ 
++call-ebuildshell() {
++	if ! hasq ebuildshell ${FEATURES}; then
++		"$@"
++		return $?
++	fi
++	(
++		umask 002
++		(
++			(
++				set
++				declare -p
++				declare -fp
++				shopt -p
++				if [[ ${BASH_VERSINFO[0]} == 3 ]]; then
++					export
++				fi
++			) | filter_readonly_variables --filter-for-subshell
++			echo 'declare -r $PORTAGE_READONLY_METADATA $PORTAGE_READONLY_VARS'
++			echo "export PS1='EBUILD ${PN} $1 \$ '" 
++			echo 'unset ENV'
++			echo "type $1"
++			echo "echo WANTED: $@"
++			echo "trap '"
++			echo "umask 002"
++			echo "("
++			echo "	set"
++			echo "	declare -p"
++			echo "	declare -fp"
++			echo "	shopt -p"
++			if [[ ${BASH_VERSINFO[0]} == 3 ]]; then
++				echo "	export"
++			fi
++			echo -n ")"
++			echo -n " | filter_readonly_variables --filter-metadata"
++			echo " > ${T}/ebuildshell-environment-outcome' 0"
++		) > ${T}/ebuildshell-environment
++		chown portage:portage "${T}/ebuildshell-environment" &>/dev/null
++		chmod g+w "${T}/ebuildshell-environment" &>/dev/null
++	)
++
++	rm -f "${T}/ebuildshell-environment-outcome" >&/dev/null
++
++	unset BASH_ENV
++	env -i ${BASH} --rcfile "${T}/ebuildshell-environment"  -i || die
++
++	chown portage:portage "${T}/ebuildshell-environment-outcome" &>/dev/null
++	chmod g+w "${T}/ebuildshell-environment-outcome" &>/dev/null
++	source "${T}/ebuildshell-environment-outcome" &>/dev/null
++}
++
+ # Subshell/helper die support (must export for the die helper).
+ export EBUILD_MASTER_PID=$BASHPID
+ trap 'exit 1' SIGTERM

diff --git a/sys-apps/portage/files/portage-2.2.01.18826-aix-preservelibs.patch b/sys-apps/portage/files/portage-2.2.01.18826-aix-preservelibs.patch
new file mode 100644
index 0000000..002f11c
--- /dev/null
+++ b/sys-apps/portage/files/portage-2.2.01.18826-aix-preservelibs.patch
@@ -0,0 +1,32 @@
+Need to list executables in NEEDED.XCOFF.1 too for preserve-libs.
+
+Do not prepend filenames with '.' twice when calculating the preserve-lib
+helper-filenames. Can't say which commit triggers this problem, as this
+did work before.
+--- bin/misc-functions.sh.orig	2011-06-16 17:15:47 +0200
++++ bin/misc-functions.sh	2011-06-16 17:17:13 +0200
+@@ -1178,7 +1178,9 @@
+ 			fi
+ 			prev_FILE=${FILE}
+ 
+-			[[ " ${FLAGS} " == *" SHROBJ "* ]] || continue
++			# shared objects have both EXEC and SHROBJ flags,
++			# while executables have EXEC flag only.
++			[[ " ${FLAGS} " == *" EXEC "* ]] || continue
+ 
+ 			# Make sure we disallow insecure RUNPATH's
+ 			# Don't want paths that point to the tree where the package was built
+--- pym/portage/util/_dyn_libs/LinkageMapXCoff.py.orig	2011-06-17 11:26:45 +0200
++++ pym/portage/util/_dyn_libs/LinkageMapXCoff.py	2011-06-17 11:32:13 +0200
+@@ -255,7 +255,11 @@
+ 			def as_contentmember(obj):
+ 				if obj.endswith("]"):
+ 					if obj.find("/") >= 0:
++						if obj[obj.rfind("/")+1] == ".":
++							return obj
+ 						return obj[:obj.rfind("/")] + "/." + obj[obj.rfind("/")+1:]
++					if obj[0] == ".":
++						return obj
+ 					return "." + obj
+ 				return obj
+ 

diff --git a/sys-apps/portage/files/portage-2.2.01.18980-ebuildshell.patch b/sys-apps/portage/files/portage-2.2.01.18980-ebuildshell.patch
new file mode 100644
index 0000000..b8911f2
--- /dev/null
+++ b/sys-apps/portage/files/portage-2.2.01.18980-ebuildshell.patch
@@ -0,0 +1,103 @@
+--- prefix-portage-2.2.01.18980/bin/ebuild.sh
++++ prefix-portage-2.2.01.18980/bin/ebuild.sh
+@@ -59,7 +59,7 @@
+ qa_call() {
+ 	local shopts=$(shopt) OLDIFS="$IFS"
+ 	local retval
+-	"$@"
++	call-ebuildshell "$@"
+ 	retval=$?
+ 	set +e
+ 	[[ $shopts != $(shopt) ]] &&
+@@ -1824,7 +1824,7 @@
+ filter_readonly_variables() {
+ 	local x filtered_vars
+ 	local readonly_bash_vars="BASHOPTS BASHPID DIRSTACK EUID
+-		FUNCNAME GROUPS PIPESTATUS PPID SHELLOPTS UID"
++		FUNCNAME GROUPS PIPESTATUS PPID SHELLOPTS UID BASH_VERSINFO"
+ 	local bash_misc_vars="BASH BASH_.* COMP_WORDBREAKS HISTCMD
+ 		HISTFILE HOSTNAME HOSTTYPE IFS LINENO MACHTYPE OLDPWD
+ 		OPTERR OPTIND OSTYPE POSIXLY_CORRECT PS4 PWD RANDOM
+@@ -1833,8 +1833,10 @@
+ 		SANDBOX_DEBUG_LOG SANDBOX_DISABLED SANDBOX_LIB
+ 		SANDBOX_LOG SANDBOX_ON"
+ 	local misc_garbage_vars="_portage_filter_opts"
+-	filtered_vars="$readonly_bash_vars $bash_misc_vars
+-		$PORTAGE_READONLY_VARS $misc_garbage_vars"
++	filtered_vars="$readonly_bash_vars"
++	if ! has --filter-for-subshell $* ; then
++		filtered_vars="$filtered_vars $bash_misc_vars $PORTAGE_READONLY_VARS $misc_garbage_vars"
++	fi
+ 
+ 	# Don't filter/interfere with prefix variables unless they are
+ 	# supported by the current EAPI.
+@@ -1864,7 +1866,11 @@
+ 			LC_CTYPE LC_MESSAGES LC_MONETARY
+ 			LC_NUMERIC LC_PAPER LC_TIME"
+ 	fi
+-	if ! has --allow-extra-vars $* ; then
++	if has --filter-metadata $* ; then
++		filtered_vars="$filtered_vars $PORTAGE_READONLY_METADATA"
++	fi
++	if ! has --allow-extra-vars $* &&
++	   ! has --filter-for-subshell $* ; then
+ 		filtered_vars="
+ 			${filtered_vars}
+ 			${PORTAGE_SAVED_READONLY_VARS}
+@@ -1995,6 +2001,56 @@
+ 	unset BIN_PATH BIN BODY FUNC_SRC
+ fi
+ 
++call-ebuildshell() {
++	if ! has ebuildshell ${FEATURES}; then
++		"$@"
++		return $?
++	fi
++	(
++		umask 002
++		(
++			(
++				set
++				declare -p
++				declare -fp
++				shopt -p
++				if [[ ${BASH_VERSINFO[0]} == 3 ]]; then
++					export
++				fi
++			) | filter_readonly_variables --filter-for-subshell
++			echo 'declare -r $PORTAGE_READONLY_METADATA $PORTAGE_READONLY_VARS'
++			echo "export PS1='EBUILD ${PN} $1 \$ '" 
++			echo 'unset ENV'
++			echo "type $1"
++			echo "echo WANTED: $@"
++			echo "trap '"
++			echo "umask 002"
++			echo "("
++			echo "	set"
++			echo "	declare -p"
++			echo "	declare -fp"
++			echo "	shopt -p"
++			if [[ ${BASH_VERSINFO[0]} == 3 ]]; then
++				echo "	export"
++			fi
++			echo -n ")"
++			echo -n " | filter_readonly_variables --filter-metadata"
++			echo " > ${T}/ebuildshell-environment-outcome' 0"
++		) > ${T}/ebuildshell-environment
++		chown ${PORTAGE_USER:-portage}:${PORTAGE_GROUP:-portage} "${T}/ebuildshell-environment" &>/dev/null
++		chmod g+w "${T}/ebuildshell-environment" &>/dev/null
++	)
++
++	rm -f "${T}/ebuildshell-environment-outcome" >&/dev/null
++
++	unset BASH_ENV
++	env -i ${BASH} --rcfile "${T}/ebuildshell-environment"  -i || die
++
++	chown ${PORTAGE_USER:-portage}:${PORTAGE_GROUP:-portage} "${T}/ebuildshell-environment-outcome" &>/dev/null
++	chmod g+w "${T}/ebuildshell-environment-outcome" &>/dev/null
++	source "${T}/ebuildshell-environment-outcome" &>/dev/null
++}
++
+ # Subshell/helper die support (must export for the die helper).
+ export EBUILD_MASTER_PID=$BASHPID
+ trap 'exit 1' SIGTERM

diff --git a/sys-apps/portage/files/portage-2.2.01.19247-aix-preserve-libs.patch b/sys-apps/portage/files/portage-2.2.01.19247-aix-preserve-libs.patch
new file mode 100644
index 0000000..ecc42fd
--- /dev/null
+++ b/sys-apps/portage/files/portage-2.2.01.19247-aix-preserve-libs.patch
@@ -0,0 +1,163 @@
+Drop code identical to and inheritable from LinkageMapELF.
+
+Update code that is duplicated from LinkageMapELF.
+
+Actually query information for /all/ preserved shared objects,
+not the last one only.
+Maybe the KeyError-problem is gone for AIX due to this fix,
+even if that workaround was inherited from LinkageMapELF.
+
+Deal with existing helper files in a binpkg created with 'quickpkg'.
+Eventually improve performance when creating helper files.
+
+--- pym/portage/util/_dyn_libs/LinkageMapXCoff.py.orig	2011-09-14 16:02:34 +0200
++++ pym/portage/util/_dyn_libs/LinkageMapXCoff.py	2011-09-14 16:34:43 +0200
+@@ -71,21 +71,10 @@
+ 				# filesystem.
+ 				return os.path.realpath(abs_path)
+ 			# Return a tuple of the device and inode, as well as the basename,
+-			# because of hardlinks the device and inode might be identical.
++			# because of hardlinks (notably for the .libNAME[shr.o] helpers)
++			# the device and inode might be identical.
+ 			return (object_stat.st_dev, object_stat.st_ino, os.path.basename(abs_path.rstrip(os.sep)))
+ 
+-		def file_exists(self):
+-			"""
+-			Determine if the file for this key exists on the filesystem.
+-
+-			@rtype: Boolean
+-			@return:
+-				1. True if the file exists.
+-				2. False if the file does not exist or is a broken symlink.
+-
+-			"""
+-			return isinstance(self._key, tuple)
+-
+ 	class _LibGraphNode(_ObjectKey):
+ 		__slots__ = ("alt_paths",)
+ 
+@@ -175,10 +164,9 @@
+ 					continue
+ 				plibs.update((x, cpv) for x in items)
+ 		if plibs:
+-			for x in plibs:
+-				args = [BASH_BINARY, "-c", ':'
+-					+ '; member="' + x + '"'
+-					+ '; archive=${member}'
++			args = [BASH_BINARY , "-c" , ':'
++				 + '; for member in "$@"'
++				 + '; do archive=${member}'
+ 					+ '; if [[ ${member##*/} == .*"["*"]" ]]'
+ 					+ '; then member=${member%/.*}/${member##*/.}'
+ 						 + '; archive=${member%[*}'
+@@ -195,9 +183,21 @@
+ 					+ '; done'
+ 					+ '; [[ -n ${MEMBER} ]] && MEMBER="[${MEMBER}]"'
+ 					+ '; [[ " ${FLAGS} " == *" SHROBJ "* ]] && soname=${FILE##*/}${MEMBER} || soname='
+-					+ '; echo "${FORMAT##* }${FORMAT%%-*};${FILE#${ROOT%/}}${MEMBER};${soname};${RUNPATH};${needed}"'
+-					+ '; [[ -z ${member} && -n ${MEMBER} ]] && echo "${FORMAT##* }${FORMAT%%-*};${FILE#${ROOT%/}};${FILE##*/};;"'
+-				]
++					+ '; case ${member:+y}:${MEMBER:+y}'
++					#    member requested,    member found: show shared archive member
++					 + ' in y:y) echo "${FORMAT##* }${FORMAT%%-*};${FILE#${ROOT%/}}${MEMBER};${soname};${RUNPATH};${needed}"'
++					# no member requested,    member found: show archive
++					 + ' ;;  :y) echo "${FORMAT##* }${FORMAT%%-*};${FILE#${ROOT%/}};${FILE##*/};;"'
++					# no member requested, no member found: show standalone shared object
++					 + ' ;;  : ) echo "${FORMAT##* }${FORMAT%%-*};${FILE#${ROOT%/}};${FILE##*/};${RUNPATH};${needed}"'
++					#    member requested, no member found: ignore archive replaced by standalone shared object
++					 + ' ;; y: )'
++					 + ' ;; esac'
++				 + '; done'
++			, 'aixdll-query'
++			]
++			args.extend(os.path.join(root, x.lstrip("." + os.sep)) \
++				for x in plibs)
+ 			try:
+ 				proc = subprocess.Popen(args, stdout=subprocess.PIPE)
+ 			except EnvironmentError as e:
+@@ -228,17 +228,8 @@
+ 					owner = plibs.pop(fields[1], None)
+ 					lines.append((owner, "aixdll-query", ";".join(fields)))
+ 				proc.wait()
++				proc.stdout.close()
+ 
+-		if plibs:
+-			# Preserved libraries that did not appear in the bash
+-			# aixdll-query code output.  This is known to happen with
+-			# statically linked libraries.  Generate dummy lines for
+-			# these, so we can assume that every preserved library has
+-			# an entry in self._obj_properties.  This is important in
+-			# order to prevent findConsumers from raising an unwanted
+-			# KeyError.
+-			for x, cpv in plibs.items():
+-				lines.append((cpv, "plibs", ";".join(['', x, '', '', ''])))
+ 		# Share identical frozenset instances when available,
+ 		# in order to conserve memory.
+ 		frozensets = {}
+@@ -318,23 +309,4 @@
+ 				soname_node.providers = tuple(set(soname_node.providers))
+ 				soname_node.consumers = tuple(set(soname_node.consumers))
+ 
+-	def getSoname(self, obj):
+-		"""
+-		Return the soname associated with an object.
+-
+-		@param obj: absolute path to an object
+-		@type obj: string (example: '/usr/bin/bar')
+-		@rtype: string
+-		@return: soname as a string
+-
+-		"""
+-		if not self._libs:
+-			self.rebuild()
+-		if isinstance(obj, self._ObjectKey):
+-			obj_key = obj
+-			if obj_key not in self._obj_properties:
+-				raise KeyError("%s not in object list" % obj_key)
+-			return self._obj_properties[obj_key].soname
+-		if obj not in self._obj_key_cache:
+-			raise KeyError("%s not in object list" % obj)
+-		return self._obj_properties[self._obj_key_cache[obj]].soname
++	pass
+--- bin/misc-functions.sh.orig	2011-09-14 17:53:45 +0200
++++ bin/misc-functions.sh	2011-09-14 18:21:01 +0200
+@@ -1297,7 +1297,7 @@
+ 	else
+ 		die "cannot find where to use 'ar' and 'strip' from"
+ 	fi
+-	local archives_members= archives=() chmod400files=()
++	local archives_members= archives=() helperfiles=()
+ 	local archive_member soname runpath needed archive contentmember
+ 	while read archive_member; do
+ 		archive_member=${archive_member#*;${EPREFIX}/} # drop "^type;EPREFIX/"
+@@ -1321,13 +1321,24 @@
+ 		# portage does os.lstat() on merged files every now
+ 		# and then, so keep stamp-files for archive members
+ 		# around to get the preserve-libs feature working.
+-		{	echo "Please leave this file alone, it is an important helper"
+-			echo "for portage to implement the 'preserve-libs' feature on AIX." 
+-		} > "${ED}${contentmember}" || die "cannot create ${contentmember}"
+-		chmod400files[${#chmod400files[@]}]=${ED}${contentmember}
++		helperfiles[${#helperfiles[@]}]=${ED}${contentmember}
+ 	done < "${PORTAGE_BUILDDIR}"/build-info/NEEDED.XCOFF.1
+-	[[ ${#chmod400files[@]} == 0 ]] ||
+-	chmod 0400 "${chmod400files[@]}" || die "cannot chmod ${chmod400files[@]}"
++	if [[ ${#helperfiles[@]} > 0 ]]; then
++		rm -f "${helperfiles[@]}" || die "cannot prune ${helperfiles[@]}"
++		local f prev=
++		for f in "${helperfiles[@]}"
++		do
++			if [[ -z ${prev} ]]; then
++				{	echo "Please leave this file alone, it is an important helper"
++					echo "for portage to implement the 'preserve-libs' feature on AIX." 
++				} > "${f}" || die "cannot create ${f}"
++				chmod 0400 "${f}" || die "cannot chmod ${f}"
++				prev=${f}
++			else
++				ln "${prev}" "${f}" || die "cannot create hardlink ${f}"
++			fi
++		done
++	fi
+ 
+ 	local preservemembers libmetadir prunedirs=()
+ 	local FILE MEMBER FLAGS

diff --git a/sys-apps/portage/files/portage-2.2.01.19247-ebuildshell.patch b/sys-apps/portage/files/portage-2.2.01.19247-ebuildshell.patch
new file mode 100644
index 0000000..8392b12
--- /dev/null
+++ b/sys-apps/portage/files/portage-2.2.01.19247-ebuildshell.patch
@@ -0,0 +1,105 @@
+--- bin/ebuild.sh.orig	2011-09-16 15:43:36 +0200
++++ bin/ebuild.sh	2011-09-16 15:51:06 +0200
+@@ -95,7 +95,7 @@
+ qa_call() {
+ 	local shopts=$(shopt) OLDIFS="$IFS"
+ 	local retval
+-	"$@"
++	call-ebuildshell "$@"
+ 	retval=$?
+ 	set +e
+ 	[[ $shopts != $(shopt) ]] &&
+@@ -466,6 +466,56 @@
+ 	unset BIN_PATH BIN BODY FUNC_SRC
+ fi
+ 
++call-ebuildshell() {
++	if ! has ebuildshell ${FEATURES}; then
++		"$@"
++		return $?
++	fi
++	(
++		umask 002
++		(
++			(
++				set
++				declare -p
++				declare -fp
++				shopt -p
++				if [[ ${BASH_VERSINFO[0]} == 3 ]]; then
++					export
++				fi
++			) | filter_readonly_variables --filter-for-subshell
++			echo 'declare -r $PORTAGE_READONLY_METADATA $PORTAGE_READONLY_VARS'
++			echo "export PS1='EBUILD ${PN} $1 \$ '" 
++			echo 'unset ENV'
++			echo "type $1"
++			echo "echo WANTED: $@"
++			echo "trap '"
++			echo "umask 002"
++			echo "("
++			echo "	set"
++			echo "	declare -p"
++			echo "	declare -fp"
++			echo "	shopt -p"
++			if [[ ${BASH_VERSINFO[0]} == 3 ]]; then
++				echo "	export"
++			fi
++			echo -n ")"
++			echo -n " | filter_readonly_variables --filter-metadata"
++			echo " > ${T}/ebuildshell-environment-outcome' 0"
++		) > ${T}/ebuildshell-environment
++		chown ${PORTAGE_USER:-portage}:${PORTAGE_GROUP:-portage} "${T}/ebuildshell-environment" &>/dev/null
++		chmod g+w "${T}/ebuildshell-environment" &>/dev/null
++	)
++
++	rm -f "${T}/ebuildshell-environment-outcome" >&/dev/null
++
++	unset BASH_ENV
++	env -i ${BASH} --rcfile "${T}/ebuildshell-environment"  -i || die
++
++	chown ${PORTAGE_USER:-portage}:${PORTAGE_GROUP:-portage} "${T}/ebuildshell-environment-outcome" &>/dev/null
++	chmod g+w "${T}/ebuildshell-environment-outcome" &>/dev/null
++	source "${T}/ebuildshell-environment-outcome" &>/dev/null
++}
++
+ # Subshell/helper die support (must export for the die helper).
+ export EBUILD_MASTER_PID=$BASHPID
+ trap 'exit 1' SIGTERM
+--- bin/phase-functions.sh.orig	2011-09-16 15:45:37 +0200
++++ bin/phase-functions.sh	2011-09-16 15:50:10 +0200
+@@ -81,7 +81,7 @@
+ filter_readonly_variables() {
+ 	local x filtered_vars
+ 	local readonly_bash_vars="BASHOPTS BASHPID DIRSTACK EUID
+-		FUNCNAME GROUPS PIPESTATUS PPID SHELLOPTS UID"
++		FUNCNAME GROUPS PIPESTATUS PPID SHELLOPTS UID BASH_VERSINFO"
+ 	local bash_misc_vars="BASH BASH_.* COMP_WORDBREAKS HISTCMD
+ 		HISTFILE HOSTNAME HOSTTYPE IFS LINENO MACHTYPE OLDPWD
+ 		OPTERR OPTIND OSTYPE POSIXLY_CORRECT PS4 PWD RANDOM
+@@ -90,8 +90,10 @@
+ 		SANDBOX_DEBUG_LOG SANDBOX_DISABLED SANDBOX_LIB
+ 		SANDBOX_LOG SANDBOX_ON"
+ 	local misc_garbage_vars="_portage_filter_opts"
+-	filtered_vars="$readonly_bash_vars $bash_misc_vars
+-		$PORTAGE_READONLY_VARS $misc_garbage_vars"
++	filtered_vars="$readonly_bash_vars"
++	if ! has --filter-for-subshell $* ; then
++		filtered_vars="$filtered_vars $bash_misc_vars $PORTAGE_READONLY_VARS $misc_garbage_vars"
++	fi
+ 
+ 	# Don't filter/interfere with prefix variables unless they are
+ 	# supported by the current EAPI.
+@@ -121,7 +123,11 @@
+ 			LC_CTYPE LC_MESSAGES LC_MONETARY
+ 			LC_NUMERIC LC_PAPER LC_TIME"
+ 	fi
+-	if ! has --allow-extra-vars $* ; then
++	if has --filter-metadata $* ; then
++		filtered_vars="$filtered_vars $PORTAGE_READONLY_METADATA"
++	fi
++	if ! has --allow-extra-vars $* &&
++	   ! has --filter-for-subshell $* ; then
+ 		filtered_vars="
+ 			${filtered_vars}
+ 			${PORTAGE_SAVED_READONLY_VARS}

diff --git a/sys-apps/portage/files/portage-2.2.01.19981-ebuildshell.patch b/sys-apps/portage/files/portage-2.2.01.19981-ebuildshell.patch
new file mode 100644
index 0000000..63c9d54
--- /dev/null
+++ b/sys-apps/portage/files/portage-2.2.01.19981-ebuildshell.patch
@@ -0,0 +1,105 @@
+--- bin/ebuild.sh.orig	2011-09-16 15:43:36 +0200
++++ bin/ebuild.sh	2011-09-16 15:51:06 +0200
+@@ -95,7 +95,7 @@
+ qa_call() {
+ 	local shopts=$(shopt) OLDIFS="$IFS"
+ 	local retval
+-	"$@"
++	call-ebuildshell "$@"
+ 	retval=$?
+ 	set +e
+ 	[[ $shopts != $(shopt) ]] &&
+@@ -466,6 +466,56 @@
+ 	unset BIN_PATH BIN BODY FUNC_SRC
+ fi
+ 
++call-ebuildshell() {
++	if ! has ebuildshell ${FEATURES}; then
++		"$@"
++		return $?
++	fi
++	(
++		umask 002
++		(
++			(
++				set
++				declare -p
++				declare -fp
++				shopt -p
++				if [[ ${BASH_VERSINFO[0]} == 3 ]]; then
++					export
++				fi
++			) | filter_readonly_variables --filter-for-subshell
++			echo 'declare -r $PORTAGE_READONLY_METADATA $PORTAGE_READONLY_VARS'
++			echo "export PS1='EBUILD ${PN} $1 \$ '" 
++			echo 'unset ENV'
++			echo "type $1"
++			echo "echo WANTED: $@"
++			echo "trap '"
++			echo "umask 002"
++			echo "("
++			echo "	set"
++			echo "	declare -p"
++			echo "	declare -fp"
++			echo "	shopt -p"
++			if [[ ${BASH_VERSINFO[0]} == 3 ]]; then
++				echo "	export"
++			fi
++			echo -n ")"
++			echo -n " | filter_readonly_variables --filter-metadata"
++			echo " > ${T}/ebuildshell-environment-outcome' 0"
++		) > ${T}/ebuildshell-environment
++		chown ${PORTAGE_USER:-portage}:${PORTAGE_GROUP:-portage} "${T}/ebuildshell-environment" &>/dev/null
++		chmod g+w "${T}/ebuildshell-environment" &>/dev/null
++	)
++
++	rm -f "${T}/ebuildshell-environment-outcome" >&/dev/null
++
++	unset BASH_ENV
++	env -i ${BASH} --rcfile "${T}/ebuildshell-environment"  -i || die
++
++	chown ${PORTAGE_USER:-portage}:${PORTAGE_GROUP:-portage} "${T}/ebuildshell-environment-outcome" &>/dev/null
++	chmod g+w "${T}/ebuildshell-environment-outcome" &>/dev/null
++	source "${T}/ebuildshell-environment-outcome" &>/dev/null
++}
++
+ # Subshell/helper die support (must export for the die helper).
+ export EBUILD_MASTER_PID=$BASHPID
+ trap 'exit 1' SIGTERM
+--- bin/phase-functions.sh.orig	2011-09-16 15:45:37 +0200
++++ bin/phase-functions.sh	2011-09-16 15:50:10 +0200
+@@ -81,7 +81,7 @@
+ filter_readonly_variables() {
+ 	local x filtered_vars
+ 	local readonly_bash_vars="BASHOPTS BASHPID DIRSTACK EUID
+-		FUNCNAME GROUPS PIPESTATUS PPID SHELLOPTS UID"
++		FUNCNAME GROUPS PIPESTATUS PPID SHELLOPTS UID BASH_VERSINFO"
+ 	local bash_misc_vars="BASH BASH_.* COLUMNS COMP_WORDBREAKS HISTCMD
+ 		HISTFILE HOSTNAME HOSTTYPE IFS LINENO MACHTYPE OLDPWD
+ 		OPTERR OPTIND OSTYPE POSIXLY_CORRECT PS4 PWD RANDOM
+@@ -90,8 +90,10 @@
+ 		SANDBOX_DEBUG_LOG SANDBOX_DISABLED SANDBOX_LIB
+ 		SANDBOX_LOG SANDBOX_ON"
+ 	local misc_garbage_vars="_portage_filter_opts"
+-	filtered_vars="$readonly_bash_vars $bash_misc_vars
+-		$PORTAGE_READONLY_VARS $misc_garbage_vars"
++	filtered_vars="$readonly_bash_vars"
++	if ! has --filter-for-subshell $* ; then
++		filtered_vars="$filtered_vars $bash_misc_vars $PORTAGE_READONLY_VARS $misc_garbage_vars"
++	fi
+ 
+ 	# Don't filter/interfere with prefix variables unless they are
+ 	# supported by the current EAPI.
+@@ -121,7 +123,11 @@
+ 			LC_CTYPE LC_MESSAGES LC_MONETARY
+ 			LC_NUMERIC LC_PAPER LC_TIME"
+ 	fi
+-	if ! has --allow-extra-vars $* ; then
++	if has --filter-metadata $* ; then
++		filtered_vars="$filtered_vars $PORTAGE_READONLY_METADATA"
++	fi
++	if ! has --allow-extra-vars $* &&
++	   ! has --filter-for-subshell $* ; then
+ 		filtered_vars="
+ 			${filtered_vars}
+ 			${PORTAGE_SAVED_READONLY_VARS}

diff --git a/sys-apps/portage/files/portage-2.2.01.20020-ebuildshell.patch b/sys-apps/portage/files/portage-2.2.01.20020-ebuildshell.patch
new file mode 100644
index 0000000..03eaa24
--- /dev/null
+++ b/sys-apps/portage/files/portage-2.2.01.20020-ebuildshell.patch
@@ -0,0 +1,137 @@
+# HG changeset patch
+# User Fabian Groffen <grobian@gentoo.org>
+# Date 1324637719 -3600
+# Node ID d70f677c2c1293d45e51a7f0e3b97b5e2b2900e7
+# Parent  e7a44acf78b8678781b5d24a90d96d1a53601b41
+https://bugs.gentoo.org/155161
+
+FEATURES=ebuildshell emerge xxxxx
+
+results in an interactive shell for each function portage calls from the
+ebuild, where all functionality is available as in the ebuild
+(src_unpack, epatch, etc.).  This allows for convenient debugging of
+ebuild issues.
+
+diff -r e7a44acf78b8 -r d70f677c2c12 bin/ebuild.sh
+--- a/bin/ebuild.sh	Fri Dec 23 11:24:27 2011 +0100
++++ b/bin/ebuild.sh	Fri Dec 23 11:55:19 2011 +0100
+@@ -82,7 +82,7 @@
+ qa_call() {
+ 	local shopts=$(shopt) OLDIFS="$IFS"
+ 	local retval
+-	"$@"
++	call-ebuildshell "$@"
+ 	retval=$?
+ 	set +e
+ 	[[ $shopts != $(shopt) ]] &&
+@@ -453,6 +453,56 @@
+ 	unset BIN_PATH BIN BODY FUNC_SRC
+ fi
+ 
++call-ebuildshell() {
++	if ! has ebuildshell ${FEATURES}; then
++		"$@"
++		return $?
++	fi
++	(
++		umask 002
++		(
++			(
++				set
++				declare -p
++				declare -fp
++				shopt -p
++				if [[ ${BASH_VERSINFO[0]} == 3 ]]; then
++					export
++				fi
++			) | filter_readonly_variables --filter-for-subshell
++			echo 'declare -r $PORTAGE_READONLY_METADATA $PORTAGE_READONLY_VARS'
++			echo "export PS1='EBUILD ${PN} $1 \$ '" 
++			echo 'unset ENV'
++			echo "type $1"
++			echo "echo WANTED: $@"
++			echo "trap '"
++			echo "umask 002"
++			echo "("
++			echo "	set"
++			echo "	declare -p"
++			echo "	declare -fp"
++			echo "	shopt -p"
++			if [[ ${BASH_VERSINFO[0]} == 3 ]]; then
++				echo "	export"
++			fi
++			echo -n ")"
++			echo -n " | filter_readonly_variables --filter-metadata"
++			echo " > ${T}/ebuildshell-environment-outcome' 0"
++		) > ${T}/ebuildshell-environment
++		chown ${PORTAGE_USER:-portage}:${PORTAGE_GROUP:-portage} "${T}/ebuildshell-environment" &>/dev/null
++		chmod g+w "${T}/ebuildshell-environment" &>/dev/null
++	)
++
++	rm -f "${T}/ebuildshell-environment-outcome" >&/dev/null
++
++	unset BASH_ENV
++	env -i ${BASH} --rcfile "${T}/ebuildshell-environment"  -i || die
++
++	chown ${PORTAGE_USER:-portage}:${PORTAGE_GROUP:-portage} "${T}/ebuildshell-environment-outcome" &>/dev/null
++	chmod g+w "${T}/ebuildshell-environment-outcome" &>/dev/null
++	source "${T}/ebuildshell-environment-outcome" &>/dev/null
++}
++
+ # Subshell/helper die support (must export for the die helper).
+ export EBUILD_MASTER_PID=$BASHPID
+ trap 'exit 1' SIGTERM
+diff -r e7a44acf78b8 -r d70f677c2c12 bin/phase-functions.sh
+--- a/bin/phase-functions.sh	Fri Dec 23 11:24:27 2011 +0100
++++ b/bin/phase-functions.sh	Fri Dec 23 11:55:19 2011 +0100
+@@ -84,7 +84,7 @@
+ filter_readonly_variables() {
+ 	local x filtered_vars
+ 	local readonly_bash_vars="BASHOPTS BASHPID DIRSTACK EUID
+-		FUNCNAME GROUPS PIPESTATUS PPID SHELLOPTS UID"
++		FUNCNAME GROUPS PIPESTATUS PPID SHELLOPTS UID BASH_VERSINFO"
+ 	local bash_misc_vars="BASH BASH_.* COLUMNS COMP_WORDBREAKS HISTCMD
+ 		HISTFILE HOSTNAME HOSTTYPE IFS LINENO MACHTYPE OLDPWD
+ 		OPTERR OPTIND OSTYPE POSIXLY_CORRECT PS4 PWD RANDOM
+@@ -95,8 +95,10 @@
+ 	# Untrusted due to possible application of package renames to binpkgs
+ 	local binpkg_untrusted_vars="CATEGORY P PF PN PR PV PVR"
+ 	local misc_garbage_vars="_portage_filter_opts"
+-	filtered_vars="$readonly_bash_vars $bash_misc_vars
+-		$PORTAGE_READONLY_VARS $misc_garbage_vars"
++	filtered_vars="$readonly_bash_vars"
++	if ! has --filter-for-subshell $* ; then
++		filtered_vars="$filtered_vars $bash_misc_vars $PORTAGE_READONLY_VARS $misc_garbage_vars"
++	fi
+ 
+ 	# Don't filter/interfere with prefix variables unless they are
+ 	# supported by the current EAPI.
+@@ -126,7 +128,11 @@
+ 			LC_CTYPE LC_MESSAGES LC_MONETARY
+ 			LC_NUMERIC LC_PAPER LC_TIME"
+ 	fi
+-	if ! has --allow-extra-vars $* ; then
++	if has --filter-metadata $* ; then
++		filtered_vars="$filtered_vars $PORTAGE_READONLY_METADATA"
++	fi
++	if ! has --allow-extra-vars $* &&
++	   ! has --filter-for-subshell $* ; then
+ 		if [ "${EMERGE_FROM}" = binary ] ; then
+ 			# preserve additional variables from build time,
+ 			# while excluding untrusted variables
+diff -r e7a44acf78b8 -r d70f677c2c12 man/make.conf.5
+--- a/man/make.conf.5	Fri Dec 23 11:24:27 2011 +0100
++++ b/man/make.conf.5	Fri Dec 23 11:55:19 2011 +0100
+@@ -287,6 +287,12 @@
+ Use locks to ensure that unsandboxed ebuild phases never execute
+ concurrently. Also see \fIparallel\-install\fR.
+ .TP
++.B ebuildshell
++Drop into an interactive shell for each phase function, meant for
++debugging.  Because the shell would normally be used to execute the
++phase function, commands like src_unpack or epatch are available in the
++interactive shell.  Use `exit 1` to terminate the merge.
++.TP
+ .B fakeroot
+ Enable fakeroot for the install and package phases when a non-root user runs
+ the \fBebuild\fR(1) command.

diff --git a/sys-apps/portage/files/portage-2.2.01.20239-ebuildshell.patch b/sys-apps/portage/files/portage-2.2.01.20239-ebuildshell.patch
new file mode 100644
index 0000000..9ccc1e5
--- /dev/null
+++ b/sys-apps/portage/files/portage-2.2.01.20239-ebuildshell.patch
@@ -0,0 +1,148 @@
+# HG changeset patch
+# User Michael Haubenwallner <haubi@gentoo.org>
+# Date 1330634734 -3600
+# Node ID 6780ee2ddb337bbd8b4b2681615de7e78e6fb8c1
+# Parent  04da3d4d44af4fd2096316f8e1bbb7a998011040
+https://bugs.gentoo.org/155161
+
+FEATURES=ebuildshell emerge xxxxx
+
+results in an interactive shell for each function portage calls from the
+ebuild, where all functionality is available as in the ebuild
+(src_unpack, epatch, etc.).  This allows for convenient debugging of
+ebuild issues.
+
+diff -r 04da3d4d44af -r 6780ee2ddb33 bin/ebuild.sh
+--- a/bin/ebuild.sh	Thu Mar 01 21:31:12 2012 +0100
++++ b/bin/ebuild.sh	Thu Mar 01 21:45:34 2012 +0100
+@@ -82,7 +82,7 @@
+ qa_call() {
+ 	local shopts=$(shopt) OLDIFS="$IFS"
+ 	local retval
+-	"$@"
++	call-ebuildshell "$@"
+ 	retval=$?
+ 	set +e
+ 	[[ $shopts != $(shopt) ]] &&
+@@ -453,6 +453,56 @@
+ 	unset BIN_PATH BIN BODY FUNC_SRC
+ fi
+ 
++call-ebuildshell() {
++	if ! has ebuildshell ${FEATURES}; then
++		"$@"
++		return $?
++	fi
++	(
++		umask 002
++		(
++			(
++				set
++				declare -p
++				declare -fp
++				shopt -p
++				if [[ ${BASH_VERSINFO[0]} == 3 ]]; then
++					export
++				fi
++			) | filter_readonly_variables --filter-for-subshell
++			echo 'declare -r $PORTAGE_READONLY_METADATA $PORTAGE_READONLY_VARS'
++			echo "export PS1='EBUILD ${PN} $1 \$ '" 
++			echo 'unset ENV'
++			echo "type $1"
++			echo "echo WANTED: $@"
++			echo "trap '"
++			echo "umask 002"
++			echo "("
++			echo "	set"
++			echo "	declare -p"
++			echo "	declare -fp"
++			echo "	shopt -p"
++			if [[ ${BASH_VERSINFO[0]} == 3 ]]; then
++				echo "	export"
++			fi
++			echo -n ")"
++			echo -n " | filter_readonly_variables --filter-metadata"
++			echo " > ${T}/ebuildshell-environment-outcome' 0"
++		) > ${T}/ebuildshell-environment
++		chown ${PORTAGE_USER:-portage}:${PORTAGE_GROUP:-portage} "${T}/ebuildshell-environment" &>/dev/null
++		chmod g+w "${T}/ebuildshell-environment" &>/dev/null
++	)
++
++	rm -f "${T}/ebuildshell-environment-outcome" >&/dev/null
++
++	unset BASH_ENV
++	env -i ${BASH} --rcfile "${T}/ebuildshell-environment"  -i || die
++
++	chown ${PORTAGE_USER:-portage}:${PORTAGE_GROUP:-portage} "${T}/ebuildshell-environment-outcome" &>/dev/null
++	chmod g+w "${T}/ebuildshell-environment-outcome" &>/dev/null
++	source "${T}/ebuildshell-environment-outcome" &>/dev/null
++}
++
+ # Subshell/helper die support (must export for the die helper).
+ export EBUILD_MASTER_PID=$BASHPID
+ trap 'exit 1' SIGTERM
+diff -r 04da3d4d44af -r 6780ee2ddb33 bin/phase-functions.sh
+--- a/bin/phase-functions.sh	Thu Mar 01 21:31:12 2012 +0100
++++ b/bin/phase-functions.sh	Thu Mar 01 21:45:34 2012 +0100
+@@ -84,7 +84,7 @@
+ filter_readonly_variables() {
+ 	local x filtered_vars
+ 	local readonly_bash_vars="BASHOPTS BASHPID DIRSTACK EUID
+-		FUNCNAME GROUPS PIPESTATUS PPID SHELLOPTS UID"
++		FUNCNAME GROUPS PIPESTATUS PPID SHELLOPTS UID BASH_VERSINFO"
+ 	local bash_misc_vars="BASH BASH_.* COLUMNS COMP_WORDBREAKS HISTCMD
+ 		HISTFILE HOSTNAME HOSTTYPE IFS LINENO MACHTYPE OLDPWD
+ 		OPTERR OPTIND OSTYPE POSIXLY_CORRECT PS4 PWD RANDOM
+@@ -95,8 +95,10 @@
+ 	# Untrusted due to possible application of package renames to binpkgs
+ 	local binpkg_untrusted_vars="CATEGORY P PF PN PR PV PVR"
+ 	local misc_garbage_vars="_portage_filter_opts"
+-	filtered_vars="$readonly_bash_vars $bash_misc_vars
+-		$PORTAGE_READONLY_VARS $misc_garbage_vars"
++	filtered_vars="$readonly_bash_vars"
++	if ! has --filter-for-subshell $* ; then
++		filtered_vars="$filtered_vars $bash_misc_vars $PORTAGE_READONLY_VARS $misc_garbage_vars"
++	fi
+ 
+ 	# Don't filter/interfere with prefix variables unless they are
+ 	# supported by the current EAPI.
+@@ -126,7 +128,11 @@
+ 			LC_CTYPE LC_MESSAGES LC_MONETARY
+ 			LC_NUMERIC LC_PAPER LC_TIME"
+ 	fi
+-	if ! has --allow-extra-vars $* ; then
++	if has --filter-metadata $* ; then
++		filtered_vars="$filtered_vars $PORTAGE_READONLY_METADATA"
++	fi
++	if ! has --allow-extra-vars $* &&
++	   ! has --filter-for-subshell $* ; then
+ 		if [ "${EMERGE_FROM}" = binary ] ; then
+ 			# preserve additional variables from build time,
+ 			# while excluding untrusted variables
+diff -r 04da3d4d44af -r 6780ee2ddb33 man/make.conf.5
+--- a/man/make.conf.5	Thu Mar 01 21:31:12 2012 +0100
++++ b/man/make.conf.5	Thu Mar 01 21:45:34 2012 +0100
+@@ -297,6 +297,12 @@
+ Use locks to ensure that unsandboxed ebuild phases never execute
+ concurrently. Also see \fIparallel\-install\fR.
+ .TP
++.B ebuildshell
++Drop into an interactive shell for each phase function, meant for
++debugging.  Because the shell would normally be used to execute the
++phase function, commands like src_unpack or epatch are available in the
++interactive shell.  Use `exit 1` to terminate the merge.
++.TP
+ .B fakeroot
+ Enable fakeroot for the install and package phases when a non-root user runs
+ the \fBebuild\fR(1) command.
+diff -r 04da3d4d44af -r 6780ee2ddb33 pym/_emerge/AbstractEbuildProcess.py
+--- a/pym/_emerge/AbstractEbuildProcess.py	Thu Mar 01 21:31:12 2012 +0100
++++ b/pym/_emerge/AbstractEbuildProcess.py	Thu Mar 01 21:45:34 2012 +0100
+@@ -97,6 +97,7 @@
+ 			self.fd_pipes = {}
+ 		null_fd = None
+ 		if 0 not in self.fd_pipes and \
++			"ebuildshell" not in self.settings.features and \
+ 			self.phase not in self._phases_interactive_whitelist and \
+ 			"interactive" not in self.settings.get("PROPERTIES", "").split():
+ 			null_fd = os.open('/dev/null', os.O_RDONLY)

diff --git a/sys-apps/portage/files/portage-2.2.10.1-case-insensitive-fs.patch b/sys-apps/portage/files/portage-2.2.10.1-case-insensitive-fs.patch
new file mode 100644
index 0000000..7f69cd6
--- /dev/null
+++ b/sys-apps/portage/files/portage-2.2.10.1-case-insensitive-fs.patch
@@ -0,0 +1,375 @@
+From fc3e0fafac889586ad85b12f414bcd10d30d7021 Mon Sep 17 00:00:00 2001
+From: Zac Medico <zmedico@gentoo.org>
+Date: Thu, 2 Oct 2014 10:57:11 -0700
+Subject: [PATCH] FEATURES=case-insensitive-fs for bug #524236
+
+When case-insensitive-fs is enabled in FEATURES, the dblink.isowner
+method, _owners_db class, and ConfigProtect class will be
+case-insensitive. This causes the collision-protect and unmerge code
+to behave correctly for a case-insensitive file system. If the file
+system is case-insensitive but case-preserving, then case is preserved
+in the CONTENTS data of installed packages.
+
+X-Gentoo-Bug: 524236
+X-Gentoo-Url: https://bugs.gentoo.org/show_bug.cgi?id=524236
+---
+ bin/dispatch-conf              |  8 +++++++-
+ bin/etc-update                 | 14 +++++++++++---
+ bin/portageq                   |  7 ++++---
+ bin/quickpkg                   |  4 +++-
+ man/make.conf.5                |  4 ++++
+ pym/_emerge/depgraph.py        |  4 +++-
+ pym/portage/_global_updates.py |  4 +++-
+ pym/portage/const.py           |  1 +
+ pym/portage/dbapi/vartree.py   | 32 +++++++++++++++++++++++++++++++-
+ pym/portage/update.py          |  6 ++++--
+ pym/portage/util/__init__.py   | 10 +++++++++-
+ 11 files changed, 80 insertions(+), 14 deletions(-)
+
+diff --git a/bin/dispatch-conf b/bin/dispatch-conf
+index fb0a8af..7946415 100755
+--- a/bin/dispatch-conf
++++ b/bin/dispatch-conf
+@@ -29,6 +29,10 @@ from portage.process import find_binary, spawn
+ FIND_EXTANT_CONFIGS  = "find '%s' %s -name '._cfg????_%s' ! -name '.*~' ! -iname '.*.bak' -print"
+ DIFF_CONTENTS        = "diff -Nu '%s' '%s'"
+ 
++if "case-insensitive-fs" in portage.settings.features:
++    FIND_EXTANT_CONFIGS = \
++        FIND_EXTANT_CONFIGS.replace("-name '._cfg", "-iname '._cfg")
++
+ # We need a secure scratch dir and python does silly verbose errors on the use of tempnam
+ oldmask = os.umask(0o077)
+ SCRATCH_DIR = None
+@@ -144,7 +148,9 @@ class dispatch:
+         protect_obj = portage.util.ConfigProtect(
+             config_root, config_paths,
+             portage.util.shlex_split(
+-            portage.settings.get('CONFIG_PROTECT_MASK', '')))
++            portage.settings.get('CONFIG_PROTECT_MASK', '')),
++            case_insensitive = ("case-insensitive-fs"
++            in portage.settings.features))
+ 
+         def diff(file1, file2):
+             return diffstatusoutput(DIFF_CONTENTS, file1, file2)
+diff --git a/bin/etc-update b/bin/etc-update
+index 1a99231..c27379b 100755
+--- a/bin/etc-update
++++ b/bin/etc-update
+@@ -67,6 +67,7 @@ scan() {
+ 	mkdir "${TMP}"/files || die "Failed mkdir command!"
+ 	count=0
+ 	input=0
++	local basename
+ 	local find_opts
+ 	local path
+ 
+@@ -75,13 +76,17 @@ scan() {
+ 
+ 		if [[ ! -d ${path} ]] ; then
+ 			[[ ! -f ${path} ]] && continue
+-			local my_basename="${path##*/}"
++			basename="${path##*/}"
+ 			path="${path%/*}"
+-			find_opts=( -maxdepth 1 -name "._cfg????_${my_basename}" )
++			find_opts=( -maxdepth 1 )
+ 		else
++			basename=*
+ 			# Do not traverse hidden directories such as .svn or .git.
+-			find_opts=( -name '.*' -type d -prune -o -name '._cfg????_*' )
++			find_opts=( -name '.*' -type d -prune -o )
+ 		fi
++		${case_insensitive} && \
++			find_opts+=( -iname ) || find_opts+=( -name )
++		find_opts+=( "._cfg????_${basename}" )
+ 		find_opts+=( ! -name '.*~' ! -iname '.*.bak' -print )
+ 
+ 		if [ ! -w "${path}" ] ; then
+@@ -623,6 +628,7 @@ ${SET_X} && set -x
+ type -P portageq >/dev/null || die "missing portageq"
+ portage_vars=(
+ 	CONFIG_PROTECT{,_MASK}
++	FEATURES
+ 	PORTAGE_CONFIGROOT
+ 	PORTAGE_INST_{G,U}ID
+ 	PORTAGE_TMPDIR
+@@ -633,6 +639,8 @@ portage_vars=(
+ eval $(${PORTAGE_PYTHON:+"${PORTAGE_PYTHON}"} "$(type -P portageq)" envvar -v ${portage_vars[@]})
+ export PORTAGE_TMPDIR
+ SCAN_PATHS=${*:-${CONFIG_PROTECT}}
++[[ " ${FEATURES} " == *" case-insensitive-fs "* ]] && \
++	case_insensitive=true || case_insensitive=false
+ 
+ TMP="${PORTAGE_TMPDIR}/etc-update-$$"
+ trap "die terminated" SIGTERM
+diff --git a/bin/portageq b/bin/portageq
+index 009f116..552cff6 100755
+--- a/bin/portageq
++++ b/bin/portageq
+@@ -379,8 +379,8 @@ def is_protected(argv):
+ 	protect = portage.util.shlex_split(settings.get("CONFIG_PROTECT", ""))
+ 	protect_mask = portage.util.shlex_split(
+ 		settings.get("CONFIG_PROTECT_MASK", ""))
+-	protect_obj = ConfigProtect(root, protect, protect_mask)
+-
++	protect_obj = ConfigProtect(root, protect, protect_mask,
++		case_insensitive = ("case-insensitive-fs" in settings.features))
+ 	if protect_obj.isprotected(f):
+ 		return 0
+ 	return 1
+@@ -414,7 +414,8 @@ def filter_protected(argv):
+ 	protect = portage.util.shlex_split(settings.get("CONFIG_PROTECT", ""))
+ 	protect_mask = portage.util.shlex_split(
+ 		settings.get("CONFIG_PROTECT_MASK", ""))
+-	protect_obj = ConfigProtect(root, protect, protect_mask)
++	protect_obj = ConfigProtect(root, protect, protect_mask,
++		case_insensitive = ("case-insensitive-fs" in settings.features))
+ 
+ 	errors = 0
+ 
+diff --git a/bin/quickpkg b/bin/quickpkg
+index cf75791..4d6bc87 100755
+--- a/bin/quickpkg
++++ b/bin/quickpkg
+@@ -102,7 +102,9 @@ def quickpkg_atom(options, infos, arg, eout):
+ 			if not include_config:
+ 				confprot = ConfigProtect(eroot,
+ 					shlex_split(settings.get("CONFIG_PROTECT", "")),
+-					shlex_split(settings.get("CONFIG_PROTECT_MASK", "")))
++					shlex_split(settings.get("CONFIG_PROTECT_MASK", "")),
++					case_insensitive = ("case-insensitive-fs"
++					in settings.features))
+ 				def protect(filename):
+ 					if not confprot.isprotected(filename):
+ 						return False
+diff --git a/man/make.conf.5 b/man/make.conf.5
+index 84e894b..7b7daa4 100644
+--- a/man/make.conf.5
++++ b/man/make.conf.5
+@@ -265,6 +265,10 @@ Build binary packages for just packages in the system set.
+ Enable a special progress indicator when \fBemerge\fR(1) is calculating
+ dependencies.
+ .TP
++.B case\-insensitive\-fs
++Use case\-insensitive file name comparisions when merging and unmerging
++files.
++.TP
+ .B ccache
+ Enable portage support for the ccache package.  If the ccache dir is not
+ present in the user's environment, then portage will default to
+diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
+index 5180db5..cae8c32 100644
+--- a/pym/_emerge/depgraph.py
++++ b/pym/_emerge/depgraph.py
+@@ -7799,7 +7799,9 @@ class depgraph(object):
+ 				settings = self._frozen_config.roots[root].settings
+ 				protect_obj[root] = ConfigProtect(settings["EROOT"], \
+ 					shlex_split(settings.get("CONFIG_PROTECT", "")),
+-					shlex_split(settings.get("CONFIG_PROTECT_MASK", "")))
++					shlex_split(settings.get("CONFIG_PROTECT_MASK", "")),
++					case_insensitive = ("case-insensitive-fs"
++					in settings.features))
+ 
+ 		def write_changes(root, changes, file_to_write_to):
+ 			file_contents = None
+diff --git a/pym/portage/_global_updates.py b/pym/portage/_global_updates.py
+index 17dc080..bb39f7a 100644
+--- a/pym/portage/_global_updates.py
++++ b/pym/portage/_global_updates.py
+@@ -208,7 +208,9 @@ def _do_global_updates(trees, prev_mtimes, quiet=False, if_mtime_changed=True):
+ 		update_config_files(root,
+ 			shlex_split(mysettings.get("CONFIG_PROTECT", "")),
+ 			shlex_split(mysettings.get("CONFIG_PROTECT_MASK", "")),
+-			repo_map, match_callback=_config_repo_match)
++			repo_map, match_callback = _config_repo_match,
++			case_insensitive = "case-insensitive-fs"
++			in mysettings.features)
+ 
+ 		# The above global updates proceed quickly, so they
+ 		# are considered a single mtimedb transaction.
+diff --git a/pym/portage/const.py b/pym/portage/const.py
+index acb90f9..5545a84 100644
+--- a/pym/portage/const.py
++++ b/pym/portage/const.py
+@@ -125,6 +125,7 @@ SUPPORTED_FEATURES       = frozenset([
+ 	"buildpkg",
+ 	"buildsyspkg",
+ 	"candy",
++	"case-insensitive-fs",
+ 	"ccache",
+ 	"cgroup",
+ 	"chflags",
+diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py
+index b46ba0b..8a68f4e 100644
+--- a/pym/portage/dbapi/vartree.py
++++ b/pym/portage/dbapi/vartree.py
+@@ -1052,6 +1052,11 @@ class vardbapi(dbapi):
+ 		def add(self, cpv):
+ 			eroot_len = len(self._vardb._eroot)
+ 			contents = self._vardb._dblink(cpv).getcontents()
++
++			if "case-insensitive-fs" in self._vardb.settings.features:
++				contents = dict((k.lower(), v)
++					for k, v in contents.items())
++
+ 			pkg_hash = self._hash_pkg(cpv)
+ 			if not contents:
+ 				# Empty path is a code used to represent empty contents.
+@@ -1189,6 +1194,8 @@ class vardbapi(dbapi):
+ 			hash_pkg = owners_cache._hash_pkg
+ 			hash_str = owners_cache._hash_str
+ 			base_names = self._vardb._aux_cache["owners"]["base_names"]
++			case_insensitive = "case-insensitive-fs" \
++				in vardb.settings.features
+ 
+ 			dblink_cache = {}
+ 
+@@ -1205,6 +1212,8 @@ class vardbapi(dbapi):
+ 			while path_iter:
+ 
+ 				path = path_iter.pop()
++				if case_insensitive:
++					path = path.lower()
+ 				is_basename = os.sep != path[:1]
+ 				if is_basename:
+ 					name = path
+@@ -1236,6 +1245,8 @@ class vardbapi(dbapi):
+ 
+ 							if is_basename:
+ 								for p in dblink(cpv).getcontents():
++									if case_insensitive:
++										p = p.lower()
+ 									if os.path.basename(p) == name:
+ 										owners.append((cpv, p[len(root):]))
+ 							else:
+@@ -1265,8 +1276,12 @@ class vardbapi(dbapi):
+ 			if not path_list:
+ 				return
+ 
++			case_insensitive = "case-insensitive-fs" \
++				in self._vardb.settings.features
+ 			path_info_list = []
+ 			for path in path_list:
++				if case_insensitive:
++					path = path.lower()
+ 				is_basename = os.sep != path[:1]
+ 				if is_basename:
+ 					name = path
+@@ -1285,6 +1300,8 @@ class vardbapi(dbapi):
+ 				for path, name, is_basename in path_info_list:
+ 					if is_basename:
+ 						for p in dblnk.getcontents():
++							if case_insensitive:
++								p = p.lower()
+ 							if os.path.basename(p) == name:
+ 								search_pkg.results.append((dblnk, p[len(root):]))
+ 					else:
+@@ -1540,7 +1557,9 @@ class dblink(object):
+ 			portage.util.shlex_split(
+ 				self.settings.get("CONFIG_PROTECT", "")),
+ 			portage.util.shlex_split(
+-				self.settings.get("CONFIG_PROTECT_MASK", "")))
++				self.settings.get("CONFIG_PROTECT_MASK", "")),
++			case_insensitive = ("case-insensitive-fs"
++					in self.settings.features))
+ 
+ 		return self._protect_obj
+ 
+@@ -2762,7 +2781,16 @@ class dblink(object):
+ 			filename.lstrip(os_filename_arg.path.sep)))
+ 
+ 		pkgfiles = self.getcontents()
++
++		preserve_case = None
++		if "case-insensitive-fs" in self.settings.features:
++			destfile = destfile.lower()
++			preserve_case = dict((k.lower(), k) for k in pkgfiles)
++			pkgfiles = dict((k.lower(), v) for k, v in pkgfiles.items())
++
+ 		if pkgfiles and destfile in pkgfiles:
++			if preserve_case is not None:
++				return preserve_case[destfile]
+ 			return destfile
+ 		if pkgfiles:
+ 			basename = os_filename_arg.path.basename(destfile)
+@@ -2855,6 +2883,8 @@ class dblink(object):
+ 				for p_path in p_path_list:
+ 					x = os_filename_arg.path.join(p_path, basename)
+ 					if x in pkgfiles:
++						if preserve_case is not None:
++							return preserve_case[x]
+ 						return x
+ 
+ 		return False
+diff --git a/pym/portage/update.py b/pym/portage/update.py
+index df4e11b..7a71092 100644
+--- a/pym/portage/update.py
++++ b/pym/portage/update.py
+@@ -282,7 +282,8 @@ def parse_updates(mycontent):
+ 		myupd.append(mysplit)
+ 	return myupd, errors
+ 
+-def update_config_files(config_root, protect, protect_mask, update_iter, match_callback = None):
++def update_config_files(config_root, protect, protect_mask, update_iter,
++	match_callback = None, case_insensitive = False):
+ 	"""Perform global updates on /etc/portage/package.*, /etc/portage/profile/package.*,
+ 	/etc/portage/profile/packages and /etc/portage/sets.
+ 	config_root - location of files to update
+@@ -406,7 +407,8 @@ def update_config_files(config_root, protect, protect_mask, update_iter, match_c
+ 							sys.stdout.flush()
+ 
+ 	protect_obj = ConfigProtect(
+-		config_root, protect, protect_mask)
++		config_root, protect, protect_mask,
++		case_insensitive = case_insensitive)
+ 	for x in update_files:
+ 		updating_file = os.path.join(abs_user_config, x)
+ 		if protect_obj.isprotected(updating_file):
+diff --git a/pym/portage/util/__init__.py b/pym/portage/util/__init__.py
+index 4105c19..707b001 100644
+--- a/pym/portage/util/__init__.py
++++ b/pym/portage/util/__init__.py
+@@ -1555,10 +1555,12 @@ class LazyItemsDict(UserDict):
+ 			return result
+ 
+ class ConfigProtect(object):
+-	def __init__(self, myroot, protect_list, mask_list):
++	def __init__(self, myroot, protect_list, mask_list,
++		case_insensitive = False):
+ 		self.myroot = myroot
+ 		self.protect_list = protect_list
+ 		self.mask_list = mask_list
++		self.case_insensitive = case_insensitive
+ 		self.updateprotect()
+ 
+ 	def updateprotect(self):
+@@ -1572,6 +1574,8 @@ class ConfigProtect(object):
+ 		for x in self.protect_list:
+ 			ppath = normalize_path(
+ 				os.path.join(self.myroot, x.lstrip(os.path.sep)))
++			if self.case_insensitive:
++				ppath = ppath.lower()
+ 			try:
+ 				if stat.S_ISDIR(os.stat(ppath).st_mode):
+ 					self._dirs.add(ppath)
+@@ -1584,6 +1588,8 @@ class ConfigProtect(object):
+ 		for x in self.mask_list:
+ 			ppath = normalize_path(
+ 				os.path.join(self.myroot, x.lstrip(os.path.sep)))
++			if self.case_insensitive:
++				ppath = ppath.lower()
+ 			try:
+ 				"""Use lstat so that anything, even a broken symlink can be
+ 				protected."""
+@@ -1604,6 +1610,8 @@ class ConfigProtect(object):
+ 		masked = 0
+ 		protected = 0
+ 		sep = os.path.sep
++		if self.case_insensitive:
++			obj = obj.lower()
+ 		for ppath in self.protect:
+ 			if len(ppath) > masked and obj.startswith(ppath):
+ 				if ppath in self._dirs:
+-- 
+1.8.5.5
+

diff --git a/sys-apps/portage/files/portage-2.2.14-ldconfig.patch b/sys-apps/portage/files/portage-2.2.14-ldconfig.patch
new file mode 100644
index 0000000..76fc348
--- /dev/null
+++ b/sys-apps/portage/files/portage-2.2.14-ldconfig.patch
@@ -0,0 +1,28 @@
+commit 3fb24230a2369513b1f36cba3d772bc517265e81
+Author: Benda Xu <heroxbd@gentoo.org>
+Date:   Wed Dec 10 10:45:31 2014 +0900
+
+    In Prefix, let env-update call ldconfig if it exists.
+    
+    It does not affect prefix-rpath, and handles prefix-libc(RAP) correctly.
+
+diff --git a/pym/portage/util/env_update.py b/pym/portage/util/env_update.py
+index ace492c..4437881 100644
+--- a/pym/portage/util/env_update.py
++++ b/pym/portage/util/env_update.py
+@@ -306,13 +306,13 @@ def _env_update(makelinks, target_root, prev_mtimes, contents, env,
+ 		if not libdir_contents_changed:
+ 			makelinks = False
+ 
+-	ldconfig = "/sbin/ldconfig"
++	ldconfig = eprefix + "/sbin/ldconfig"
+ 	if "CHOST" in settings and "CBUILD" in settings and \
+ 		settings["CHOST"] != settings["CBUILD"]:
+ 		ldconfig = find_binary("%s-ldconfig" % settings["CHOST"])
+ 
+ 	# Only run ldconfig as needed
+-	if makelinks and ldconfig and not eprefix:
++	if makelinks and ldconfig:
+ 		# ldconfig has very different behaviour between FreeBSD and Linux
+ 		if ostype == "Linux" or ostype.lower().endswith("gnu"):
+ 			# We can't update links if we haven't cleaned other versions first, as

diff --git a/sys-apps/portage/files/portage-2.2.7-ebuildshell.patch b/sys-apps/portage/files/portage-2.2.7-ebuildshell.patch
new file mode 100644
index 0000000..5c8cec8
--- /dev/null
+++ b/sys-apps/portage/files/portage-2.2.7-ebuildshell.patch
@@ -0,0 +1,158 @@
+diff --git a/bin/ebuild.sh b/bin/ebuild.sh
+index 35f4b91..8e702d0 100755
+--- a/bin/ebuild.sh
++++ b/bin/ebuild.sh
+@@ -90,7 +90,7 @@ __qa_source() {
+ __qa_call() {
+ 	local shopts=$(shopt) OLDIFS="$IFS"
+ 	local retval
+-	"$@"
++	__call-ebuildshell "$@"
+ 	retval=$?
+ 	set +e
+ 	[[ $shopts != $(shopt) ]] &&
+@@ -467,6 +467,58 @@ if [[ -n ${QA_INTERCEPTORS} ]] ; then
+ 	unset BIN_PATH BIN BODY FUNC_SRC
+ fi
+ 
++__call-ebuildshell() {
++	if ! has ebuildshell ${FEATURES}; then
++		"$@"
++		return $?
++	fi
++	(
++		umask 002
++		(
++			(
++				set
++				declare -p
++				declare -fp
++				shopt -p
++				if [[ ${BASH_VERSINFO[0]} == 3 ]]; then
++					export
++				fi
++			) | __filter_readonly_variables --filter-for-subshell
++			echo 'declare -r $PORTAGE_READONLY_METADATA $PORTAGE_READONLY_VARS'
++			echo "export PS1='EBUILD ${PN} $1 \$ '" 
++			echo 'unset ENV'
++			echo "type $1"
++			echo "echo WANTED: $@"
++			echo "trap '"
++			echo "umask 002"
++			echo "("
++			echo "	set"
++			echo "	declare -p"
++			echo "	declare -fp"
++			echo "	shopt -p | grep -v extdebug$"
++			if [[ ${BASH_VERSINFO[0]} == 3 ]]; then
++				echo "	export"
++			fi
++			echo -n ")"
++			echo -n " | __filter_readonly_variables --filter-metadata"
++			echo " > ${T}/ebuildshell-environment-outcome' 0"
++			echo "shopt -u extdebug"
++			echo "trap - DEBUG"
++		) > ${T}/ebuildshell-environment
++		chown ${PORTAGE_USER:-portage}:${PORTAGE_GROUP:-portage} "${T}/ebuildshell-environment" &>/dev/null
++		chmod g+w "${T}/ebuildshell-environment" &>/dev/null
++	)
++
++	rm -f "${T}/ebuildshell-environment-outcome" >&/dev/null
++
++	unset BASH_ENV
++	env -i ${BASH} --rcfile "${T}/ebuildshell-environment"  -i || die
++
++	chown ${PORTAGE_USER:-portage}:${PORTAGE_GROUP:-portage} "${T}/ebuildshell-environment-outcome" &>/dev/null
++	chmod g+w "${T}/ebuildshell-environment-outcome" &>/dev/null
++	source "${T}/ebuildshell-environment-outcome" &>/dev/null
++}
++
+ # Subshell/helper die support (must export for the die helper).
+ export EBUILD_MASTER_PID=$BASHPID
+ trap 'exit 1' SIGTERM
+diff --git a/bin/phase-functions.sh b/bin/phase-functions.sh
+index 711b721..5f3a8a2 100644
+--- a/bin/phase-functions.sh
++++ b/bin/phase-functions.sh
+@@ -87,7 +87,7 @@ PORTAGE_MUTABLE_FILTERED_VARS="AA HOSTNAME"
+ __filter_readonly_variables() {
+ 	local x filtered_vars
+ 	local readonly_bash_vars="BASHOPTS BASHPID DIRSTACK EUID
+-		FUNCNAME GROUPS PIPESTATUS PPID SHELLOPTS UID"
++		FUNCNAME GROUPS PIPESTATUS PPID SHELLOPTS UID BASH_VERSINFO"
+ 	local bash_misc_vars="BASH BASH_.* COLUMNS COMP_WORDBREAKS HISTCMD
+ 		HISTFILE HOSTNAME HOSTTYPE IFS LINENO MACHTYPE OLDPWD
+ 		OPTERR OPTIND OSTYPE POSIXLY_CORRECT PS4 PWD RANDOM
+@@ -98,12 +98,14 @@ __filter_readonly_variables() {
+ 	# Untrusted due to possible application of package renames to binpkgs
+ 	local binpkg_untrusted_vars="CATEGORY P PF PN PR PV PVR"
+ 	local misc_garbage_vars="_portage_filter_opts"
+-	filtered_vars="$readonly_bash_vars $bash_misc_vars
+-		$PORTAGE_READONLY_VARS $misc_garbage_vars"
++	filtered_vars="$readonly_bash_vars"
++	if ! has --filter-for-subshell $* ; then
++		filtered_vars="$filtered_vars $bash_misc_vars $PORTAGE_READONLY_VARS $misc_garbage_vars"
++	fi
+ 
+ 	# Don't filter/interfere with prefix variables unless they are
+ 	# supported by the current EAPI.
+-	if ___eapi_has_prefix_variables; then
++	if ___eapi_has_prefix_variables && ! has --filter-for-subshell $* ; then
+ 		filtered_vars+=" ED EPREFIX EROOT"
+ 	fi
+ 
+@@ -123,7 +125,11 @@ __filter_readonly_variables() {
+ 			LC_CTYPE LC_MESSAGES LC_MONETARY
+ 			LC_NUMERIC LC_PAPER LC_TIME"
+ 	fi
+-	if ! has --allow-extra-vars $* ; then
++	if has --filter-metadata $* ; then
++		filtered_vars="$filtered_vars $PORTAGE_READONLY_METADATA"
++	fi
++	if ! has --allow-extra-vars $* &&
++	   ! has --filter-for-subshell $* ; then
+ 		if [ "${EMERGE_FROM}" = binary ] ; then
+ 			# preserve additional variables from build time,
+ 			# while excluding untrusted variables
+diff --git a/man/make.conf.5 b/man/make.conf.5
+index ab9b44e..45903e3 100644
+--- a/man/make.conf.5
++++ b/man/make.conf.5
+@@ -345,6 +345,12 @@ exist). Also see the related \fIunmerge\-backup\fR feature.
+ Use locks to ensure that unsandboxed ebuild phases never execute
+ concurrently. Also see \fIparallel\-install\fR.
+ .TP
++.B ebuildshell
++Drop into an interactive shell for each phase function, meant for
++debugging.  Because the shell would normally be used to execute the
++phase function, commands like src_unpack or epatch are available in the
++interactive shell.  Use `exit 1` to terminate the merge.
++.TP
+ .B fakeroot
+ Enable fakeroot for the install and package phases when a non-root user runs
+ the \fBebuild\fR(1) command.
+diff --git a/pym/_emerge/AbstractEbuildProcess.py b/pym/_emerge/AbstractEbuildProcess.py
+index 31127f4..73031d0 100644
+--- a/pym/_emerge/AbstractEbuildProcess.py
++++ b/pym/_emerge/AbstractEbuildProcess.py
+@@ -136,6 +136,7 @@ class AbstractEbuildProcess(SpawnProcess):
+ 			self.fd_pipes = {}
+ 		null_fd = None
+ 		if 0 not in self.fd_pipes and \
++			"ebuildshell" not in self.settings.features and \
+ 			self.phase not in self._phases_interactive_whitelist and \
+ 			"interactive" not in self.settings.get("PROPERTIES", "").split():
+ 			null_fd = os.open('/dev/null', os.O_RDONLY)
+diff --git a/pym/portage/const.py b/pym/portage/const.py
+index 214ede4..725a7d0 100644
+--- a/pym/portage/const.py
++++ b/pym/portage/const.py
+@@ -100,7 +100,7 @@ SUPPORTED_FEATURES       = frozenset([
+                            "collision-protect", "compress-build-logs", "compressdebug",
+                            "compress-index", "config-protect-if-modified",
+                            "digest", "distcc", "distcc-pump", "distlocks",
+-                           "downgrade-backup", "ebuild-locks", "fakeroot",
++                           "downgrade-backup", "ebuildshell", "ebuild-locks", "fakeroot",
+                            "fail-clean", "force-mirror", "force-prefix", "getbinpkg",
+                            "installsources", "ipc-sandbox",
+                            "keeptemp", "keepwork", "fixlafiles", "lmirror",

diff --git a/sys-apps/portage/files/portage-2.2.7-macho-relative-install_names.patch b/sys-apps/portage/files/portage-2.2.7-macho-relative-install_names.patch
new file mode 100644
index 0000000..d38d966
--- /dev/null
+++ b/sys-apps/portage/files/portage-2.2.7-macho-relative-install_names.patch
@@ -0,0 +1,68 @@
+commit e1fbd70801e93a5b77febc6c9e95ad43d0ecabbb
+Author: Fabian Groffen <grobian@gentoo.org>
+Date:   Sun Dec 22 14:45:31 2013 +0100
+
+    install_qa_check_macho: allow relative install_names
+    
+    relative install_names (@..../) will be used in binaries a lot, and if
+    they are provided as such, there is nothing wrong with it.  Since they
+    disallow us to do any checks, we just do the least check we can do,
+    which is for the install_name self-reference.  We want to find the
+    library that points to in the install image, if not, it must be wrong.
+
+diff --git a/bin/misc-functions.sh b/bin/misc-functions.sh
+index 129f7d3..83004df 100644
+--- a/bin/misc-functions.sh
++++ b/bin/misc-functions.sh
+@@ -1049,6 +1049,15 @@ install_qa_check_macho() {
+ 		rm -f "${T}/mach-o.check"
+ 	fi
+ 
++	install_name_is_relative() {
++		case $1 in
++			"@executable_path/"*)  return 0  ;;
++			"@loader_path"/*)      return 0  ;;
++			"@rpath/"*)            return 0  ;;
++			*)                     return 1  ;;
++		esac
++	}
++
+ 	# While we generate the NEEDED files, check that we don't get kernel
+ 	# traps at runtime because of broken install_names on Darwin.
+ 	rm -f "${T}"/.install_name_check_failed
+@@ -1061,6 +1070,17 @@ install_qa_check_macho() {
+ 		# See if the self-reference install_name points to an existing
+ 		# and to be installed file.  This usually is a symlink for the
+ 		# major version.
++		if install_name_is_relative ${install_name} ; then
++			# try to locate the library in the installed image
++			local inpath=${install_name#@*/}
++			local libl
++			for libl in $(find "${ED}" -name "${inpath##*/}") ; do
++				if [[ ${libl} == */${inpath} ]] ; then
++					install_name=/${libl#${D}}
++					break
++				fi
++			done
++		fi
+ 		if [[ ! -e ${D}${install_name} ]] ; then
+ 			eqawarn "QA Notice: invalid self-reference install_name ${install_name} in ${obj}"
+ 			# remember we are in an implicit subshell, that's
+@@ -1077,7 +1097,7 @@ install_qa_check_macho() {
+ 			elif [[ ${lib} == ${S}* ]] ; then
+ 				eqawarn "QA Notice: install_name references \${S}: ${lib} in ${obj}"
+ 				touch "${T}"/.install_name_check_failed
+-			elif [[ ! -e ${lib} && ! -e ${D}${lib} && ${lib} != "@executable_path/"* && ${lib} != "@loader_path/"* ]] ; then
++			elif ! install_name_is_relative ${lib} && [[ ! -e ${lib} && ! -e ${D}${lib} ]] ; then
+ 				eqawarn "QA Notice: invalid reference to ${lib} in ${obj}"
+ 				# remember we are in an implicit subshell, that's
+ 				# why we touch a file here ... ideally we should be
+@@ -1086,7 +1106,7 @@ install_qa_check_macho() {
+ 			fi
+ 		done
+ 
+-		# backwards compatability
++		# backwards compatibility
+ 		echo "${obj} ${needed}" >> "${PORTAGE_BUILDDIR}"/build-info/NEEDED
+ 		# what we use
+ 		echo "${arch};${obj};${install_name};${needed}" >> "${PORTAGE_BUILDDIR}"/build-info/NEEDED.MACHO.3

diff --git a/sys-apps/portage/files/portage-2.2.7-sandbox.patch b/sys-apps/portage/files/portage-2.2.7-sandbox.patch
new file mode 100644
index 0000000..9797d31
--- /dev/null
+++ b/sys-apps/portage/files/portage-2.2.7-sandbox.patch
@@ -0,0 +1,21 @@
+candidate patch to be included in the next revision
+
+https://bugs.gentoo.org/show_bug.cgi?id=490016
+
+diff --git a/pym/portage/package/ebuild/doebuild.py b/pym/portage/package/ebuild/doebuild.py
+index 691ef97..7a000b1 100644
+--- a/pym/portage/package/ebuild/doebuild.py
++++ b/pym/portage/package/ebuild/doebuild.py
+@@ -1311,10 +1311,8 @@ def _spawn_actionmap(settings):
+ 		nosandbox = ("sandbox" not in features and \
+ 			"usersandbox" not in features)
+ 
+-	if not portage.process.sandbox_capable:
+-		nosandbox = True
+-
+-	if not portage.process.macossandbox_capable:
++	if not (portage.process.sandbox_capable or \
++		portage.process.macossandbox_capable):
+ 		nosandbox = True
+ 
+ 	sesandbox = settings.selinux_enabled() and \

diff --git a/sys-apps/portage/files/portage-2.2.7-shebang-fixes.patch b/sys-apps/portage/files/portage-2.2.7-shebang-fixes.patch
new file mode 100644
index 0000000..afb00c1
--- /dev/null
+++ b/sys-apps/portage/files/portage-2.2.7-shebang-fixes.patch
@@ -0,0 +1,153 @@
+Hi Fabian,
+
+when /bin/bash is some bash-3.x, things break miserably:
+/tools/gentoo/buildslave/sauxz3-f_pfx-10.0/build/gentoo-prefix/usr/lib/portage/bin/eapi.sh: line 8: syntax error in conditional expression: unexpected token `('
+/tools/gentoo/buildslave/sauxz3-f_pfx-10.0/build/gentoo-prefix/usr/lib/portage/bin/eapi.sh: line 8: syntax error near `^(0'
+/tools/gentoo/buildslave/sauxz3-f_pfx-10.0/build/gentoo-prefix/usr/lib/portage/bin/eapi.sh: line 8: `   [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]]'
+/tools/gentoo/buildslave/sauxz3-f_pfx-10.0/build/gentoo-prefix/usr/lib/portage/bin/ebuild-helpers/keepdir: line 7: ___eapi_has_prefix_variables: command not found
+
+There are still some scripts in 2.2.7 that need to get the shebangs fixed:
+$ git grep '#!/'
+
+Thanks!
+/haubi/
+---
+ bin/bashrc-functions.sh          | 2 +-
+ bin/eapi.sh                      | 2 +-
+ bin/ebuild-helpers/doheader      | 2 +-
+ bin/ebuild-helpers/keepdir       | 2 +-
+ bin/ebuild-helpers/newins        | 1 -
+ bin/ebuild-helpers/xattr/install | 2 +-
+ bin/helper-functions.sh          | 2 +-
+ bin/install.py                   | 2 +-
+ bin/phase-functions.sh           | 2 +-
+ bin/phase-helpers.sh             | 2 +-
+ bin/xattr-helper.py              | 2 +-
+ misc/emerge-delta-webrsync       | 2 +-
+ 12 files changed, 11 insertions(+), 12 deletions(-)
+
+diff --git a/bin/bashrc-functions.sh b/bin/bashrc-functions.sh
+index 69a5eb9..1a92738 100644
+--- a/bin/bashrc-functions.sh
++++ b/bin/bashrc-functions.sh
+@@ -1,4 +1,4 @@
+-#!@PREFIX_PORTAGE_BASH@
++#!@PORTAGE_BASH@
+ # Copyright 1999-2013 Gentoo Foundation
+ # Distributed under the terms of the GNU General Public License v2
+ 
+diff --git a/bin/eapi.sh b/bin/eapi.sh
+index 623b89f..670f884 100644
+--- a/bin/eapi.sh
++++ b/bin/eapi.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!@PORTAGE_BASH@
+ # Copyright 2012 Gentoo Foundation
+ # Distributed under the terms of the GNU General Public License v2
+ 
+diff --git a/bin/ebuild-helpers/doheader b/bin/ebuild-helpers/doheader
+index 3795365..5b6b169 100755
+--- a/bin/ebuild-helpers/doheader
++++ b/bin/ebuild-helpers/doheader
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!@PORTAGE_BASH@
+ # Copyright 1999-2012 Gentoo Foundation
+ # Distributed under the terms of the GNU General Public License v2
+ 
+diff --git a/bin/ebuild-helpers/keepdir b/bin/ebuild-helpers/keepdir
+index bec2feb..7167981 100755
+--- a/bin/ebuild-helpers/keepdir
++++ b/bin/ebuild-helpers/keepdir
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!@PORTAGE_BASH@
+ # Copyright 1999-2013 Gentoo Foundation
+ # Distributed under the terms of the GNU General Public License v2
+ 
+diff --git a/bin/ebuild-helpers/newins b/bin/ebuild-helpers/newins
+index 26dd049..2638a38 100755
+--- a/bin/ebuild-helpers/newins
++++ b/bin/ebuild-helpers/newins
+@@ -1,5 +1,4 @@
+ #!@PORTAGE_BASH@
+-#!/bin/bash
+ # Copyright 1999-2012 Gentoo Foundation
+ # Distributed under the terms of the GNU General Public License v2
+ 
+diff --git a/bin/ebuild-helpers/xattr/install b/bin/ebuild-helpers/xattr/install
+index f51f621..b1d2315 100755
+--- a/bin/ebuild-helpers/xattr/install
++++ b/bin/ebuild-helpers/xattr/install
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!@PORTAGE_BASH@
+ # Copyright 2013 Gentoo Foundation
+ # Distributed under the terms of the GNU General Public License v2
+ 
+diff --git a/bin/helper-functions.sh b/bin/helper-functions.sh
+index c574612..864d5fe 100644
+--- a/bin/helper-functions.sh
++++ b/bin/helper-functions.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!@PORTAGE_BASH@
+ # Copyright 1999-2012 Gentoo Foundation
+ # Distributed under the terms of the GNU General Public License v2
+ 
+diff --git a/bin/install.py b/bin/install.py
+index 2c6dfbe..9bd38c7 100755
+--- a/bin/install.py
++++ b/bin/install.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!@PREFIX_PORTAGE_PYTHON@
+ # Copyright 2013 Gentoo Foundation
+ # Distributed under the terms of the GNU General Public License v2
+ 
+diff --git a/bin/phase-functions.sh b/bin/phase-functions.sh
+index 80e7cc6..4650e14 100644
+--- a/bin/phase-functions.sh
++++ b/bin/phase-functions.sh
+@@ -1,4 +1,4 @@
+-#!@PREFIX_PORTAGE_BASH@
++#!@PORTAGE_BASH@
+ # Copyright 1999-2013 Gentoo Foundation
+ # Distributed under the terms of the GNU General Public License v2
+ 
+diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh
+index 12238c6..dc20991 100644
+--- a/bin/phase-helpers.sh
++++ b/bin/phase-helpers.sh
+@@ -1,4 +1,4 @@
+-#!@PREFIX_PORTAGE_BASH@
++#!@PORTAGE_BASH@
+ # Copyright 1999-2013 Gentoo Foundation
+ # Distributed under the terms of the GNU General Public License v2
+ 
+diff --git a/bin/xattr-helper.py b/bin/xattr-helper.py
+index a85309f..d6cef4f 100755
+--- a/bin/xattr-helper.py
++++ b/bin/xattr-helper.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!@PREFIX_PORTAGE_PYTHON@
+ # Copyright 2012-2013 Gentoo Foundation
+ # Distributed under the terms of the GNU General Public License v2
+ 
+diff --git a/misc/emerge-delta-webrsync b/misc/emerge-delta-webrsync
+index b16982b..66e9275 100755
+--- a/misc/emerge-delta-webrsync
++++ b/misc/emerge-delta-webrsync
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!@PORTAGE_BASH@
+ # Copyright 1999-2013 Gentoo Foundation
+ # Distributed under the terms of the GNU General Public License v2
+ # Author: Brian Harring <ferringb@gentoo.org>, karltk@gentoo.org originally.
+-- 
+1.8.1.5
+
+
+

diff --git a/sys-apps/portage/files/portage-2.2.8-ebuildshell.patch b/sys-apps/portage/files/portage-2.2.8-ebuildshell.patch
new file mode 100644
index 0000000..82219eb
--- /dev/null
+++ b/sys-apps/portage/files/portage-2.2.8-ebuildshell.patch
@@ -0,0 +1,157 @@
+diff --git a/bin/ebuild.sh b/bin/ebuild.sh
+index 35f4b91..8e702d0 100755
+--- a/bin/ebuild.sh
++++ b/bin/ebuild.sh
+@@ -90,7 +90,7 @@
+ __qa_call() {
+ 	local shopts=$(shopt) OLDIFS="$IFS"
+ 	local retval
+-	"$@"
++	__call-ebuildshell "$@"
+ 	retval=$?
+ 	set +e
+ 	[[ $shopts != $(shopt) ]] &&
+@@ -467,6 +467,58 @@
+ 	unset BIN_PATH BIN BODY FUNC_SRC
+ fi
+ 
++__call-ebuildshell() {
++	if ! has ebuildshell ${FEATURES}; then
++		"$@"
++		return $?
++	fi
++	(
++		umask 002
++		(
++			(
++				set
++				declare -p
++				declare -fp
++				shopt -p
++				if [[ ${BASH_VERSINFO[0]} == 3 ]]; then
++					export
++				fi
++			) | __filter_readonly_variables --filter-for-subshell
++			echo 'declare -r $PORTAGE_READONLY_METADATA $PORTAGE_READONLY_VARS'
++			echo "export PS1='EBUILD ${PN} $1 \$ '" 
++			echo 'unset ENV'
++			echo "type $1"
++			echo "echo WANTED: $@"
++			echo "trap '"
++			echo "umask 002"
++			echo "("
++			echo "	set"
++			echo "	declare -p"
++			echo "	declare -fp"
++			echo "	shopt -p | grep -v extdebug$"
++			if [[ ${BASH_VERSINFO[0]} == 3 ]]; then
++				echo "	export"
++			fi
++			echo -n ")"
++			echo -n " | __filter_readonly_variables --filter-metadata"
++			echo " > ${T}/ebuildshell-environment-outcome' 0"
++			echo "shopt -u extdebug"
++			echo "trap - DEBUG"
++		) > ${T}/ebuildshell-environment
++		chown ${PORTAGE_USER:-portage}:${PORTAGE_GROUP:-portage} "${T}/ebuildshell-environment" &>/dev/null
++		chmod g+w "${T}/ebuildshell-environment" &>/dev/null
++	)
++
++	rm -f "${T}/ebuildshell-environment-outcome" >&/dev/null
++
++	unset BASH_ENV
++	env -i ${BASH} --rcfile "${T}/ebuildshell-environment"  -i || die
++
++	chown ${PORTAGE_USER:-portage}:${PORTAGE_GROUP:-portage} "${T}/ebuildshell-environment-outcome" &>/dev/null
++	chmod g+w "${T}/ebuildshell-environment-outcome" &>/dev/null
++	source "${T}/ebuildshell-environment-outcome" &>/dev/null
++}
++
+ # Subshell/helper die support (must export for the die helper).
+ export EBUILD_MASTER_PID=${BASHPID:-$(__bashpid)}
+ trap 'exit 1' SIGTERM
+diff --git a/bin/phase-functions.sh b/bin/phase-functions.sh
+index 711b721..5f3a8a2 100644
+--- a/bin/phase-functions.sh
++++ b/bin/phase-functions.sh
+@@ -87,7 +87,7 @@ PORTAGE_MUTABLE_FILTERED_VARS="AA HOSTNAME"
+ __filter_readonly_variables() {
+ 	local x filtered_vars
+ 	local readonly_bash_vars="BASHOPTS BASHPID DIRSTACK EUID
+-		FUNCNAME GROUPS PIPESTATUS PPID SHELLOPTS UID"
++		FUNCNAME GROUPS PIPESTATUS PPID SHELLOPTS UID BASH_VERSINFO"
+ 	local bash_misc_vars="BASH BASH_.* COLUMNS COMP_WORDBREAKS HISTCMD
+ 		HISTFILE HOSTNAME HOSTTYPE IFS LINENO MACHTYPE OLDPWD
+ 		OPTERR OPTIND OSTYPE POSIXLY_CORRECT PS4 PWD RANDOM
+@@ -98,12 +98,14 @@ __filter_readonly_variables() {
+ 	# Untrusted due to possible application of package renames to binpkgs
+ 	local binpkg_untrusted_vars="CATEGORY P PF PN PR PV PVR"
+ 	local misc_garbage_vars="_portage_filter_opts"
+-	filtered_vars="$readonly_bash_vars $bash_misc_vars
+-		$PORTAGE_READONLY_VARS $misc_garbage_vars"
++	filtered_vars="$readonly_bash_vars"
++	if ! has --filter-for-subshell $* ; then
++		filtered_vars="$filtered_vars $bash_misc_vars $PORTAGE_READONLY_VARS $misc_garbage_vars"
++	fi
+ 
+ 	# Don't filter/interfere with prefix variables unless they are
+ 	# supported by the current EAPI.
+-	if ___eapi_has_prefix_variables; then
++	if ___eapi_has_prefix_variables && ! has --filter-for-subshell $* ; then
+ 		filtered_vars+=" ED EPREFIX EROOT"
+ 	fi
+ 
+@@ -123,7 +125,11 @@ __filter_readonly_variables() {
+ 			LC_CTYPE LC_MESSAGES LC_MONETARY
+ 			LC_NUMERIC LC_PAPER LC_TIME"
+ 	fi
+-	if ! has --allow-extra-vars $* ; then
++	if has --filter-metadata $* ; then
++		filtered_vars="$filtered_vars $PORTAGE_READONLY_METADATA"
++	fi
++	if ! has --allow-extra-vars $* &&
++	   ! has --filter-for-subshell $* ; then
+ 		if [ "${EMERGE_FROM}" = binary ] ; then
+ 			# preserve additional variables from build time,
+ 			# while excluding untrusted variables
+diff --git a/man/make.conf.5 b/man/make.conf.5
+index ab9b44e..45903e3 100644
+--- a/man/make.conf.5
++++ b/man/make.conf.5
+@@ -346,6 +346,12 @@
+ Use locks to ensure that unsandboxed ebuild phases never execute
+ concurrently. Also see \fIparallel\-install\fR.
+ .TP
++.B ebuildshell
++Drop into an interactive shell for each phase function, meant for
++debugging.  Because the shell would normally be used to execute the
++phase function, commands like src_unpack or epatch are available in the
++interactive shell.  Use `exit 1` to terminate the merge.
++.TP
+ .B fakeroot
+ Enable fakeroot for the install and package phases when a non-root user runs
+ the \fBebuild\fR(1) command.
+diff --git a/pym/_emerge/AbstractEbuildProcess.py b/pym/_emerge/AbstractEbuildProcess.py
+index 31127f4..73031d0 100644
+--- a/pym/_emerge/AbstractEbuildProcess.py
++++ b/pym/_emerge/AbstractEbuildProcess.py
+@@ -136,6 +136,7 @@ class AbstractEbuildProcess(SpawnProcess):
+ 			self.fd_pipes = {}
+ 		null_fd = None
+ 		if 0 not in self.fd_pipes and \
++			"ebuildshell" not in self.settings.features and \
+ 			self.phase not in self._phases_interactive_whitelist and \
+ 			"interactive" not in self.settings.get("PROPERTIES", "").split():
+ 			null_fd = os.open('/dev/null', os.O_RDONLY)
+diff --git a/pym/portage/const.py b/pym/portage/const.py
+index 214ede4..725a7d0 100644
+--- a/pym/portage/const.py
++++ b/pym/portage/const.py
+@@ -139,6 +139,7 @@ SUPPORTED_FEATURES       = frozenset([
+ 	"distlocks",
+ 	"downgrade-backup",
+ 	"ebuild-locks",
++	"ebuildshell",
+ 	"fail-clean",
+ 	"fakeroot",
+ 	"fixlafiles",

diff --git a/sys-apps/portage/metadata.xml b/sys-apps/portage/metadata.xml
new file mode 100644
index 0000000..34ef584
--- /dev/null
+++ b/sys-apps/portage/metadata.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+	<herd>prefix</herd>
+	<maintainer><email>grobian@gentoo.org</email></maintainer>
+
+	<use>
+		<flag name="epydoc">Build html API documentation with epydoc.</flag>
+		<flag name="ipc">Use inter-process communication between portage and running ebuilds.</flag>
+		<flag name="less">Pull in sys-apps/less as default pager for etc-update.</flag>
+		<flag name="prefix-chaining">mduft's experimental prefix chaining facilities</flag>
+	</use>
+</pkgmetadata>

diff --git a/sys-apps/portage/portage-2.2.10.1-r1.ebuild b/sys-apps/portage/portage-2.2.10.1-r1.ebuild
new file mode 100644
index 0000000..570635f
--- /dev/null
+++ b/sys-apps/portage/portage-2.2.10.1-r1.ebuild
@@ -0,0 +1,592 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id: portage-2.2.01.16270.ebuild 58665 2010-09-05 19:54:38Z grobian $
+
+# Require EAPI 2 since we now require at least python-2.6 (for python 3
+# syntax support) which also requires EAPI 2.
+EAPI=3
+PYTHON_COMPAT=(
+	pypy1_9 pypy2_0
+	python3_1 python3_2 python3_3 python3_4
+	python2_6 python2_7
+)
+inherit eutils multilib
+
+DESCRIPTION="Prefix branch of the Portage Package Manager, used in Gentoo Prefix"
+HOMEPAGE="http://www.gentoo.org/proj/en/gentoo-alt/prefix/"
+LICENSE="GPL-2"
+KEYWORDS="~ppc-aix ~x64-freebsd ~x86-freebsd ~hppa-hpux ~ia64-hpux ~x86-interix ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+SLOT="0"
+IUSE="build doc epydoc +ipc linguas_ru pypy2_0 python2 python3 selinux xattr prefix-chaining"
+
+for _pyimpl in ${PYTHON_COMPAT[@]} ; do
+	IUSE+=" python_targets_${_pyimpl}"
+done
+unset _pyimpl
+
+# Import of the io module in python-2.6 raises ImportError for the
+# thread module if threading is disabled.
+python_dep_ssl="python3? ( =dev-lang/python-3*[ssl] )
+	!pypy2_0? ( !python2? ( !python3? (
+		|| ( >=dev-lang/python-2.7[ssl] dev-lang/python:2.6[threads,ssl] )
+	) ) )
+	pypy2_0? ( !python2? ( !python3? ( dev-python/pypy:2.0[bzip2,ssl] ) ) )
+	python2? ( !python3? ( || ( dev-lang/python:2.7[ssl] dev-lang/python:2.6[ssl,threads] ) ) )"
+python_dep="${python_dep_ssl//\[ssl\]}"
+python_dep="${python_dep//,ssl}"
+python_dep="${python_dep//ssl,}"
+
+python_dep="${python_dep}
+	python_targets_pypy1_9? ( dev-python/pypy:1.9 )
+	python_targets_pypy2_0? ( dev-python/pypy:2.0 )
+	python_targets_python2_6? ( dev-lang/python:2.6 )
+	python_targets_python2_7? ( dev-lang/python:2.7 )
+	python_targets_python3_1? ( dev-lang/python:3.1 )
+	python_targets_python3_2? ( dev-lang/python:3.2 )
+	python_targets_python3_3? ( dev-lang/python:3.3 )
+	python_targets_python3_4? ( dev-lang/python:3.4 )
+"
+
+# The pysqlite blocker is for bug #282760.
+# make-3.82 is for bug #455858
+DEPEND="${python_dep}
+	>=sys-devel/make-3.82
+	>=sys-apps/sed-4.0.5 sys-devel/patch
+	doc? ( app-text/xmlto ~app-text/docbook-xml-dtd-4.4 )
+	epydoc? ( >=dev-python/epydoc-2.0 !<=dev-python/pysqlite-2.4.1 )"
+# Require sandbox-2.2 for bug #288863.
+# For xattr, we can spawn getfattr and setfattr from sys-apps/attr, but that's
+# quite slow, so it's not considered in the dependencies as an alternative to
+# to python-3.3 / pyxattr. Also, xattr support is only tested with Linux, so
+# for now, don't pull in xattr deps for other kernels.
+# For whirlpool hash, require python[ssl] or python-mhash (bug #425046).
+# For compgen, require bash[readline] (bug #445576).
+# bash-4.1 necessary for redirect_alloc_fd, which fails on non-Linux if bash
+# doesn't have a builtin for finding a random filedescriptor
+RDEPEND="${python_dep}
+	!build? ( >=sys-apps/sed-4.0.5
+		|| ( >=app-shells/bash-4.2_p37[readline] ( <app-shells/bash-4.2_p37 >=app-shells/bash-4.1 ) )
+		>=app-admin/eselect-1.2
+		|| ( ${python_dep_ssl} dev-python/python-mhash )
+	)
+	elibc_FreeBSD? ( !prefix? ( sys-freebsd/freebsd-bin ) )
+	elibc_glibc? ( !prefix? ( >=sys-apps/sandbox-2.2 ) )
+	elibc_uclibc? ( !prefix? ( >=sys-apps/sandbox-2.2 ) )
+	kernel_linux? ( >=app-misc/pax-utils-0.1.17 )
+	kernel_SunOS? ( >=app-misc/pax-utils-0.1.17 )
+	kernel_FreeBSD? ( >=app-misc/pax-utils-0.1.17 )
+	kernel_Darwin? ( >=app-misc/pax-utils-0.1.18 )
+	kernel_HPUX? ( !hppa-hpux? ( >=app-misc/pax-utils-0.1.19 ) )
+	kernel_AIX? ( >=sys-apps/aix-miscutils-0.1.1634 )
+	xattr? ( kernel_linux? ( || ( >=dev-lang/python-3.3_pre20110902 dev-python/pyxattr ) ) )
+	selinux? ( || ( >=sys-libs/libselinux-2.0.94[python] <sys-libs/libselinux-2.0.94 ) )
+	!<app-shells/bash-3.2_p17
+	!prefix? ( !<app-admin/logrotate-3.8.0 )"
+PDEPEND="
+	!build? (
+		>=net-misc/rsync-2.6.4
+		userland_GNU? ( >=sys-apps/coreutils-6.4 )
+	)"
+# coreutils-6.4 rdep is for date format in emerge-webrsync #164532
+# NOTE: FEATURES=installsources requires debugedit and rsync
+
+SRC_ARCHIVES="http://dev.gentoo.org/~zmedico/portage/archives http://dev.gentoo.org/~grobian/distfiles"
+
+prefix_src_archives() {
+	local x y
+	for x in ${@}; do
+		for y in ${SRC_ARCHIVES}; do
+			echo ${y}/${x}
+		done
+	done
+}
+
+PV_PL="2.1.2"
+PATCHVER_PL=""
+TARBALL_PV="${PV}"
+SRC_URI="mirror://gentoo/prefix-${PN}-${TARBALL_PV}.tar.bz2
+	$(prefix_src_archives prefix-${PN}-${TARBALL_PV}.tar.bz2)"
+
+PATCHVER=
+[[ $TARBALL_PV = $PV ]] || PATCHVER=$PV
+if [ -n "${PATCHVER}" ]; then
+	SRC_URI="${SRC_URI} mirror://gentoo/${PN}-${PATCHVER}.patch.bz2
+	$(prefix_src_archives ${PN}-${PATCHVER}.patch.bz2)"
+fi
+
+S="${WORKDIR}"/prefix-${PN}-${TARBALL_PV}
+S_PL="${WORKDIR}"/${PN}-${PV_PL}
+
+compatible_python_is_selected() {
+	[[ $("${EPREFIX}/usr/bin/python" -c 'import sys ; sys.stdout.write(sys.hexversion >= 0x2060000 and "good" or "bad")') = good ]]
+}
+
+current_python_has_xattr() {
+	[[ ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).'
+	local PYTHON=${EPREFIX}/usr/bin/${EPYTHON}
+	[[ $("${PYTHON}" -c 'import sys ; sys.stdout.write(sys.hexversion >= 0x3030000 and "yes" or "no")') = yes ]] || \
+	"${PYTHON}" -c 'import xattr' 2>/dev/null
+}
+
+call_with_python_impl() {
+	[[ ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).'
+	env EPYTHON=${EPYTHON} "$@"
+}
+
+get_python_interpreter() {
+	[ $# -eq 1 ] || die "expected 1 argument, got $#: $*"
+	local impl=$1 python
+	case "${impl}" in
+		python*)
+			python=${impl/_/.}
+			;;
+		pypy*)
+			python=${impl/_/.}
+			python=${python/pypy/pypy-c}
+			;;
+		*)
+			die "Unrecognized python target: ${impl}"
+	esac
+	echo ${python}
+}
+
+get_python_sitedir() {
+	[ $# -eq 1 ] || die "expected 1 argument, got $#: $*"
+	local impl=$1
+	local site_dir=/usr/$(get_libdir)/${impl/_/.}/site-packages
+	[[ -d ${EROOT}${site_dir} ]] || \
+		ewarn "site-packages dir missing for ${impl}: ${EROOT}${site_dir}"
+	echo "${site_dir}"
+}
+
+python_compileall() {
+	[[ ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).'
+	local d=${EPREFIX}$1 PYTHON=${EPREFIX}/usr/bin/${EPYTHON}
+	local d_image=${D}${d#/}
+	[[ -d ${d_image} ]] || die "directory does not exist: ${d_image}"
+	case "${EPYTHON}" in
+		python*)
+			"${PYTHON}" -m compileall -q -f -d "${d}" "${d_image}" || die
+			# Note: Using -OO breaks emaint, since it requires __doc__,
+			# and __doc__ is None when -OO is used.
+			"${PYTHON}" -O -m compileall -q -f -d "${d}" "${d_image}" || die
+			;;
+		pypy*)
+			"${PYTHON}" -m compileall -q -f -d "${d}" "${d_image}" || die
+			;;
+		*)
+			die "Unrecognized EPYTHON value: ${EPYTHON}"
+	esac
+}
+
+pkg_setup() {
+	if use python2 && use python3 ; then
+		ewarn "Both python2 and python3 USE flags are enabled, but only one"
+		ewarn "can be in the shebangs. Using python3."
+	fi
+	if use pypy2_0 && use python3 ; then
+		ewarn "Both pypy2_0 and python3 USE flags are enabled, but only one"
+		ewarn "can be in the shebangs. Using python3."
+	fi
+	if use pypy2_0 && use python2 ; then
+		ewarn "Both pypy2_0 and python2 USE flags are enabled, but only one"
+		ewarn "can be in the shebangs. Using python2"
+	fi
+	if ! use pypy2_0 && ! use python2 && ! use python3 && \
+		! compatible_python_is_selected ; then
+		ewarn "Attempting to select a compatible default python interpreter"
+		local x success=0
+		for x in "${EPREFIX}"/usr/bin/python2.* ; do
+			x=${x#${EPREFIX}/usr/bin/python2.}
+			if [[ $x -ge 6 ]] 2>/dev/null ; then
+				eselect python set python2.$x
+				if compatible_python_is_selected ; then
+					elog "Default python interpreter is now set to python-2.$x"
+					success=1
+					break
+				fi
+			fi
+		done
+		if [ $success != 1 ] ; then
+			eerror "Unable to select a compatible default python interpreter!"
+			die "This version of portage requires at least python-2.6 to be selected as the default python interpreter (see \`eselect python --help\`)."
+		fi
+	fi
+
+	# We use EPYTHON to designate the active python interpreter,
+	# but we only export when needed, via call_with_python_impl.
+	EPYTHON=python
+	export -n EPYTHON
+	if use python3; then
+		EPYTHON=python3
+	elif use python2; then
+		EPYTHON=python2
+	elif use pypy2_0; then
+		EPYTHON=pypy-c2.0
+	fi
+}
+
+src_prepare() {
+	if [ -n "${PATCHVER}" ] ; then
+		if [[ -L $S/bin/ebuild-helpers/portageq ]] ; then
+			rm "$S/bin/ebuild-helpers/portageq" \
+				|| die "failed to remove portageq helper symlink"
+		fi
+		epatch "${WORKDIR}/${PN}-${PATCHVER}.patch"
+	fi
+
+	use prefix-chaining && epatch "${FILESDIR}"/${PN}-2.2.00.15801-prefix-chaining.patch
+	epatch "${FILESDIR}"/${PN}-2.2.8-ebuildshell.patch # 155161
+	# use pool of servers
+	sed -i \
+		-e 's/prefix.gentooexperimental.org/rsync.prefix.bitzolder.nl/' \
+		bin/emerge-webrsync cnf/make.conf.example cnf/repos.conf
+
+	# temp workaround to be able to upgrade to 2.2.14
+	epatch "${FILESDIR}"/${P}-case-insensitive-fs.patch # 524236
+	sed -i \
+		-e 's/force-prefix/force-prefix case-insensitive-fs/' \
+		cnf/make.globals
+
+	if ! use ipc ; then
+		einfo "Disabling ipc..."
+		sed -e "s:_enable_ipc_daemon = True:_enable_ipc_daemon = False:" \
+			-i pym/_emerge/AbstractEbuildProcess.py || \
+			die "failed to patch AbstractEbuildProcess.py"
+	fi
+
+	if use xattr && use kernel_linux ; then
+		einfo "Adding FEATURES=xattr to make.globals ..."
+		echo -e '\nFEATURES="${FEATURES} xattr"' >> cnf/make.globals \
+			|| die "failed to append to make.globals"
+	fi
+
+	local set_shebang=
+	if use python3; then
+		set_shebang=python3
+	elif use python2; then
+		set_shebang=python2
+	elif use pypy2_0; then
+		set_shebang=pypy-c2.0
+	fi
+	if [[ -n ${set_shebang} ]] ; then
+		einfo "Converting shebangs for ${set_shebang}..."
+		while read -r -d $'\0' ; do
+			local shebang=$(head -n1 "$REPLY")
+			if [[ ${shebang} == "#!${EPREFIX}/usr/bin/python"* ]] ; then
+				sed -i -e "1s:python:${set_shebang}:" "$REPLY" || \
+					die "sed failed"
+			fi
+		done < <(find . -type f -print0)
+	fi
+
+	# "native" Prefix still uses configure
+	if use !prefix && [[ -n ${EPREFIX} ]] ; then
+		einfo "Setting portage.const.EPREFIX ..."
+		sed -e "s|^\(SANDBOX_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/bin/sandbox\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(FAKEROOT_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/bin/fakeroot\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(BASH_BINARY[[:space:]]*=[[:space:]]*\"\)\(/bin/bash\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(MOVE_BINARY[[:space:]]*=[[:space:]]*\"\)\(/bin/mv\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(PRELINK_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/sbin/prelink\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(EPREFIX[[:space:]]*=[[:space:]]*\"\).*|\\1${EPREFIX}\"|" \
+			-i pym/portage/const.py || \
+			die "Failed to patch portage.const.EPREFIX"
+
+		einfo "Prefixing shebangs ..."
+		while read -r -d $'\0' ; do
+			local shebang=$(head -n1 "$REPLY")
+			if [[ ${shebang} == "#!"* && ! ${shebang} == "#!${EPREFIX}/"* ]] ; then
+				sed -i -e "1s:.*:#!${EPREFIX}${shebang:2}:" "$REPLY" || \
+					die "sed failed"
+			fi
+		done < <(find . -type f -print0)
+
+		einfo "Adding FEATURES=force-prefix to make.globals ..."
+		echo -e '\nFEATURES="${FEATURES} force-prefix"' >> cnf/make.globals \
+			|| die "failed to append to make.globals"
+	fi
+
+	if use !prefix ; then
+	cd "${S}/cnf" || die
+	if [ -f "make.conf.${ARCH}".diff ]; then
+		patch make.conf "make.conf.${ARCH}".diff || \
+			die "Failed to patch make.conf.example"
+	else
+		eerror ""
+		eerror "Portage does not have an arch-specific configuration for this arch."
+		eerror "Please notify the arch maintainer about this issue. Using generic."
+		eerror ""
+	fi
+	fi
+}
+
+src_configure() {
+	if use prefix ; then
+		local extrapath="/usr/bin:/bin"
+		# ok, we can't rely on PORTAGE_ROOT_USER being there yet, as people
+		# tend not to update that often, as long as we are a separate ebuild
+		# we can assume when unset, it's time for some older trick
+		if [[ -z ${PORTAGE_ROOT_USER} ]] ; then
+			PORTAGE_ROOT_USER=$(python -c 'from portage.const import rootuser; print rootuser')
+		fi
+		# lazy check, but works for now
+		if [[ ${PORTAGE_ROOT_USER} == "root" ]] ; then
+			# we need this for e.g. mtree on FreeBSD (and Darwin) which is in
+			# /usr/sbin
+			extrapath="/usr/sbin:/usr/bin:/sbin:/bin"
+		fi
+
+		econf \
+			--with-portage-user="${PORTAGE_USER:-portage}" \
+			--with-portage-group="${PORTAGE_GROUP:-portage}" \
+			--with-root-user="${PORTAGE_ROOT_USER}" \
+			--with-offset-prefix="${EPREFIX}" \
+			--with-extra-path="${extrapath}" \
+			|| die "econf failed"
+	else
+		default
+	fi
+}
+
+src_compile() {
+	if use prefix ; then
+		emake || die "emake failed"
+	fi
+
+	if use doc; then
+		call_with_python_impl \
+		emake docbook || die
+	fi
+
+	if use epydoc; then
+		einfo "Generating api docs"
+		call_with_python_impl \
+		emake epydoc || die
+	fi
+}
+
+src_test() {
+	# make files executable, in case they were created by patch
+	find bin -type f | xargs chmod +x
+	call_with_python_impl \
+	emake test || die
+}
+
+src_install() {
+	local portage_base="/usr/lib/portage"
+
+	emake DESTDIR="${D}" install || die "make install failed."
+	dodir /usr/lib/portage/bin
+
+	if use userland_GNU; then
+		rm "${ED}"${portage_base}/bin/ebuild-helpers/bsd/sed || die "Failed to remove sed wrapper"
+	fi
+
+	use doc && dohtml -r "${S}"/doc/*
+	use epydoc && dohtml -r "${WORKDIR}"/api
+	dodir /etc/portage
+	keepdir /etc/portage
+
+	# Use dodoc for compression, since the Makefile doesn't do that.
+	dodoc "${S}"/{ChangeLog,NEWS,RELEASE-NOTES} || die
+
+	# Allow external portage API consumers to import portage python modules
+	# (this used to be done with PYTHONPATH setting in /etc/env.d).
+	# For each of PYTHON_TARGETS, install a tree of *.py symlinks in
+	# site-packages, and compile with the corresponding interpreter.
+	local impl files mod_dir dest_mod_dir python relative_path x
+	for impl in "${PYTHON_COMPAT[@]}" ; do
+		use "python_targets_${impl}" || continue
+		if use build && [[ ${ROOT} == / &&
+			! -x ${EPREFIX}/usr/bin/$(get_python_interpreter ${impl}) ]] ; then
+			# Tolerate --nodeps at beginning of stage1 for catalyst
+			ewarn "skipping python_targets_${impl}, interpreter not found"
+			continue
+		fi
+		while read -r mod_dir ; do
+			cd "${ED}/usr/lib/portage/pym/${mod_dir}" || die
+			files=$(echo *.py)
+			if [ -z "${files}" ] || [ "${files}" = "*.py" ]; then
+				# __pycache__ directories contain no py files
+				continue
+			fi
+			dest_mod_dir=$(get_python_sitedir ${impl})/${mod_dir}
+			dodir "${dest_mod_dir}" || die
+			relative_path=../../../lib/portage/pym/${mod_dir}
+			x=/${mod_dir}
+			while [ -n "${x}" ] ; do
+				relative_path=../${relative_path}
+				x=${x%/*}
+			done
+			for x in ${files} ; do
+				dosym "${relative_path}/${x}" \
+					"${dest_mod_dir}/${x}" || die
+			done
+		done < <(cd "${ED}"/usr/lib/portage/pym || die ; find * -type d ! -path "portage/tests*")
+		cd "${S}" || die
+		EPYTHON=$(get_python_interpreter ${impl}) \
+		python_compileall "$(get_python_sitedir ${impl})"
+	done
+
+	# Compile /usr/lib/portage/pym with the active interpreter, since portage
+	# internal commands force this directory to the beginning of sys.path.
+	python_compileall /usr/lib/portage/pym
+}
+
+pkg_preinst() {
+	if [[ $ROOT == / ]] ; then
+		# Run some minimal tests as a sanity check.
+		local test_runner=$(find "$ED" -name runTests)
+		if [[ -n $test_runner && -x $test_runner ]] ; then
+			einfo "Running preinst sanity tests..."
+			"$test_runner" || die "preinst sanity tests failed"
+		fi
+	fi
+
+	if use xattr && ! current_python_has_xattr ; then
+		ewarn "For optimal performance in xattr handling, install"
+		ewarn "dev-python/pyxattr, or install >=dev-lang/python-3.3 and"
+		ewarn "enable USE=python3 for $CATEGORY/$PN."
+	fi
+
+	has_version "<=${CATEGORY}/${PN}-2.2.00.13346"
+	EAPIPREFIX_UPGRADE=$?
+
+	if has_version "<${CATEGORY}/${PN}-2.2.7-r1" ; then
+		REPOS_CONF_UPGRADE=true
+		REPOS_CONF_SYNC=
+		type -P portageq >/dev/null 2>&1 && \
+			REPOS_CONF_SYNC=$("$(type -P portageq)" envvar SYNC)
+	fi
+}
+
+new_config_protect() {
+	# Generate a ._cfg file even if the target file
+	# does not exist, ensuring that the user will
+	# notice the config change.
+	local basename=${1##*/}
+	local dirname=${1%/*}
+	local i=0
+	while true ; do
+		local filename=$(
+			echo -n "${dirname}/._cfg"
+			printf "%04d" ${i}
+			echo -n "_${basename}"
+		)
+		[[ -e ${filename} ]] || break
+		(( i++ ))
+	done
+	echo "${filename}"
+}
+
+pkg_postinst() {
+
+	if [[ -n ${REPOS_CONF_UPGRADE} ]] ; then
+		einfo "Generating repos.conf"
+		local repo_name=
+		[[ -f ${PORTDIR}/profiles/repo_name ]] && \
+			repo_name=$(< "${PORTDIR}/profiles/repo_name")
+		if [[ -z ${REPOS_CONF_SYNC} ]] ; then
+			REPOS_CONF_SYNC=$(grep "^sync-uri =" "${EROOT:-${ROOT}}usr/share/portage/config/repos.conf")
+			REPOS_CONF_SYNC=${REPOS_CONF_SYNC##* }
+		fi
+		local sync_type=
+		[[ ${REPOS_CONF_SYNC} == git://* ]] && sync_type=git
+
+		if [[ ${REPOS_CONF_SYNC} == cvs://* ]]; then
+			sync_type=cvs
+			REPOS_CONF_SYNC=${REPOS_CONF_SYNC#cvs://}
+		fi
+
+		cat <<-EOF > "${T}/repos.conf"
+		[DEFAULT]
+		main-repo = ${repo_name:-gentoo}
+
+		[${repo_name:-gentoo}]
+		location = ${PORTDIR:-${EPREFIX}/usr/portage}
+		sync-type = ${sync_type:-rsync}
+		sync-uri = ${REPOS_CONF_SYNC}
+		EOF
+
+		[[ ${sync_type} == cvs ]] && echo "sync-cvs-repo = $(<"${PORTDIR}/CVS/Repository")" >> "${T}/repos.conf"
+
+		local dest=${EROOT:-${ROOT}}etc/portage/repos.conf
+		if [[ ! -f ${dest} ]] && mkdir -p "${dest}" 2>/dev/null ; then
+			dest=${EROOT:-${ROOT}}etc/portage/repos.conf/${repo_name:-gentoo}.conf
+		fi
+		# Don't install the config update if the desired repos.conf directory
+		# and config file exist, since users may accept it blindly and break
+		# their config (bug #478726).
+		[[ -e ${EROOT:-${ROOT}}etc/portage/repos.conf/${repo_name:-gentoo}.conf ]] || \
+			mv "${T}/repos.conf" "$(new_config_protect "${dest}")"
+
+		if [[ ${PORTDIR} == ${EPREFIX}/usr/portage ]] ; then
+			einfo "Generating make.conf PORTDIR setting for backward compatibility"
+			for dest in "${EROOT:-${ROOT}}etc/make.conf" "${EROOT:-${ROOT}}etc/portage/make.conf" ; do
+				[[ -e ${dest} ]] && break
+			done
+			[[ -d ${dest} ]] && dest=${dest}/portdir.conf
+			rm -rf "${T}/make.conf"
+			[[ -f ${dest} ]] && cat "${dest}" > "${T}/make.conf"
+			cat <<-EOF >> "${T}/make.conf"
+
+			# Set PORTDIR for backward compatibility with various tools:
+			#   gentoo-bashcomp - bug #478444
+			#   euse - bug #474574
+			#   euses and ufed - bug #478318
+			PORTDIR="${EPREFIX}/usr/portage"
+			EOF
+			mkdir -p "${dest%/*}"
+			mv "${T}/make.conf" "$(new_config_protect "${dest}")"
+		fi
+	fi
+
+	pushd "${EROOT}var/db/pkg" > /dev/null
+	local didwork=
+	[[ ! -e "${EROOT}"var/lib/portage/preserved_libs_registry ]] && for cpv in */*/NEEDED ; do
+		if [[ ${CHOST} == *-darwin* && ! -f ${cpv}.MACHO.3 ]] ; then
+			while read line; do
+				scanmacho -BF "%a;%F;%S;%n" ${line% *} >> "${cpv}".MACHO.3
+			done < "${cpv}"
+			[[ -z ${didwork} ]] \
+				&& didwork=yes \
+				|| didwork=already
+		elif [[ ${CHOST} != *-darwin* && ${CHOST} != *-interix* && ! -f ${cpv}.ELF.2 ]] ; then
+			while read line; do
+				filename=${line% *}
+				needed=${line#* }
+				newline=$(scanelf -BF "%a;%F;%S;$needed;%r" $filename)
+				echo "${newline:3}" >> "${cpv}".ELF.2
+			done < "${cpv}"
+			[[ -z ${didwork} ]] \
+				&& didwork=yes \
+				|| didwork=already
+		fi
+		[[ ${didwork} == yes ]] && \
+			einfo "converting NEEDED files to new syntax, please wait"
+	done
+	popd > /dev/null
+
+	if [[ ${EAPIPREFIX_UPGRADE} == 0 ]] ; then
+		local eapi
+		einfo 'removing EAPI="prefix" legacy from your vdb, please wait'
+		pushd "${EROOT}var/db/pkg" > /dev/null
+		for cpv in */* ; do
+			[[ ${cpv##*/} == "-MERGING-"* ]] && continue
+			# remove "prefix" from EAPI file
+			eapi=$(<"${cpv}"/EAPI)
+			eapi=${eapi/prefix/}
+			eapi=${eapi# }
+			eapi=${eapi:-0}
+			echo ${eapi} > "${cpv}"/EAPI
+			# remove "prefix" from EAPI in stored environment
+			bzcat "${cpv}"/environment.bz2 \
+				| sed -e "s/EAPI=\([\"']\)prefix [0-9][\"']/EAPI=\1${eapi}\1/" \
+				| bzip2 -9 > "${cpv}"/environment2.bz2 \
+				&& mv -f "${cpv}"/environment{2,}.bz2
+			# remove "prefix" from the stored ebuild
+			sed -i -e "s/^EAPI=.*$/EAPI=${eapi}/" "${cpv}/${cpv##*/}.ebuild"
+		done
+		popd > /dev/null
+	fi
+}

diff --git a/sys-apps/portage/portage-2.2.10.1.ebuild b/sys-apps/portage/portage-2.2.10.1.ebuild
new file mode 100644
index 0000000..8431971
--- /dev/null
+++ b/sys-apps/portage/portage-2.2.10.1.ebuild
@@ -0,0 +1,586 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id: portage-2.2.01.16270.ebuild 58665 2010-09-05 19:54:38Z grobian $
+
+# Require EAPI 2 since we now require at least python-2.6 (for python 3
+# syntax support) which also requires EAPI 2.
+EAPI=3
+PYTHON_COMPAT=(
+	pypy1_9 pypy2_0
+	python3_1 python3_2 python3_3 python3_4
+	python2_6 python2_7
+)
+inherit eutils multilib
+
+DESCRIPTION="Prefix branch of the Portage Package Manager, used in Gentoo Prefix"
+HOMEPAGE="http://www.gentoo.org/proj/en/gentoo-alt/prefix/"
+LICENSE="GPL-2"
+KEYWORDS="~ppc-aix ~x64-freebsd ~x86-freebsd ~hppa-hpux ~ia64-hpux ~x86-interix ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+SLOT="0"
+IUSE="build doc epydoc +ipc linguas_ru pypy2_0 python2 python3 selinux xattr prefix-chaining"
+
+for _pyimpl in ${PYTHON_COMPAT[@]} ; do
+	IUSE+=" python_targets_${_pyimpl}"
+done
+unset _pyimpl
+
+# Import of the io module in python-2.6 raises ImportError for the
+# thread module if threading is disabled.
+python_dep_ssl="python3? ( =dev-lang/python-3*[ssl] )
+	!pypy2_0? ( !python2? ( !python3? (
+		|| ( >=dev-lang/python-2.7[ssl] dev-lang/python:2.6[threads,ssl] )
+	) ) )
+	pypy2_0? ( !python2? ( !python3? ( dev-python/pypy:2.0[bzip2,ssl] ) ) )
+	python2? ( !python3? ( || ( dev-lang/python:2.7[ssl] dev-lang/python:2.6[ssl,threads] ) ) )"
+python_dep="${python_dep_ssl//\[ssl\]}"
+python_dep="${python_dep//,ssl}"
+python_dep="${python_dep//ssl,}"
+
+python_dep="${python_dep}
+	python_targets_pypy1_9? ( dev-python/pypy:1.9 )
+	python_targets_pypy2_0? ( dev-python/pypy:2.0 )
+	python_targets_python2_6? ( dev-lang/python:2.6 )
+	python_targets_python2_7? ( dev-lang/python:2.7 )
+	python_targets_python3_1? ( dev-lang/python:3.1 )
+	python_targets_python3_2? ( dev-lang/python:3.2 )
+	python_targets_python3_3? ( dev-lang/python:3.3 )
+	python_targets_python3_4? ( dev-lang/python:3.4 )
+"
+
+# The pysqlite blocker is for bug #282760.
+# make-3.82 is for bug #455858
+DEPEND="${python_dep}
+	>=sys-devel/make-3.82
+	>=sys-apps/sed-4.0.5 sys-devel/patch
+	doc? ( app-text/xmlto ~app-text/docbook-xml-dtd-4.4 )
+	epydoc? ( >=dev-python/epydoc-2.0 !<=dev-python/pysqlite-2.4.1 )"
+# Require sandbox-2.2 for bug #288863.
+# For xattr, we can spawn getfattr and setfattr from sys-apps/attr, but that's
+# quite slow, so it's not considered in the dependencies as an alternative to
+# to python-3.3 / pyxattr. Also, xattr support is only tested with Linux, so
+# for now, don't pull in xattr deps for other kernels.
+# For whirlpool hash, require python[ssl] or python-mhash (bug #425046).
+# For compgen, require bash[readline] (bug #445576).
+# bash-4.1 necessary for redirect_alloc_fd, which fails on non-Linux if bash
+# doesn't have a builtin for finding a random filedescriptor
+RDEPEND="${python_dep}
+	!build? ( >=sys-apps/sed-4.0.5
+		|| ( >=app-shells/bash-4.2_p37[readline] ( <app-shells/bash-4.2_p37 >=app-shells/bash-4.1 ) )
+		>=app-admin/eselect-1.2
+		|| ( ${python_dep_ssl} dev-python/python-mhash )
+	)
+	elibc_FreeBSD? ( !prefix? ( sys-freebsd/freebsd-bin ) )
+	elibc_glibc? ( !prefix? ( >=sys-apps/sandbox-2.2 ) )
+	elibc_uclibc? ( !prefix? ( >=sys-apps/sandbox-2.2 ) )
+	kernel_linux? ( >=app-misc/pax-utils-0.1.17 )
+	kernel_SunOS? ( >=app-misc/pax-utils-0.1.17 )
+	kernel_FreeBSD? ( >=app-misc/pax-utils-0.1.17 )
+	kernel_Darwin? ( >=app-misc/pax-utils-0.1.18 )
+	kernel_HPUX? ( !hppa-hpux? ( >=app-misc/pax-utils-0.1.19 ) )
+	kernel_AIX? ( >=sys-apps/aix-miscutils-0.1.1634 )
+	xattr? ( kernel_linux? ( || ( >=dev-lang/python-3.3_pre20110902 dev-python/pyxattr ) ) )
+	selinux? ( || ( >=sys-libs/libselinux-2.0.94[python] <sys-libs/libselinux-2.0.94 ) )
+	!<app-shells/bash-3.2_p17
+	!prefix? ( !<app-admin/logrotate-3.8.0 )"
+PDEPEND="
+	!build? (
+		>=net-misc/rsync-2.6.4
+		userland_GNU? ( >=sys-apps/coreutils-6.4 )
+	)"
+# coreutils-6.4 rdep is for date format in emerge-webrsync #164532
+# NOTE: FEATURES=installsources requires debugedit and rsync
+
+SRC_ARCHIVES="http://dev.gentoo.org/~zmedico/portage/archives http://dev.gentoo.org/~grobian/distfiles"
+
+prefix_src_archives() {
+	local x y
+	for x in ${@}; do
+		for y in ${SRC_ARCHIVES}; do
+			echo ${y}/${x}
+		done
+	done
+}
+
+PV_PL="2.1.2"
+PATCHVER_PL=""
+TARBALL_PV="${PV}"
+SRC_URI="mirror://gentoo/prefix-${PN}-${TARBALL_PV}.tar.bz2
+	$(prefix_src_archives prefix-${PN}-${TARBALL_PV}.tar.bz2)"
+
+PATCHVER=
+[[ $TARBALL_PV = $PV ]] || PATCHVER=$PV
+if [ -n "${PATCHVER}" ]; then
+	SRC_URI="${SRC_URI} mirror://gentoo/${PN}-${PATCHVER}.patch.bz2
+	$(prefix_src_archives ${PN}-${PATCHVER}.patch.bz2)"
+fi
+
+S="${WORKDIR}"/prefix-${PN}-${TARBALL_PV}
+S_PL="${WORKDIR}"/${PN}-${PV_PL}
+
+compatible_python_is_selected() {
+	[[ $("${EPREFIX}/usr/bin/python" -c 'import sys ; sys.stdout.write(sys.hexversion >= 0x2060000 and "good" or "bad")') = good ]]
+}
+
+current_python_has_xattr() {
+	[[ ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).'
+	local PYTHON=${EPREFIX}/usr/bin/${EPYTHON}
+	[[ $("${PYTHON}" -c 'import sys ; sys.stdout.write(sys.hexversion >= 0x3030000 and "yes" or "no")') = yes ]] || \
+	"${PYTHON}" -c 'import xattr' 2>/dev/null
+}
+
+call_with_python_impl() {
+	[[ ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).'
+	env EPYTHON=${EPYTHON} "$@"
+}
+
+get_python_interpreter() {
+	[ $# -eq 1 ] || die "expected 1 argument, got $#: $*"
+	local impl=$1 python
+	case "${impl}" in
+		python*)
+			python=${impl/_/.}
+			;;
+		pypy*)
+			python=${impl/_/.}
+			python=${python/pypy/pypy-c}
+			;;
+		*)
+			die "Unrecognized python target: ${impl}"
+	esac
+	echo ${python}
+}
+
+get_python_sitedir() {
+	[ $# -eq 1 ] || die "expected 1 argument, got $#: $*"
+	local impl=$1
+	local site_dir=/usr/$(get_libdir)/${impl/_/.}/site-packages
+	[[ -d ${EROOT}${site_dir} ]] || \
+		ewarn "site-packages dir missing for ${impl}: ${EROOT}${site_dir}"
+	echo "${site_dir}"
+}
+
+python_compileall() {
+	[[ ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).'
+	local d=${EPREFIX}$1 PYTHON=${EPREFIX}/usr/bin/${EPYTHON}
+	local d_image=${D}${d#/}
+	[[ -d ${d_image} ]] || die "directory does not exist: ${d_image}"
+	case "${EPYTHON}" in
+		python*)
+			"${PYTHON}" -m compileall -q -f -d "${d}" "${d_image}" || die
+			# Note: Using -OO breaks emaint, since it requires __doc__,
+			# and __doc__ is None when -OO is used.
+			"${PYTHON}" -O -m compileall -q -f -d "${d}" "${d_image}" || die
+			;;
+		pypy*)
+			"${PYTHON}" -m compileall -q -f -d "${d}" "${d_image}" || die
+			;;
+		*)
+			die "Unrecognized EPYTHON value: ${EPYTHON}"
+	esac
+}
+
+pkg_setup() {
+	if use python2 && use python3 ; then
+		ewarn "Both python2 and python3 USE flags are enabled, but only one"
+		ewarn "can be in the shebangs. Using python3."
+	fi
+	if use pypy2_0 && use python3 ; then
+		ewarn "Both pypy2_0 and python3 USE flags are enabled, but only one"
+		ewarn "can be in the shebangs. Using python3."
+	fi
+	if use pypy2_0 && use python2 ; then
+		ewarn "Both pypy2_0 and python2 USE flags are enabled, but only one"
+		ewarn "can be in the shebangs. Using python2"
+	fi
+	if ! use pypy2_0 && ! use python2 && ! use python3 && \
+		! compatible_python_is_selected ; then
+		ewarn "Attempting to select a compatible default python interpreter"
+		local x success=0
+		for x in "${EPREFIX}"/usr/bin/python2.* ; do
+			x=${x#${EPREFIX}/usr/bin/python2.}
+			if [[ $x -ge 6 ]] 2>/dev/null ; then
+				eselect python set python2.$x
+				if compatible_python_is_selected ; then
+					elog "Default python interpreter is now set to python-2.$x"
+					success=1
+					break
+				fi
+			fi
+		done
+		if [ $success != 1 ] ; then
+			eerror "Unable to select a compatible default python interpreter!"
+			die "This version of portage requires at least python-2.6 to be selected as the default python interpreter (see \`eselect python --help\`)."
+		fi
+	fi
+
+	# We use EPYTHON to designate the active python interpreter,
+	# but we only export when needed, via call_with_python_impl.
+	EPYTHON=python
+	export -n EPYTHON
+	if use python3; then
+		EPYTHON=python3
+	elif use python2; then
+		EPYTHON=python2
+	elif use pypy2_0; then
+		EPYTHON=pypy-c2.0
+	fi
+}
+
+src_prepare() {
+	if [ -n "${PATCHVER}" ] ; then
+		if [[ -L $S/bin/ebuild-helpers/portageq ]] ; then
+			rm "$S/bin/ebuild-helpers/portageq" \
+				|| die "failed to remove portageq helper symlink"
+		fi
+		epatch "${WORKDIR}/${PN}-${PATCHVER}.patch"
+	fi
+
+	use prefix-chaining && epatch "${FILESDIR}"/${PN}-2.2.00.15801-prefix-chaining.patch
+	epatch "${FILESDIR}"/${PN}-2.2.8-ebuildshell.patch # 155161
+	# use pool of servers
+	sed -i \
+		-e 's/prefix.gentooexperimental.org/rsync.prefix.bitzolder.nl/' \
+		bin/emerge-webrsync cnf/make.conf.example cnf/repos.conf
+
+	if ! use ipc ; then
+		einfo "Disabling ipc..."
+		sed -e "s:_enable_ipc_daemon = True:_enable_ipc_daemon = False:" \
+			-i pym/_emerge/AbstractEbuildProcess.py || \
+			die "failed to patch AbstractEbuildProcess.py"
+	fi
+
+	if use xattr && use kernel_linux ; then
+		einfo "Adding FEATURES=xattr to make.globals ..."
+		echo -e '\nFEATURES="${FEATURES} xattr"' >> cnf/make.globals \
+			|| die "failed to append to make.globals"
+	fi
+
+	local set_shebang=
+	if use python3; then
+		set_shebang=python3
+	elif use python2; then
+		set_shebang=python2
+	elif use pypy2_0; then
+		set_shebang=pypy-c2.0
+	fi
+	if [[ -n ${set_shebang} ]] ; then
+		einfo "Converting shebangs for ${set_shebang}..."
+		while read -r -d $'\0' ; do
+			local shebang=$(head -n1 "$REPLY")
+			if [[ ${shebang} == "#!${EPREFIX}/usr/bin/python"* ]] ; then
+				sed -i -e "1s:python:${set_shebang}:" "$REPLY" || \
+					die "sed failed"
+			fi
+		done < <(find . -type f -print0)
+	fi
+
+	# "native" Prefix still uses configure
+	if use !prefix && [[ -n ${EPREFIX} ]] ; then
+		einfo "Setting portage.const.EPREFIX ..."
+		sed -e "s|^\(SANDBOX_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/bin/sandbox\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(FAKEROOT_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/bin/fakeroot\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(BASH_BINARY[[:space:]]*=[[:space:]]*\"\)\(/bin/bash\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(MOVE_BINARY[[:space:]]*=[[:space:]]*\"\)\(/bin/mv\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(PRELINK_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/sbin/prelink\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(EPREFIX[[:space:]]*=[[:space:]]*\"\).*|\\1${EPREFIX}\"|" \
+			-i pym/portage/const.py || \
+			die "Failed to patch portage.const.EPREFIX"
+
+		einfo "Prefixing shebangs ..."
+		while read -r -d $'\0' ; do
+			local shebang=$(head -n1 "$REPLY")
+			if [[ ${shebang} == "#!"* && ! ${shebang} == "#!${EPREFIX}/"* ]] ; then
+				sed -i -e "1s:.*:#!${EPREFIX}${shebang:2}:" "$REPLY" || \
+					die "sed failed"
+			fi
+		done < <(find . -type f -print0)
+
+		einfo "Adding FEATURES=force-prefix to make.globals ..."
+		echo -e '\nFEATURES="${FEATURES} force-prefix"' >> cnf/make.globals \
+			|| die "failed to append to make.globals"
+	fi
+
+	if use !prefix ; then
+	cd "${S}/cnf" || die
+	if [ -f "make.conf.${ARCH}".diff ]; then
+		patch make.conf "make.conf.${ARCH}".diff || \
+			die "Failed to patch make.conf.example"
+	else
+		eerror ""
+		eerror "Portage does not have an arch-specific configuration for this arch."
+		eerror "Please notify the arch maintainer about this issue. Using generic."
+		eerror ""
+	fi
+	fi
+}
+
+src_configure() {
+	if use prefix ; then
+		local extrapath="/usr/bin:/bin"
+		# ok, we can't rely on PORTAGE_ROOT_USER being there yet, as people
+		# tend not to update that often, as long as we are a separate ebuild
+		# we can assume when unset, it's time for some older trick
+		if [[ -z ${PORTAGE_ROOT_USER} ]] ; then
+			PORTAGE_ROOT_USER=$(python -c 'from portage.const import rootuser; print rootuser')
+		fi
+		# lazy check, but works for now
+		if [[ ${PORTAGE_ROOT_USER} == "root" ]] ; then
+			# we need this for e.g. mtree on FreeBSD (and Darwin) which is in
+			# /usr/sbin
+			extrapath="/usr/sbin:/usr/bin:/sbin:/bin"
+		fi
+
+		econf \
+			--with-portage-user="${PORTAGE_USER:-portage}" \
+			--with-portage-group="${PORTAGE_GROUP:-portage}" \
+			--with-root-user="${PORTAGE_ROOT_USER}" \
+			--with-offset-prefix="${EPREFIX}" \
+			--with-extra-path="${extrapath}" \
+			|| die "econf failed"
+	else
+		default
+	fi
+}
+
+src_compile() {
+	if use prefix ; then
+		emake || die "emake failed"
+	fi
+
+	if use doc; then
+		call_with_python_impl \
+		emake docbook || die
+	fi
+
+	if use epydoc; then
+		einfo "Generating api docs"
+		call_with_python_impl \
+		emake epydoc || die
+	fi
+}
+
+src_test() {
+	# make files executable, in case they were created by patch
+	find bin -type f | xargs chmod +x
+	call_with_python_impl \
+	emake test || die
+}
+
+src_install() {
+	local portage_base="/usr/lib/portage"
+
+	emake DESTDIR="${D}" install || die "make install failed."
+	dodir /usr/lib/portage/bin
+
+	if use userland_GNU; then
+		rm "${ED}"${portage_base}/bin/ebuild-helpers/bsd/sed || die "Failed to remove sed wrapper"
+	fi
+
+	use doc && dohtml -r "${S}"/doc/*
+	use epydoc && dohtml -r "${WORKDIR}"/api
+	dodir /etc/portage
+	keepdir /etc/portage
+
+	# Use dodoc for compression, since the Makefile doesn't do that.
+	dodoc "${S}"/{ChangeLog,NEWS,RELEASE-NOTES} || die
+
+	# Allow external portage API consumers to import portage python modules
+	# (this used to be done with PYTHONPATH setting in /etc/env.d).
+	# For each of PYTHON_TARGETS, install a tree of *.py symlinks in
+	# site-packages, and compile with the corresponding interpreter.
+	local impl files mod_dir dest_mod_dir python relative_path x
+	for impl in "${PYTHON_COMPAT[@]}" ; do
+		use "python_targets_${impl}" || continue
+		if use build && [[ ${ROOT} == / &&
+			! -x ${EPREFIX}/usr/bin/$(get_python_interpreter ${impl}) ]] ; then
+			# Tolerate --nodeps at beginning of stage1 for catalyst
+			ewarn "skipping python_targets_${impl}, interpreter not found"
+			continue
+		fi
+		while read -r mod_dir ; do
+			cd "${ED}/usr/lib/portage/pym/${mod_dir}" || die
+			files=$(echo *.py)
+			if [ -z "${files}" ] || [ "${files}" = "*.py" ]; then
+				# __pycache__ directories contain no py files
+				continue
+			fi
+			dest_mod_dir=$(get_python_sitedir ${impl})/${mod_dir}
+			dodir "${dest_mod_dir}" || die
+			relative_path=../../../lib/portage/pym/${mod_dir}
+			x=/${mod_dir}
+			while [ -n "${x}" ] ; do
+				relative_path=../${relative_path}
+				x=${x%/*}
+			done
+			for x in ${files} ; do
+				dosym "${relative_path}/${x}" \
+					"${dest_mod_dir}/${x}" || die
+			done
+		done < <(cd "${ED}"/usr/lib/portage/pym || die ; find * -type d ! -path "portage/tests*")
+		cd "${S}" || die
+		EPYTHON=$(get_python_interpreter ${impl}) \
+		python_compileall "$(get_python_sitedir ${impl})"
+	done
+
+	# Compile /usr/lib/portage/pym with the active interpreter, since portage
+	# internal commands force this directory to the beginning of sys.path.
+	python_compileall /usr/lib/portage/pym
+}
+
+pkg_preinst() {
+	if [[ $ROOT == / ]] ; then
+		# Run some minimal tests as a sanity check.
+		local test_runner=$(find "$ED" -name runTests)
+		if [[ -n $test_runner && -x $test_runner ]] ; then
+			einfo "Running preinst sanity tests..."
+			"$test_runner" || die "preinst sanity tests failed"
+		fi
+	fi
+
+	if use xattr && ! current_python_has_xattr ; then
+		ewarn "For optimal performance in xattr handling, install"
+		ewarn "dev-python/pyxattr, or install >=dev-lang/python-3.3 and"
+		ewarn "enable USE=python3 for $CATEGORY/$PN."
+	fi
+
+	has_version "<=${CATEGORY}/${PN}-2.2.00.13346"
+	EAPIPREFIX_UPGRADE=$?
+
+	if has_version "<${CATEGORY}/${PN}-2.2.7-r1" ; then
+		REPOS_CONF_UPGRADE=true
+		REPOS_CONF_SYNC=
+		type -P portageq >/dev/null 2>&1 && \
+			REPOS_CONF_SYNC=$("$(type -P portageq)" envvar SYNC)
+	fi
+}
+
+new_config_protect() {
+	# Generate a ._cfg file even if the target file
+	# does not exist, ensuring that the user will
+	# notice the config change.
+	local basename=${1##*/}
+	local dirname=${1%/*}
+	local i=0
+	while true ; do
+		local filename=$(
+			echo -n "${dirname}/._cfg"
+			printf "%04d" ${i}
+			echo -n "_${basename}"
+		)
+		[[ -e ${filename} ]] || break
+		(( i++ ))
+	done
+	echo "${filename}"
+}
+
+pkg_postinst() {
+
+	if [[ -n ${REPOS_CONF_UPGRADE} ]] ; then
+		einfo "Generating repos.conf"
+		local repo_name=
+		[[ -f ${PORTDIR}/profiles/repo_name ]] && \
+			repo_name=$(< "${PORTDIR}/profiles/repo_name")
+		if [[ -z ${REPOS_CONF_SYNC} ]] ; then
+			REPOS_CONF_SYNC=$(grep "^sync-uri =" "${EROOT:-${ROOT}}usr/share/portage/config/repos.conf")
+			REPOS_CONF_SYNC=${REPOS_CONF_SYNC##* }
+		fi
+		local sync_type=
+		[[ ${REPOS_CONF_SYNC} == git://* ]] && sync_type=git
+
+		if [[ ${REPOS_CONF_SYNC} == cvs://* ]]; then
+			sync_type=cvs
+			REPOS_CONF_SYNC=${REPOS_CONF_SYNC#cvs://}
+		fi
+
+		cat <<-EOF > "${T}/repos.conf"
+		[DEFAULT]
+		main-repo = ${repo_name:-gentoo}
+
+		[${repo_name:-gentoo}]
+		location = ${PORTDIR:-${EPREFIX}/usr/portage}
+		sync-type = ${sync_type:-rsync}
+		sync-uri = ${REPOS_CONF_SYNC}
+		EOF
+
+		[[ ${sync_type} == cvs ]] && echo "sync-cvs-repo = $(<"${PORTDIR}/CVS/Repository")" >> "${T}/repos.conf"
+
+		local dest=${EROOT:-${ROOT}}etc/portage/repos.conf
+		if [[ ! -f ${dest} ]] && mkdir -p "${dest}" 2>/dev/null ; then
+			dest=${EROOT:-${ROOT}}etc/portage/repos.conf/${repo_name:-gentoo}.conf
+		fi
+		# Don't install the config update if the desired repos.conf directory
+		# and config file exist, since users may accept it blindly and break
+		# their config (bug #478726).
+		[[ -e ${EROOT:-${ROOT}}etc/portage/repos.conf/${repo_name:-gentoo}.conf ]] || \
+			mv "${T}/repos.conf" "$(new_config_protect "${dest}")"
+
+		if [[ ${PORTDIR} == ${EPREFIX}/usr/portage ]] ; then
+			einfo "Generating make.conf PORTDIR setting for backward compatibility"
+			for dest in "${EROOT:-${ROOT}}etc/make.conf" "${EROOT:-${ROOT}}etc/portage/make.conf" ; do
+				[[ -e ${dest} ]] && break
+			done
+			[[ -d ${dest} ]] && dest=${dest}/portdir.conf
+			rm -rf "${T}/make.conf"
+			[[ -f ${dest} ]] && cat "${dest}" > "${T}/make.conf"
+			cat <<-EOF >> "${T}/make.conf"
+
+			# Set PORTDIR for backward compatibility with various tools:
+			#   gentoo-bashcomp - bug #478444
+			#   euse - bug #474574
+			#   euses and ufed - bug #478318
+			PORTDIR="${EPREFIX}/usr/portage"
+			EOF
+			mkdir -p "${dest%/*}"
+			mv "${T}/make.conf" "$(new_config_protect "${dest}")"
+		fi
+	fi
+
+	pushd "${EROOT}var/db/pkg" > /dev/null
+	local didwork=
+	[[ ! -e "${EROOT}"var/lib/portage/preserved_libs_registry ]] && for cpv in */*/NEEDED ; do
+		if [[ ${CHOST} == *-darwin* && ! -f ${cpv}.MACHO.3 ]] ; then
+			while read line; do
+				scanmacho -BF "%a;%F;%S;%n" ${line% *} >> "${cpv}".MACHO.3
+			done < "${cpv}"
+			[[ -z ${didwork} ]] \
+				&& didwork=yes \
+				|| didwork=already
+		elif [[ ${CHOST} != *-darwin* && ${CHOST} != *-interix* && ! -f ${cpv}.ELF.2 ]] ; then
+			while read line; do
+				filename=${line% *}
+				needed=${line#* }
+				newline=$(scanelf -BF "%a;%F;%S;$needed;%r" $filename)
+				echo "${newline:3}" >> "${cpv}".ELF.2
+			done < "${cpv}"
+			[[ -z ${didwork} ]] \
+				&& didwork=yes \
+				|| didwork=already
+		fi
+		[[ ${didwork} == yes ]] && \
+			einfo "converting NEEDED files to new syntax, please wait"
+	done
+	popd > /dev/null
+
+	if [[ ${EAPIPREFIX_UPGRADE} == 0 ]] ; then
+		local eapi
+		einfo 'removing EAPI="prefix" legacy from your vdb, please wait'
+		pushd "${EROOT}var/db/pkg" > /dev/null
+		for cpv in */* ; do
+			[[ ${cpv##*/} == "-MERGING-"* ]] && continue
+			# remove "prefix" from EAPI file
+			eapi=$(<"${cpv}"/EAPI)
+			eapi=${eapi/prefix/}
+			eapi=${eapi# }
+			eapi=${eapi:-0}
+			echo ${eapi} > "${cpv}"/EAPI
+			# remove "prefix" from EAPI in stored environment
+			bzcat "${cpv}"/environment.bz2 \
+				| sed -e "s/EAPI=\([\"']\)prefix [0-9][\"']/EAPI=\1${eapi}\1/" \
+				| bzip2 -9 > "${cpv}"/environment2.bz2 \
+				&& mv -f "${cpv}"/environment{2,}.bz2
+			# remove "prefix" from the stored ebuild
+			sed -i -e "s/^EAPI=.*$/EAPI=${eapi}/" "${cpv}/${cpv##*/}.ebuild"
+		done
+		popd > /dev/null
+	fi
+}

diff --git a/sys-apps/portage/portage-2.2.14.ebuild b/sys-apps/portage/portage-2.2.14.ebuild
new file mode 100644
index 0000000..90bc410
--- /dev/null
+++ b/sys-apps/portage/portage-2.2.14.ebuild
@@ -0,0 +1,583 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id: portage-2.2.01.16270.ebuild 58665 2010-09-05 19:54:38Z grobian $
+
+# Require EAPI 2 since we now require at least python-2.6 (for python 3
+# syntax support) which also requires EAPI 2.
+EAPI=3
+PYTHON_COMPAT=(
+	pypy1_9 pypy2_0
+	python3_1 python3_2 python3_3 python3_4
+	python2_6 python2_7
+)
+inherit eutils multilib
+
+DESCRIPTION="Prefix branch of the Portage Package Manager, used in Gentoo Prefix"
+HOMEPAGE="http://www.gentoo.org/proj/en/gentoo-alt/prefix/"
+LICENSE="GPL-2"
+KEYWORDS="~ppc-aix ~x64-freebsd ~x86-freebsd ~hppa-hpux ~ia64-hpux ~x86-interix ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+SLOT="0"
+IUSE="build doc epydoc +ipc linguas_ru pypy2_0 python2 python3 selinux xattr prefix-chaining"
+
+for _pyimpl in ${PYTHON_COMPAT[@]} ; do
+	IUSE+=" python_targets_${_pyimpl}"
+done
+unset _pyimpl
+
+# Import of the io module in python-2.6 raises ImportError for the
+# thread module if threading is disabled.
+python_dep_ssl="python3? ( =dev-lang/python-3*[ssl] )
+	!pypy2_0? ( !python2? ( !python3? (
+		|| ( >=dev-lang/python-2.7[ssl] dev-lang/python:2.6[threads,ssl] )
+	) ) )
+	pypy2_0? ( !python2? ( !python3? ( dev-python/pypy:2.0[bzip2,ssl] ) ) )
+	python2? ( !python3? ( || ( dev-lang/python:2.7[ssl] dev-lang/python:2.6[ssl,threads] ) ) )"
+python_dep="${python_dep_ssl//\[ssl\]}"
+python_dep="${python_dep//,ssl}"
+python_dep="${python_dep//ssl,}"
+
+python_dep="${python_dep}
+	python_targets_pypy1_9? ( dev-python/pypy:1.9 )
+	python_targets_pypy2_0? ( dev-python/pypy:2.0 )
+	python_targets_python2_6? ( dev-lang/python:2.6 )
+	python_targets_python2_7? ( dev-lang/python:2.7 )
+	python_targets_python3_1? ( dev-lang/python:3.1 )
+	python_targets_python3_2? ( dev-lang/python:3.2 )
+	python_targets_python3_3? ( dev-lang/python:3.3 )
+	python_targets_python3_4? ( dev-lang/python:3.4 )
+"
+
+# The pysqlite blocker is for bug #282760.
+# make-3.82 is for bug #455858
+DEPEND="${python_dep}
+	>=sys-devel/make-3.82
+	>=sys-apps/sed-4.0.5 sys-devel/patch
+	doc? ( app-text/xmlto ~app-text/docbook-xml-dtd-4.4 )
+	epydoc? ( >=dev-python/epydoc-2.0 !<=dev-python/pysqlite-2.4.1 )"
+# Require sandbox-2.2 for bug #288863.
+# For xattr, we can spawn getfattr and setfattr from sys-apps/attr, but that's
+# quite slow, so it's not considered in the dependencies as an alternative to
+# to python-3.3 / pyxattr. Also, xattr support is only tested with Linux, so
+# for now, don't pull in xattr deps for other kernels.
+# For whirlpool hash, require python[ssl] or python-mhash (bug #425046).
+# For compgen, require bash[readline] (bug #445576).
+# bash-4.1 necessary for redirect_alloc_fd, which fails on non-Linux if bash
+# doesn't have a builtin for finding a random filedescriptor
+RDEPEND="${python_dep}
+	!build? ( >=sys-apps/sed-4.0.5
+		|| ( >=app-shells/bash-4.2_p37[readline] ( <app-shells/bash-4.2_p37 >=app-shells/bash-4.1 ) )
+		>=app-admin/eselect-1.2
+		|| ( ${python_dep_ssl} dev-python/python-mhash )
+	)
+	elibc_FreeBSD? ( !prefix? ( sys-freebsd/freebsd-bin ) )
+	elibc_glibc? ( !prefix? ( >=sys-apps/sandbox-2.2 ) )
+	elibc_uclibc? ( !prefix? ( >=sys-apps/sandbox-2.2 ) )
+	kernel_linux? ( >=app-misc/pax-utils-0.1.17 )
+	kernel_SunOS? ( >=app-misc/pax-utils-0.1.17 )
+	kernel_FreeBSD? ( >=app-misc/pax-utils-0.1.17 )
+	kernel_Darwin? ( >=app-misc/pax-utils-0.1.18 )
+	kernel_HPUX? ( !hppa-hpux? ( >=app-misc/pax-utils-0.1.19 ) )
+	kernel_AIX? ( >=sys-apps/aix-miscutils-0.1.1634 )
+	xattr? ( kernel_linux? ( || ( >=dev-lang/python-3.3_pre20110902 dev-python/pyxattr ) ) )
+	selinux? ( || ( >=sys-libs/libselinux-2.0.94[python] <sys-libs/libselinux-2.0.94 ) )
+	!<app-shells/bash-3.2_p17
+	!prefix? ( !<app-admin/logrotate-3.8.0 )"
+PDEPEND="
+	!build? (
+		>=net-misc/rsync-2.6.4
+		userland_GNU? ( >=sys-apps/coreutils-6.4 )
+	)"
+# coreutils-6.4 rdep is for date format in emerge-webrsync #164532
+# NOTE: FEATURES=installsources requires debugedit and rsync
+
+SRC_ARCHIVES="http://dev.gentoo.org/~zmedico/portage/archives http://dev.gentoo.org/~grobian/distfiles"
+
+prefix_src_archives() {
+	local x y
+	for x in ${@}; do
+		for y in ${SRC_ARCHIVES}; do
+			echo ${y}/${x}
+		done
+	done
+}
+
+PV_PL="2.1.2"
+PATCHVER_PL=""
+TARBALL_PV="${PV}"
+SRC_URI="mirror://gentoo/prefix-${PN}-${TARBALL_PV}.tar.bz2
+	$(prefix_src_archives prefix-${PN}-${TARBALL_PV}.tar.bz2)"
+
+PATCHVER=
+[[ $TARBALL_PV = $PV ]] || PATCHVER=$PV
+if [ -n "${PATCHVER}" ]; then
+	SRC_URI="${SRC_URI} mirror://gentoo/${PN}-${PATCHVER}.patch.bz2
+	$(prefix_src_archives ${PN}-${PATCHVER}.patch.bz2)"
+fi
+
+S="${WORKDIR}"/prefix-${PN}-${TARBALL_PV}
+S_PL="${WORKDIR}"/${PN}-${PV_PL}
+
+compatible_python_is_selected() {
+	[[ $("${EPREFIX}/usr/bin/python" -c 'import sys ; sys.stdout.write(sys.hexversion >= 0x2060000 and "good" or "bad")') = good ]]
+}
+
+current_python_has_xattr() {
+	[[ ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).'
+	local PYTHON=${EPREFIX}/usr/bin/${EPYTHON}
+	[[ $("${PYTHON}" -c 'import sys ; sys.stdout.write(sys.hexversion >= 0x3030000 and "yes" or "no")') = yes ]] || \
+	"${PYTHON}" -c 'import xattr' 2>/dev/null
+}
+
+call_with_python_impl() {
+	[[ ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).'
+	env EPYTHON=${EPYTHON} "$@"
+}
+
+get_python_interpreter() {
+	[ $# -eq 1 ] || die "expected 1 argument, got $#: $*"
+	local impl=$1 python
+	case "${impl}" in
+		python*)
+			python=${impl/_/.}
+			;;
+		pypy*)
+			python=${impl/_/.}
+			python=${python/pypy/pypy-c}
+			;;
+		*)
+			die "Unrecognized python target: ${impl}"
+	esac
+	echo ${python}
+}
+
+get_python_sitedir() {
+	[ $# -eq 1 ] || die "expected 1 argument, got $#: $*"
+	local impl=$1
+	local site_dir=/usr/$(get_libdir)/${impl/_/.}/site-packages
+	[[ -d ${EROOT}${site_dir} ]] || \
+		ewarn "site-packages dir missing for ${impl}: ${EROOT}${site_dir}"
+	echo "${site_dir}"
+}
+
+python_compileall() {
+	[[ ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).'
+	local d=${EPREFIX}$1 PYTHON=${EPREFIX}/usr/bin/${EPYTHON}
+	local d_image=${D}${d#/}
+	[[ -d ${d_image} ]] || die "directory does not exist: ${d_image}"
+	case "${EPYTHON}" in
+		python*)
+			"${PYTHON}" -m compileall -q -f -d "${d}" "${d_image}" || die
+			# Note: Using -OO breaks emaint, since it requires __doc__,
+			# and __doc__ is None when -OO is used.
+			"${PYTHON}" -O -m compileall -q -f -d "${d}" "${d_image}" || die
+			;;
+		pypy*)
+			"${PYTHON}" -m compileall -q -f -d "${d}" "${d_image}" || die
+			;;
+		*)
+			die "Unrecognized EPYTHON value: ${EPYTHON}"
+	esac
+}
+
+pkg_setup() {
+	if use python2 && use python3 ; then
+		ewarn "Both python2 and python3 USE flags are enabled, but only one"
+		ewarn "can be in the shebangs. Using python3."
+	fi
+	if use pypy2_0 && use python3 ; then
+		ewarn "Both pypy2_0 and python3 USE flags are enabled, but only one"
+		ewarn "can be in the shebangs. Using python3."
+	fi
+	if use pypy2_0 && use python2 ; then
+		ewarn "Both pypy2_0 and python2 USE flags are enabled, but only one"
+		ewarn "can be in the shebangs. Using python2"
+	fi
+	if ! use pypy2_0 && ! use python2 && ! use python3 && \
+		! compatible_python_is_selected ; then
+		ewarn "Attempting to select a compatible default python interpreter"
+		local x success=0
+		for x in "${EPREFIX}"/usr/bin/python2.* ; do
+			x=${x#${EPREFIX}/usr/bin/python2.}
+			if [[ $x -ge 6 ]] 2>/dev/null ; then
+				eselect python set python2.$x
+				if compatible_python_is_selected ; then
+					elog "Default python interpreter is now set to python-2.$x"
+					success=1
+					break
+				fi
+			fi
+		done
+		if [ $success != 1 ] ; then
+			eerror "Unable to select a compatible default python interpreter!"
+			die "This version of portage requires at least python-2.6 to be selected as the default python interpreter (see \`eselect python --help\`)."
+		fi
+	fi
+
+	# We use EPYTHON to designate the active python interpreter,
+	# but we only export when needed, via call_with_python_impl.
+	EPYTHON=python
+	export -n EPYTHON
+	if use python3; then
+		EPYTHON=python3
+	elif use python2; then
+		EPYTHON=python2
+	elif use pypy2_0; then
+		EPYTHON=pypy-c2.0
+	fi
+}
+
+src_prepare() {
+	if [ -n "${PATCHVER}" ] ; then
+		if [[ -L $S/bin/ebuild-helpers/portageq ]] ; then
+			rm "$S/bin/ebuild-helpers/portageq" \
+				|| die "failed to remove portageq helper symlink"
+		fi
+		epatch "${WORKDIR}/${PN}-${PATCHVER}.patch"
+	fi
+
+	use prefix-chaining && epatch "${FILESDIR}"/${PN}-2.2.00.15801-prefix-chaining.patch
+	epatch "${FILESDIR}"/${PN}-2.2.8-ebuildshell.patch # 155161
+	epatch "${FILESDIR}"/${PN}-2.2.14-ldconfig.patch # 532100
+
+	if ! use ipc ; then
+		einfo "Disabling ipc..."
+		sed -e "s:_enable_ipc_daemon = True:_enable_ipc_daemon = False:" \
+			-i pym/_emerge/AbstractEbuildProcess.py || \
+			die "failed to patch AbstractEbuildProcess.py"
+	fi
+
+	if use xattr && use kernel_linux ; then
+		einfo "Adding FEATURES=xattr to make.globals ..."
+		echo -e '\nFEATURES="${FEATURES} xattr"' >> cnf/make.globals \
+			|| die "failed to append to make.globals"
+	fi
+
+	local set_shebang=
+	if use python3; then
+		set_shebang=python3
+	elif use python2; then
+		set_shebang=python2
+	elif use pypy2_0; then
+		set_shebang=pypy-c2.0
+	fi
+	if [[ -n ${set_shebang} ]] ; then
+		einfo "Converting shebangs for ${set_shebang}..."
+		while read -r -d $'\0' ; do
+			local shebang=$(head -n1 "$REPLY")
+			if [[ ${shebang} == "#!${EPREFIX}/usr/bin/python"* ]] ; then
+				sed -i -e "1s:python:${set_shebang}:" "$REPLY" || \
+					die "sed failed"
+			fi
+		done < <(find . -type f -print0)
+	fi
+
+	# "native" Prefix still uses configure
+	if use !prefix && [[ -n ${EPREFIX} ]] ; then
+		einfo "Setting portage.const.EPREFIX ..."
+		sed -e "s|^\(SANDBOX_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/bin/sandbox\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(FAKEROOT_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/bin/fakeroot\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(BASH_BINARY[[:space:]]*=[[:space:]]*\"\)\(/bin/bash\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(MOVE_BINARY[[:space:]]*=[[:space:]]*\"\)\(/bin/mv\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(PRELINK_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/sbin/prelink\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(EPREFIX[[:space:]]*=[[:space:]]*\"\).*|\\1${EPREFIX}\"|" \
+			-i pym/portage/const.py || \
+			die "Failed to patch portage.const.EPREFIX"
+
+		einfo "Prefixing shebangs ..."
+		while read -r -d $'\0' ; do
+			local shebang=$(head -n1 "$REPLY")
+			if [[ ${shebang} == "#!"* && ! ${shebang} == "#!${EPREFIX}/"* ]] ; then
+				sed -i -e "1s:.*:#!${EPREFIX}${shebang:2}:" "$REPLY" || \
+					die "sed failed"
+			fi
+		done < <(find . -type f -print0)
+
+		einfo "Adding FEATURES=force-prefix to make.globals ..."
+		echo -e '\nFEATURES="${FEATURES} force-prefix"' >> cnf/make.globals \
+			|| die "failed to append to make.globals"
+	fi
+
+	if use !prefix ; then
+	cd "${S}/cnf" || die
+	if [ -f "make.conf.${ARCH}".diff ]; then
+		patch make.conf "make.conf.${ARCH}".diff || \
+			die "Failed to patch make.conf.example"
+	else
+		eerror ""
+		eerror "Portage does not have an arch-specific configuration for this arch."
+		eerror "Please notify the arch maintainer about this issue. Using generic."
+		eerror ""
+	fi
+	fi
+}
+
+src_configure() {
+	if use prefix ; then
+		local extrapath="/usr/bin:/bin"
+		# ok, we can't rely on PORTAGE_ROOT_USER being there yet, as people
+		# tend not to update that often, as long as we are a separate ebuild
+		# we can assume when unset, it's time for some older trick
+		if [[ -z ${PORTAGE_ROOT_USER} ]] ; then
+			PORTAGE_ROOT_USER=$(python -c 'from portage.const import rootuser; print rootuser')
+		fi
+		# lazy check, but works for now
+		if [[ ${PORTAGE_ROOT_USER} == "root" ]] ; then
+			# we need this for e.g. mtree on FreeBSD (and Darwin) which is in
+			# /usr/sbin
+			extrapath="/usr/sbin:/usr/bin:/sbin:/bin"
+		fi
+
+		econf \
+			--with-portage-user="${PORTAGE_USER:-portage}" \
+			--with-portage-group="${PORTAGE_GROUP:-portage}" \
+			--with-root-user="${PORTAGE_ROOT_USER}" \
+			--with-offset-prefix="${EPREFIX}" \
+			--with-extra-path="${extrapath}" \
+			|| die "econf failed"
+	else
+		default
+	fi
+}
+
+src_compile() {
+	if use prefix ; then
+		emake || die "emake failed"
+	fi
+
+	if use doc; then
+		call_with_python_impl \
+		emake docbook || die
+	fi
+
+	if use epydoc; then
+		einfo "Generating api docs"
+		call_with_python_impl \
+		emake epydoc || die
+	fi
+}
+
+src_test() {
+	# make files executable, in case they were created by patch
+	find bin -type f | xargs chmod +x
+	call_with_python_impl \
+	emake test || die
+}
+
+src_install() {
+	local portage_base="/usr/lib/portage"
+
+	emake DESTDIR="${D}" install || die "make install failed."
+	dodir /usr/lib/portage/bin
+
+	if use userland_GNU; then
+		rm "${ED}"${portage_base}/bin/ebuild-helpers/bsd/sed || die "Failed to remove sed wrapper"
+	fi
+
+	use doc && dohtml -r "${S}"/doc/*
+	use epydoc && dohtml -r "${WORKDIR}"/api
+	dodir /etc/portage
+	keepdir /etc/portage
+
+	# Use dodoc for compression, since the Makefile doesn't do that.
+	dodoc "${S}"/{ChangeLog,NEWS,RELEASE-NOTES} || die
+
+	# Allow external portage API consumers to import portage python modules
+	# (this used to be done with PYTHONPATH setting in /etc/env.d).
+	# For each of PYTHON_TARGETS, install a tree of *.py symlinks in
+	# site-packages, and compile with the corresponding interpreter.
+	local impl files mod_dir dest_mod_dir python relative_path x
+	for impl in "${PYTHON_COMPAT[@]}" ; do
+		use "python_targets_${impl}" || continue
+		if use build && [[ ${ROOT} == / &&
+			! -x ${EPREFIX}/usr/bin/$(get_python_interpreter ${impl}) ]] ; then
+			# Tolerate --nodeps at beginning of stage1 for catalyst
+			ewarn "skipping python_targets_${impl}, interpreter not found"
+			continue
+		fi
+		while read -r mod_dir ; do
+			cd "${ED}/usr/lib/portage/pym/${mod_dir}" || die
+			files=$(echo *.py)
+			if [ -z "${files}" ] || [ "${files}" = "*.py" ]; then
+				# __pycache__ directories contain no py files
+				continue
+			fi
+			dest_mod_dir=$(get_python_sitedir ${impl})/${mod_dir}
+			dodir "${dest_mod_dir}" || die
+			relative_path=../../../lib/portage/pym/${mod_dir}
+			x=/${mod_dir}
+			while [ -n "${x}" ] ; do
+				relative_path=../${relative_path}
+				x=${x%/*}
+			done
+			for x in ${files} ; do
+				dosym "${relative_path}/${x}" \
+					"${dest_mod_dir}/${x}" || die
+			done
+		done < <(cd "${ED}"/usr/lib/portage/pym || die ; find * -type d ! -path "portage/tests*")
+		cd "${S}" || die
+		EPYTHON=$(get_python_interpreter ${impl}) \
+		python_compileall "$(get_python_sitedir ${impl})"
+	done
+
+	# Compile /usr/lib/portage/pym with the active interpreter, since portage
+	# internal commands force this directory to the beginning of sys.path.
+	python_compileall /usr/lib/portage/pym
+}
+
+pkg_preinst() {
+	if [[ $ROOT == / ]] ; then
+		# Run some minimal tests as a sanity check.
+		local test_runner=$(find "$ED" -name runTests)
+		if [[ -n $test_runner && -x $test_runner ]] ; then
+			einfo "Running preinst sanity tests..."
+			"$test_runner" || die "preinst sanity tests failed"
+		fi
+	fi
+
+	if use xattr && ! current_python_has_xattr ; then
+		ewarn "For optimal performance in xattr handling, install"
+		ewarn "dev-python/pyxattr, or install >=dev-lang/python-3.3 and"
+		ewarn "enable USE=python3 for $CATEGORY/$PN."
+	fi
+
+	has_version "<=${CATEGORY}/${PN}-2.2.00.13346"
+	EAPIPREFIX_UPGRADE=$?
+
+	if has_version "<${CATEGORY}/${PN}-2.2.7-r1" ; then
+		REPOS_CONF_UPGRADE=true
+		REPOS_CONF_SYNC=
+		type -P portageq >/dev/null 2>&1 && \
+			REPOS_CONF_SYNC=$("$(type -P portageq)" envvar SYNC)
+	fi
+}
+
+new_config_protect() {
+	# Generate a ._cfg file even if the target file
+	# does not exist, ensuring that the user will
+	# notice the config change.
+	local basename=${1##*/}
+	local dirname=${1%/*}
+	local i=0
+	while true ; do
+		local filename=$(
+			echo -n "${dirname}/._cfg"
+			printf "%04d" ${i}
+			echo -n "_${basename}"
+		)
+		[[ -e ${filename} ]] || break
+		(( i++ ))
+	done
+	echo "${filename}"
+}
+
+pkg_postinst() {
+
+	if [[ -n ${REPOS_CONF_UPGRADE} ]] ; then
+		einfo "Generating repos.conf"
+		local repo_name=
+		[[ -f ${PORTDIR}/profiles/repo_name ]] && \
+			repo_name=$(< "${PORTDIR}/profiles/repo_name")
+		if [[ -z ${REPOS_CONF_SYNC} ]] ; then
+			REPOS_CONF_SYNC=$(grep "^sync-uri =" "${EROOT:-${ROOT}}usr/share/portage/config/repos.conf")
+			REPOS_CONF_SYNC=${REPOS_CONF_SYNC##* }
+		fi
+		local sync_type=
+		[[ ${REPOS_CONF_SYNC} == git://* ]] && sync_type=git
+
+		if [[ ${REPOS_CONF_SYNC} == cvs://* ]]; then
+			sync_type=cvs
+			REPOS_CONF_SYNC=${REPOS_CONF_SYNC#cvs://}
+		fi
+
+		cat <<-EOF > "${T}/repos.conf"
+		[DEFAULT]
+		main-repo = ${repo_name:-gentoo}
+
+		[${repo_name:-gentoo}]
+		location = ${PORTDIR:-${EPREFIX}/usr/portage}
+		sync-type = ${sync_type:-rsync}
+		sync-uri = ${REPOS_CONF_SYNC}
+		EOF
+
+		[[ ${sync_type} == cvs ]] && echo "sync-cvs-repo = $(<"${PORTDIR}/CVS/Repository")" >> "${T}/repos.conf"
+
+		local dest=${EROOT:-${ROOT}}etc/portage/repos.conf
+		if [[ ! -f ${dest} ]] && mkdir -p "${dest}" 2>/dev/null ; then
+			dest=${EROOT:-${ROOT}}etc/portage/repos.conf/${repo_name:-gentoo}.conf
+		fi
+		# Don't install the config update if the desired repos.conf directory
+		# and config file exist, since users may accept it blindly and break
+		# their config (bug #478726).
+		[[ -e ${EROOT:-${ROOT}}etc/portage/repos.conf/${repo_name:-gentoo}.conf ]] || \
+			mv "${T}/repos.conf" "$(new_config_protect "${dest}")"
+
+		if [[ ${PORTDIR} == ${EPREFIX}/usr/portage ]] ; then
+			einfo "Generating make.conf PORTDIR setting for backward compatibility"
+			for dest in "${EROOT:-${ROOT}}etc/make.conf" "${EROOT:-${ROOT}}etc/portage/make.conf" ; do
+				[[ -e ${dest} ]] && break
+			done
+			[[ -d ${dest} ]] && dest=${dest}/portdir.conf
+			rm -rf "${T}/make.conf"
+			[[ -f ${dest} ]] && cat "${dest}" > "${T}/make.conf"
+			cat <<-EOF >> "${T}/make.conf"
+
+			# Set PORTDIR for backward compatibility with various tools:
+			#   gentoo-bashcomp - bug #478444
+			#   euse - bug #474574
+			#   euses and ufed - bug #478318
+			PORTDIR="${EPREFIX}/usr/portage"
+			EOF
+			mkdir -p "${dest%/*}"
+			mv "${T}/make.conf" "$(new_config_protect "${dest}")"
+		fi
+	fi
+
+	pushd "${EROOT}var/db/pkg" > /dev/null
+	local didwork=
+	[[ ! -e "${EROOT}"var/lib/portage/preserved_libs_registry ]] && for cpv in */*/NEEDED ; do
+		if [[ ${CHOST} == *-darwin* && ! -f ${cpv}.MACHO.3 ]] ; then
+			while read line; do
+				scanmacho -BF "%a;%F;%S;%n" ${line% *} >> "${cpv}".MACHO.3
+			done < "${cpv}"
+			[[ -z ${didwork} ]] \
+				&& didwork=yes \
+				|| didwork=already
+		elif [[ ${CHOST} != *-darwin* && ${CHOST} != *-interix* && ! -f ${cpv}.ELF.2 ]] ; then
+			while read line; do
+				filename=${line% *}
+				needed=${line#* }
+				newline=$(scanelf -BF "%a;%F;%S;$needed;%r" $filename)
+				echo "${newline:3}" >> "${cpv}".ELF.2
+			done < "${cpv}"
+			[[ -z ${didwork} ]] \
+				&& didwork=yes \
+				|| didwork=already
+		fi
+		[[ ${didwork} == yes ]] && \
+			einfo "converting NEEDED files to new syntax, please wait"
+	done
+	popd > /dev/null
+
+	if [[ ${EAPIPREFIX_UPGRADE} == 0 ]] ; then
+		local eapi
+		einfo 'removing EAPI="prefix" legacy from your vdb, please wait'
+		pushd "${EROOT}var/db/pkg" > /dev/null
+		for cpv in */* ; do
+			[[ ${cpv##*/} == "-MERGING-"* ]] && continue
+			# remove "prefix" from EAPI file
+			eapi=$(<"${cpv}"/EAPI)
+			eapi=${eapi/prefix/}
+			eapi=${eapi# }
+			eapi=${eapi:-0}
+			echo ${eapi} > "${cpv}"/EAPI
+			# remove "prefix" from EAPI in stored environment
+			bzcat "${cpv}"/environment.bz2 \
+				| sed -e "s/EAPI=\([\"']\)prefix [0-9][\"']/EAPI=\1${eapi}\1/" \
+				| bzip2 -9 > "${cpv}"/environment2.bz2 \
+				&& mv -f "${cpv}"/environment{2,}.bz2
+			# remove "prefix" from the stored ebuild
+			sed -i -e "s/^EAPI=.*$/EAPI=${eapi}/" "${cpv}/${cpv##*/}.ebuild"
+		done
+		popd > /dev/null
+	fi
+}

diff --git a/sys-apps/portage/portage-2.2.8.ebuild b/sys-apps/portage/portage-2.2.8.ebuild
new file mode 100644
index 0000000..462a348
--- /dev/null
+++ b/sys-apps/portage/portage-2.2.8.ebuild
@@ -0,0 +1,585 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id: portage-2.2.01.16270.ebuild 58665 2010-09-05 19:54:38Z grobian $
+
+# Require EAPI 2 since we now require at least python-2.6 (for python 3
+# syntax support) which also requires EAPI 2.
+EAPI=3
+PYTHON_COMPAT=(
+	pypy1_9 pypy2_0
+	python3_1 python3_2 python3_3 python3_4
+	python2_6 python2_7
+)
+inherit eutils multilib
+
+DESCRIPTION="Prefix branch of the Portage Package Manager, used in Gentoo Prefix"
+HOMEPAGE="http://www.gentoo.org/proj/en/gentoo-alt/prefix/"
+LICENSE="GPL-2"
+KEYWORDS="~ppc-aix ~x64-freebsd ~x86-freebsd ~hppa-hpux ~ia64-hpux ~x86-interix ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+SLOT="0"
+IUSE="build doc epydoc +ipc linguas_ru pypy2_0 python2 python3 selinux xattr prefix-chaining"
+
+for _pyimpl in ${PYTHON_COMPAT[@]} ; do
+	IUSE+=" python_targets_${_pyimpl}"
+done
+unset _pyimpl
+
+# Import of the io module in python-2.6 raises ImportError for the
+# thread module if threading is disabled.
+python_dep_ssl="python3? ( =dev-lang/python-3*[ssl] )
+	!pypy2_0? ( !python2? ( !python3? (
+		|| ( >=dev-lang/python-2.7[ssl] dev-lang/python:2.6[threads,ssl] )
+	) ) )
+	pypy2_0? ( !python2? ( !python3? ( dev-python/pypy:2.0[bzip2,ssl] ) ) )
+	python2? ( !python3? ( || ( dev-lang/python:2.7[ssl] dev-lang/python:2.6[ssl,threads] ) ) )"
+python_dep="${python_dep_ssl//\[ssl\]}"
+python_dep="${python_dep//,ssl}"
+python_dep="${python_dep//ssl,}"
+
+python_dep="${python_dep}
+	python_targets_pypy1_9? ( dev-python/pypy:1.9 )
+	python_targets_pypy2_0? ( dev-python/pypy:2.0 )
+	python_targets_python2_6? ( dev-lang/python:2.6 )
+	python_targets_python2_7? ( dev-lang/python:2.7 )
+	python_targets_python3_1? ( dev-lang/python:3.1 )
+	python_targets_python3_2? ( dev-lang/python:3.2 )
+	python_targets_python3_3? ( dev-lang/python:3.3 )
+	python_targets_python3_4? ( dev-lang/python:3.4 )
+"
+
+# The pysqlite blocker is for bug #282760.
+# make-3.82 is for bug #455858
+DEPEND="${python_dep}
+	>=sys-devel/make-3.82
+	>=sys-apps/sed-4.0.5 sys-devel/patch
+	doc? ( app-text/xmlto ~app-text/docbook-xml-dtd-4.4 )
+	epydoc? ( >=dev-python/epydoc-2.0 !<=dev-python/pysqlite-2.4.1 )"
+# Require sandbox-2.2 for bug #288863.
+# For xattr, we can spawn getfattr and setfattr from sys-apps/attr, but that's
+# quite slow, so it's not considered in the dependencies as an alternative to
+# to python-3.3 / pyxattr. Also, xattr support is only tested with Linux, so
+# for now, don't pull in xattr deps for other kernels.
+# For whirlpool hash, require python[ssl] or python-mhash (bug #425046).
+# For compgen, require bash[readline] (bug #445576).
+# bash-4.1 necessary for redirect_alloc_fd, which fails on non-Linux if bash
+# doesn't have a builtin for finding a random filedescriptor
+RDEPEND="${python_dep}
+	!build? ( >=sys-apps/sed-4.0.5
+		|| ( >=app-shells/bash-4.2_p37[readline] ( <app-shells/bash-4.2_p37 >=app-shells/bash-4.1 ) )
+		>=app-admin/eselect-1.2
+		|| ( ${python_dep_ssl} dev-python/python-mhash )
+	)
+	elibc_FreeBSD? ( !prefix? ( sys-freebsd/freebsd-bin ) )
+	elibc_glibc? ( !prefix? ( >=sys-apps/sandbox-2.2 ) )
+	elibc_uclibc? ( !prefix? ( >=sys-apps/sandbox-2.2 ) )
+	kernel_linux? ( >=app-misc/pax-utils-0.1.17 )
+	kernel_SunOS? ( >=app-misc/pax-utils-0.1.17 )
+	kernel_FreeBSD? ( >=app-misc/pax-utils-0.1.17 )
+	kernel_Darwin? ( >=app-misc/pax-utils-0.1.18 )
+	kernel_HPUX? ( !hppa-hpux? ( >=app-misc/pax-utils-0.1.19 ) )
+	kernel_AIX? ( >=sys-apps/aix-miscutils-0.1.1634 )
+	xattr? ( kernel_linux? ( || ( >=dev-lang/python-3.3_pre20110902 dev-python/pyxattr ) ) )
+	selinux? ( || ( >=sys-libs/libselinux-2.0.94[python] <sys-libs/libselinux-2.0.94 ) )
+	!<app-shells/bash-3.2_p17
+	!prefix? ( !<app-admin/logrotate-3.8.0 )"
+PDEPEND="
+	!build? (
+		>=net-misc/rsync-2.6.4
+		userland_GNU? ( >=sys-apps/coreutils-6.4 )
+	)"
+# coreutils-6.4 rdep is for date format in emerge-webrsync #164532
+# NOTE: FEATURES=installsources requires debugedit and rsync
+
+SRC_ARCHIVES="http://dev.gentoo.org/~zmedico/portage/archives http://dev.gentoo.org/~grobian/distfiles"
+
+prefix_src_archives() {
+	local x y
+	for x in ${@}; do
+		for y in ${SRC_ARCHIVES}; do
+			echo ${y}/${x}
+		done
+	done
+}
+
+PV_PL="2.1.2"
+PATCHVER_PL=""
+TARBALL_PV="${PV}"
+SRC_URI="mirror://gentoo/prefix-${PN}-${TARBALL_PV}.tar.bz2
+	$(prefix_src_archives prefix-${PN}-${TARBALL_PV}.tar.bz2)"
+
+PATCHVER=
+[[ $TARBALL_PV = $PV ]] || PATCHVER=$PV
+if [ -n "${PATCHVER}" ]; then
+	SRC_URI="${SRC_URI} mirror://gentoo/${PN}-${PATCHVER}.patch.bz2
+	$(prefix_src_archives ${PN}-${PATCHVER}.patch.bz2)"
+fi
+
+S="${WORKDIR}"/prefix-${PN}-${TARBALL_PV}
+S_PL="${WORKDIR}"/${PN}-${PV_PL}
+
+compatible_python_is_selected() {
+	[[ $("${EPREFIX}/usr/bin/python" -c 'import sys ; sys.stdout.write(sys.hexversion >= 0x2060000 and "good" or "bad")') = good ]]
+}
+
+current_python_has_xattr() {
+	[[ ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).'
+	local PYTHON=${EPREFIX}/usr/bin/${EPYTHON}
+	[[ $("${PYTHON}" -c 'import sys ; sys.stdout.write(sys.hexversion >= 0x3030000 and "yes" or "no")') = yes ]] || \
+	"${PYTHON}" -c 'import xattr' 2>/dev/null
+}
+
+call_with_python_impl() {
+	[[ ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).'
+	env EPYTHON=${EPYTHON} "$@"
+}
+
+get_python_interpreter() {
+	[ $# -eq 1 ] || die "expected 1 argument, got $#: $*"
+	local impl=$1 python
+	case "${impl}" in
+		python*)
+			python=${impl/_/.}
+			;;
+		pypy*)
+			python=${impl/_/.}
+			python=${python/pypy/pypy-c}
+			;;
+		*)
+			die "Unrecognized python target: ${impl}"
+	esac
+	echo ${python}
+}
+
+get_python_sitedir() {
+	[ $# -eq 1 ] || die "expected 1 argument, got $#: $*"
+	local impl=$1
+	local site_dir=/usr/$(get_libdir)/${impl/_/.}/site-packages
+	[[ -d ${EROOT}${site_dir} ]] || \
+		ewarn "site-packages dir missing for ${impl}: ${EROOT}${site_dir}"
+	echo "${site_dir}"
+}
+
+python_compileall() {
+	[[ ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).'
+	local d=${EPREFIX}$1 PYTHON=${EPREFIX}/usr/bin/${EPYTHON}
+	local d_image=${D}${d#/}
+	[[ -d ${d_image} ]] || die "directory does not exist: ${d_image}"
+	case "${EPYTHON}" in
+		python*)
+			"${PYTHON}" -m compileall -q -f -d "${d}" "${d_image}" || die
+			# Note: Using -OO breaks emaint, since it requires __doc__,
+			# and __doc__ is None when -OO is used.
+			"${PYTHON}" -O -m compileall -q -f -d "${d}" "${d_image}" || die
+			;;
+		pypy*)
+			"${PYTHON}" -m compileall -q -f -d "${d}" "${d_image}" || die
+			;;
+		*)
+			die "Unrecognized EPYTHON value: ${EPYTHON}"
+	esac
+}
+
+pkg_setup() {
+	if use python2 && use python3 ; then
+		ewarn "Both python2 and python3 USE flags are enabled, but only one"
+		ewarn "can be in the shebangs. Using python3."
+	fi
+	if use pypy2_0 && use python3 ; then
+		ewarn "Both pypy2_0 and python3 USE flags are enabled, but only one"
+		ewarn "can be in the shebangs. Using python3."
+	fi
+	if use pypy2_0 && use python2 ; then
+		ewarn "Both pypy2_0 and python2 USE flags are enabled, but only one"
+		ewarn "can be in the shebangs. Using python2"
+	fi
+	if ! use pypy2_0 && ! use python2 && ! use python3 && \
+		! compatible_python_is_selected ; then
+		ewarn "Attempting to select a compatible default python interpreter"
+		local x success=0
+		for x in "${EPREFIX}"/usr/bin/python2.* ; do
+			x=${x#${EPREFIX}/usr/bin/python2.}
+			if [[ $x -ge 6 ]] 2>/dev/null ; then
+				eselect python set python2.$x
+				if compatible_python_is_selected ; then
+					elog "Default python interpreter is now set to python-2.$x"
+					success=1
+					break
+				fi
+			fi
+		done
+		if [ $success != 1 ] ; then
+			eerror "Unable to select a compatible default python interpreter!"
+			die "This version of portage requires at least python-2.6 to be selected as the default python interpreter (see \`eselect python --help\`)."
+		fi
+	fi
+
+	# We use EPYTHON to designate the active python interpreter,
+	# but we only export when needed, via call_with_python_impl.
+	EPYTHON=python
+	export -n EPYTHON
+	if use python3; then
+		EPYTHON=python3
+	elif use python2; then
+		EPYTHON=python2
+	elif use pypy2_0; then
+		EPYTHON=pypy-c2.0
+	fi
+}
+
+src_prepare() {
+	if [ -n "${PATCHVER}" ] ; then
+		if [[ -L $S/bin/ebuild-helpers/portageq ]] ; then
+			rm "$S/bin/ebuild-helpers/portageq" \
+				|| die "failed to remove portageq helper symlink"
+		fi
+		epatch "${WORKDIR}/${PN}-${PATCHVER}.patch"
+	fi
+
+	use prefix-chaining && epatch "${FILESDIR}"/${PN}-2.2.00.15801-prefix-chaining.patch
+	epatch "${FILESDIR}"/${PN}-2.2.8-ebuildshell.patch # 155161
+
+	if ! use ipc ; then
+		einfo "Disabling ipc..."
+		sed -e "s:_enable_ipc_daemon = True:_enable_ipc_daemon = False:" \
+			-i pym/_emerge/AbstractEbuildProcess.py || \
+			die "failed to patch AbstractEbuildProcess.py"
+	fi
+
+	if use xattr && use kernel_linux ; then
+		einfo "Adding FEATURES=xattr to make.globals ..."
+		echo -e '\nFEATURES="${FEATURES} xattr"' >> cnf/make.globals \
+			|| die "failed to append to make.globals"
+	fi
+
+	local set_shebang=
+	if use python3; then
+		set_shebang=python3
+	elif use python2; then
+		set_shebang=python2
+	elif use pypy2_0; then
+		set_shebang=pypy-c2.0
+	fi
+	if [[ -n ${set_shebang} ]] ; then
+		einfo "Converting shebangs for ${set_shebang}..."
+		while read -r -d $'\0' ; do
+			local shebang=$(head -n1 "$REPLY")
+			if [[ ${shebang} == "#!${EPREFIX}/usr/bin/python"* ]] ; then
+				sed -i -e "1s:python:${set_shebang}:" "$REPLY" || \
+					die "sed failed"
+			fi
+		done < <(find . -type f -print0)
+	fi
+
+	# "native" Prefix still uses configure
+	if use !prefix && [[ -n ${EPREFIX} ]] ; then
+		einfo "Setting portage.const.EPREFIX ..."
+		sed -e "s|^\(SANDBOX_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/bin/sandbox\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(FAKEROOT_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/bin/fakeroot\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(BASH_BINARY[[:space:]]*=[[:space:]]*\"\)\(/bin/bash\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(MOVE_BINARY[[:space:]]*=[[:space:]]*\"\)\(/bin/mv\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(PRELINK_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/sbin/prelink\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(EPREFIX[[:space:]]*=[[:space:]]*\"\).*|\\1${EPREFIX}\"|" \
+			-i pym/portage/const.py || \
+			die "Failed to patch portage.const.EPREFIX"
+
+		einfo "Prefixing shebangs ..."
+		while read -r -d $'\0' ; do
+			local shebang=$(head -n1 "$REPLY")
+			if [[ ${shebang} == "#!"* && ! ${shebang} == "#!${EPREFIX}/"* ]] ; then
+				sed -i -e "1s:.*:#!${EPREFIX}${shebang:2}:" "$REPLY" || \
+					die "sed failed"
+			fi
+		done < <(find . -type f -print0)
+
+		einfo "Adding FEATURES=force-prefix to make.globals ..."
+		echo -e '\nFEATURES="${FEATURES} force-prefix"' >> cnf/make.globals \
+			|| die "failed to append to make.globals"
+	fi
+
+	if use !prefix ; then
+	cd "${S}/cnf" || die
+	if [ -f "make.conf.${ARCH}".diff ]; then
+		patch make.conf "make.conf.${ARCH}".diff || \
+			die "Failed to patch make.conf.example"
+	else
+		eerror ""
+		eerror "Portage does not have an arch-specific configuration for this arch."
+		eerror "Please notify the arch maintainer about this issue. Using generic."
+		eerror ""
+	fi
+	fi
+}
+
+src_configure() {
+	if use prefix ; then
+		local extrapath="/usr/bin:/bin"
+		# ok, we can't rely on PORTAGE_ROOT_USER being there yet, as people
+		# tend not to update that often, as long as we are a separate ebuild
+		# we can assume when unset, it's time for some older trick
+		if [[ -z ${PORTAGE_ROOT_USER} ]] ; then
+			PORTAGE_ROOT_USER=$(python -c 'from portage.const import rootuser; print rootuser')
+		fi
+		# lazy check, but works for now
+		if [[ ${PORTAGE_ROOT_USER} == "root" ]] ; then
+			# we need this for e.g. mtree on FreeBSD (and Darwin) which is in
+			# /usr/sbin
+			extrapath="/usr/sbin:/usr/bin:/sbin:/bin"
+		fi
+
+		econf \
+			--with-portage-user="${PORTAGE_USER:-portage}" \
+			--with-portage-group="${PORTAGE_GROUP:-portage}" \
+			--with-root-user="${PORTAGE_ROOT_USER}" \
+			--with-offset-prefix="${EPREFIX}" \
+			--with-extra-path="${extrapath}" \
+			|| die "econf failed"
+	else
+		default
+	fi
+}
+
+src_compile() {
+	if use prefix ; then
+		emake || die "emake failed"
+	fi
+
+	if use doc; then
+		call_with_python_impl \
+		emake docbook || die
+	fi
+
+	if use epydoc; then
+		einfo "Generating api docs"
+		call_with_python_impl \
+		emake epydoc || die
+	fi
+}
+
+src_test() {
+	# make files executable, in case they were created by patch
+	find bin -type f | xargs chmod +x
+	call_with_python_impl \
+	emake test || die
+}
+
+src_install() {
+	local portage_base="/usr/lib/portage"
+
+	emake DESTDIR="${D}" install || die "make install failed."
+	dodir /usr/lib/portage/bin
+
+	if use userland_GNU; then
+		rm "${ED}"${portage_base}/bin/ebuild-helpers/bsd/sed || die "Failed to remove sed wrapper"
+	fi
+
+	exeinto ${portage_base}/pym/portage/tests
+	doexe  "${S}"/pym/portage/tests/runTests
+
+	use doc && dohtml -r "${S}"/doc/*
+	use epydoc && dohtml -r "${WORKDIR}"/api
+	dodir /etc/portage
+	keepdir /etc/portage
+
+	# Use dodoc for compression, since the Makefile doesn't do that.
+	dodoc "${S}"/{ChangeLog,NEWS,RELEASE-NOTES} || die
+
+	# Allow external portage API consumers to import portage python modules
+	# (this used to be done with PYTHONPATH setting in /etc/env.d).
+	# For each of PYTHON_TARGETS, install a tree of *.py symlinks in
+	# site-packages, and compile with the corresponding interpreter.
+	local impl files mod_dir dest_mod_dir python relative_path x
+	for impl in "${PYTHON_COMPAT[@]}" ; do
+		use "python_targets_${impl}" || continue
+		if use build && [[ ${ROOT} == / &&
+			! -x ${EPREFIX}/usr/bin/$(get_python_interpreter ${impl}) ]] ; then
+			# Tolerate --nodeps at beginning of stage1 for catalyst
+			ewarn "skipping python_targets_${impl}, interpreter not found"
+			continue
+		fi
+		while read -r mod_dir ; do
+			cd "${ED}/usr/lib/portage/pym/${mod_dir}" || die
+			files=$(echo *.py)
+			if [ -z "${files}" ] || [ "${files}" = "*.py" ]; then
+				# __pycache__ directories contain no py files
+				continue
+			fi
+			dest_mod_dir=$(get_python_sitedir ${impl})/${mod_dir}
+			dodir "${dest_mod_dir}" || die
+			relative_path=../../../lib/portage/pym/${mod_dir}
+			x=/${mod_dir}
+			while [ -n "${x}" ] ; do
+				relative_path=../${relative_path}
+				x=${x%/*}
+			done
+			for x in ${files} ; do
+				dosym "${relative_path}/${x}" \
+					"${dest_mod_dir}/${x}" || die
+			done
+		done < <(cd "${ED}"/usr/lib/portage/pym || die ; find * -type d ! -path "portage/tests*")
+		cd "${S}" || die
+		EPYTHON=$(get_python_interpreter ${impl}) \
+		python_compileall "$(get_python_sitedir ${impl})"
+	done
+
+	# Compile /usr/lib/portage/pym with the active interpreter, since portage
+	# internal commands force this directory to the beginning of sys.path.
+	python_compileall /usr/lib/portage/pym
+}
+
+pkg_preinst() {
+	if [[ $ROOT == / ]] ; then
+		# Run some minimal tests as a sanity check.
+		local test_runner=$(find "$ED" -name runTests)
+		if [[ -n $test_runner && -x $test_runner ]] ; then
+			einfo "Running preinst sanity tests..."
+			"$test_runner" || die "preinst sanity tests failed"
+		fi
+	fi
+
+	if use xattr && ! current_python_has_xattr ; then
+		ewarn "For optimal performance in xattr handling, install"
+		ewarn "dev-python/pyxattr, or install >=dev-lang/python-3.3 and"
+		ewarn "enable USE=python3 for $CATEGORY/$PN."
+	fi
+
+	has_version "<=${CATEGORY}/${PN}-2.2.00.13346"
+	EAPIPREFIX_UPGRADE=$?
+
+	if has_version "<${CATEGORY}/${PN}-2.2.7-r1" ; then
+		REPOS_CONF_UPGRADE=true
+		REPOS_CONF_SYNC=
+		type -P portageq >/dev/null 2>&1 && \
+			REPOS_CONF_SYNC=$("$(type -P portageq)" envvar SYNC)
+	fi
+}
+
+new_config_protect() {
+	# Generate a ._cfg file even if the target file
+	# does not exist, ensuring that the user will
+	# notice the config change.
+	local basename=${1##*/}
+	local dirname=${1%/*}
+	local i=0
+	while true ; do
+		local filename=$(
+			echo -n "${dirname}/._cfg"
+			printf "%04d" ${i}
+			echo -n "_${basename}"
+		)
+		[[ -e ${filename} ]] || break
+		(( i++ ))
+	done
+	echo "${filename}"
+}
+
+pkg_postinst() {
+
+	if ${REPOS_CONF_UPGRADE} ; then
+		einfo "Generating repos.conf"
+		local repo_name=
+		[[ -f ${PORTDIR}/profiles/repo_name ]] && \
+			repo_name=$(< "${PORTDIR}/profiles/repo_name")
+		if [[ -z ${REPOS_CONF_SYNC} ]] ; then
+			REPOS_CONF_SYNC=$(grep "^sync-uri =" "${EROOT:-${ROOT}}usr/share/portage/config/repos.conf")
+			REPOS_CONF_SYNC=${REPOS_CONF_SYNC##* }
+		fi
+		local sync_type=
+		[[ ${REPOS_CONF_SYNC} == git://* ]] && sync_type=git
+
+		if [[ ${REPOS_CONF_SYNC} == cvs://* ]]; then
+			sync_type=cvs
+			REPOS_CONF_SYNC=${REPOS_CONF_SYNC#cvs://}
+		fi
+
+		cat <<-EOF > "${T}/repos.conf"
+		[DEFAULT]
+		main-repo = ${repo_name:-gentoo}
+
+		[${repo_name:-gentoo}]
+		location = ${PORTDIR:-${EPREFIX}/usr/portage}
+		sync-type = ${sync_type:-rsync}
+		sync-uri = ${REPOS_CONF_SYNC}
+		EOF
+
+		[[ ${sync_type} == cvs ]] && echo "sync-cvs-repo = $(<"${PORTDIR}/CVS/Repository")" >> "${T}/repos.conf"
+
+		local dest=${EROOT:-${ROOT}}etc/portage/repos.conf
+		if [[ ! -f ${dest} ]] && mkdir -p "${dest}" 2>/dev/null ; then
+			dest=${EROOT:-${ROOT}}etc/portage/repos.conf/${repo_name:-gentoo}.conf
+		fi
+		# Don't install the config update if the desired repos.conf directory
+		# and config file exist, since users may accept it blindly and break
+		# their config (bug #478726).
+		[[ -e ${EROOT:-${ROOT}}etc/portage/repos.conf/${repo_name:-gentoo}.conf ]] || \
+			mv "${T}/repos.conf" "$(new_config_protect "${dest}")"
+
+		if [[ ${PORTDIR} == ${EPREFIX}/usr/portage ]] ; then
+			einfo "Generating make.conf PORTDIR setting for backward compatibility"
+			for dest in "${EROOT:-${ROOT}}etc/make.conf" "${EROOT:-${ROOT}}etc/portage/make.conf" ; do
+				[[ -e ${dest} ]] && break
+			done
+			[[ -d ${dest} ]] && dest=${dest}/portdir.conf
+			rm -rf "${T}/make.conf"
+			[[ -f ${dest} ]] && cat "${dest}" > "${T}/make.conf"
+			cat <<-EOF >> "${T}/make.conf"
+
+			# Set PORTDIR for backward compatibility with various tools:
+			#   gentoo-bashcomp - bug #478444
+			#   euse - bug #474574
+			#   euses and ufed - bug #478318
+			PORTDIR="${EPREFIX}/usr/portage"
+			EOF
+			mkdir -p "${dest%/*}"
+			mv "${T}/make.conf" "$(new_config_protect "${dest}")"
+		fi
+	fi
+
+	pushd "${EROOT}var/db/pkg" > /dev/null
+	local didwork=
+	[[ ! -e "${EROOT}"var/lib/portage/preserved_libs_registry ]] && for cpv in */*/NEEDED ; do
+		if [[ ${CHOST} == *-darwin* && ! -f ${cpv}.MACHO.3 ]] ; then
+			while read line; do
+				scanmacho -BF "%a;%F;%S;%n" ${line% *} >> "${cpv}".MACHO.3
+			done < "${cpv}"
+			[[ -z ${didwork} ]] \
+				&& didwork=yes \
+				|| didwork=already
+		elif [[ ${CHOST} != *-darwin* && ${CHOST} != *-interix* && ! -f ${cpv}.ELF.2 ]] ; then
+			while read line; do
+				filename=${line% *}
+				needed=${line#* }
+				newline=$(scanelf -BF "%a;%F;%S;$needed;%r" $filename)
+				echo "${newline:3}" >> "${cpv}".ELF.2
+			done < "${cpv}"
+			[[ -z ${didwork} ]] \
+				&& didwork=yes \
+				|| didwork=already
+		fi
+		[[ ${didwork} == yes ]] && \
+			einfo "converting NEEDED files to new syntax, please wait"
+	done
+	popd > /dev/null
+
+	if [[ ${EAPIPREFIX_UPGRADE} == 0 ]] ; then
+		local eapi
+		einfo 'removing EAPI="prefix" legacy from your vdb, please wait'
+		pushd "${EROOT}var/db/pkg" > /dev/null
+		for cpv in */* ; do
+			[[ ${cpv##*/} == "-MERGING-"* ]] && continue
+			# remove "prefix" from EAPI file
+			eapi=$(<"${cpv}"/EAPI)
+			eapi=${eapi/prefix/}
+			eapi=${eapi# }
+			eapi=${eapi:-0}
+			echo ${eapi} > "${cpv}"/EAPI
+			# remove "prefix" from EAPI in stored environment
+			bzcat "${cpv}"/environment.bz2 \
+				| sed -e "s/EAPI=\([\"']\)prefix [0-9][\"']/EAPI=\1${eapi}\1/" \
+				| bzip2 -9 > "${cpv}"/environment2.bz2 \
+				&& mv -f "${cpv}"/environment{2,}.bz2
+			# remove "prefix" from the stored ebuild
+			sed -i -e "s/^EAPI=.*$/EAPI=${eapi}/" "${cpv}/${cpv##*/}.ebuild"
+		done
+		popd > /dev/null
+	fi
+}


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [gentoo-commits] dev/heroxbd:master commit in: sys-apps/portage/, sys-apps/portage/files/
  2015-03-05  3:00 [gentoo-commits] proj/android:master commit in: sys-apps/portage/files/, sys-apps/portage/ Benda XU
@ 2015-01-06  3:06 ` Benda XU
  0 siblings, 0 replies; 3+ messages in thread
From: Benda XU @ 2015-01-06  3:06 UTC (permalink / raw
  To: gentoo-commits

commit:     245cca39b77c03307e53a4e4c830154882b7d79e
Author:     Benda Xu <heroxbd <AT> gentoo <DOT> org>
AuthorDate: Mon Jan  5 09:39:10 2015 +0000
Commit:     Benda XU <heroxbd <AT> gentoo <DOT> org>
CommitDate: Mon Jan  5 09:49:43 2015 +0000
URL:        http://sources.gentoo.org/gitweb/?p=dev/heroxbd.git;a=commit;h=245cca39

sys-apps/portage: update patch, test if ldconfig exists. Bug 532100

---
 sys-apps/portage/Manifest                            | 2 +-
 sys-apps/portage/files/portage-2.2.14-ldconfig.patch | 8 +++++---
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/sys-apps/portage/Manifest b/sys-apps/portage/Manifest
index 8005081..53a4c7a 100644
--- a/sys-apps/portage/Manifest
+++ b/sys-apps/portage/Manifest
@@ -9,7 +9,7 @@ AUX portage-2.2.01.19981-ebuildshell.patch 3304 SHA256 2b7f313afe62815b791835da8
 AUX portage-2.2.01.20020-ebuildshell.patch 4736 SHA256 92f91c788e3591fb71f55b7a04df8bd0baee767e2561649182bf1b814a0451a8 SHA512 785059ad71e1d9172338926df22883bf70560c3f22f84da74aa21b872b52c9dd05ca61fe8bb786a2da7e4756ae3568f35ca6d7a6ec22b9be419efab6529b8f52 WHIRLPOOL 63ba30a2fa005cca2a6866178938e4ce83bed8ca3a5cbc9bcbcffc888ef4561c27d45f29707db26574c96b8a0c0ed565a0224d64bed8191a1179ae6ace325904
 AUX portage-2.2.01.20239-ebuildshell.patch 5292 SHA256 602efac969b76b33e46f927bb6d5ddaff837f2d69dba446c05116fd6e9d6aaf9 SHA512 9f79c62482cacfe4d52d9b7a42969c5090ec1dd6c55ac67ac0697fa3261d00d437e32a46987d242d3380b459d1af2cdfdacec5d72b7aa905146bbf5759158bdf WHIRLPOOL 2ee6f82ec9dc8c44704c1badeafa207656dac9ce49443616b4ebfd402e872c71434e049f4436ed04009e633a00b4863dd35e79a80ba4e710ac1af6579a9decdf
 AUX portage-2.2.10.1-case-insensitive-fs.patch 13475 SHA256 e9ca3560b580e1df7bdf7424c76b5bf022c4189ed6ae51370f88895d5c00031d SHA512 6c7b4cba0827d0b29f1be1fc6fb42b1703f373f6825be14f43506921e71075b6967191cf79e4e659c0f37c96de6cbdbdc1e04cd0e668a563a4a3c3be9e97f773 WHIRLPOOL 839ebc4214add69531f9f8a387ed155006c77c396031a116a6b79814a09e6591d5e8905e8398541ca213e60aacd0265e2f941858bbfcc3551a2ff5768a87f432
-AUX portage-2.2.14-ldconfig.patch 1139 SHA256 3ccf2649dd76a1093aec62479da57bd53f3e2a4995bec5bd312149aa78ecff9b SHA512 c94602e611edc8363abc0c904ac9b12fb5d19bc3d80a6cfda5d4aef70c936b77eb376bf0c63cb21b4e6fce14c113f6be1ae9950705b3f6e9d35fba766a35e147 WHIRLPOOL 02128e5ddde6969450fb17da55e335f2d64423d73864b98806092db8e669d290f56e57b3e166df7909408729068c9637f72ea97b418958203f35efc87e5d8cae
+AUX portage-2.2.14-ldconfig.patch 1230 SHA256 50c5f886599aeeec6776da812ebd32964ef138ab63792dc84d0545d3072c20de SHA512 bdc4ee5642e5347e8ad5e776147bfa0ca8901ca312648d02406365c9929a703698321d6b1fd44dcac6225e5099b9140eaed785f7da368ef80c2645e9a33e3869 WHIRLPOOL 62c153821af6924593d8c61b31d66e478634c350b217a1cc7da3728b2ff393e706fe408b1c5e09783f7898dcd4cf983f9d2e748980234e65cd392b38bb0e82aa
 AUX portage-2.2.7-ebuildshell.patch 6030 SHA256 c654f5e0b60a4a930ec973b306246d9e920d89b7536bda56c72f38d1ed56445d SHA512 c4bfa44be5d706a9206fcab884e3ad7b0530ec315f9b824fd77f06ff5482414af3e3aaadbc059a49712b2a2e203320f367e2d8c64bf1fceb78495d940fd3fd2a WHIRLPOOL a468e4d5b5d1c493415188c500ea04388e34bc5e5f5a03d61ea5aea8d5b029e2a4426c52471729345a4293eb7c9b747948f75b64982452d96a920a3ac5e528e6
 AUX portage-2.2.7-macho-relative-install_names.patch 2811 SHA256 de767ffb6d29625ca9ba0f33765a59a55bbdf2f3b2c1d9989a73a474ae55c388 SHA512 8555d04e4fc361c500d6c18c30f54f178164477f6c1fbb5fd30d5f89671f95915243e92b655e4264f748c2f29f0cf3e7a5fe439316cc6faebc752172557f0a89 WHIRLPOOL f5f92a762e7455dddfa2ffe3ba27c78ec1533c40920acc96a5e65d89ea93f7657f8bf7771e805d7d62c6f60944dccde72de3f34cee1d14c7db667b27cdd76d55
 AUX portage-2.2.7-sandbox.patch 723 SHA256 b6b941659a4cdbdafc65bf9977d7a92255b553c49e8f445862dcb00567906fec SHA512 fcf4bc7826bab92b1847dcecaf5def212b4eecdb4ac87b10b0668ea470d5836f3d68eb4ccf61345b39f9265c7f31ef3562de58b2ee4bb3096a71c0567343d810 WHIRLPOOL 3699c7a2a0e6229d337760d07ce40e45b949614518ae292d74ca4297d3e9e5f3eb5edeb7f59c8821a6bfcf981cf1363f4f3d03c16af533276f577b1ff3d8c264

diff --git a/sys-apps/portage/files/portage-2.2.14-ldconfig.patch b/sys-apps/portage/files/portage-2.2.14-ldconfig.patch
index 76fc348..9a44649 100644
--- a/sys-apps/portage/files/portage-2.2.14-ldconfig.patch
+++ b/sys-apps/portage/files/portage-2.2.14-ldconfig.patch
@@ -1,4 +1,4 @@
-commit 3fb24230a2369513b1f36cba3d772bc517265e81
+commit eaf1d1bc3d25dbbbba7de8eb09f6db7ec5f2dd28
 Author: Benda Xu <heroxbd@gentoo.org>
 Date:   Wed Dec 10 10:45:31 2014 +0900
 
@@ -7,10 +7,10 @@ Date:   Wed Dec 10 10:45:31 2014 +0900
     It does not affect prefix-rpath, and handles prefix-libc(RAP) correctly.
 
 diff --git a/pym/portage/util/env_update.py b/pym/portage/util/env_update.py
-index ace492c..4437881 100644
+index ace492c..5e732ad 100644
 --- a/pym/portage/util/env_update.py
 +++ b/pym/portage/util/env_update.py
-@@ -306,13 +306,13 @@ def _env_update(makelinks, target_root, prev_mtimes, contents, env,
+@@ -306,13 +306,15 @@ def _env_update(makelinks, target_root, prev_mtimes, contents, env,
  		if not libdir_contents_changed:
  			makelinks = False
  
@@ -19,6 +19,8 @@ index ace492c..4437881 100644
  	if "CHOST" in settings and "CBUILD" in settings and \
  		settings["CHOST"] != settings["CBUILD"]:
  		ldconfig = find_binary("%s-ldconfig" % settings["CHOST"])
++	elif not (os.access(ldconfig, os.X_OK) and os.path.isfile(ldconfig)):
++		ldconfig = None
  
  	# Only run ldconfig as needed
 -	if makelinks and ldconfig and not eprefix:


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [gentoo-commits] dev/heroxbd:master commit in: sys-apps/portage/, sys-apps/portage/files/
  2016-05-26  4:05 [gentoo-commits] proj/android:master commit in: sys-apps/portage/files/, sys-apps/portage/ Benda XU
@ 2016-05-23  6:18 ` Benda XU
  0 siblings, 0 replies; 3+ messages in thread
From: Benda XU @ 2016-05-23  6:18 UTC (permalink / raw
  To: gentoo-commits

commit:     b5f0db858c7bf14a79ce8b281941d387c52be103
Author:     Benda Xu <heroxbd <AT> gentoo <DOT> org>
AuthorDate: Sun May 22 08:09:30 2016 +0000
Commit:     Benda XU <heroxbd <AT> gentoo <DOT> org>
CommitDate: Sun May 22 08:09:30 2016 +0000
URL:        https://gitweb.gentoo.org/dev/heroxbd.git/commit/?id=b5f0db85

sys-apps/portage: bump to 2.3.0_rc1-r1.

 sys-apps/portage/Manifest                          |   4 +
 .../portage/files/portage-2.3.0-scanelf-path.patch |  21 ++
 sys-apps/portage/files/portage-2.3.0_rc1.patch     |  52 +++
 sys-apps/portage/portage-2.3.0_rc1-r1.ebuild       | 369 +++++++++++++++++++++
 4 files changed, 446 insertions(+)

diff --git a/sys-apps/portage/Manifest b/sys-apps/portage/Manifest
index ae9158f..2d7a412 100644
--- a/sys-apps/portage/Manifest
+++ b/sys-apps/portage/Manifest
@@ -1,5 +1,9 @@
 AUX README.RESCUE 137 SHA256 69bea0c755eab59b6b4d90838b8551744f0b0c8eeac170b1cd13a71ee83f9ac4 SHA512 dba0f0d6d4cd140e636cc70dfb7bdb298e2f2fb040bc07b0874cac994bdbabd26bfd9361d85a0f8b9a92a185281e4901606b9e4f563afdc8867341bbe6af1cb0 WHIRLPOOL 713fcc790442999d56e13efaf536fec9954dadeda680b3642d0358311332096ddedf8b55697bd1ca620d84f0dc7d025ff7931e086c74c1f5032be72dca2ff8f5
 AUX portage-2.2.28-distcc-eprefix.patch 909 SHA256 b59a7e6a03a0d32d77900944befc4de0e311a4e1046c2188d123a696a39481c8 SHA512 f0264739185b6ec6ec9cd1353130832e7b53be694f34c8cc050df3c04e98dbdf3b861d6d961d2c04034f826ef456833a4990958c59e0524f5540edacc14c5f85 WHIRLPOOL 8beb2a0b9d929fdb8201d9ca3f502724f8ba6c9d176155b4a88d3ce18e58afd7bd4b0de2931457645ddbebb8ad7fdc3d032ddd8fed470de4d617d299433730b5
+AUX portage-2.3.0-scanelf-path.patch 959 SHA256 8d3bcfdebc601ce32ddb8d64a6542141cd46c2d743c8dd66db5250fcd4f44c32 SHA512 d1e9a64fb8aa9ebe63fee1a84a2065cdc46f5b5b9eb571c0a3706e1e75665bc8111bf752ed69f8ec0049fc69f5c0db2d5acd701134d803b92f576b806ebebc79 WHIRLPOOL 03770b83f58a9adb6ad3907c3de33d88ffb2ce4c0d491da82d7e50f3e1595f310ac852f6852d36cd8b550f438d657029aff036ce9f00c84e52428632de614680
+AUX portage-2.3.0_rc1.patch 2278 SHA256 5c10f7bf71250a87576bf81635a765e6fdfdaa7882fe7e1949c736ae1472c2d6 SHA512 0e26adc69b3b716c7435d54a2ed4252045cb24e7891eed5d88514e6066ee4b1fc32ba89d63dc63e2341456110bc7def0bf1a49c1cb3cb53c0d9092bb251f9151 WHIRLPOOL 3964864f80131293283aa79ef1e87e5975e2543e456515c00cf6bd38905c2502539b9698634a44123db9e8ab3c566645b5424c29390a0f47ae7df62431355928
 DIST portage-2.2.28.tar.bz2 969138 SHA256 da8148a1a9275c87f535679e41b1bb3a1380ba0f903b80510017517e4c5229d0 SHA512 d21bf7e7dcc0a779a13df6a959e5d4291492fce2a5525b67e9a4705888021f9c08b8d78cd32b2eb930ac5428c40383e4e46da5a7b1ed5c9c9c42314c0f1c6a0b WHIRLPOOL 1b9584b0243b46c70d0778aad57df2d3ea99e19f243280e542c29e6fed0634b72de6b203a3c296c2977d1a6e5e5250b910574176c692d2c7c27c0938528bb43d
+DIST portage-2.3.0_rc1.tar.bz2 910204 SHA256 52cf0837975c4b2a8e1d3d18e3334a735b14e4ebdbdca8992548b86c1d5bebd1 SHA512 d7a5ce8800668606a2e3549621686bb8bb30bd2f5d7a57b106efc1c58d34b95cef4605f5067824db0beb6f870c9e81cb3fdb5c074e9e64bef40a9df6f524ad13 WHIRLPOOL c4c86fe20606e93ecf4d125f436077ec4d15cb453c98e83894a8383f1654a9b294107c9c04bb3019f66a643ff42c333060319d59dda47c323e9711723c3b9cfe
 EBUILD portage-2.2.28.ebuild 11798 SHA256 167af8bf2aaa76fa2b36dce1b3396f81f1bd5af2b0daffc710402780eeb823b3 SHA512 a7500e828da21775412b655eae1f7dac49eab7cd55c18f774ddbec501d4f2c2364cdff94b6d2faa4b230ff9ca63084dd3c8c8d28234c3f40150bb9a02d6e3935 WHIRLPOOL 9267f3f7ecd8aecf126dd4d92b9412dedf0335365798dc411f51d062f0328f852b387b5594f797ee49603fe0355670eb6ff401b71fcf736a944b4e2970da01c5
+EBUILD portage-2.3.0_rc1-r1.ebuild 11742 SHA256 16a44f6f84abba677edfc9d434bbf08cbd82c4e45cfe15f407d9994a34f35881 SHA512 3e7f6b453af1e1c66091a0817997bb5fe757644aaf90ad60939dbeb633729de49329687c766d3f5b5ab643f426cdee0d8ddc79fea3030beb8b18596c5171e06d WHIRLPOOL 7b0d365f845606250fa646d7132d80211c280e333ac2583e8f55ac200853db2d0dbd310b02b89ee6914dca881dfd6f2259f4c0fcdc7f17e84fe1de836e46fb4f
 MISC metadata.xml 1017 SHA256 78bf0d7e87b917ab6eb9c43835c9c688dc3c5ab0a1043608448e12e6bad715bc SHA512 40315f8375409a6e8b86b2d11dc33b28a019911348d66f05fdd1194a4f0859f3f2ebf9c6922b795194669d992901c1fdda4cd147100979a7f661915c4094fd35 WHIRLPOOL c2817f5c0005da6f1bf0ecb8d1bde9a6b9379e3022b9e456ee5e932974493a0454166e0113092aae7de2725b0718b3cd10e05ba25012b321644403ab0677c166

diff --git a/sys-apps/portage/files/portage-2.3.0-scanelf-path.patch b/sys-apps/portage/files/portage-2.3.0-scanelf-path.patch
new file mode 100644
index 0000000..56e7934
--- /dev/null
+++ b/sys-apps/portage/files/portage-2.3.0-scanelf-path.patch
@@ -0,0 +1,21 @@
+Index: site-packages/portage/util/_dyn_libs/LinkageMapELF.py
+===================================================================
+--- site-packages.orig/portage/util/_dyn_libs/LinkageMapELF.py
++++ site-packages/portage/util/_dyn_libs/LinkageMapELF.py
+@@ -19,6 +19,7 @@ from portage.util import normalize_path
+ from portage.util import varexpand
+ from portage.util import writemsg_level
+ from portage.util._dyn_libs.NeededEntry import NeededEntry
++from portage.const import EPREFIX
+ 
+ # Map ELF e_machine values from NEEDED.ELF.2 to approximate multilib
+ # categories. This approximation will produce incorrect results on x32
+@@ -259,7 +260,7 @@ class LinkageMapELF(object):
+ 					continue
+ 				plibs.update((x, cpv) for x in items)
+ 		if plibs:
+-			args = ["/usr/bin/scanelf", "-qF", "%a;%F;%S;%r;%n"]
++			args = [EPREFIX + "/usr/bin/scanelf", "-qF", "%a;%F;%S;%r;%n"]
+ 			args.extend(os.path.join(root, x.lstrip("." + os.sep)) \
+ 				for x in plibs)
+ 			try:

diff --git a/sys-apps/portage/files/portage-2.3.0_rc1.patch b/sys-apps/portage/files/portage-2.3.0_rc1.patch
new file mode 100644
index 0000000..8464462
--- /dev/null
+++ b/sys-apps/portage/files/portage-2.3.0_rc1.patch
@@ -0,0 +1,52 @@
+From 9ba1bea5e24fe839ef5bd833c3974a55d5333bf1 Mon Sep 17 00:00:00 2001
+From: Brian Dolbec <dolsen@gentoo.org>
+Date: Mon, 16 May 2016 02:45:45 -0700
+Subject: [PATCH] portage.const.py: Remove repoman from PORTAGE_PYM_PACKAGES
+
+Decca (in IRC) got a traceback due to the missing repoman install
+
+sysresccd / # emerge -e @system
+Calculating dependencies... done!
+Traceback (most recent call last):
+  File "/usr/lib/python-exec/python3.5/emerge", line 50, in <module>
+    retval = emerge_main()
+  File "/usr/lib64/python3.5/site-packages/_emerge/main.py", line 1185, in emerge_main
+    return run_action(emerge_config)
+  File "/usr/lib64/python3.5/site-packages/_emerge/actions.py", line 3236, in run_action
+    emerge_config.args, spinner)
+  File "/usr/lib64/python3.5/site-packages/_emerge/actions.py", line 505, in action_build
+    retval = mergetask.merge()
+  File "/usr/lib64/python3.5/site-packages/_emerge/Scheduler.py", line 958, in merge
+    rval = self._handle_self_update()
+  File "/usr/lib64/python3.5/site-packages/_emerge/Scheduler.py", line 323, in _handle_self_update
+    _prepare_self_update(self.settings)
+  File "/usr/lib64/python3.5/site-packages/portage/package/ebuild/doebuild.py", line 2489, in _prepare_self_update
+    symlinks=True)
+  File "/usr/lib64/python3.5/site-packages/portage/__init__.py", line 259, in __call__
+    rval = self._func(*wrapped_args, **wrapped_kwargs)
+  File "/usr/lib64/python3.5/shutil.py", line 303, in copytree
+    names = os.listdir(src)
+FileNotFoundError: [Errno 2] No such file or directory: b'/usr/lib64/python3.5/site-packages/repoman'
+
+Dirkjan <djc> found  repoman was still included in the PORTAGE_PYM_PACKAGES which
+caused the traceback.
+---
+ pym/portage/const.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/pym/portage/const.py b/pym/portage/const.py
+index 814d7f4..179efce 100644
+--- a/pym/portage/const.py
++++ b/pym/portage/const.py
+@@ -278,7 +278,7 @@ SUPPORTED_XPAK_EXTENSIONS = (".tbz2", ".xpak")
+ TIMESTAMP_FORMAT = "%a, %d %b %Y %H:%M:%S +0000"	# to be used with time.gmtime()
+ 
+ # Top-level names of Python packages installed by Portage.
+-PORTAGE_PYM_PACKAGES = ("_emerge", "portage", "repoman")
++PORTAGE_PYM_PACKAGES = ("_emerge", "portage")
+ 
+ RETURNCODE_POSTINST_FAILURE = 5
+ 
+-- 
+2.8.2
+

diff --git a/sys-apps/portage/portage-2.3.0_rc1-r1.ebuild b/sys-apps/portage/portage-2.3.0_rc1-r1.ebuild
new file mode 100644
index 0000000..8bf15ca
--- /dev/null
+++ b/sys-apps/portage/portage-2.3.0_rc1-r1.ebuild
@@ -0,0 +1,369 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+PYTHON_COMPAT=(
+	pypy
+	python3_3 python3_4 python3_5
+	python2_7
+)
+PYTHON_REQ_USE='bzip2(+)'
+
+inherit distutils-r1 multilib
+
+DESCRIPTION="Portage is the package management and distribution system for Gentoo"
+HOMEPAGE="https://wiki.gentoo.org/wiki/Project:Portage"
+
+LICENSE="GPL-2"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd"
+SLOT="0"
+IUSE="build doc epydoc +ipc linguas_ru selinux xattr"
+
+DEPEND="!build? ( $(python_gen_impl_dep 'ssl(+)') )
+	>=app-arch/tar-1.27
+	dev-lang/python-exec:2
+	>=sys-apps/sed-4.0.5 sys-devel/patch
+	doc? ( app-text/xmlto ~app-text/docbook-xml-dtd-4.4 )
+	epydoc? ( >=dev-python/epydoc-2.0[$(python_gen_usedep 'python2*')] )"
+# Require sandbox-2.2 for bug #288863.
+# For xattr, we can spawn getfattr and setfattr from sys-apps/attr, but that's
+# quite slow, so it's not considered in the dependencies as an alternative to
+# to python-3.3 / pyxattr. Also, xattr support is only tested with Linux, so
+# for now, don't pull in xattr deps for other kernels.
+# For whirlpool hash, require python[ssl] (bug #425046).
+# For compgen, require bash[readline] (bug #445576).
+RDEPEND="
+	>=app-arch/tar-1.27
+	dev-lang/python-exec:2
+	!build? (
+		>=sys-apps/sed-4.0.5
+		app-shells/bash:0[readline]
+		>=app-admin/eselect-1.2
+	)
+	elibc_FreeBSD? ( sys-freebsd/freebsd-bin )
+	elibc_glibc? ( >=sys-apps/sandbox-2.2 )
+	elibc_uclibc? ( >=sys-apps/sandbox-2.2 )
+	>=app-misc/pax-utils-0.1.17
+	selinux? ( >=sys-libs/libselinux-2.0.94[python,${PYTHON_USEDEP}] )
+	xattr? ( kernel_linux? (
+		>=sys-apps/install-xattr-0.3
+		$(python_gen_cond_dep 'dev-python/pyxattr[${PYTHON_USEDEP}]' \
+			python2_7 pypy)
+	) )
+	!<app-admin/logrotate-3.8.0"
+PDEPEND="
+	!build? (
+		>=net-misc/rsync-2.6.4
+		userland_GNU? ( >=sys-apps/coreutils-6.4 )
+	)"
+# coreutils-6.4 rdep is for date format in emerge-webrsync #164532
+# NOTE: FEATURES=installsources requires debugedit and rsync
+
+REQUIRED_USE="epydoc? ( $(python_gen_useflags 'python2*') )"
+
+SRC_ARCHIVES="https://dev.gentoo.org/~dolsen/releases/portage"
+
+prefix_src_archives() {
+	local x y
+	for x in ${@}; do
+		for y in ${SRC_ARCHIVES}; do
+			echo ${y}/${x}
+		done
+	done
+}
+
+TARBALL_PV=${PV}
+SRC_URI="mirror://gentoo/${PN}-${TARBALL_PV}.tar.bz2
+	$(prefix_src_archives ${PN}-${TARBALL_PV}.tar.bz2)"
+
+PATCHES=("${FILESDIR}/portage-2.3.0_rc1.patch"
+	"${FILESDIR}"/${PN}-2.2.28-distcc-eprefix.patch
+	"${FILESDIR}"/${PN}-2.3.0-scanelf-path.patch
+)
+
+pkg_setup() {
+	use epydoc && DISTUTILS_ALL_SUBPHASE_IMPLS=( python2.7 )
+}
+
+python_prepare_all() {
+	distutils-r1_python_prepare_all
+
+	if ! use ipc ; then
+		einfo "Disabling ipc..."
+		sed -e "s:_enable_ipc_daemon = True:_enable_ipc_daemon = False:" \
+			-i pym/_emerge/AbstractEbuildProcess.py || \
+			die "failed to patch AbstractEbuildProcess.py"
+	fi
+
+	if use xattr && use kernel_linux ; then
+		einfo "Adding FEATURES=xattr to make.globals ..."
+		echo -e '\nFEATURES="${FEATURES} xattr"' >> cnf/make.globals \
+			|| die "failed to append to make.globals"
+	fi
+
+	if [[ -n ${EPREFIX} ]] ; then
+		einfo "Setting portage.const.EPREFIX ..."
+		sed -e "s|^\(SANDBOX_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/bin/sandbox\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(FAKEROOT_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/bin/fakeroot\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(BASH_BINARY[[:space:]]*=[[:space:]]*\"\)\(/bin/bash\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(MOVE_BINARY[[:space:]]*=[[:space:]]*\"\)\(/bin/mv\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(PRELINK_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/sbin/prelink\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(EPREFIX[[:space:]]*=[[:space:]]*\"\).*|\\1${EPREFIX}\"|" \
+			-i pym/portage/const.py || \
+			die "Failed to patch portage.const.EPREFIX"
+
+		einfo "Prefixing shebangs ..."
+		while read -r -d $'\0' ; do
+			local shebang=$(head -n1 "$REPLY")
+			if [[ ${shebang} == "#!"* && ! ${shebang} == "#!${EPREFIX}/"* ]] ; then
+				sed -i -e "1s:.*:#!${EPREFIX}${shebang:2}:" "$REPLY" || \
+					die "sed failed"
+			fi
+		done < <(find . -type f -print0)
+
+		einfo "Adjusting make.globals ..."
+		sed -e "s|\(/usr/portage\)|${EPREFIX}\\1|" \
+			-e "s|^\(PORTAGE_TMPDIR=\"\)\(/var/tmp\"\)|\\1${EPREFIX}\\2|" \
+			-i cnf/make.globals || die "sed failed"
+
+		einfo "Adjusting repos.conf ..."
+		sed -e "s|^\(main-repo = \).*|\\1gentoo_prefix|" \
+			-e "s|^\\[gentoo\\]|[gentoo_prefix]|" \
+			-e "s|^\(location = \)\(/usr/portage\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(sync-uri = \).*|\\1rsync://prefix.gentooexperimental.org/gentoo-portage-prefix|" \
+			-i cnf/repos.conf || die "sed failed"
+
+		einfo "Adding FEATURES=force-prefix to make.globals ..."
+		echo -e '\nFEATURES="${FEATURES} force-prefix"' >> cnf/make.globals \
+			|| die "failed to append to make.globals"
+	fi
+
+	cd "${S}/cnf" || die
+	if [ -f "make.conf.example.${ARCH}".diff ]; then
+		patch make.conf.example "make.conf.example.${ARCH}".diff || \
+			die "Failed to patch make.conf.example"
+	else
+		eerror ""
+		eerror "Portage does not have an arch-specific configuration for this arch."
+		eerror "Please notify the arch maintainer about this issue. Using generic."
+		eerror ""
+	fi
+}
+
+python_compile_all() {
+	local targets=()
+	use doc && targets+=( docbook )
+	use epydoc && targets+=( epydoc )
+
+	if [[ ${targets[@]} ]]; then
+		esetup.py "${targets[@]}"
+	fi
+}
+
+python_test() {
+	esetup.py test
+}
+
+python_install() {
+	# Install sbin scripts to bindir for python-exec linking
+	# they will be relocated in pkg_preinst()
+	distutils-r1_python_install \
+		--system-prefix="${EPREFIX}/usr" \
+		--bindir="$(python_get_scriptdir)" \
+		--docdir="${EPREFIX}/usr/share/doc/${PF}" \
+		--htmldir="${EPREFIX}/usr/share/doc/${PF}/html" \
+		--portage-bindir="${EPREFIX}/usr/lib/portage/${EPYTHON}" \
+		--sbindir="$(python_get_scriptdir)" \
+		--sysconfdir="${EPREFIX}/etc" \
+		"${@}"
+}
+
+python_install_all() {
+	distutils-r1_python_install_all
+
+	local targets=()
+	use doc && targets+=( install_docbook )
+	use epydoc && targets+=( install_epydoc )
+
+	# install docs
+	if [[ ${targets[@]} ]]; then
+		esetup.py "${targets[@]}"
+	fi
+
+	# Due to distutils/python-exec limitations
+	# these must be installed to /usr/bin.
+	local sbin_relocations='archive-conf dispatch-conf emaint env-update etc-update fixpackages regenworld'
+	einfo "Moving admin scripts to the correct directory"
+	dodir /usr/sbin
+	for target in ${sbin_relocations}; do
+		einfo "Moving /usr/bin/${target} to /usr/sbin/${target}"
+		mv "${ED}usr/bin/${target}" "${ED}usr/sbin/${target}" || die "sbin scripts move failed!"
+	done
+}
+
+pkg_preinst() {
+	# comment out sanity test until it is fixed to work
+	# with the new PORTAGE_PYM_PATH
+	#if [[ $ROOT == / ]] ; then
+		## Run some minimal tests as a sanity check.
+		#local test_runner=$(find "${ED}" -name runTests)
+		#if [[ -n $test_runner && -x $test_runner ]] ; then
+			#einfo "Running preinst sanity tests..."
+			#"$test_runner" || die "preinst sanity tests failed"
+		#fi
+	#fi
+
+	# elog dir must exist to avoid logrotate error for bug #415911.
+	# This code runs in preinst in order to bypass the mapping of
+	# portage:portage to root:root which happens after src_install.
+	keepdir /var/log/portage/elog
+	# This is allowed to fail if the user/group are invalid for prefix users.
+	if chown portage:portage "${ED}"var/log/portage{,/elog} 2>/dev/null ; then
+		chmod g+s,ug+rwx "${ED}"var/log/portage{,/elog}
+	fi
+
+	if has_version "<${CATEGORY}/${PN}-2.1.13" || \
+		{
+			has_version ">=${CATEGORY}/${PN}-2.2_rc0" && \
+			has_version "<${CATEGORY}/${PN}-2.2.0_alpha189"
+		} ; then
+		USERPRIV_UPGRADE=true
+		USERSYNC_UPGRADE=true
+		REPOS_CONF_UPGRADE=true
+		REPOS_CONF_SYNC=
+		type -P portageq >/dev/null 2>&1 && \
+			REPOS_CONF_SYNC=$("$(type -P portageq)" envvar SYNC)
+	else
+		USERPRIV_UPGRADE=false
+		USERSYNC_UPGRADE=false
+		REPOS_CONF_UPGRADE=false
+	fi
+}
+
+get_ownership() {
+	case ${USERLAND} in
+		BSD)
+			stat -f '%Su:%Sg' "${1}"
+			;;
+		*)
+			stat -c '%U:%G' "${1}"
+			;;
+	esac
+}
+
+new_config_protect() {
+	# Generate a ._cfg file even if the target file
+	# does not exist, ensuring that the user will
+	# notice the config change.
+	local basename=${1##*/}
+	local dirname=${1%/*}
+	local i=0
+	while true ; do
+		local filename=$(
+			echo -n "${dirname}/._cfg"
+			printf "%04d" ${i}
+			echo -n "_${basename}"
+		)
+		[[ -e ${filename} ]] || break
+		(( i++ ))
+	done
+	echo "${filename}"
+}
+
+pkg_postinst() {
+
+	if ${REPOS_CONF_UPGRADE} ; then
+		einfo "Generating repos.conf"
+		local repo_name=
+		[[ -f ${PORTDIR}/profiles/repo_name ]] && \
+			repo_name=$(< "${PORTDIR}/profiles/repo_name")
+		if [[ -z ${REPOS_CONF_SYNC} ]] ; then
+			REPOS_CONF_SYNC=$(grep "^sync-uri =" "${EROOT:-${ROOT}}usr/share/portage/config/repos.conf")
+			REPOS_CONF_SYNC=${REPOS_CONF_SYNC##* }
+		fi
+		local sync_type=
+		[[ ${REPOS_CONF_SYNC} == git://* ]] && sync_type=git
+
+		if [[ ${REPOS_CONF_SYNC} == cvs://* ]]; then
+			sync_type=cvs
+			REPOS_CONF_SYNC=${REPOS_CONF_SYNC#cvs://}
+		fi
+
+		cat <<-EOF > "${T}/repos.conf"
+		[DEFAULT]
+		main-repo = ${repo_name:-gentoo}
+
+		[${repo_name:-gentoo}]
+		location = ${PORTDIR:-${EPREFIX}/usr/portage}
+		sync-type = ${sync_type:-rsync}
+		sync-uri = ${REPOS_CONF_SYNC}
+		EOF
+
+		[[ ${sync_type} == cvs ]] && echo "sync-cvs-repo = $(<"${PORTDIR}/CVS/Repository")" >> "${T}/repos.conf"
+
+		local dest=${EROOT:-${ROOT}}etc/portage/repos.conf
+		if [[ ! -f ${dest} ]] && mkdir -p "${dest}" 2>/dev/null ; then
+			dest=${EROOT:-${ROOT}}etc/portage/repos.conf/${repo_name:-gentoo}.conf
+		fi
+		# Don't install the config update if the desired repos.conf directory
+		# and config file exist, since users may accept it blindly and break
+		# their config (bug #478726).
+		[[ -e ${EROOT:-${ROOT}}etc/portage/repos.conf/${repo_name:-gentoo}.conf ]] || \
+			mv "${T}/repos.conf" "$(new_config_protect "${dest}")"
+
+		if [[ ${PORTDIR} == ${EPREFIX}/usr/portage ]] ; then
+			einfo "Generating make.conf PORTDIR setting for backward compatibility"
+			for dest in "${EROOT:-${ROOT}}etc/make.conf" "${EROOT:-${ROOT}}etc/portage/make.conf" ; do
+				[[ -e ${dest} ]] && break
+			done
+			[[ -d ${dest} ]] && dest=${dest}/portdir.conf
+			rm -rf "${T}/make.conf"
+			[[ -f ${dest} ]] && cat "${dest}" > "${T}/make.conf"
+			cat <<-EOF >> "${T}/make.conf"
+
+			# Set PORTDIR for backward compatibility with various tools:
+			#   gentoo-bashcomp - bug #478444
+			#   euse - bug #474574
+			#   euses and ufed - bug #478318
+			PORTDIR="${EPREFIX}/usr/portage"
+			EOF
+			mkdir -p "${dest%/*}"
+			mv "${T}/make.conf" "$(new_config_protect "${dest}")"
+		fi
+	fi
+
+	local distdir=${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}
+
+	if ${USERSYNC_UPGRADE} && \
+		[[ -d ${PORTDIR} && -w ${PORTDIR} ]] ; then
+		local ownership=$(get_ownership "${PORTDIR}")
+		if [[ -n ${ownership} ]] ; then
+			einfo "Adjusting PORTDIR permissions for usersync"
+			find "${PORTDIR}" -path "${distdir%/}" -prune -o \
+				! \( -user "${ownership%:*}" -a -group "${ownership#*:}" \) \
+				-exec chown "${ownership}" {} +
+		fi
+	fi
+
+	# Do this last, since it could take a long time if there
+	# are lots of live sources, and the user may be tempted
+	# to kill emerge while it is running.
+	if ${USERPRIV_UPGRADE} && \
+		[[ -d ${distdir} && -w ${distdir} ]] ; then
+		local ownership=$(get_ownership "${distdir}")
+		if [[ ${ownership#*:} == portage ]] ; then
+			einfo "Adjusting DISTDIR permissions for userpriv"
+			find "${distdir}" -mindepth 1 -maxdepth 1 -type d -uid 0 \
+				-exec chown -R portage:portage {} +
+		fi
+	fi
+
+	einfo ""
+	einfo "This release of portage NO LONGER contains the repoman code base."
+	einfo "Repoman has it's own ebuild and release package."
+	einfo "For repoman functionality please emerge app-portage/repoman"
+	einfo "Please report any bugs you may encounter."
+	einfo ""
+}


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-05-23  6:19 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-10 10:05 [gentoo-commits] dev/heroxbd:master commit in: sys-apps/portage/, sys-apps/portage/files/ Benda XU
  -- strict thread matches above, loose matches on Subject: below --
2015-03-05  3:00 [gentoo-commits] proj/android:master commit in: sys-apps/portage/files/, sys-apps/portage/ Benda XU
2015-01-06  3:06 ` [gentoo-commits] dev/heroxbd:master commit in: sys-apps/portage/, sys-apps/portage/files/ Benda XU
2016-05-26  4:05 [gentoo-commits] proj/android:master commit in: sys-apps/portage/files/, sys-apps/portage/ Benda XU
2016-05-23  6:18 ` [gentoo-commits] dev/heroxbd:master commit in: sys-apps/portage/, sys-apps/portage/files/ Benda XU

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox