diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/ChangeLog b/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/ChangeLog new file mode 100644 index 0000000000..7531be121b --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/ChangeLog @@ -0,0 +1,210 @@ +# ChangeLog for sys-apps/portage +# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/sys-apps/portage/ChangeLog,v 1.1185 2013/01/27 22:04:14 zmedico Exp $ + + 27 Jan 2013; Zac Medico portage-2.1.11.31.ebuild, + portage-2.1.11.50.ebuild, portage-2.2.0_alpha142.ebuild, + portage-2.2.0_alpha161.ebuild, portage-9999.ebuild: + Remove obsolete warning about RMD160 hash support. + +*portage-2.2.0_alpha161 (24 Jan 2013) + + 24 Jan 2013; Zac Medico +portage-2.2.0_alpha161.ebuild, + -portage-2.2.0_alpha159.ebuild, -portage-2.2.0_alpha160.ebuild: + 2.2.0_alpha161 version bump. This includes all of the fixes in 2.1.11.50. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.50 (24 Jan 2013) + + 24 Jan 2013; Zac Medico +portage-2.1.11.50.ebuild, + -portage-2.1.11.48.ebuild, -portage-2.1.11.49.ebuild: + 2.1.11.50 version bump. This fixes bug #453892 ('TypeError: must be char, not + unicode' exception with Python 2 when renaming files during merge), a + regression since 2.1.11.44 and 2.2.0_alpha155. Bug #445274 tracks all bugs + fixed since portage-2.1.11.31. + +*portage-2.2.0_alpha160 (24 Jan 2013) + + 24 Jan 2013; Zac Medico +portage-2.2.0_alpha160.ebuild, + -portage-2.2.0_alpha158.ebuild: + 2.2.0_alpha160 version bump. This includes all of the fixes in 2.1.11.49. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.49 (24 Jan 2013) + + 24 Jan 2013; Zac Medico +portage-2.1.11.49.ebuild, + -portage-2.1.11.47.ebuild: + 2.1.11.49 version bump. This fixes some more potential cases that are related + to bug #453400 (AttributeError triggered by slot conflict involving default + USE deps and implicit IUSE). Bug #445274 tracks all bugs fixed since + portage-2.1.11.31. + +*portage-2.2.0_alpha159 (21 Jan 2013) + + 21 Jan 2013; Zac Medico +portage-2.2.0_alpha159.ebuild, + -portage-2.2.0_alpha155.ebuild: + 2.2.0_alpha159 version bump. This includes all of the fixes in 2.1.11.48. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.48 (21 Jan 2013) + + 21 Jan 2013; Zac Medico +portage-2.1.11.48.ebuild, + -portage-2.1.11.44.ebuild: + 2.1.11.48 version bump. This fixes bug #453358 (better examples for + ACCEPT_LICENSE in make.conf man page) and bug #453400 (AttributeError + triggered by slot conflict involving default USE deps and implicit IUSE). Bug + #445274 tracks all bugs fixed since portage-2.1.11.31. + +*portage-2.2.0_alpha158 (20 Jan 2013) + + 20 Jan 2013; Zac Medico +portage-2.2.0_alpha158.ebuild, + -portage-2.2.0_alpha157.ebuild: + 2.2.0_alpha158 version bump. This includes all of the fixes in 2.1.11.47. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.47 (20 Jan 2013) + + 20 Jan 2013; Zac Medico +portage-2.1.11.47.ebuild, + -portage-2.1.11.46.ebuild: + 2.1.11.47 version bump. This fixes repoman 'TypeError: must be char, not + unicode' exception with Python 2 when downloading metadata.dtd (regression + since 2.1.11.44 and 2.2.0_alpha155). Bug #445274 tracks all bugs fixed since + portage-2.1.11.31. + +*portage-2.2.0_alpha157 (20 Jan 2013) + + 20 Jan 2013; Zac Medico +portage-2.2.0_alpha157.ebuild, + -portage-2.2.0_alpha156.ebuild: + 2.2.0_alpha157 version bump. This includes all of the fixes in 2.1.11.46. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.46 (20 Jan 2013) + + 20 Jan 2013; Zac Medico +portage-2.1.11.46.ebuild, + -portage-2.1.11.45.ebuild: + 2.1.11.46 version bump. This fixes serious bugs in repoman code from the + previous release. Bug #445274 tracks all bugs fixed since portage-2.1.11.31. + +*portage-2.2.0_alpha156 (20 Jan 2013) + + 20 Jan 2013; Zac Medico +portage-2.2.0_alpha156.ebuild, + -portage-2.2.0_alpha154.ebuild: + 2.2.0_alpha156 version bump. This includes all of the fixes in 2.1.11.45. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.45 (20 Jan 2013) + + 20 Jan 2013; Zac Medico +portage-2.1.11.45.ebuild, + -portage-2.1.11.43.ebuild: + 2.1.11.45 version bump. This fixes a repoman bug which cause it handle stable + use force/mask incorrectly. Bug #445274 tracks all bugs fixed since + portage-2.1.11.31. + +*portage-2.2.0_alpha155 (19 Jan 2013) + + 19 Jan 2013; Zac Medico +portage-2.2.0_alpha155.ebuild, + -portage-2.2.0_alpha153.ebuild: + 2.2.0_alpha155 version bump. This includes all of the fixes in 2.1.11.44. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.44 (19 Jan 2013) + + 19 Jan 2013; Zac Medico +portage-2.1.11.44.ebuild, + -portage-2.1.11.42.ebuild: + 2.1.11.44 version bump. This adds support for the @security package set, which + installs GLSA security updates (like glsa-check from gentoolkit). Bug #445274 + tracks all bugs fixed since portage-2.1.11.31. + +*portage-2.2.0_alpha154 (16 Jan 2013) + + 16 Jan 2013; Zac Medico +portage-2.2.0_alpha154.ebuild, + -portage-2.2.0_alpha151.ebuild: + 2.2.0_alpha154 version bump. This includes all of the fixes in 2.1.11.43. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.43 (16 Jan 2013) + + 16 Jan 2013; Zac Medico +portage-2.1.11.43.ebuild, + -portage-2.1.11.40.ebuild: + 2.1.11.43 version bump. This fixes bug #451048 (show free ram/swap in emerge + --info output). This also fixes random 'Bad file descriptor' errors for PyPy, + by avoiding file descriptor interference via dup2(). Bug #445274 tracks all + bugs fixed since portage-2.1.11.31. + +*portage-2.2.0_alpha153 (15 Jan 2013) + + 15 Jan 2013; Zac Medico +portage-2.2.0_alpha153.ebuild, + -portage-2.2.0_alpha152.ebuild: + 2.2.0_alpha153 version bump. This includes all of the fixes in 2.1.11.42. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.42 (15 Jan 2013) + + 15 Jan 2013; Zac Medico +portage-2.1.11.42.ebuild, + -portage-2.1.11.41.ebuild: + 2.1.11.42 version bump. This fixes bug #452030 (prevent duplicate test runs + with test-fail-continue) and bug #452176 (warn about deprecated /etc/make.* + files). This also fixes a random KeyError which can occur when checking binary + package digests (regression since 2.1.11.39 and 2.2.0_alpha150). Bug #445274 + tracks all bugs fixed since portage-2.1.11.31. + + 14 Jan 2013; Zac Medico portage-9999.ebuild: + Remove LINGUAS loop which is handled by the Makefile now. + +*portage-2.2.0_alpha152 (14 Jan 2013) + + 14 Jan 2013; Zac Medico +portage-2.2.0_alpha152.ebuild, + -portage-2.2.0_alpha149.ebuild: + 2.2.0_alpha152 version bump. This includes all of the fixes in 2.1.11.41. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.41 (14 Jan 2013) + + 14 Jan 2013; Zac Medico +portage-2.1.11.41.ebuild, + -portage-2.1.11.38.ebuild: + 2.1.11.41 version bump. This fixes bug #430488 (python3 support for selinux) + and bug #451386 (handle non-shell-script in /etc/init.d). Bug #445274 tracks + all bugs fixed since portage-2.1.11.31. + + 14 Jan 2013; Zac Medico portage-9999.ebuild: + Add linguas_ru for bug #450372. + +*portage-2.2.0_alpha151 (11 Jan 2013) + + 11 Jan 2013; Zac Medico +portage-2.2.0_alpha151.ebuild, + -portage-2.2.0_alpha150.ebuild: + 2.2.0_alpha150 version bump. This includes all of the fixes in 2.1.11.40. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.40 (11 Jan 2013) + + 11 Jan 2013; Zac Medico +portage-2.1.11.40.ebuild, + -portage-2.1.11.39.ebuild: + 2.1.11.40 version bump. This fixes bug #451344 (spawn_nofetch portage + NameError, a regression in 2.1.11.39 and 2.2.0_alpha150). Bug #445274 tracks + all bugs fixed since portage-2.1.11.31. + +*portage-2.2.0_alpha150 (10 Jan 2013) + + 10 Jan 2013; Zac Medico +portage-2.2.0_alpha150.ebuild: + 2.2.0_alpha150 version bump. This includes all of the fixes in 2.1.11.39. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.39 (10 Jan 2013) + + 10 Jan 2013; Zac Medico +portage-2.1.11.39.ebuild: + 2.1.11.39 version bump. This fixes bug #243192 (update quickpkg man page), bug + #298298 (include packages from nested package sets in emerge --depclean + summary), bug #446610 (handle syncfs return value), bug #446662 (add + QA_CONFIGURE_OPTIONS), bug #448176 (fix emerge --keep-going to avoid dropping + packages), bug #448858 (relocation error triggered by glibc upgrade), bug + #449678 (silence repoman warning about usex for EAPI 5), bug #449708 (make + use() fatal when called with unknown flags in EAPI 5), bug #450278 (add + QA_AM_MAINTAINER_MODE), bug #450960 (mention relavant file names in autounmask + messages), and bug #451118 (fix make.conf.5 formatting of compress-index + docs). Bug #445274 tracks all bugs fixed since portage-2.1.11.31. + + 01 Jan 2013; Andreas K. Huettel +ChangeLog-2012: + Split ChangeLog. + + For previous entries, please see ChangeLog-2012. diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/ChangeLog-2012 b/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/ChangeLog-2012 new file mode 100644 index 0000000000..e8d3b81fc8 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/ChangeLog-2012 @@ -0,0 +1,2972 @@ +# ChangeLog for sys-apps/portage +# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/sys-apps/portage/ChangeLog-2012,v 1.1 2013/01/01 13:38:34 dilfridge Exp $ + + 22 Dec 2012; Zac Medico metadata.xml, + portage-2.1.11.31.ebuild, portage-2.1.11.38.ebuild, portage-2.1.6.7_p1.ebuild, + portage-2.2.0_alpha142.ebuild, portage-2.2.0_alpha149.ebuild, + portage-9999.ebuild: + Replace USE=pypy1_9 with pypy2_0. + + 22 Dec 2012; Zac Medico -portage-2.1.11.37.ebuild, + -portage-2.1.11.9.ebuild, -portage-2.2.0_alpha148.ebuild: + Remove old versions. + +*portage-2.2.0_alpha149 (16 Dec 2012) + + 16 Dec 2012; Zac Medico +portage-2.2.0_alpha149.ebuild: + 2.2.0_alpha149 version bump. This includes all of the fixes in 2.1.11.38. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.38 (16 Dec 2012) + + 16 Dec 2012; Zac Medico +portage-2.1.11.38.ebuild: + 2.1.11.38 version bump. This fixes 'ValueError: I/O operation on closed file' + for API consumers using python's multiprocessing module, and also fixes + repoman handling of * and ~* in KEYWORDS. Bug #445274 tracks all bugs fixed + since portage-2.1.11.31. + + 13 Dec 2012; Zac Medico -portage-2.1.11.33.ebuild, + -portage-2.1.11.36.ebuild, -portage-2.2.0_alpha144.ebuild, + -portage-2.2.0_alpha147.ebuild: + Remove old versions. + +*portage-2.2.0_alpha148 (11 Dec 2012) + + 11 Dec 2012; Zac Medico +portage-2.2.0_alpha148.ebuild: + 2.2.0_alpha148 version bump. This includes all of the fixes in 2.1.11.37. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.37 (11 Dec 2012) + + 11 Dec 2012; Zac Medico +portage-2.1.11.37.ebuild: + 2.1.11.37 version bump. This fixes bug #446136 (duplicate elog messages), bug + #446774 (regression triggers die during strip), and bug #446420 (preserve + xattrs for stripped binaries) Bug #445274 tracks all bugs fixed since + portage-2.1.11.31. + + 11 Dec 2012; Raúl Porcel portage-2.1.11.31.ebuild: + alpha/ia64/m68k/s390/sh/sparc stable wrt #440852 + +*portage-2.2.0_alpha147 (10 Dec 2012) + + 10 Dec 2012; Zac Medico +portage-2.2.0_alpha147.ebuild, + -portage-2.2.0_alpha146.ebuild: + 2.2.0_alpha147 version bump. This includes all of the fixes in 2.1.11.36. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.36 (10 Dec 2012) + + 10 Dec 2012; Zac Medico +portage-2.1.11.36.ebuild, + -portage-2.1.11.35.ebuild: + 2.1.11.36 version bump. This fixes a regression in 2.1.11.35 and + 2.2.0_alpha146 which would prevent autounmask from working correctly with + implicit IUSE flags. Bug #445274 tracks all bugs fixed since + portage-2.1.11.31. + +*portage-2.2.0_alpha146 (10 Dec 2012) + + 10 Dec 2012; Zac Medico +portage-2.2.0_alpha146.ebuild, + -portage-2.2.0_alpha145.ebuild: + 2.2.0_alpha146 version bump. This includes all of the fixes in 2.1.11.35. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.35 (10 Dec 2012) + + 10 Dec 2012; Zac Medico +portage-2.1.11.35.ebuild, + -portage-2.1.11.34.ebuild: + 2.1.11.35 version bump. This fixes bug #442086 (don't suggest autounmask USE + changes for use-dep defaults) and bug #446666 (emerge ValueError regression + triggered by autoumask and use-dep defaults). Bug #445274 tracks all bugs + fixed since portage-2.1.11.31. + +*portage-2.2.0_alpha145 (08 Dec 2012) + + 08 Dec 2012; Zac Medico +portage-2.2.0_alpha145.ebuild: + 2.2.0_alpha145 version bump. This includes all of the fixes in 2.1.11.34. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.34 (08 Dec 2012) + + 08 Dec 2012; Zac Medico +portage-2.1.11.34.ebuild: + 2.1.11.34 version bump. This fixes bug #445506 (make emerge --depclean remove + unavailable slots), bug #445628 (don't show 'None' for path of license files), + bug 446358 (fix regression in emerge --info which caused it to bail out for + existing packages), and bug #446324 (support emerge --verbose=n) Bug #445274 + tracks all bugs fixed since portage-2.1.11.31. + + 05 Dec 2012; Zac Medico portage-2.1.11.31.ebuild, + portage-2.1.11.33.ebuild, portage-2.1.11.9.ebuild, + portage-2.2.0_alpha142.ebuild, portage-2.2.0_alpha144.ebuild, + portage-9999.ebuild: + Accept missing readline flag for bash 3.x as discussed in bug #445576, comment + #9. + + 04 Dec 2012; Zac Medico portage-2.1.11.31.ebuild, + portage-2.1.11.33.ebuild, portage-2.1.11.9.ebuild, + portage-2.2.0_alpha142.ebuild, portage-2.2.0_alpha144.ebuild, + portage-9999.ebuild: + For compgen, require bash[readline] (bug #445576). + +*portage-2.2.0_alpha144 (01 Dec 2012) + + 01 Dec 2012; Zac Medico +portage-2.2.0_alpha144.ebuild, + -portage-2.2.0_alpha143.ebuild: + 2.2.0_alpha144 version bump. This includes all of the fixes in 2.1.11.33. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.33 (01 Dec 2012) + + 01 Dec 2012; Zac Medico +portage-2.1.11.33.ebuild, + -portage-2.1.11.32.ebuild: + 2.1.11.33 version bump. This fixes bug #445336 (regression in 2.1.11.32 and + 2.2.0_alpha143 which triggered 'File exists' errors with splitdebug). Bug + #445274 tracks all bugs fixed since portage-2.1.11.31. + +*portage-2.2.0_alpha143 (29 Nov 2012) + + 29 Nov 2012; Zac Medico +portage-2.2.0_alpha143.ebuild, + -portage-2.2.0_alpha120.ebuild: + 2.2.0_alpha143 version bump. This includes all of the fixes in 2.1.11.32. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.32 (29 Nov 2012) + + 29 Nov 2012; Zac Medico +portage-2.1.11.32.ebuild: + 2.1.11.32 version bump. This fixes bug #367215 (package moves should not cause + a package to block itself), bug #421099 (parallel strip issues with + hardlinks), bug #434942 (obsolete eclass-overrides information in portage.5), + bug #440680 (repoman deprecation warning for boost-utils.eclass), bug #440982 + (new emerge --quiet-fail option), bug #441948 (handle permission exceptions + when writing elog logs), bug #442190 (fix emerge-webrsync to apply + portage:portage ownership), bug #442536 (keep temp dir after pkg_pretend + failure), bug #442786 (repoman validate metadata.xml use restriction atoms), + and bug #444596 (make emerge --info fail for unmatched atoms). Bug #445274 + tracks all bugs fixed since portage-2.1.11.31. + + 16 Nov 2012; Agostino Sarubbo portage-2.1.11.31.ebuild: + Stable for X86, wrt bug #440852 + + 07 Nov 2012; Jeroen Roovers portage-2.1.11.31.ebuild: + Stable for HPPA (bug #440852). + + 04 Nov 2012; Agostino Sarubbo portage-2.1.11.31.ebuild: + Stable for amd64, wrt bug #440852 + + 03 Nov 2012; Anthony G. Basile portage-2.1.11.31.ebuild: + stable arm, bug #440852 + + 02 Nov 2012; Anthony G. Basile portage-2.1.11.31.ebuild: + stable ppc ppc64, bug #440852 + + 30 Oct 2012; Zac Medico -portage-2.1.11.30.ebuild, + -portage-2.2.0_alpha141.ebuild: + Remove old versions. + +*portage-2.2.0_alpha142 (26 Oct 2012) + + 26 Oct 2012; Zac Medico +portage-2.2.0_alpha142.ebuild: + 2.2.0_alpha142 version bump. This includes all of the fixes in 2.1.11.31. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.31 (26 Oct 2012) + + 26 Oct 2012; Zac Medico +portage-2.1.11.31.ebuild: + 2.1.11.31 version bump. This fixes bug #436294 (show linker version in emerge + --info), bug #439490 (use checkbashisms for init script QA warning), bug + #439584 (sync disk after each package merge), bug #439688 (fix unnecessary + rebuilds triggered by missed updates), and bug #439694 (fix emerge to account + for initially broken built slot operator deps). Bug #431026 tracks all bugs + fixed since portage-2.1.11.9. + + 24 Oct 2012; Zac Medico -portage-2.1.11.29.ebuild, + -portage-2.2.0_alpha140.ebuild: + Remove old versions. + +*portage-2.2.0_alpha141 (18 Oct 2012) + + 18 Oct 2012; Zac Medico +portage-2.2.0_alpha141.ebuild, + -portage-2.2.0_alpha138.ebuild: + 2.2.0_alpha141 version bump. This includes all of the fixes in 2.1.11.30. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.30 (18 Oct 2012) + + 18 Oct 2012; Zac Medico +portage-2.1.11.30.ebuild, + -portage-2.1.11.27.ebuild: + 2.1.11.30 version bump. This fixes various issues with SLOT handling related + to EAPI 5 sub-slots, including keepdir failures. This also fixes bug #438640 + (remove old binhost protocol, since it causes problems when using a proxy). + Bug #431026 tracks all bugs fixed since portage-2.1.11.9. + +*portage-2.2.0_alpha140 (17 Oct 2012) + + 17 Oct 2012; Zac Medico +portage-2.2.0_alpha140.ebuild, + -portage-2.2.0_alpha139.ebuild: + 2.2.0_alpha140 version bump. This includes all of the fixes in 2.1.11.29. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.29 (17 Oct 2012) + + 17 Oct 2012; Zac Medico +portage-2.1.11.29.ebuild, + -portage-2.1.11.28.ebuild: + 2.1.11.29 version bump. This fixes some cases where egencache --update- + manifests would unnecessarily re-signing manifests (for bug #436918), and also + fixes some cases where emerge --jobs would add jobs too slowly when --load- + average was enabled (for bug #438650). Bug #431026 tracks all bugs fixed since + portage-2.1.11.9. + +*portage-2.2.0_alpha139 (17 Oct 2012) + + 17 Oct 2012; Zac Medico +portage-2.2.0_alpha139.ebuild, + -portage-2.2.0_alpha137.ebuild: + 2.2.0_alpha139 version bump. This includes all of the fixes in 2.1.11.28. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.28 (17 Oct 2012) + + 17 Oct 2012; Zac Medico +portage-2.1.11.28.ebuild, + -portage-2.1.11.26.ebuild: + 2.1.11.28 version bump. This fixes egencache --update-manifests to forcefully + replace existing signatures when appropriate (for bug #436918), and also adds + a repoman restriction for PORTAGE_GPG_KEY (key id must be exactly 8, 16, 24, + 32 or 40 hexdigits long). Bug #431026 tracks all bugs fixed since + portage-2.1.11.9. + +*portage-2.2.0_alpha138 (15 Oct 2012) + + 15 Oct 2012; Zac Medico +portage-2.2.0_alpha138.ebuild: + 2.2.0_alpha138 version bump. This includes all of the fixes in 2.1.11.27. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.27 (15 Oct 2012) + + 15 Oct 2012; Zac Medico +portage-2.1.11.27.ebuild: + 2.1.11.27 version bump. This fixes bug #437910 (QA_MULTILIB_PATHS variable for + FEATURES=multilib-strict), bug #438254 (distinguish binary packages in merge + display), and bug #438364 (repoman special git commit footer). Bug #431026 + tracks all bugs fixed since portage-2.1.11.9. + + 13 Oct 2012; Zac Medico -portage-2.1.11.25.ebuild, + -portage-2.2.0_alpha136.ebuild: + Remove old versions. + +*portage-2.2.0_alpha137 (10 Oct 2012) + + 10 Oct 2012; Zac Medico +portage-2.2.0_alpha137.ebuild, + portage-9999.ebuild: + 2.2.0_alpha137 version bump. This includes all of the fixes in 2.1.11.26. Bug + #210077 tracks all bugs fixed since portage-2.1.x. Also, sync 9999 ebuild with + latest. + +*portage-2.1.11.26 (10 Oct 2012) + + 10 Oct 2012; Zac Medico +portage-2.1.11.26.ebuild: + 2.1.11.26 version bump. This fixes bug #437872 (support *_beta* wildcard + atoms) and also fixes a regression since 2.1.11.11 which triggers behavior + similar to bug #403895 (emerge --load-average sometimes fails to schedule new + builds when the load average drops). Bug #431026 tracks all bugs fixed since + portage-2.1.11.9. + + 10 Oct 2012; Zac Medico -portage-2.1.11.24.ebuild, + -portage-2.2.0_alpha135.ebuild: + Remove old versions. + +*portage-2.2.0_alpha136 (08 Oct 2012) + + 08 Oct 2012; Zac Medico +portage-2.2.0_alpha136.ebuild: + 2.2.0_alpha136 version bump. This includes all of the fixes in 2.1.11.25. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.25 (08 Oct 2012) + + 08 Oct 2012; Zac Medico +portage-2.1.11.25.ebuild: + 2.1.11.25 version bump. This fixes bug #437180 (intermittent test failure in + test_ipc_daemon), bug #437546 (use same repoman commit message for regular and + manifest commits), and bug #437588 (fix Unknown tag error building rpms with + 4.10.0). Bug #431026 tracks all bugs fixed since portage-2.1.11.9. + + 06 Oct 2012; Zac Medico -portage-2.1.11.23.ebuild, + -portage-2.2.0_alpha134.ebuild: + Remove old versions. + +*portage-2.2.0_alpha135 (04 Oct 2012) + + 04 Oct 2012; Zac Medico +portage-2.2.0_alpha135.ebuild: + 2.2.0_alpha135 version bump. This includes all of the fixes in 2.1.11.24. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.24 (04 Oct 2012) + + 04 Oct 2012; Zac Medico +portage-2.1.11.24.ebuild: + 2.1.11.24 version bump. This fixes bug #436918 (add egencache --update- + manifests action) and bug #436974 (regression if fetching for RESTRICT=mirror + ebuilds with python-2.6). Bug #431026 tracks all bugs fixed since + portage-2.1.11.9. + + 29 Sep 2012; Zac Medico -portage-2.1.11.22.ebuild, + -portage-2.2.0_alpha133.ebuild: + Remove old versions. + +*portage-2.2.0_alpha134 (27 Sep 2012) + + 27 Sep 2012; Zac Medico +portage-2.2.0_alpha134.ebuild, + -portage-2.2.0_alpha132.ebuild: + 2.2.0_alpha134 version bump. This includes all of the fixes in 2.1.11.23. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.23 (27 Sep 2012) + + 27 Sep 2012; Zac Medico +portage-2.1.11.23.ebuild, + -portage-2.1.11.21.ebuild: + 2.1.11.23 version bump. This fixes bug #436330 (extended atom syntax in + /etc/portage/profile) and bug #436334 (intermittent test failure in + test_ipc_daemon, triggered by heavy load). Bug #431026 tracks all bugs fixed + since portage-2.1.11.9. + +*portage-2.2.0_alpha133 (26 Sep 2012) + + 26 Sep 2012; Zac Medico +portage-2.2.0_alpha133.ebuild, + -portage-2.2.0_alpha131.ebuild: + 2.2.0_alpha133 version bump. This includes all of the fixes in 2.1.11.22. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.22 (26 Sep 2012) + + 26 Sep 2012; Zac Medico +portage-2.1.11.22.ebuild, + -portage-2.1.11.20.ebuild: + 2.1.11.22 version bump. This fixes bug #436084 (avoid unnecessary scanning of + PKGDIR). This also adds support for experimental EAPI 5-hdepend. Bug #431026 + tracks all bugs fixed since portage-2.1.11.9. + +*portage-2.2.0_alpha132 (24 Sep 2012) + + 24 Sep 2012; Zac Medico +portage-2.2.0_alpha132.ebuild, + -portage-2.2.0_alpha130.ebuild: + 2.2.0_alpha132 version bump. This includes all of the fixes in 2.1.11.21. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.21 (24 Sep 2012) + + 24 Sep 2012; Zac Medico +portage-2.1.11.21.ebuild, + -portage-2.1.11.19.ebuild: + 2.1.11.21 version bump. This fixes bug #435834 (ensure that libx32/*.so is + executable). Bug #431026 tracks all bugs fixed since portage-2.1.11.9. + + 22 Sep 2012; Zac Medico portage-2.1.11.20.ebuild: + Patch emerge man page to indicate that --depclean-lib-check is disabled by + default. + + 21 Sep 2012; Zac Medico portage-2.2.0_alpha131.ebuild, + portage-9999.ebuild: + Fix make.globals/preserve-libs code to work correctly. + +*portage-2.2.0_alpha131 (21 Sep 2012) + + 21 Sep 2012; Zac Medico +portage-2.2.0_alpha131.ebuild, + -portage-2.2.0_alpha129.ebuild: + 2.2.0_alpha131 version bump. This includes all of the fixes in 2.1.11.20. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.20 (21 Sep 2012) + + 21 Sep 2012; Zac Medico +portage-2.1.11.20.ebuild, + -portage-2.1.11.18.ebuild: + 2.1.11.20 version bump. This fixes bug #435720 (prefer mirrors explicitly + listed in SRC_URI when fetching with RESTRICT=primaryuri). This also adds + support for FEATURES=preserve-libs, though it's not enabled by default. Bug + #431026 tracks all bugs fixed since portage-2.1.11.9. + + 21 Sep 2012; Zac Medico portage-9999.ebuild: + Append FEATURES=preserve-libs in make.globals, since it will soon be removed + from the default make.globals. + +*portage-2.2.0_alpha130 (20 Sep 2012) + + 20 Sep 2012; Zac Medico +portage-2.2.0_alpha130.ebuild, + -portage-2.2.0_alpha128.ebuild: + 2.2.0_alpha130 version bump. This includes all of the fixes in 2.1.11.19. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.19 (20 Sep 2012) + + 20 Sep 2012; Zac Medico +portage-2.1.11.19.ebuild, + -portage-2.1.11.17.ebuild: + 2.1.11.19 version bump. This adds support for EAPI 5. Bug #431026 tracks all + bugs fixed since portage-2.1.11.9. + +*portage-2.2.0_alpha129 (18 Sep 2012) + + 18 Sep 2012; Zac Medico +portage-2.2.0_alpha129.ebuild, + -portage-2.2.0_alpha127.ebuild: + 2.2.0_alpha129 version bump. This includes all of the fixes in 2.1.11.18. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.18 (18 Sep 2012) + + 18 Sep 2012; Zac Medico +portage-2.1.11.18.ebuild, + -portage-2.1.11.16.ebuild: + 2.1.11.18 version bump. This fixes a bug #435242 (fix repoman to detect EAPI 4 + unsatisfied use-dep defaults). Bug #431026 tracks all bugs fixed since + portage-2.1.11.9. + +*portage-2.2.0_alpha128 (14 Sep 2012) + + 14 Sep 2012; Zac Medico +portage-2.2.0_alpha128.ebuild, + -portage-2.2.0_alpha125.ebuild: + 2.2.0_alpha128 version bump. This includes all of the fixes in 2.1.11.17. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.17 (14 Sep 2012) + + 14 Sep 2012; Zac Medico +portage-2.1.11.17.ebuild, + -portage-2.1.11.14.ebuild: + 2.1.11.17 version bump. This fixes a bug #373209 (bind FEATURES=-test to + USE=-test). Bug #431026 tracks all bugs fixed since portage-2.1.11.9. + +*portage-2.2.0_alpha127 (12 Sep 2012) + + 12 Sep 2012; Zac Medico +portage-2.2.0_alpha127.ebuild, + -portage-2.2.0_alpha126.ebuild: + 2.2.0_alpha127 version bump. This includes all of the fixes in 2.1.11.16. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.16 (12 Sep 2012) + + 12 Sep 2012; Zac Medico +portage-2.1.11.16.ebuild, + -portage-2.1.11.15.ebuild: + 2.1.11.16 version bump. This fixes a regression in 2.1.11.15 which would + trigger merge failures on FreeBSD when chflags needed to be called. Bug + #431026 tracks all bugs fixed since portage-2.1.11.9. + +*portage-2.2.0_alpha126 (12 Sep 2012) + + 12 Sep 2012; Zac Medico +portage-2.2.0_alpha126.ebuild, + -portage-2.2.0_alpha124.ebuild: + 2.2.0_alpha126 version bump. This includes all of the fixes in 2.1.11.15. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.15 (12 Sep 2012) + + 12 Sep 2012; Zac Medico +portage-2.1.11.15.ebuild, + -portage-2.1.11.13.ebuild: + 2.1.11.15 version bump. This fixes bug #310789 (fix repoman to handle unicode + paths when python things paths should be ascii), bug #332217 (fix timestamp + and permissions of WORKDIR after unpack), and bug #434540 (format binary + package USE mismatch display for pasting into package.use).This also adds + support for EAPI 5_pre2, which supports all features approved in the Gentoo + Council meeting on September 11. Bug #431026 tracks all bugs fixed since + portage-2.1.11.9. + +*portage-2.2.0_alpha125 (08 Sep 2012) + + 08 Sep 2012; Zac Medico +portage-2.2.0_alpha125.ebuild: + 2.2.0_alpha125 version bump. This includes all of the fixes in 2.1.11.14, and + also fixes bug #387059 (deprecate @installed), and bug #433964 (fix AgeSet to + use BUILD_TIME metadata). Bug #210077 tracks all bugs fixed since + portage-2.1.x. + +*portage-2.1.11.14 (08 Sep 2012) + + 08 Sep 2012; Zac Medico +portage-2.1.11.14.ebuild: + 2.1.11.14 version bump. This fixes bug #380551 (note in dispatch-conf.conf to + install rcs if necessary), bug #400641 (ignore ENOTDIR when removing temp + dirs), bug #416917 (add etc-update --quiet option), and bug #423403 (update + pkg_nofetch description in ebuild.5 man page). Bug #431026 tracks all bugs + fixed since portage-2.1.11.9. + + 06 Sep 2012; Zac Medico -portage-2.1.11.12-r2.ebuild, + -portage-2.2.0_alpha123-r2.ebuild: + Remove old versions. + +*portage-2.2.0_alpha124 (03 Sep 2012) + + 03 Sep 2012; Zac Medico +portage-2.2.0_alpha124.ebuild: + 2.2.0_alpha124 version bump. This includes all of the fixes in 2.1.11.13 + (including support for EAPI 5_pre1), and also fixes bug #433704 (add DateSet + package set class). Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.13 (02 Sep 2012) + + 02 Sep 2012; Zac Medico +portage-2.1.11.13.ebuild: + 2.1.11.13 version bump. This fixes bug #433694 (emaint cleanconfmem is too + aggressive), and also adds support for experimental EAPI 5_pre1. For + information about EAPI 5_pre1, refer to the html documentation that's + installed when USE=doc is enabled. Bug #431026 tracks all bugs fixed since + portage-2.1.11.9. + +*portage-2.1.11.12-r2 (02 Sep 2012) +*portage-2.2.0_alpha123-r2 (02 Sep 2012) + + 02 Sep 2012; Zac Medico +portage-2.1.11.12-r2.ebuild, + +portage-2.2.0_alpha123-r2.ebuild, -portage-2.1.11.12-r1.ebuild, + -portage-2.2.0_alpha123-r1.ebuild, portage-9999.ebuild: + Add /usr/lib/portage/pym to PYTHONPATH via /etc/env.d/05portage, for portage + API consumers. This way we don't have to rely on patched python having the + correct path, since it has been known to incorrectly add + /usr/libx32/portage/pym to sys.path. Also, remove obsolete ebuild-helpers/sed + code from portage-9999.ebuild. + +*portage-2.1.11.12-r1 (01 Sep 2012) +*portage-2.2.0_alpha123-r1 (01 Sep 2012) + + 01 Sep 2012; Zac Medico +portage-2.1.11.12-r1.ebuild, + +portage-2.2.0_alpha123-r1.ebuild, -portage-2.1.11.12.ebuild, + -portage-2.2.0_alpha123.ebuild, portage-2.1.11.9.ebuild, + portage-2.1.6.7_p1.ebuild, portage-2.2.0_alpha120.ebuild: + Revert libdir changes in existing ebuilds, in order to avoid possible issues + when re-installing those versions on multilib systems. Revision bump latest + versions with the libdir changes, which is necessary in order to avoid + mentioned issues. + + 01 Sep 2012; Zac Medico portage-2.1.11.12.ebuild, + portage-2.1.11.9.ebuild, portage-2.1.6.7_p1.ebuild, + portage-2.2.0_alpha120.ebuild, portage-2.2.0_alpha123.ebuild, + portage-9999.ebuild: + Install in /usr/lib instead of using multilib get_libdir, since current + versions of portage are do not install any ELF binaries. + + 01 Sep 2012; Zac Medico -portage-2.1.11.11.ebuild, + -portage-2.2.0_alpha122.ebuild: + Remove old versions. + +*portage-2.2.0_alpha123 (26 Aug 2012) + + 26 Aug 2012; Zac Medico +portage-2.2.0_alpha123.ebuild: + 2.2.0_alpha123 version bump. This includes all of the fixes in 2.1.11.12. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.12 (26 Aug 2012) + + 26 Aug 2012; Zac Medico +portage-2.1.11.12.ebuild: + 2.1.11.12 version bump. This fixes bug #421099 (parallel debugedit/strip + interference), but #431078 (EAPI 5 stable use masking), and bug #432862 + (ignore irrelevant validate-desktop-entry errors/warnings, especially for KDE + service entries). Bug #431026 tracks all bugs fixed since portage-2.1.11.9. + + 26 Aug 2012; Zac Medico -portage-2.1.10.65.ebuild, + -portage-2.1.11.10.ebuild, -portage-2.2.0_alpha110.ebuild, + -portage-2.2.0_alpha121.ebuild: + Remove old versions. + + 26 Aug 2012; Raúl Porcel portage-2.1.11.9.ebuild: + alpha/ia64/m68k/s390/sh/sparc stable wrt #430674 + +*portage-2.2.0_alpha122 (22 Aug 2012) + + 22 Aug 2012; Zac Medico +portage-2.2.0_alpha122.ebuild: + 2.2.0_alpha122 version bump. This includes all of the fixes in 2.1.11.11. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.11 (22 Aug 2012) + + 22 Aug 2012; Zac Medico +portage-2.1.11.11.ebuild: + 2.1.11.11 version bump. This fixes bug #142202 (fix emerge-webrsync to handle + permissions when non-root users), bug #364105 (fix emerge-webrsync to use + PORTAGE_RSYNC_OPTS), bug #392565 (add warning in make.conf man page about + PORTAGE_TMPDIR under PORTDIR), bug #432024 (emerge poll loop optimizations), + and bug #432170 (add PORTAGE_CHECKSUM_FILTER variable that can be used to skip + whirlpool checksums on slow computers). Bug #431026 tracks all bugs fixed + since portage-2.1.11.9. + +*portage-2.2.0_alpha121 (11 Aug 2012) + + 11 Aug 2012; Zac Medico +portage-2.2.0_alpha121.ebuild: + 2.2.0_alpha121 version bump. This includes all of the fixes in 2.1.11.10. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.10 (11 Aug 2012) + + 11 Aug 2012; Zac Medico +portage-2.1.11.10.ebuild: + 2.1.11.10 version bump. This fixes bug #417123 (repoman virtual/libusb check), + bug #427384 (tweak USE dep negative default example in man page), bug #427862 + (remove /etc/make.globals symlink), bug #429978 (Note GLEP 37 in portage man + page), and bug #430962 (fix permissions of source files installed by + FEAUTURES=installsources). Bug #431026 tracks all bugs fixed since + portage-2.1.11.9. + + 10 Aug 2012; Anthony G. Basile portage-2.1.11.9.ebuild: + Stable arm, bug #430674 + + 10 Aug 2012; Anthony G. Basile portage-2.1.11.9.ebuild: + Stable ppc ppc64, bug #430674 + + 09 Aug 2012; Jeroen Roovers portage-2.1.11.9.ebuild: + Stable for HPPA (bug #430674). + + 09 Aug 2012; Agostino Sarubbo portage-2.1.11.9.ebuild: + Stable for x86, wrt bug #430674 + + 09 Aug 2012; Agostino Sarubbo portage-2.1.11.9.ebuild: + Stable for amd64, wrt bug #430674 + + 04 Aug 2012; Zac Medico portage-2.1.10.65.ebuild, + portage-2.1.11.9.ebuild, portage-2.1.6.7_p1.ebuild, + portage-2.2.0_alpha110.ebuild, portage-2.2.0_alpha120.ebuild, + portage-9999.ebuild: + Add sys-devel/patch to DEPEND for bug #429746. + + 26 Jul 2012; Zac Medico -portage-2.1.11.8.ebuild, + -portage-2.2.0_alpha119.ebuild: + Remove old versions. + + 24 Jul 2012; Zac Medico portage-9999.ebuild: + Remove /etc/make.globals symlink code (bug #427862). + + 24 Jul 2012; Michał Górny portage-9999.ebuild: + Apply user patches. + +*portage-2.2.0_alpha120 (18 Jul 2012) + + 18 Jul 2012; Zac Medico +portage-2.2.0_alpha120.ebuild, + -portage-2.2.0_alpha118.ebuild: + 2.2.0_alpha120 version bump. This includes all of the fixes in 2.1.11.9. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.9 (18 Jul 2012) + + 18 Jul 2012; Zac Medico +portage-2.1.11.9.ebuild, + -portage-2.1.11.7.ebuild: + 2.1.11.9 version bump. This fixes bug #402197 (allow wildcard atoms to match + *9999* ebuilds), bug #427068 (fix etc-update --automode -5 to not use mv -i), + and bug #427036 (emerge KeyError since portage-2.1.11 which is triggered by + --rebuild-if-new options). Bug #423075 tracks all bugs fixed since + portage-2.1.10.65. + +*portage-2.2.0_alpha119 (18 Jul 2012) + + 18 Jul 2012; Zac Medico +portage-2.2.0_alpha119.ebuild, + -portage-2.2.0_alpha117.ebuild: + 2.2.0_alpha119 version bump. This includes all of the fixes in 2.1.11.8. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.8 (18 Jul 2012) + + 18 Jul 2012; Zac Medico +portage-2.1.11.8.ebuild, + -portage-2.1.11.6.ebuild: + 2.1.11.8 version bump. This fixes bug #426476 (fix package moves to work + correctly with dots in package names for EAPI 4-python). Bug #423075 tracks + all bugs fixed since portage-2.1.10.65. + +*portage-2.2.0_alpha118 (14 Jul 2012) + + 14 Jul 2012; Zac Medico +portage-2.2.0_alpha118.ebuild, + -portage-2.2.0_alpha116.ebuild: + 2.2.0_alpha118 version bump. This includes all of the fixes in 2.1.11.7. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.7 (14 Jul 2012) + + 14 Jul 2012; Zac Medico +portage-2.1.11.7.ebuild, + -portage-2.1.11.5.ebuild: + 2.1.11.7 version bump. This fixes slotmove to work correctly for EAPI 4-slot- + abi packages (see bug #426476 for more information). Bug #423075 tracks all + bugs fixed since portage-2.1.10.65. + +*portage-2.2.0_alpha117 (12 Jul 2012) + + 12 Jul 2012; Zac Medico +portage-2.2.0_alpha117.ebuild: + 2.2.0_alpha117 version bump. This includes all of the fixes in 2.1.11.6. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.6 (12 Jul 2012) + + 12 Jul 2012; Zac Medico +portage-2.1.11.6.ebuild: + 2.1.11.6 version bump. This fixes bug #425046 (avoid doing whirlpool digest + checks when unaccelerated) and bug #425558 (add new emerge --complete-graph- + if-new-use option and enable by default). Bug #423075 tracks all bugs fixed + since portage-2.1.10.65. + + 06 Jul 2012; Zac Medico portage-2.1.10.65.ebuild, + portage-2.1.11.5.ebuild, portage-2.2.0_alpha110.ebuild, + portage-2.2.0_alpha116.ebuild, portage-9999.ebuild: + Require python[ssl] or python-mhash for whirlpool (bug #425046). + + 06 Jul 2012; Zac Medico -portage-2.1.11.4.ebuild, + -portage-2.2.0_alpha115.ebuild: + Remove old versions. + +*portage-2.2.0_alpha116 (05 Jul 2012) + + 05 Jul 2012; Zac Medico +portage-2.2.0_alpha116.ebuild, + -portage-2.1.11.3.ebuild, -portage-2.2.0_alpha114.ebuild: + 2.2.0_alpha116 version bump. This includes all of the fixes in 2.1.11.5. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.5 (05 Jul 2012) + + 05 Jul 2012; Zac Medico +portage-2.1.11.5.ebuild: + 2.1.11.5 version bump. This fixes bug #424651 (when necessary for downgrades, + trigger rebuilds to solve EAPI 4-slot-abi deps). Bug #423075 tracks all bugs + fixed since portage-2.1.10.65. + +*portage-2.2.0_alpha115 (02 Jul 2012) + + 02 Jul 2012; Zac Medico +portage-2.2.0_alpha115.ebuild: + 2.2.0_alpha115 version bump. This includes all of the fixes in 2.1.11.4. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.4 (02 Jul 2012) + + 02 Jul 2012; Zac Medico +portage-2.1.11.4.ebuild: + 2.1.11.4 version bump. This fixes abug #156282 (support FEATURES=unmerge- + backup), bug #424275 (support FEATURES=downgrade-backup), bug #424259 (don't + use SIGUSR1 under Jython), and bug #424489 (fix incorrect evaluation of EAPI 4 + -slot-abi deps that have USE conditionals). Bug #423075 tracks all bugs fixed + since portage-2.1.10.65. + + 01 Jul 2012; Zac Medico -portage-2.1.10.49.ebuild, + -portage-2.2.0_alpha89.ebuild: + Remove old versions. + + 01 Jul 2012; Raúl Porcel portage-2.1.10.65.ebuild: + alpha/arm/ia64/m68k/s390/sh/sparc stable wrt #422721 + + 29 Jun 2012; Brent Baude portage-2.1.10.65.ebuild: + Marking portage-2.1.10.65 ppc for bug 422721 + +*portage-2.2.0_alpha114 (27 Jun 2012) + + 27 Jun 2012; Zac Medico +portage-2.2.0_alpha114.ebuild, + -portage-2.2.0_alpha113.ebuild: + 2.2.0_alpha114 version bump. This includes all of the fixes in 2.1.11.3. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.3 (27 Jun 2012) + + 27 Jun 2012; Zac Medico +portage-2.1.11.3.ebuild, + -portage-2.1.11.2.ebuild: + 2.1.11.3 version bump. This fixes a TypeError exception that's triggered by a + slot conflict involving EAPI 4-slot-abi sub-slot dependencies, and fixes a + backtracking bug which caused the backtracker to ignore relevant solutions in + some cases. Bug #423075 tracks all bugs fixed since portage-2.1.10.65. + + 27 Jun 2012; Jeroen Roovers portage-2.1.10.65.ebuild: + Stable for HPPA (bug #422721). + +*portage-2.2.0_alpha113 (25 Jun 2012) + + 25 Jun 2012; Zac Medico +portage-2.2.0_alpha113.ebuild, + -portage-2.2.0_alpha112.ebuild: + 2.2.0_alpha113 version bump. This includes all of the fixes in 2.1.11.2. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.2 (25 Jun 2012) + + 25 Jun 2012; Zac Medico +portage-2.1.11.2.ebuild, + -portage-2.1.11.1.ebuild: + 2.1.11.2 version bump. This fixes bug #403895 (emerge --load-average sometimes + fails to schedule new builds when the load average drops) and also fixes a + NameError exception that's triggered when using EAPI 4-slot-abi. Bug #423075 + tracks all bugs fixed since portage-2.1.10.65. + +*portage-2.2.0_alpha112 (23 Jun 2012) + + 23 Jun 2012; Zac Medico +portage-2.2.0_alpha112.ebuild, + -portage-2.2.0_alpha111.ebuild: + 2.2.0_alpha112 version bump. This includes all of the fixes in 2.1.11.1. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11.1 (23 Jun 2012) + + 23 Jun 2012; Zac Medico +portage-2.1.11.1.ebuild, + -portage-2.1.11.ebuild: + 2.1.11 version bump. This fixes bug #423127 (regression in 2.1.11 and + 2.2.0_alpha111 which triggers annoying eerror messages about preserved /lib + and /usr/lib symlinks). Bug #423075 tracks all bugs fixed since + portage-2.1.10.65. + + 23 Jun 2012; Zac Medico portage-9999.ebuild: + Merge diff from 2.2.0_alpha111 ebuild. + +*portage-2.2.0_alpha111 (23 Jun 2012) + + 23 Jun 2012; Zac Medico +portage-2.2.0_alpha111.ebuild: + 2.2.0_alpha111 version bump. This includes all of the fixes in 2.1.11. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.11 (23 Jun 2012) + + 23 Jun 2012; Zac Medico +portage-2.1.11.ebuild: + 2.1.11 version bump. This fixes bug #384061 (user-defined package sets in + /etc/portage/sets), bug #419717 (make repoman skip signing of non-existent + Manifest when appropriate), bug #420735 (make repoman update Manifest + immediately after the ChangeLog is written with --ask), bug #420847 (make + autounmask handle license unmask without unnecessary keyword unmasking), bug + #421165 (unmerge orphan symlinks when CONTENTS lists directory instead), and + bug #421659 (add UNINSTALL_IGNORE variable to protect paths from being + unmerged). User-defined package sets can now be created by placing files in + the /etc/portage/sets/ directory. Refer to the emerge(1) and portage(5) man + pages for more information. There is experimental support for EAPI "4-slot- + abi". Refer to the corresponding html documentation that is installed with + USE=doc, and also to the emerge(1) man page for information about the related + --ignore-built-slot-abi-deps and --rebuild-if-new-slot-abi options. Bug + #423075 tracks all bugs fixed since portage-2.1.10.65. + + 22 Jun 2012; Jeff Horelick portage-2.1.10.65.ebuild: + marked x86 per bug 422721 + + 22 Jun 2012; Brent Baude portage-2.1.10.65.ebuild: + Marking portage-2.1.10.65 ppc64 for bug 422721 + + 22 Jun 2012; Agostino Sarubbo portage-2.1.10.65.ebuild: + Stable for amd64, wrt bug #422721 + + 13 Jun 2012; Zac Medico metadata.xml, + portage-2.1.10.49.ebuild, portage-2.1.10.65.ebuild, + portage-2.2.0_alpha110.ebuild, portage-2.2.0_alpha89.ebuild, + portage-9999.ebuild: + Replace USE=pypy1_8 with pypy1_9. + + 06 Jun 2012; Zac Medico -portage-2.1.10.64.ebuild, + -portage-2.2.0_alpha109.ebuild: + Remove old versions. + +*portage-2.2.0_alpha110 (04 Jun 2012) + + 04 Jun 2012; Zac Medico +portage-2.2.0_alpha110.ebuild, + -portage-2.2.0_alpha108.ebuild: + 2.2.0_alpha110 version bump. This includes all of the fixes in 2.1.10.65. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + + 04 Jun 2012; Zac Medico portage-9999.ebuild: + Support bash <4.1 again. + +*portage-2.1.10.65 (04 Jun 2012) + + 04 Jun 2012; Zac Medico +portage-2.1.10.65.ebuild, + -portage-2.1.10.63.ebuild: + 2.1.10.65 version bump. This fixes an AttributeError exception triggered by + repoman --without-mask (regression in 2.1.10.64 and 2.2.0_alpha109), and adds + backward compatiblity for bash <4.1. Bug #409383 tracks all bugs fixed since + portage-2.1.10.49. + + 02 Jun 2012; Zac Medico portage-2.1.10.63.ebuild, + portage-2.1.10.64.ebuild, portage-2.2.0_alpha108.ebuild, + portage-2.2.0_alpha109.ebuild, portage-9999.ebuild: + Require bash 4.1 for exec {mj_control_fd}<>${mj_control_pipe}. + +*portage-2.2.0_alpha109 (02 Jun 2012) + + 02 Jun 2012; Zac Medico +portage-2.2.0_alpha109.ebuild: + 2.2.0_alpha109 version bump. This includes all of the fixes in 2.1.10.64. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.64 (02 Jun 2012) + + 02 Jun 2012; Zac Medico +portage-2.1.10.64.ebuild: + 2.1.10.64 version bump. This fixes bug #418309 (regression since 2.1.10.59 and + 2.2.0_alpha104 which triggers intermittent ecompressdir failures). Bug #409383 + tracks all bugs fixed since portage-2.1.10.49. + + 25 May 2012; Zac Medico -portage-2.1.10.62.ebuild, + -portage-2.2.0_alpha107.ebuild: + Remove old versions. + +*portage-2.2.0_alpha108 (24 May 2012) + + 24 May 2012; Zac Medico +portage-2.2.0_alpha108.ebuild: + 2.2.0_alpha108 version bump. This includes all of the fixes in 2.1.10.63. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.63 (24 May 2012) + + 24 May 2012; Zac Medico +portage-2.1.10.63.ebuild: + 2.1.10.63 version bump. This fixes bug #416431 (absolute symlink adjustment + for $D results in broken symlinks) and bug #417253 (KeyError triggered by + corrupt metadata cache entries). Bug #409383 tracks all bugs fixed since + portage-2.1.10.49. + +*portage-2.1.6.7_p1 (22 May 2012) + + 22 May 2012; Zac Medico +portage-2.1.6.7_p1.ebuild, + -portage-2.1.6.13.ebuild, -portage-2.1.6.7.ebuild: + 2.1.6.7_p1 *stable* version bump, in order to provide a smoother upgrade path + for older systems. This only fixes incompatibilites with newer python (bug + #330937) and bash (bug #297933). Also, remove old stable versions that have + broken upgrade paths. + + 21 May 2012; Zac Medico portage-2.1.10.49.ebuild, + portage-2.1.6.13.ebuild, portage-2.1.6.7.ebuild, portage-2.2.0_alpha89.ebuild: + Tweak to avoid false-positive for repoman portage.internal check wrt env- + update. + + 18 May 2012; Zac Medico -portage-2.1.10.60.ebuild, + -portage-2.2.0_alpha105.ebuild: + Remove old versions. + +*portage-2.2.0_alpha107 (17 May 2012) + + 17 May 2012; Zac Medico +portage-2.2.0_alpha107.ebuild, + -portage-2.2.0_alpha106.ebuild: + 2.2.0_alpha107 version bump. This includes all of the fixes in 2.1.10.62. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.62 (17 May 2012) + + 17 May 2012; Zac Medico +portage-2.1.10.62.ebuild, + -portage-2.1.10.61.ebuild: + 2.1.10.62 version bump. This fixes a traceback triggered by empty variable + settings without quotes in make.conf (regression in 2.1.10.61 and + 2.2.0_alpha106).= Bug #409383 tracks all bugs fixed since portage-2.1.10.49. + +*portage-2.2.0_alpha106 (16 May 2012) + + 16 May 2012; Zac Medico +portage-2.2.0_alpha106.ebuild, + -portage-2.2.0_alpha104.ebuild: + 2.2.0_alpha106 version bump. This includes all of the fixes in 2.1.10.61. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.61 (16 May 2012) + + 16 May 2012; Zac Medico +portage-2.1.10.61.ebuild, + -portage-2.1.10.59.ebuild: + 2.1.10.61 version bump. This fixes bug #416231 (unhandled Permission denied + error triggered by invalid EAPI assignment). FEATURES=config-protect-if- + modified is now enabled by default. This causes the CONFIG_PROTECT behavior to + be skipped for files that have not been modified since they were installed. + Bug #409383 tracks all bugs fixed since portage-2.1.10.49. + +*portage-2.2.0_alpha105 (15 May 2012) + + 15 May 2012; Zac Medico +portage-2.2.0_alpha105.ebuild, + -portage-2.2.0_alpha103.ebuild: + 2.2.0_alpha105 version bump. This includes all of the fixes in 2.1.10.60. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.60 (15 May 2012) + + 15 May 2012; Zac Medico +portage-2.1.10.60.ebuild, + -portage-2.1.10.58.ebuild: + 2.1.10.60 version bump. This fixes bug #406867 (display merge list on stdout, + despite autounmask) and bug #415579 (regression in 2.1.10.59 and + 2.2.0_alpha104 for ftp binhost). Bug #409383 tracks all bugs fixed since + portage-2.1.10.49. + +*portage-2.2.0_alpha104 (12 May 2012) + + 12 May 2012; Zac Medico +portage-2.2.0_alpha104.ebuild, + -portage-2.2.0_alpha101.ebuild, -portage-2.2.0_alpha102.ebuild: + 2.2.0_alpha104 version bump. This includes all of the fixes in 2.1.10.59. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.59 (12 May 2012) + + 12 May 2012; Zac Medico +portage-2.1.10.59.ebuild, + -portage-2.1.10.57.ebuild: + 2.1.10.59 version bump. This fixes Sabayon bug #3305 (signal module raises + ValueError since Entropy uses threads), and also include enhanced robustness + in handling of metadata for unsupported EAPIs. Bug #409383 tracks all bugs + fixed since portage-2.1.10.49. + +*portage-2.2.0_alpha103 (09 May 2012) + + 09 May 2012; Zac Medico +portage-2.2.0_alpha103.ebuild: + 2.2.0_alpha103 version bump. This includes all of the fixes in 2.1.10.58. Bug + #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.58 (09 May 2012) + + 09 May 2012; Zac Medico +portage-2.1.10.58.ebuild: + 2.1.10.58 version bump. This fixes bug #402167 (enable FEATURES=parse-eapi- + ebuild-head by default), bug #410691 (handle *.py[co] file collisions), bug + #413895 (source per-package bashrc later), bug #413983 (fix binhost + http + passwd for python3), bug #414123 (enable repoman LIVEVCS check for gentoo + only), bug #414125 (handle KDE service menus in repoman desktop.invalid + check), bug #414201 (make die message quote = for zsh), and bug #415125 (fix + unsatisfied REQUIRED_USE display for packages unmasked by autounmask). Bug + #409383 tracks all bugs fixed since portage-2.1.10.49. + +*portage-2.2.0_alpha102 (08 May 2012) + + 08 May 2012; Zac Medico +portage-2.2.0_alpha102.ebuild: + 2.2.0_alpha102 version bump. This fixes bug #410691 (handle *.py[co] file + collisions), bug #413895 (source per-package bashrc later), bug #413983 (fix + binhost + http passwd for python3), bug #414123 (enable repoman LIVEVCS check + for gentoo only), bug #414125 (handle KDE service menus in repoman + desktop.invalid check), and bug #414201 (make die message quote = for zsh). + Bug #210077 tracks all bugs fixed since portage-2.1.x. + + 26 Apr 2012; Alexis Ballier + portage-2.2.0_alpha101.ebuild: + keyword ~amd64-fbsd + + 25 Apr 2012; Zac Medico -portage-2.1.10.56.ebuild, + -portage-2.2.0_alpha100.ebuild: + Remove old versions. + +*portage-2.2.0_alpha101 (22 Apr 2012) + + 22 Apr 2012; Zac Medico +portage-2.2.0_alpha101.ebuild: + 2.2.0_alpha101 version bump. This includes all of the fixes in + portage-2.1.10.57. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.57 (22 Apr 2012) + + 22 Apr 2012; Zac Medico +portage-2.1.10.57.ebuild: + 2.1.10.57 version bump. This fixes bug #411835 (use example.com in docs), bug + #411897 (fix TypeError in perform_all checksum function), bug #412161 (avoid + redundant news display), bug #412391 (emerge --depclean bails out due to + invalid internal caching), bug #412453 (cleanup hardlink code), bug #412845 + (show config updates after preserve-libs messages), and bug #412865 (add + $T/build.log symlink to PORT_LOGDIR), Bug #409383 tracks all bugs fixed since + portage-2.1.10.49. + + 07 Apr 2012; Zac Medico -portage-2.1.10.55.ebuild, + -portage-2.2.0_alpha99.ebuild: + Remove old versions. + +*portage-2.2.0_alpha100 (05 Apr 2012) + + 05 Apr 2012; Zac Medico +portage-2.2.0_alpha100.ebuild: + 2.2.0_alpha100 version bump. This includes all of the fixes in + portage-2.1.10.56. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.56 (05 Apr 2012) + + 05 Apr 2012; Zac Medico +portage-2.1.10.56.ebuild: + 2.1.10.56 version bump. This fixes bug #386901 (emerge progress counter for + --unmerge), bug #410687 (selinux sandbox violation for + /sys/fs/selinux/context), and bug #410801 (emerge hang after merge list + display triggered by slot conflict). Bug #409383 tracks all bugs fixed since + portage-2.1.10.49. + + 04 Apr 2012; Zac Medico -portage-2.1.10.44.ebuild, + -portage-2.1.10.52.ebuild, -portage-2.2.0_alpha96.ebuild: + Remove old versions. + +*portage-2.2.0_alpha99 (03 Apr 2012) + + 03 Apr 2012; Zac Medico +portage-2.2.0_alpha99.ebuild, + -portage-2.2.0_alpha98.ebuild: + 2.2.0_alpha99 version bump. This includes all of the fixes in + portage-2.1.10.55. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.55 (03 Apr 2012) + + 03 Apr 2012; Zac Medico +portage-2.1.10.55.ebuild, + -portage-2.1.10.54.ebuild: + 2.1.10.55 version bump. This fixes bug #410625 (erroneous 'bad substitution' + errors for profile.env). Bug #409383 tracks all bugs fixed since + portage-2.1.10.49. + +*portage-2.2.0_alpha98 (01 Apr 2012) + + 01 Apr 2012; Zac Medico +portage-2.2.0_alpha98.ebuild, + -portage-2.2.0_alpha97.ebuild: + 2.2.0_alpha98 version bump. This includes all of the fixes in + portage-2.1.10.54. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.54 (01 Apr 2012) + + 01 Apr 2012; Zac Medico +portage-2.1.10.54.ebuild, + -portage-2.1.10.53.ebuild: + 2.1.10.54 version bump. This fixes bug #410417 (dispatch-conf TypeError + regression with python3 in portage-2.1.10.53). Bug #409383 tracks all bugs + fixed since portage-2.1.10.49. + + 01 Apr 2012; Raúl Porcel portage-2.1.10.49.ebuild: + alpha/ia64/m68k/s390/sh/sparc stable wrt #408391 + +*portage-2.2.0_alpha97 (01 Apr 2012) + + 01 Apr 2012; Zac Medico +portage-2.2.0_alpha97.ebuild: + 2.2.0_alpha97 version bump. This includes all of the fixes in + portage-2.1.10.53. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.53 (01 Apr 2012) + + 01 Apr 2012; Zac Medico +portage-2.1.10.53.ebuild: + 2.1.10.53 version bump. This fixes bug #409627 (document bashrc caveats for + variables like FEATURES and INSTALL_MASK) and bug #410315 (dispatch-conf + TypeError regression since portage-2.1.10.50). Bug #409383 tracks all bugs + fixed since portage-2.1.10.49. + + 30 Mar 2012; Zac Medico -portage-2.1.10.51.ebuild, + -portage-2.2.0_alpha95.ebuild: + Remove old versions. + +*portage-2.2.0_alpha96 (28 Mar 2012) + + 28 Mar 2012; Zac Medico +portage-2.2.0_alpha96.ebuild, + -portage-2.2.0_alpha93.ebuild: + 2.2.0_alpha96 version bump. This includes all of the fixes in + portage-2.1.10.52. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.52 (28 Mar 2012) + + 28 Mar 2012; Zac Medico +portage-2.1.10.52.ebuild: + 2.1.10.52 version bump. This fixes bug #374335 (Bad file descriptor errors + triggered by mod_jabber elog module), bug #398843 (suggest dispatch-conf + instead of etc-update), bug #409647 (exit status 130 for --ask 'n' answer), + bug #409835 (localize 'update portage' message), bug #409839 (fix grabdict + docstring), and bug #409849 (fix etc-update to work with emacs diff_command). + Bug #409383 tracks all bugs fixed since portage-2.1.10.49. + + 25 Mar 2012; Markus Meier portage-2.1.10.49.ebuild: + arm stable, bug #408391 + + 23 Mar 2012; Zac Medico portage-9999.ebuild: + Add die for dodoc failure. + +*portage-2.2.0_alpha95 (23 Mar 2012) + + 23 Mar 2012; Zac Medico +portage-2.2.0_alpha95.ebuild, + -portage-2.2.0_alpha94.ebuild: + 2.2.0_alpha95 version bump. This includes all of the fixes in + portage-2.1.10.51. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.51 (23 Mar 2012) + + 23 Mar 2012; Zac Medico +portage-2.1.10.51.ebuild, + -portage-2.1.10.50.ebuild: + 2.1.10.51 version bump. This fixes bug #382407 (disable repoman + dependency.unknown warnings for blocker atoms), bug #402323 (clarify copy + error message for FEATURES=xattr), and bug #409359 (clarify error message for + collisions between symlinks and directories). Bug #409383 tracks all bugs + fixed since portage-2.1.10.49. + +*portage-2.2.0_alpha94 (23 Mar 2012) + + 23 Mar 2012; Zac Medico +portage-2.2.0_alpha94.ebuild: + 2.2.0_alpha94 version bump. This includes all of the fixes in + portage-2.1.10.50. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.50 (23 Mar 2012) + + 23 Mar 2012; Zac Medico +portage-2.1.10.50.ebuild: + 2.1.10.50 version bump. This fixes bug #335320 (add Makefile for portage to + install itself), bug #361759 (QA warning for files installed to + /etc/udev/rules.d), bug #373009 (make emerge --changelog show some more + entries), bug #388259 (show restricted fetch instructions immediately after + the merge list), bug #399863 (autounmask message shows wrong parent atom), bug + #402577 (repoman support for PORTAGE_CONFIGROOT), bug #406407 (internal + whirlpool digest incorrect for gsl-1.15.tar.gz), bug #406749 (QA Notice for + install of non UTF-8 file names), bug #406875 (repoman --digest option), bug + #406877 (make repoman ignore irrelevant temp files), bug #407449 (repoman + triggers erroneous QA Notice about illegally inherited eclass), bug #409085 + (map emerge --buildpkg=n map to FEATURES=-buildpkg), and bug #409179 (show + nested package.mask file names in masking messages). Bug #409383 tracks all + bugs fixed since portage-2.1.10.49. + + 22 Mar 2012; Jeff Horelick portage-2.1.10.49.ebuild: + marked x86 per bug 408391 + + 21 Mar 2012; Zac Medico -portage-2.2.0_alpha84.ebuild, + -portage-2.2.0_alpha90.ebuild: + Remove old versions. + +*portage-2.2.0_alpha93 (19 Mar 2012) + + 19 Mar 2012; Zac Medico +portage-2.2.0_alpha93.ebuild, + -portage-2.2.0_alpha92.ebuild: + 2.2.0_alpha93 version bump. This fixes a regression in 2.2.0_alpha91 which + triggers a KeyError exception when there's a package in the merge list with an + unsatisfied fetch restriction. Bug #210077 tracks all bugs fixed since + portage-2.1.x. + +*portage-2.2.0_alpha92 (18 Mar 2012) + + 18 Mar 2012; Zac Medico +portage-2.2.0_alpha92.ebuild, + -portage-2.2.0_alpha91.ebuild: + 2.2.0_alpha92 version bump. This fixes a regression in 2.2.0_alpha91 which + triggers a NameError exception when running dispatch-conf. Bug #210077 tracks + all bugs fixed since portage-2.1.x. + +*portage-2.2.0_alpha91 (18 Mar 2012) + + 18 Mar 2012; Zac Medico +portage-2.2.0_alpha91.ebuild: + 2.2.0_alpha91 version bump. This fixes bug #335320 (add Makefile for portage + to install itself), bug #388259 (show restricted fetch instructions + immediately after the merge list), bug #406407 (internal whirlpool digest + incorrect for gsl-1.15.tar.gz), bug #406749 (QA Notice for install of non + UTF-8 file names), bug #406875 (repoman --digest option), bug #406877 (make + repoman ignore irrelevant temp files), and bug #407449 (repoman triggers + erroneous QA Notice about illegally inherited eclass). Bug #210077 tracks all + bugs fixed since portage-2.1.x. + + 17 Mar 2012; Tony Vroon portage-2.1.10.49.ebuild: + Marked stable on AMD64 based on arch testing by Elijah "Armageddon" El + Lazkani & Michael "n0idx80" Harrison in bug #408391. + + 17 Mar 2012; Zac Medico portage-9999.ebuild: + Call the new Makefile for src_compile and src_install. + + 16 Mar 2012; Brent Baude portage-2.1.10.49.ebuild: + Marking portage-2.1.10.49 ppc for bug 408391 + + 16 Mar 2012; Brent Baude portage-2.1.10.49.ebuild: + Marking portage-2.1.10.49 ppc64 for bug 408391 + + 16 Mar 2012; Jeroen Roovers portage-2.1.10.49.ebuild: + Stable for HPPA (bug #408391). + +*portage-2.2.0_alpha90 (05 Mar 2012) + + 05 Mar 2012; Zac Medico +portage-2.2.0_alpha90.ebuild: + 2.2.0_alpha90 version bump. This fixes bug #399863 (autounmask message shows + wrong parent atom) and bug #406837 (erroneously preserved libGLU.so.1 after + mesa update) Bug #210077 tracks all bugs fixed since portage-2.1.x. + + 01 Mar 2012; Zac Medico -portage-2.1.10.48.ebuild, + -portage-2.2.0_alpha88.ebuild: + Remove old versions. + +*portage-2.2.0_alpha89 (23 Feb 2012) + + 23 Feb 2012; Zac Medico +portage-2.2.0_alpha89.ebuild: + 2.2.0_alpha89 version bump. This includes all of the fixes in + portage-2.1.10.49. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.49 (23 Feb 2012) + + 23 Feb 2012; Zac Medico +portage-2.1.10.49.ebuild: + 2.1.10.49 version bump. This fixes bug #384397 (remove orphan symlinks to + directories) and bug #405327 (erroneous rename of absolute symlink to + symlink.bz2). Bug #402213 tracks all bugs fixed since portage-2.1.10.44. + + 23 Feb 2012; Zac Medico -portage-2.1.10.41.ebuild, + -portage-2.1.10.46.ebuild, -portage-2.2.0_alpha86.ebuild: + Remove old versions. + + 21 Feb 2012; Zac Medico portage-2.1.10.46.ebuild, + portage-2.1.10.48.ebuild: + Bug #402215: Re-add ~alpha, ~m68k, ~mips, and ~s390 keywords, since the + corresponding arch profiles now have USE=xattr masked for sys-apps/portage, + pending ~arch keywords for dev-python/pyxattr. + + 20 Feb 2012; Zac Medico portage-2.2.0_alpha88.ebuild: + Fix SRC_URI. + +*portage-2.2.0_alpha88 (20 Feb 2012) + + 20 Feb 2012; Zac Medico +portage-2.2.0_alpha88.ebuild, + -portage-2.2.0_alpha87.ebuild: + 2.2.0_alpha88 version bump. This includes all of the fixes in + portage-2.1.10.48. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.48 (20 Feb 2012) + + 20 Feb 2012; Zac Medico +portage-2.1.10.48.ebuild, + -portage-2.1.10.47.ebuild: + 2.1.10.48 version bump. This fixes bug #404995 (regression in 2.1.10.47 and + 2.2.0_alpha87 which causes an infinite loop in emerge when parallel-fetch is + running and it is supposed to exit due to a build failure). Bug #402213 tracks + all bugs fixed since portage-2.1.10.44. + + 18 Feb 2012; Zac Medico portage-2.1.10.41.ebuild, + portage-2.1.10.44.ebuild, portage-2.1.10.46.ebuild, portage-2.1.10.47.ebuild, + portage-2.2.0_alpha84.ebuild, portage-2.2.0_alpha86.ebuild, + portage-2.2.0_alpha87.ebuild, portage-9999.ebuild: + Remove special USE=build python dependencies, since they no longer function + correctly as reported in bug #399331. + +*portage-2.2.0_alpha87 (18 Feb 2012) + + 18 Feb 2012; Zac Medico +portage-2.2.0_alpha87.ebuild, + -portage-2.2.0_alpha85.ebuild: + 2.2.0_alpha87 version bump. This includes all of the fixes in + portage-2.1.10.47. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.47 (18 Feb 2012) + + 18 Feb 2012; Zac Medico +portage-2.1.10.47.ebuild, + -portage-2.1.10.45.ebuild: + 2.1.10.47 version bump. This fixes bug #402339 (repoman check for env-update + calls) and bug #403705 (repoman copyright header check not working). It also + has PyPy support which can by enabled with USE=pypy1_8 (puts pypy-c1.8 in + portage shebangs). Bug #402213 tracks all bugs fixed since portage-2.1.10.44. + + 14 Feb 2012; Zac Medico portage-9999.ebuild: + Require pypy[bzip2], for quickpkg. + + 14 Feb 2012; Zac Medico metadata.xml, + portage-9999.ebuild: + Add support for USE=pypy1_8. + +*portage-2.2.0_alpha86 (12 Feb 2012) + + 12 Feb 2012; Zac Medico +portage-2.2.0_alpha86.ebuild: + 2.2.0_alpha86 version bump. This includes all of the fixes in + portage-2.1.10.46. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.46 (12 Feb 2012) + + 12 Feb 2012; Zac Medico +portage-2.1.10.46.ebuild: + 2.1.10.46 version bump. This fixes bug #398009 (disable repoman ChangeLog + creation for Manifest-only commits, unless --echangelog=force), bug #401919 + (handle POLLHUP race condition that triggers high emerge cpu usage), bug + #402335 (fix emerge to avoid hitting recursion limit in rare cases), bug + #403149 (validate file names in the xpak segments of binary packages), and bug + #403181 (FEATURES=no{doc,info,man} breakage in portage-2.1.10.45 and + 2.2.0_alpha85). Bug #402213 tracks all bugs fixed since portage-2.1.10.44. + + 05 Feb 2012; Zac Medico portage-2.1.10.45.ebuild, + portage-2.2.0_alpha85.ebuild, portage-9999.ebuild: + Add preinst ewarn message for USE=xattr if pyxattr is not installed. + + 04 Feb 2012; Zac Medico -portage-2.1.10.11.ebuild, + -portage-2.2.0_alpha81.ebuild: + Remove old versions. + +*portage-2.2.0_alpha85 (04 Feb 2012) + + 04 Feb 2012; Zac Medico +portage-2.2.0_alpha85.ebuild: + 2.2.0_alpha85 version bump. This includes all of the fixes in + portage-2.1.10.45. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.45 (04 Feb 2012) + + 04 Feb 2012; Zac Medico +portage-2.1.10.45.ebuild: + 2.1.10.45 version bump. This fixes bug #269410 (add --human-readable to rsync + opts), bug #333687 (repoman support for git commit --gpg-sign), bug #397415 + (fix REQUIRED_USE sample in ebuild.5), bug #398543 (add ./ to quickpkg file + names), bug #398587 (handle unicode in overlay path), bug #399595 (erroneous + rename of html dir symlink to html.bz2), bug #402099 (honor repos.conf + priority settings), and bug #400679 (handle rm failure for info dir files). + Bug #402213 tracks all bugs fixed since portage-2.1.10.44. + + 02 Feb 2012; Samuli Suominen portage-2.1.10.44.ebuild: + ppc64 stable wrt #400559 + + 01 Feb 2012; Brent Baude portage-2.1.10.44.ebuild: + Marking portage-2.1.10.44 ppc for bug 400559 + + 31 Jan 2012; Jeroen Roovers portage-2.1.10.44.ebuild: + Stable for HPPA (bug #400559). + + 28 Jan 2012; Raúl Porcel portage-2.1.10.44.ebuild: + alpha/arm/ia64/m68k/s390/sh/sparc stable wrt #400559 + + 28 Jan 2012; Pawel Hajdan jr + portage-2.1.10.44.ebuild: + x86 stable wrt bug #400559 + + 26 Jan 2012; Agostino Sarubbo portage-2.1.10.44.ebuild: + Stable for AMD64, wrt bug #400559 + + 15 Jan 2012; Raúl Porcel portage-2.1.10.41.ebuild: + sh stable + + 04 Jan 2012; Brent Baude portage-2.1.10.41.ebuild: + Marking portage-2.1.10.41 ppc for bug 394695 + + 01 Jan 2012; Raúl Porcel portage-2.1.10.41.ebuild: + ia64/m68k/s390/sh/sparc stable wrt #394695 + + 29 Dec 2011; Zac Medico -portage-2.1.10.43.ebuild, + -portage-2.2.0_alpha83.ebuild: + Remove old versions. + +*portage-2.2.0_alpha84 (28 Dec 2011) + + 28 Dec 2011; Zac Medico +portage-2.2.0_alpha84.ebuild: + 2.2.0_alpha84 version bump. This includes all of the fixes in + portage-2.1.10.44. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.44 (28 Dec 2011) + + 28 Dec 2011; Zac Medico +portage-2.1.10.44.ebuild: + 2.1.10.44 version bump. This fixes bug #395995 (later repoman --ask prompt) + and also fixes a regression since portage-2.1.10.42 and 2.2.0_alpha82 which + caused layout.conf settings to be ignored for repositories that had settings + in repos.conf. Bug #395831 tracks all bugs fixed since portage-2.1.10.41. + +*portage-2.2.0_alpha83 (24 Dec 2011) + + 24 Dec 2011; Zac Medico +portage-2.2.0_alpha83.ebuild, + -portage-2.2.0_alpha82.ebuild: + 2.2.0_alpha83 version bump. This includes all of the fixes in + portage-2.1.10.43. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.43 (24 Dec 2011) + + 24 Dec 2011; Zac Medico +portage-2.1.10.43.ebuild, + -portage-2.1.10.42.ebuild: + 2.1.10.43 version bump. This fixes bug #395877 (false positive results in + CFLAGS ignorance check) and bug #395879 (emerge AttributeError triggered by + ambiguous atom argument, a regression in portage-2.1.10.42 and 2.2.0_alpha82). + Also included is a new config-protect-if-modified FEATURES setting (see the + make.conf man page). Bug #395831 tracks all bugs fixed since + portage-2.1.10.41. + +*portage-2.2.0_alpha82 (23 Dec 2011) + + 23 Dec 2011; Zac Medico +portage-2.2.0_alpha82.ebuild: + 2.2.0_alpha82 version bump. This includes all of the fixes in + portage-2.1.10.42. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.42 (23 Dec 2011) + + 23 Dec 2011; Zac Medico +portage-2.1.10.42.ebuild: + 2.1.10.42 version bump. This fixes bug #390489 (export COLUMNS variable so + java-utils-2.eclass doesn't die in java-pkg_init when stdin is not a tty), bug + #394091 (export valid COLUMNS variable so perl doesn't die when output is + redirected), bug #394995 (InvalidDependString triggered by REQUIRED_USE + containing a flag not in IUSE), and bug #395705 (OSError: [Errno 121] Remote + I/O error when PORTAGE_RO_DISTDIRS refers to NFS). Bug #395831 tracks all bugs + fixed since portage-2.1.10.41. + + 23 Dec 2011; Zac Medico -portage-2.1.9.42.ebuild, + -portage-2.2.0_alpha51.ebuild: + Remove old versions. + + 22 Dec 2011; Matt Turner portage-2.1.10.41.ebuild: + alpha stable, bug #394695. + + 22 Dec 2011; Zac Medico portage-9999.ebuild: + Adjust make.globals PORTDIR and PORTAGE_TMPDIR for prefix installs. + + 21 Dec 2011; Markus Meier portage-2.1.10.41.ebuild: + arm stable, bug #394695 + + 19 Dec 2011; Jeroen Roovers portage-2.1.10.41.ebuild: + Stable for HPPA (bug #394695). + + 18 Dec 2011; Agostino Sarubbo portage-2.1.10.41.ebuild: + Stable for X86/AMD64, wrt bug #394695 + + 18 Dec 2011; Zac Medico -portage-2.1.10.40.ebuild, + -portage-2.2.0_alpha80.ebuild: + Remove old versions. + + 14 Dec 2011; Zac Medico portage-2.1.10.41.ebuild: + Remove obsolete elog message about --quiet-build. + +*portage-2.2.0_alpha81 (14 Dec 2011) + + 14 Dec 2011; Zac Medico +portage-2.2.0_alpha81.ebuild, + -portage-2.2.0_alpha79.ebuild: + 2.2.0_alpha81 version bump. This includes all of the fixes in + portage-2.1.10.41. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.41 (14 Dec 2011) + + 14 Dec 2011; Zac Medico +portage-2.1.10.41.ebuild, + -portage-2.1.10.39.ebuild: + 2.1.10.41 version bump. This fixes bug #390523 (revert emerge --quiet-build + default, as Gentoo's council has decided) and bug #394195 (use hardlinks to + simulate locks on filesystems that don't support real locks). Bug #381649 + tracks all bugs fixed since portage-2.1.10.11. + + 11 Dec 2011; Zac Medico portage-2.2.0_alpha80.ebuild, + portage-9999.ebuild: + For prefix installs, add EPREFIX to *_BINARY constants. + +*portage-2.2.0_alpha80 (11 Dec 2011) + + 11 Dec 2011; Zac Medico +portage-2.2.0_alpha80.ebuild: + 2.2.0_alpha80 version bump. This includes all of the fixes in + portage-2.1.10.40. There is also support for two additional features which + include FEATURES=xattr (preserve extended attributes when merging files) and + FEATURES=force-prefix (emulation of the "Gentoo Prefix" branch of portage). + Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.40 (11 Dec 2011) + + 11 Dec 2011; Zac Medico +portage-2.1.10.40.ebuild: + 2.1.10.40 version bump. This fixes bug #393517 (document the relationship + between emerge --package-moves and fixpackages) and bug #394091 (portage sets + COLUMNS=-1 when output is redirected). Bug #381649 tracks all bugs fixed since + portage-2.1.10.11. + + 10 Dec 2011; Zac Medico portage-9999.ebuild: + Add USE=xattr and corresponding deps. + + 09 Dec 2011; Zac Medico portage-9999.ebuild: + Adjust SYNC in make.globals for prefix installs. + + 09 Dec 2011; Zac Medico portage-9999.ebuild: + Enable FEATURES=force-prefix in make.globals for prefix installs. + + 08 Dec 2011; Zac Medico portage-9999.ebuild: + Add support for prefix installs. + + 29 Nov 2011; Zac Medico -portage-2.1.10.38.ebuild, + -portage-2.2.0_alpha78.ebuild: + Remove old versions. + +*portage-2.2.0_alpha79 (27 Nov 2011) + + 27 Nov 2011; Zac Medico +portage-2.2.0_alpha79.ebuild: + 2.2.0_alpha79 version bump. This includes all of the fixes in + portage-2.1.10.39. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.39 (27 Nov 2011) + + 27 Nov 2011; Zac Medico +portage-2.1.10.39.ebuild: + 2.1.10.39 version bump. This fixes bug #392059 (emerge KeyError triggered by + unsatisfied dependencies). Bug #381649 tracks all bugs fixed since + portage-2.1.10.11. + + 27 Nov 2011; Zac Medico -portage-2.1.10.37.ebuild, + -portage-2.2.0_alpha77.ebuild: + Remove old versions. + +*portage-2.2.0_alpha78 (26 Nov 2011) + + 26 Nov 2011; Zac Medico +portage-2.2.0_alpha78.ebuild: + 2.2.0_alpha78 version bump. This includes all of the fixes in + portage-2.1.10.38. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.38 (26 Nov 2011) + + 26 Nov 2011; Zac Medico +portage-2.1.10.38.ebuild: + 2.1.10.38 version bump. This fixes bug #390965 (one-character messages from + the elog syslog module) and also fixes a regression in make.defaults + inheritance of variables from make.globals (such as PORTAGE_ELOG_CLASSES). Bug + #381649 tracks all bugs fixed since portage-2.1.10.11. + + 24 Nov 2011; Zac Medico -portage-2.1.10.36.ebuild, + -portage-2.2.0_alpha76.ebuild: + Remove old versions. + +*portage-2.2.0_alpha77 (21 Nov 2011) + + 21 Nov 2011; Zac Medico +portage-2.2.0_alpha77.ebuild, + -portage-2.2.0_alpha74.ebuild, -portage-2.2.0_alpha75.ebuild: + 2.2.0_alpha77 version bump. This includes all of the fixes in + portage-2.1.10.37. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.37 (21 Nov 2011) + + 21 Nov 2011; Zac Medico +portage-2.1.10.37.ebuild, + -portage-2.1.10.34.ebuild, -portage-2.1.10.35.ebuild: + 2.1.10.37 version bump. This fixes bug #391199 (repoman "abiguous workdir" + error when using <=subversion-1.6). Bug #381649 tracks all bugs fixed since + portage-2.1.10.11. + +*portage-2.2.0_alpha76 (19 Nov 2011) + + 19 Nov 2011; Zac Medico +portage-2.2.0_alpha76.ebuild: + 2.2.0_alpha76 version bump. This includes all of the fixes in + portage-2.1.10.36. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.36 (19 Nov 2011) + + 19 Nov 2011; Zac Medico +portage-2.1.10.36.ebuild: + 2.1.10.36 version bump. This fixes bug #390833 (KeyError triggered by \r + characters in elog messages) and bug #390893 (emerge --changelog displays + entry for currently installed version). Bug #381649 tracks all bugs fixed + since portage-2.1.10.11. + +*portage-2.2.0_alpha75 (17 Nov 2011) + + 17 Nov 2011; Zac Medico +portage-2.2.0_alpha75.ebuild: + 2.2.0_alpha75 version bump. This includes all of the fixes in + portage-2.1.10.35. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.35 (17 Nov 2011) + + 17 Nov 2011; Zac Medico +portage-2.1.10.35.ebuild, + -portage-2.1.10.32.ebuild, -portage-2.2.0_alpha72.ebuild: + 2.1.10.35 version bump. This fixes bug #390711 (clean up previous build prior + to pkg_pretend) and bug #390699 (support HOSTNAME variable for emerge quiet + mode xterm titles). Bug #381649 tracks all bugs fixed since portage-2.1.10.11. + + 12 Nov 2011; Zac Medico metadata.xml, + portage-2.1.10.11.ebuild, portage-2.1.10.32.ebuild, portage-2.1.10.34.ebuild, + portage-2.1.6.13.ebuild, portage-2.1.6.7.ebuild, portage-2.1.9.42.ebuild, + portage-2.2.0_alpha51.ebuild, portage-2.2.0_alpha72.ebuild, + portage-2.2.0_alpha74.ebuild, portage-9999.ebuild: + Use the metadata.xml upstream doc element to reference the 'Working with + Portage' section of the handbook, instead of calling einfo every time that + portage is installed. + + 12 Nov 2011; Zac Medico portage-2.2.0_alpha51.ebuild, + portage-2.2.0_alpha72.ebuild, portage-2.2.0_alpha74.ebuild, + portage-9999.ebuild: + Remove unconditional elog messages that suggest to use the 'latest development + version' of portage. There's no point in displaying this every time, + especially now that the portage-9999 ebuild is available. + +*portage-2.2.0_alpha74 (11 Nov 2011) + + 11 Nov 2011; Zac Medico +portage-2.2.0_alpha74.ebuild, + -portage-2.2.0_alpha73.ebuild: + 2.2.0_alpha74 version bump. This includes the --quiet-build change that's in + portage-2.1.10.34. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.34 (11 Nov 2011) + + 11 Nov 2011; Zac Medico +portage-2.1.10.34.ebuild, + -portage-2.1.10.33.ebuild: + 2.1.10.34 version bump. The emerge --quiet-build option is now enabled by + default. Set --quiet-build=n in EMERGE_DEFAULT_OPTS if you want to disable it + by default. See the emerge(1) man page for more information about this option. + Bug #381649 tracks all bugs fixed since portage-2.1.10.11. + + 11 Nov 2011; Zac Medico portage-9999.ebuild: + Remove obsolete less dependency (bug #384663) and tweak style of + preinst/postinst boolean conditions. + + 10 Nov 2011; Zac Medico portage-2.1.6.13.ebuild, + portage-2.1.6.7.ebuild: + Reference bug #330937 for the python-2.6.6 blocker in old portage. This + blocker breaks the upgrade path from +portage-2.2.0_alpha73.ebuild: + 2.2.0_alpha73 version bump. This includes all of the fixes in + portage-2.1.10.33. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.33 (10 Nov 2011) + + 10 Nov 2011; Zac Medico +portage-2.1.10.33.ebuild: + 2.1.10.33 version bump. This fixes bug #389047 (docompress -x triggers lost + files when PORTAGE_COMPRESS is empty), bug #389609 (add emerge --moo action), + bug #389611 (emerge --changelog support for ChangeLog-YYYY), and bug #389617 + (respect --usepkgonly in package spelling suggestions). Bug #381649 tracks all + bugs fixed since portage-2.1.10.11. + + 10 Nov 2011; Zac Medico -portage-2.1.10.31.ebuild, + -portage-2.2.0_alpha71.ebuild: + Remove old versions. + + 02 Nov 2011; Zac Medico portage-9999.ebuild: + Bump to EAPI 3 and add prefix support. + +*portage-2.2.0_alpha72 (30 Oct 2011) + + 30 Oct 2011; Zac Medico +portage-2.2.0_alpha72.ebuild: + 2.2.0_alpha72 version bump. This includes all of the fixes in + portage-2.1.10.32. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.32 (30 Oct 2011) + + 30 Oct 2011; Zac Medico +portage-2.1.10.32.ebuild: + 2.1.10.32 version bump. This fixes bug #388031 (layout.conf profile-formats + setting), bug #388233 (emerge --check-news action), bug #388593 (run + pkg_pretend inside PORTAGE_TMPDIR), bug #388615 (optimize prelink-checksums + FEATURES setting), and bug #388773 (quickpkg unicode handling). This also + includes various fixes and improvements in metadata cache handling, including + layout.conf cache-formats support for md5-dict format which can now be + generated with egencache. Bug #381649 tracks all bugs fixed since + portage-2.1.10.11. + + 23 Oct 2011; Zac Medico -portage-2.2.0_alpha67.ebuild, + -portage-2.1.10.27.ebuild, -portage-2.1.10.29.ebuild, + -portage-2.2.0_alpha69.ebuild, -portage-2.2.0_alpha70.ebuild, + -portage-2.1.10.30.ebuild: + Remove old versions. + +*portage-2.2.0_alpha71 (23 Oct 2011) + + 23 Oct 2011; Zac Medico +portage-2.2.0_alpha71.ebuild: + 2.2.0_alpha71 version bump. This includes all of the fixes in + portage-2.1.10.31. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.31 (23 Oct 2011) + + 23 Oct 2011; Zac Medico +portage-2.1.10.31.ebuild: + 2.1.10.31 version bump. This fixes bug #388187 (InvalidAtom traceback + triggered by invalid atom in global updates after emerge --sync). Bug #381649 + tracks all bugs fixed since portage-2.1.10.11. + +*portage-2.2.0_alpha70 (21 Oct 2011) + + 21 Oct 2011; Zac Medico +portage-2.2.0_alpha70.ebuild: + 2.2.0_alpha70 version bump. This includes all of the fixes in + portage-2.1.10.30. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.30 (21 Oct 2011) + + 21 Oct 2011; Zac Medico +portage-2.1.10.30.ebuild: + 2.1.10.30 version bump. This adds support for repoman --echangelog=y to update + copyright dates in all changed files, and has support for a new + metadata/layout.conf "update-changelog" setting that enables repoman + --echangelog=y automatically (already enabled in the gentoo-x86). Bug #381649 + tracks all bugs fixed since portage-2.1.10.11. + + 19 Oct 2011; Zac Medico -portage-2.1.10.28.ebuild, + -portage-2.2.0_alpha68.ebuild: + Remove old versions. + +*portage-2.2.0_alpha69 (18 Oct 2011) + + 18 Oct 2011; Zac Medico +portage-2.2.0_alpha69.ebuild: + 2.2.0_alpha69 version bump. This includes all of the fixes in + portage-2.1.10.29. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.29 (18 Oct 2011) + + 18 Oct 2011; Zac Medico +portage-2.1.10.29.ebuild: + 2.1.10.29 version bump. This fixes regressions in 2.1.10.28 and 2.2.0_alpha68 + involving support for users who are not in the portage group. Bug #381649 + tracks all bugs fixed since portage-2.1.10.11. + +*portage-2.2.0_alpha68 (16 Oct 2011) + + 16 Oct 2011; Zac Medico +portage-2.2.0_alpha68.ebuild: + 2.2.0_alpha68 version bump. This includes all of the fixes in + portage-2.1.10.28. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.28 (16 Oct 2011) + + 16 Oct 2011; Zac Medico +portage-2.1.10.28.ebuild: + 2.1.10.28 version bump. This fixes bug #337853 (repoman --echangelog option, + enabled by default for the 'gentoo' repo as decided by gentoo's council), bug + #386871 (add note to RELEASE-NOTES indicating that FEATURES=fixpackages is + enabled unconditionally now, and can be temporarily avoided by setting + --package-moves=n in EMERGE_DEFAULT_OPTS), bug #387011 (document that emerge + --prune removes atoms from the world file), bug #387033 (quickpkg wildcard + atom support), and bug #387053 (new QA_SONAME_NO_SYMLINK variable). Bug + #381649 tracks all bugs fixed since portage-2.1.10.11. + + 14 Oct 2011; Zac Medico -portage-2.1.10.24.ebuild, + -portage-2.1.10.25.ebuild, -portage-2.1.10.26.ebuild, + -portage-2.2.0_alpha64.ebuild, -portage-2.2.0_alpha65.ebuild, + -portage-2.2.0_alpha66.ebuild: + Remove old versions. + +*portage-2.2.0_alpha67 (12 Oct 2011) + + 12 Oct 2011; Zac Medico +portage-2.2.0_alpha67.ebuild: + 2.2.0_alpha67 version bump. This includes all of the fixes in + portage-2.1.10.27. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.27 (12 Oct 2011) + + 12 Oct 2011; Zac Medico +portage-2.1.10.27.ebuild: + 2.1.10.27 version bump. This fixes bug #386771 (regression causing newlines + after every character in elog files), bug #386797 (fetch complains about + lack of space even if files are already fetched), bug #386829 (corrupt IUSE + in /var/db/pkg triggered by LANGS variable interacting with qt4-r2.eclass). + Bug #381649 tracks all bugs fixed since portage-2.1.10.11. + +*portage-2.2.0_alpha66 (10 Oct 2011) + + 10 Oct 2011; Zac Medico +portage-2.2.0_alpha66.ebuild: + 2.2.0_alpha66 version bump. This includes all of the fixes in + portage-2.1.10.26. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.26 (10 Oct 2011) + + 10 Oct 2011; Zac Medico +portage-2.1.10.26.ebuild: + 2.1.10.26 version bump. This fixes bug #386627 (regression that causes + missing line breaks in elog files and mails), and also adds a new emerge + --dynamic-deps= option which can be used to force emerge to use the + dependencies of installed packages (instead of substituting dependencies + from unbuilt ebuilds). Bug #381649 tracks all bugs fixed since + portage-2.1.10.11. + +*portage-2.2.0_alpha65 (10 Oct 2011) + + 10 Oct 2011; Zac Medico +portage-2.2.0_alpha65.ebuild: + 2.2.0_alpha65 version bump. This includes all of the fixes in + portage-2.1.10.25. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.25 (10 Oct 2011) + + 10 Oct 2011; Zac Medico +portage-2.1.10.25.ebuild: + 2.1.10.25 version bump. This fixes bug #286201 (skip PORTAGE_TMPDIR write + check for fetchonly mode), bug #386379 (invalid warnings about ignored + binary packages), and bug #386569 (invalid warnings about Unmatched removal + atoms in package.mask). Bug #381649 tracks all bugs fixed since + portage-2.1.10.11. + + 10 Oct 2011; Zac Medico -portage-2.1.10.20.ebuild, + -portage-2.1.10.22.ebuild, -portage-2.2.0_alpha60.ebuild, + -portage-2.2.0_alpha62.ebuild: + Remove old versions. + +*portage-2.2.0_alpha64 (08 Oct 2011) + + 08 Oct 2011; Zac Medico -portage-2.2.0_alpha63.ebuild, + +portage-2.2.0_alpha64.ebuild: + 2.2.0_alpha64 version bump. This includes all of the fixes in + portage-2.1.10.24. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.24 (08 Oct 2011) + + 08 Oct 2011; Zac Medico -portage-2.1.10.23.ebuild, + +portage-2.1.10.24.ebuild: + 2.1.10.24 version bump. This fixes bug #386095 (set UTF-8 encoding in elog + mails with python2), and also has a repoman fix related to bug #385333 + (overlays should us negative package.mask atoms instead of package.unmask). + Bug #381649 tracks all bugs fixed since portage-2.1.10.11. + +*portage-2.2.0_alpha63 (07 Oct 2011) + + 07 Oct 2011; Zac Medico +portage-2.2.0_alpha63.ebuild: + 2.2.0_alpha63 version bump. This includes all of the fixes in + portage-2.1.10.23. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.23 (07 Oct 2011) + + 07 Oct 2011; Zac Medico +portage-2.1.10.23.ebuild: + 2.1.10.23 version bump. This fixes bug #340475 (repoman unnecessarily + commits signed manifests separately), and also has repoman commit logic + tweak for thin-manifests. Bug #381649 tracks all bugs fixed since + portage-2.1.10.11. + +*portage-2.2.0_alpha62 (06 Oct 2011) + + 06 Oct 2011; Zac Medico -portage-2.2.0_alpha61.ebuild, + +portage-2.2.0_alpha62.ebuild: + 2.2.0_alpha62 version bump. This includes all of the fixes in + portage-2.1.10.22. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.22 (06 Oct 2011) + + 06 Oct 2011; Zac Medico -portage-2.1.10.21.ebuild, + +portage-2.1.10.22.ebuild: + 2.1.10.22 version bump. This fixes a regression in 2.1.10.21 and + 2.2.0_alpha61 which produced extra empty lines in elog messages. + Bug #381649 tracks all bugs fixed since portage-2.1.10.11. + + 05 Oct 2011; Zac Medico -portage-2.1.10.3.ebuild, + -portage-2.1.10.19.ebuild, -portage-2.2.0_alpha59.ebuild: + Remove old versions. + +*portage-2.2.0_alpha61 (05 Oct 2011) + + 05 Oct 2011; Zac Medico +portage-2.2.0_alpha61.ebuild: + 2.2.0_alpha61 version bump. This includes all of the fixes in + portage-2.1.10.21. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.21 (05 Oct 2011) + + 05 Oct 2011; Zac Medico +portage-2.1.10.21.ebuild: + 2.1.10.21 version bump. This fixes bug #375265 (display relevant parent + in autounmask comments), bug #375613 (fix dispatch-conf replace-wscomments + pattern), bug #385133 (repos.conf trust-authoritative-cache settings), + bug #385341 (ValueError triggered by elog messages from gccxml), + bug #385391 (prefer slot conflict display over blocker display), and + bug #385413 (fix emerge --changelog to avoid unnecessary newline output + when there is nothing to display). Bug #381649 tracks all bugs fixed since + portage-2.1.10.11. + + 03 Oct 2011; Joseph Jezak portage-2.1.10.11.ebuild: + Marked ppc/ppc64 stable for bug #380677. + +*portage-2.2.0_alpha60 (29 Sep 2011) + + 29 Sep 2011; Zac Medico +portage-2.2.0_alpha60.ebuild: + 2.2.0_alpha60 version bump. This includes all of the fixes in + portage-2.1.10.20. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.20 (29 Sep 2011) + + 29 Sep 2011; Zac Medico +portage-2.1.10.20.ebuild: + 2.1.10.20 version bump. This fixes bug #297549 (enable --binpkg-respect-use + automatically, unless --usepkgonly is enabled), bug #372485 (new emerge + --autounmask-keep-masks option), bug #375573 (handle cases where + backtracking masks become irrelevant due to the parent package getting + masked by backtracking), bug #379333 (new emerge + --autounmask-unrestricted-atoms option), bug #383859 (remove stray print + statement in fetch checksum failure code), bug #384003 (new emerge + --complete-graph-if-new-ver option), bug #384063 (fix portageq + best-visible for multi-repo support), bug #384177 (trigger repoman error + for obsolete no-herd value), bug #384597 (handle \r in installed + file names), bug #384663 (PAGER variable support in etc-update and + dispatch-conf), bug #384665 (archive-conf ImportError), and bug #384749 + (UnicodeDecodeError triggered by invalid dependency string in depgraph). + Bug #381649 tracks all bugs fixed since portage-2.1.10.11. + + 29 Sep 2011; Zac Medico -portage-2.1.10.18.ebuild, + -portage-2.2.0_alpha58.ebuild: + Remove old versions. + +*portage-2.2.0_alpha59 (19 Sep 2011) + + 19 Sep 2011; Zac Medico +portage-2.2.0_alpha59.ebuild: + 2.2.0_alpha59 version bump. This includes all of the fixes in + portage-2.1.10.19. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.19 (19 Sep 2011) + + 19 Sep 2011; Zac Medico +portage-2.1.10.19.ebuild: + 2.1.10.19 version bump. This fixes bug #374233 (change "poor programming + practices" QA message to say "severe warnings" instead), bug #375265 + (show relevant parent in autounmask dependency chain), bug #383269 + (fix quote handling for PORTDIR_OVERLAY), and bug #383375 (fix + emerge-webrsync to bail out if gpg is missing). Bug #381649 tracks all + bugs fixed since portage-2.1.10.11. + + 19 Sep 2011; Zac Medico -portage-2.1.10.15.ebuild, + -portage-2.1.10.17.ebuild, -portage-2.2.0_alpha55.ebuild, + -portage-2.2.0_alpha57.ebuild: + Remove old versions. + +*portage-2.2.0_alpha58 (15 Sep 2011) + + 15 Sep 2011; Zac Medico +portage-2.2.0_alpha58.ebuild: + 2.2.0_alpha58 version bump. This includes all of the fixes in + portage-2.1.10.18. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.18 (15 Sep 2011) + + 15 Sep 2011; Zac Medico +portage-2.1.10.18.ebuild: + 2.1.10.18 version bump. This fixes bug #382823 (depclean multislot + handling) and also has various fixes involving thin manifest support + (bug #333691). Bug #381649 tracks all bugs fixed since portage-2.1.10.11. + +*portage-2.2.0_alpha57 (14 Sep 2011) + + 14 Sep 2011; Zac Medico +portage-2.2.0_alpha57.ebuild, + -portage-2.2.0_alpha56.ebuild: + 2.2.0_alpha57 version bump. This includes all of the fixes in + portage-2.1.10.17. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.17 (14 Sep 2011) + + 14 Sep 2011; Zac Medico +portage-2.1.10.17.ebuild, + -portage-2.1.10.16.ebuild: + 2.1.10.17 version bump. This fixes a repoman regression in 2.1.10.16 and + 2.2.0_alpha56 which triggers a KeyError if the repo is referenced via a + symlink. Bug #381649 tracks all bugs fixed since portage-2.1.10.11. + +*portage-2.2.0_alpha56 (14 Sep 2011) + + 14 Sep 2011; Zac Medico +portage-2.2.0_alpha56.ebuild: + 2.2.0_alpha56 version bump. This includes all of the fixes in + portage-2.1.10.16. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.16 (14 Sep 2011) + + 14 Sep 2011; Zac Medico +portage-2.1.10.16.ebuild: + 2.1.10.16 version bump. This fixes bug #382557 (regression in 2.1.10.15 + and 2.2.0_alpha56 which triggered unwanted attempts to pull in new masked + virtual slots) and bug #333691 (thin manifest support). Bug #381649 tracks + all bugs fixed since portage-2.1.10.11. + + 14 Sep 2011; Zac Medico -portage-2.1.10.14.ebuild, + -portage-2.2.0_alpha54.ebuild: + Remove old versions. + +*portage-2.2.0_alpha55 (09 Sep 2011) + + 09 Sep 2011; Zac Medico +portage-2.2.0_alpha55.ebuild: + 2.2.0_alpha55 version bump. This includes all of the fixes in + portage-2.1.10.15. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.15 (09 Sep 2011) + + 09 Sep 2011; Zac Medico +portage-2.1.10.15.ebuild: + 2.1.10.15 version bump. This fixes bug #382199 (use constant utf8 file + system encoding for all locales) and bug #382233 (fix code for old + binhost protocol to work with python3). Bug #381649 tracks all bugs fixed + since portage-2.1.10.11. + + 09 Sep 2011; Zac Medico -portage-2.1.10.13.ebuild, + -portage-2.2.0_alpha53.ebuild: + Remove old versions. + +*portage-2.2.0_alpha54 (06 Sep 2011) + + 06 Sep 2011; Zac Medico +portage-2.2.0_alpha54.ebuild: + 2.2.0_alpha54 version bump. This includes all of the fixes in + portage-2.1.10.14. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.14 (06 Sep 2011) + + 06 Sep 2011; Zac Medico +portage-2.1.10.14.ebuild: + 2.1.10.14 version bump. This fixes bug #382021 (OSError or + UnicodeEncodeError triggered by symlink content, related to bug #381629). + Bug #381649 tracks all bugs fixed since portage-2.1.10.11. + + 06 Sep 2011; Zac Medico -portage-2.1.10.12.ebuild, + -portage-2.2.0_alpha52.ebuild: + Remove old versions. + +*portage-2.2.0_alpha53 (04 Sep 2011) + + 04 Sep 2011; Zac Medico +portage-2.2.0_alpha53.ebuild: + 2.2.0_alpha53 version bump. This includes all of the fixes in + portage-2.1.10.13. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.13 (04 Sep 2011) + + 04 Sep 2011; Zac Medico +portage-2.1.10.13.ebuild: + 2.1.10.13 version bump. This fixes bug #381087 (fix repoman + dependency.unknown check to detect more cases), bug #381629 + (UnicodeEncodeError triggered by symlink content), bug #381657 + (regression in 2.1.10.12 and 2.2.0_alpha53 that triggers AssertionError + with Python 3.1), and bug #381705 (handle AttributeError when loading + pickle from disk). Bug #381649 tracks all bugs fixed since + portage-2.1.10.11. + +*portage-2.2.0_alpha52 (03 Sep 2011) + + 03 Sep 2011; Zac Medico +portage-2.2.0_alpha52.ebuild: + 2.2.0_alpha52 version bump. This includes all of the fixes in + portage-2.1.10.12. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.12 (03 Sep 2011) + + 03 Sep 2011; Zac Medico +portage-2.1.10.12.ebuild: + 2.1.10.12 version bump. This fixes bug #318897 (FEATURES=buildpkg + package.env support), bug #353648 (egencache --portdir-overlay option), + bug #379899 (QA Notice if dosym target omits basename), bug #380565 + (fix deprecated ElementTree usage), bug #380625 (fix die hooks for EAPI 4 + helpers_die), bug #381087 (include blockers in repoman dependency.unknown + check), and bug #381509 (allow merge of UTF-8 file names with locales that + specify ASCII encoding). Bug #381649 tracks all bugs fixed since + portage-2.1.10.11. + + 27 Aug 2011; Jeroen Roovers portage-2.1.10.11.ebuild: + Stable for HPPA (bug #380677). + + 27 Aug 2011; Zac Medico portage-2.1.10.11.ebuild: + Initialize /var/log/portage permissions for bug #378451 and bug #377177. + + 27 Aug 2011; Raúl Porcel portage-2.1.10.11.ebuild: + alpha/arm/ia64/m68k/s390/sh/sparc/x86 stable wrt #380677 + + 26 Aug 2011; Markos Chandras portage-2.1.10.11.ebuild: + Stable on amd64 wrt bug #380677 + + 17 Aug 2011; Zac Medico -portage-2.1.10.10.ebuild, + -portage-2.2.0_alpha50.ebuild: + Remove old versions. + +*portage-2.2.0_alpha51 (12 Aug 2011) + + 12 Aug 2011; Zac Medico +portage-2.2.0_alpha51.ebuild: + 2.2.0_alpha51 version bump. This includes all of the fixes in + portage-2.1.10.11. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.11 (12 Aug 2011) + + 12 Aug 2011; Zac Medico +portage-2.1.10.11.ebuild: + 2.1.10.11 version bump. This fixes bug #323213 (clean up empty info dirs + for packages like binutils), bug #377907 (remove "masked by: profile" + support, which was legacy behavior according to PMS section 5.2.7), and + bug #378403 (bail out early if $PORTAGE_TMPDIR/portage is a symlink and + sandbox is enabled). This also includes a new repoman --if-modified option + which can be used to limit checks to packages with uncommitted + modifications, useful especially for category or repo-level commits. + Bug #373933 tracks all bugs fixed since portage-2.1.10.3. + + 08 Aug 2011; Zac Medico -portage-2.1.10.9.ebuild, + -portage-2.2.0_alpha47.ebuild, -portage-2.2.0_alpha49.ebuild: + Remove old versions. + +*portage-2.2.0_alpha50 (02 Aug 2011) + + 02 Aug 2011; Zac Medico +portage-2.2.0_alpha50.ebuild: + 2.2.0_alpha50 version bump. This includes all of the fixes in + portage-2.1.10.10. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.10 (02 Aug 2011) + + 02 Aug 2011; Zac Medico +portage-2.1.10.10.ebuild: + 2.1.10.10 version bump. This fixes bug #376741 (make unpack compatible with + PMS for rare cases), and fixes some more false alarm error message about + symlinks to directories. Bug #373933 tracks all bugs fixed since + portage-2.1.10.3. + + 02 Aug 2011; Zac Medico -portage-2.1.10.7.ebuild, + -portage-2.2.0_alpha46.ebuild: + Remove old versions. + +*portage-2.2.0_alpha49 (29 Jul 2011) + + 29 Jul 2011; Zac Medico -portage-2.2.0_alpha48.ebuild, + +portage-2.2.0_alpha49.ebuild: + 2.2.0_alpha49 version bump. This fixes a false alarm error message about symlinks + to directories, produced by portage-2.2.0_alpha48. + +*portage-2.1.10.9 (29 Jul 2011) + + 29 Jul 2011; Zac Medico -portage-2.1.10.8.ebuild, + +portage-2.1.10.9.ebuild: + 2.1.10.9 version bump. This fixes a false alarm error message about symlinks + to directories, produced by portage-2.1.10.8. + +*portage-2.2.0_alpha48 (29 Jul 2011) + + 29 Jul 2011; Zac Medico +portage-2.2.0_alpha48.ebuild: + 2.2.0_alpha48 version bump. This includes all of the fixes in + portage-2.1.10.8. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.8 (29 Jul 2011) + + 29 Jul 2011; Zac Medico +portage-2.1.10.8.ebuild: + 2.1.10.8 version bump. This fixes bug #326685 (handle collision between + directory and symlink), and bug #375835 (SELinux support for fetch from + binhost). Bug #373933 tracks all bugs fixed since portage-2.1.10.3. + + 26 Jul 2011; Zac Medico portage-2.1.10.7.ebuild, + portage-2.2.0_alpha46.ebuild, portage-2.2.0_alpha47.ebuild, + portage-9999.ebuild: + Bug #374287 - Block -portage-2.1.10.6.ebuild, + -portage-2.2.0_alpha45.ebuild: + Remove old versions. + +*portage-2.2.0_alpha47 (24 Jul 2011) + + 24 Jul 2011; Zac Medico +portage-2.2.0_alpha47.ebuild: + 2.2.0_alpha47 version bump. This fixes bug #326685 (improved handling for + ebuilds that replace a directory with a symlink), bug #338959 (@installed + pulls in unwanted new slots), and bug #375835 (SELinux support for fetching + from binhost). This also includes memory and performance optimizations for + preserve-libs and @preserved-rebuild. Bug #210077 tracks all bugs fixed + since portage-2.1.x. + +*portage-2.2.0_alpha46 (19 Jul 2011) + + 19 Jul 2011; Zac Medico +portage-2.2.0_alpha46.ebuild: + 2.2.0_alpha46 version bump. This includes all of the fixes in + portage-2.1.10.7, and also fixes bug #289180 (preserve-libs preserves + redundant libraries if soname has multiple providers). Bug #210077 tracks + all bugs fixed since portage-2.1.x. + +*portage-2.1.10.7 (19 Jul 2011) + + 19 Jul 2011; Zac Medico +portage-2.1.10.7.ebuild: + 2.1.10.7 version bump. This fixes bug #375331 (only allow one fetch thread + at a time with parallel-fetch and --jobs=1) and bug #375571 (fix emerge + --noreplace bugs by making --noreplace identical to --selective). + Bug #373933 tracks all bugs fixed since portage-2.1.10.3. + + 19 Jul 2011; Zac Medico -portage-2.1.9.50.ebuild, + -portage-2.1.10.4.ebuild, -portage-2.2.0_alpha41.ebuild, + -portage-2.2.0_alpha43.ebuild: + Remove old versions. + + 14 Jul 2011; Jeroen Roovers portage-2.1.10.3.ebuild: + Stable for HPPA (bug #373523). + +*portage-2.2.0_alpha45 (14 Jul 2011) + + 14 Jul 2011; Zac Medico +portage-2.2.0_alpha45.ebuild, + -portage-2.2.0_alpha44.ebuild: + 2.2.0_alpha45 version bump. This includes all of the fixes in + portage-2.1.10.6. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.6 (14 Jul 2011) + + 14 Jul 2011; Zac Medico +portage-2.1.10.6.ebuild, + -portage-2.1.10.5.ebuild: + 2.1.10.6 version bump. This fixes a regression in portage-2.1.10.6 which + caused 'Insufficient data for checksum verification' errors when using + ebuild(1) in some cases. Bug #373933 tracks all bugs fixed since + portage-2.1.10.3. + +*portage-2.2.0_alpha44 (13 Jul 2011) + + 13 Jul 2011; Zac Medico +portage-2.2.0_alpha44.ebuild: + 2.2.0_alpha44 version bump. This includes all of the fixes in + portage-2.1.10.5. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.5 (13 Jul 2011) + + 13 Jul 2011; Zac Medico +portage-2.1.10.5.ebuild: + 2.1.10.5 version bump. This fixes bug #199722 (hasq and useq deprecation), + bug #374287 (fix logrotate config for logrotate-3.8.0 compatibility), + bug #374397 (near infinite loop triggered by circular deps in emerge dep + calculation), bug #374791 (fix 'has' to match PMS), bug #374583 (emerge + --keep-going regression since portage-2.1.10), and bug #374809 (show + maintainer info in log for pkg_pretend). Bug #373933 tracks all bugs fixed + since portage-2.1.10.3. + + 12 Jul 2011; Zac Medico portage-9999.ebuild: + Require python:2.6[threads] since import of the io module in python-2.6 + raises ImportError for the thread module if threading is disabled. + + 10 Jul 2011; Zac Medico portage-9999.ebuild: + Install minimal tests for preinst sanity check. + + 09 Jul 2011; Kacper Kowalik portage-2.1.10.3.ebuild: + ppc64 stable wrt #373523 + + 04 Jul 2011; nixnut portage-2.1.10.3.ebuild: + ppc stable #373523 + +*portage-2.1.10.4 (03 Jul 2011) + + 03 Jul 2011; Zac Medico +portage-2.1.10.4.ebuild: + 2.1.10.4 version bump. This fixes bug #355283 (fix distcc and ccache + features to use the default ABI dir), bug #365033 (make.conf parser behaves + like echo -e though it shouldn't), bug #370693 (extended repo-level config + file support), bug #371767 (emerge KeyError triggered by --exclude in some + cases), bug #371909 (unnecessary ccache messages triggered by pkg_info), + bug #371987 (make repoman handle EACCESS when generating Manifest), + bug #372033 (emerge suggests package that has no available ebuilds), + bug #372183 (make PORTAGE_COMPRESS_FLAGS handle -k correctly), bug #372193 + (portageq all_best_visible IndexError), bug #372789 (make repoman trigger + dependency.unknown for unknown packages in || deps), bug #373301 (remove + FEATURES=severe docs since it's not implemented), and bug #373341 (always + use ldconfig -X, to avoid interference with FEATURES=preserve-libs when + downgrading libraries). Bug #373933 tracks all bugs fixed since + portage-2.1.10.3. + + 03 Jul 2011; Raúl Porcel portage-2.1.10.3.ebuild: + alpha/arm/ia64/m68k/s390/sh/sparc/x86 stable wrt #373523 + + 02 Jul 2011; Markos Chandras portage-2.1.10.3.ebuild: + Stable on amd64 wrt bug #373523 + +*portage-2.2.0_alpha43 (01 Jul 2011) + + 01 Jul 2011; Zac Medico -portage-2.2.0_alpha42.ebuild, + +portage-2.2.0_alpha43.ebuild: + 2.2.0_alpha43 version bump. This fixes bug #373703 (2.2.0_alpha42 + regression in make.conf handling of escaped newlines). + +*portage-2.2.0_alpha42 (01 Jul 2011) + + 01 Jul 2011; Zac Medico +portage-2.2.0_alpha42.ebuild: + 2.2.0_alpha42 version bump. This fixes bug #355283 (fix distcc and ccache + features to use the default ABI dir), bug #365033 (make.conf parser behaves + like echo -e though it shouldn't), bug #370693 (extended repo-level config + file support), bug #371767 (emerge KeyError triggered by --exclude in some + cases), bug #371909 (unnecessary ccache messages triggered by pkg_info), + bug #371987 (make repoman handle EACCESS when generating Manifest), + bug #372183 (make PORTAGE_COMPRESS_FLAGS handle -k correctly), bug #372193 + (portageq all_best_visible IndexError), bug #372789 (make repoman trigger + dependency.unknown for unknown packages in || deps), bug #373301 (remove + FEATURES=severe docs since it's not implemented), and bug #373341 (always + use ldconfig -X, to avoid interference with FEATURES=preserve-libs when + downgrading libraries). Bug #210077 tracks all bugs fixed since + portage-2.1.x. + + 28 Jun 2011; Zac Medico portage-2.1.10.3.ebuild, + portage-2.2.0_alpha41.ebuild, portage-9999.ebuild: + Don't install tests since many of them rely upon having the complete source + tree. + + 21 Jun 2011; Zac Medico -portage-2.1.10.ebuild, + -portage-2.2.0_alpha38.ebuild: + Remove old versions. + + 14 Jun 2011; Zac Medico -portage-2.1.10.2.ebuild, + -portage-2.2.0_alpha40.ebuild: + Remove old versions. + +*portage-2.2.0_alpha41 (14 Jun 2011) + + 14 Jun 2011; Zac Medico +portage-2.2.0_alpha41.ebuild: + 2.2.0_alpha41 version bump. This includes all of the fixes in + portage-2.1.10.3. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.3 (14 Jun 2011) + + 14 Jun 2011; Zac Medico +portage-2.1.10.3.ebuild: + 2.1.10.3 version bump.This fixes bug #371423 (InvalidDependString triggered + by changes in IUSE for installed packages). Bug #358927 tracks all bugs + fixed since portage-2.1.9.42. + + 12 Jun 2011; Zac Medico -portage-2.1.10.1.ebuild, + -portage-2.2.0_alpha37.ebuild, -portage-2.2.0_alpha39.ebuild: + Remove old versions. + +*portage-2.2.0_alpha40 (11 Jun 2011) + + 11 Jun 2011; Zac Medico +portage-2.2.0_alpha40.ebuild: + 2.2.0_alpha40 version bump. This includes all of the fixes in + portage-2.1.10.2. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.2 (11 Jun 2011) + + 11 Jun 2011; Zac Medico +portage-2.1.10.2.ebuild: + 2.1.10.2 version bump. This fixes breakage in the fakedbapi class which may + be used by some API consumers. It also fixes poor merge order in some cases + involving circular dependencies. Bug #358927 tracks all bugs fixed since + portage-2.1.9.42. + +*portage-2.2.0_alpha39 (10 Jun 2011) + + 10 Jun 2011; Zac Medico +portage-2.2.0_alpha39.ebuild: + 2.2.0_alpha39 version bump. This includes all of the fixes in + portage-2.1.10.1. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10.1 (10 Jun 2011) + + 10 Jun 2011; Zac Medico +portage-2.1.10.1.ebuild: + 2.1.10.1 version bump. This fixes bug #355283 (fix distcc and ccache + features to use the default ABI dir), bug #368817 (don't show 'unexpected + exit' message when killed by signal), bug #370465 (EAPI mask messages + handled incorrectly sometimes), bug #370477 (keywords mask messages handled + incorrectly sometimes), and bug #370565 (treat DEPEND strings containing + empty parenthesis as invalid). Bug #358927 tracks all bugs fixed since + portage-2.1.9.42. + + 07 Jun 2011; Zac Medico portage-2.1.6.7.ebuild, + portage-2.1.6.13.ebuild, portage-2.1.9.42.ebuild, portage-2.1.9.50.ebuild, + portage-2.1.10.ebuild, portage-2.2.0_alpha37.ebuild, + portage-2.2.0_alpha38.ebuild, portage-9999.ebuild, metadata.xml: + Bug #370295 - Pull in less as pager for etc-update, so --depclean doesn't + remove it due to virtual/pager being satisfied by more from util-linux. + +*portage-2.2.0_alpha38 (06 Jun 2011) + + 06 Jun 2011; Zac Medico +portage-2.2.0_alpha38.ebuild: + 2.2.0_alpha38 version bump. This includes all of the fixes in + portage-2.1.10. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.10 (06 Jun 2011) + + 06 Jun 2011; Zac Medico +portage-2.1.10.ebuild: + 2.1.10 version bump. This fixes bug #142508 (clear_term config option + for etc-update), bug #157357 (new portageq expand_virtual command for + new-style GLEP 37 virtuals), bug #185377 (support for atom::repo in + commands and config files), bug #262038 (handle identically versioned + ebuilds from different overlays with different masking status), and bug + #345775 (--autounmask-write option), bug #368865 (repoman EAPI.incompatible + check for EMERGE_FROM in EAPI 4), bug #369913 (old-style binhost fails with + python-2.7), and bug #369985 (include package.mask comments in --autounmask + output). The emerge --autounmask option is now enabled by default. The + --autounmask-write option can be used to have config changes automatically + written to the appropriate files (repecting --ask and CONFIG_PROTECT). If + --autounmask behavior is not desired as the default behavior, then it can + be disabled by adding --autounmask=n to the EMERGE_DEFAULT_OPTS variable + in make.conf. Refer to the emerge(1) man page for more information. Also, + see the NEWS file for other new features included in portage-2.1.10. + Bug #358927 tracks all bugs fixed since portage-2.1.9.42. + + 06 Jun 2011; Zac Medico -portage-2.1.9.49.ebuild, + -portage-2.2.0_alpha33.ebuild: + Remove old versions. + + 27 May 2011; Zac Medico -portage-2.2.0_alpha34.ebuild, + -portage-2.2.0_alpha35.ebuild, -portage-2.2.0_alpha36.ebuild: + Remove old versions. + +*portage-2.2.0_alpha37 (27 May 2011) + + 27 May 2011; Zac Medico +portage-2.2.0_alpha37.ebuild: + 2.2.0_alpha37 version bump. This includes all of the fixes in + portage-2.1.9.50 and also fixes bug #368725 (outdated deps of installed + packages use for calculations in some cases). Bug #210077 tracks all bugs + fixed since portage-2.1.x. + +*portage-2.1.9.50 (27 May 2011) + + 27 May 2011; Zac Medico +portage-2.1.9.50.ebuild: + 2.1.9.50 version bump. This fixes bug #142508 (make etc-update clear + term when appropriate), bug #288597 (FEATURES=distcc-pump), and also fixes + some cases related to bug #364681 (recognize new-style virtual/libc). + Bug #358927 tracks all bugs fixed since portage-2.1.9.42. + +*portage-2.2.0_alpha36 (25 May 2011) + + 25 May 2011; Zac Medico +portage-2.2.0_alpha36.ebuild: + 2.2.0_alpha36 version bump. This fixes bug #368429 (invalid USE change + suggestions triggered when emerge --autounmask fails). Bug #210077 tracks + all bugs fixed since portage-2.1.x. + +*portage-2.2.0_alpha35 (23 May 2011) + + 23 May 2011; Zac Medico +portage-2.2.0_alpha35.ebuild: + 2.2.0_alpha35 version bump. This fixes bug #288597 (FEATURES=distcc-pump). + It also includes some subtle merge order optimizations and fixes a possible + KeyError in the preserve-libs code from bug #286714. Bug #210077 tracks all + bugs fixed since portage-2.1.x. + +*portage-2.2.0_alpha34 (18 May 2011) + + 18 May 2011; Zac Medico +portage-2.2.0_alpha34.ebuild: + 2.2.0_alpha34 version bump. This fixes bug #142508 (make etc-update clear + term when appropriate), bug #286714 (preserve-libs support for packages + uninstalled and not replaced), and bug #345775 (--autounmask-write option + for editing config files). Also, emerge --autounmask now handles packages + that are masked by missing keywords or package.mask. Since all of the + feautures of app-portage/autounmask are implemented, emerge --autounmask + is now enabled by default. Set EMERGE_DEFAULT_OPTS="--autounmask=n" in + make.conf if you'd like to disable it. Bug #210077 tracks all bugs fixed + since portage-2.1.x. + + 18 May 2011; Zac Medico -portage-2.1.9.48.ebuild, + -portage-2.2.0_alpha30.ebuild, -portage-2.2.0_alpha32.ebuild: + Remove old versions. + +*portage-2.2.0_alpha33 (12 May 2011) + + 12 May 2011; Zac Medico +portage-2.2.0_alpha33.ebuild: + 2.2.0_alpha33 version bump. This includes all of the fixes in + portage-2.1.9.49. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.9.49 (12 May 2011) + + 12 May 2011; Zac Medico +portage-2.1.9.49.ebuild: + 2.1.9.49 version bump. This fixes bug #366939 (extract binpkg + environment.bz2 for pkg_pretend). Bug #358927 tracks all bugs fixed + since portage-2.1.9.42. + + 11 May 2011; Zac Medico -portage-2.1.9.46.ebuild, + -portage-2.1.9.47.ebuild, -portage-2.2.0_alpha31.ebuild: + Remove old versions. + +*portage-2.2.0_alpha32 (08 May 2011) + + 08 May 2011; Zac Medico +portage-2.2.0_alpha32.ebuild: + 2.2.0_alpha32 version bump. This fixes bug #366061 (preserved-libs not + garbage collected when appropriate), and includes all of the fixes in + portage-2.1.9.48. This also includes support for FEATURES=parallel-install, + which can greatly improve performance when installing large numbers of + binary packages. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.9.48 (08 May 2011) + + 08 May 2011; Zac Medico +portage-2.1.9.48.ebuild: + 2.1.9.48 version bump. This fixes a regression in 2.1.9.47 which causes + "AttributeError: 'vardbapi' object has no attribute 'match_pkgs'" errors + with emerge --resume and --keep-going. Bug #358927 tracks all bugs fixed + since portage-2.1.9.42. + + 06 May 2011; Zac Medico portage-9999.ebuild: + Migrate to git-2.eclass. + +*portage-2.2.0_alpha31 (05 May 2011) + + 05 May 2011; Zac Medico +portage-2.2.0_alpha31.ebuild: + 2.2.0_alpha31 version bump. This includes all of the fixes in + portage-2.1.9.46. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.9.47 (05 May 2011) + + 05 May 2011; Zac Medico +portage-2.1.9.47.ebuild: + 2.1.9.47 version bump. This fixes bug #363137 (add --misspell-suggesions + option), bug #364035 (breakage in ebuild(1) FEATURES override), bug #364467 + (handle gcc-4.6 warnings), bug #364673 (support new-style virtuals in + emerge --info), bug #364681 (recognize new-style virtual/libc, bug #364701 + (make --autounmask recognize use.mask/force), bug #365319 (allow emerge.log + permissions adjustment), bug #365439 (add helpers for variable settings in + bashrc), and bug #365505 (make repoman warn about old-style virtual PROVIDE + settings for GLEP 37). Bug #358927 tracks all bugs fixed since 2.1.9.42. + + 05 May 2011; Zac Medico -portage-2.1.8.3.ebuild, + -portage-2.1.9.25.ebuild: + Remove old versions. + + 05 May 2011; Zac Medico ChangeLog: + Prune old ChangeLog entries. + + 21 Apr 2011; Zac Medico -portage-2.1.9.45.ebuild, + -portage-2.2.0_alpha28.ebuild, -portage-2.2.0_alpha29.ebuild: + Remove old versions. + +*portage-2.2.0_alpha30 (14 Apr 2011) + + 14 Apr 2011; Zac Medico +portage-2.2.0_alpha30.ebuild: + 2.2.0_alpha30 version bump. This includes all of the fixes in + portage-2.1.9.46. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.9.46 (14 Apr 2011) + + 14 Apr 2011; Zac Medico +portage-2.1.9.46.ebuild: + 2.1.9.46 version bump. This fixes bug #361257 (fix "GNU info directory" + message for --quiet), bug #361463 (fix fetch restriction display for + PORTAGE_RO_DISTDIRS), and bug #363073 (InvalidDependString triggered + in extract_affecting_use by EAPI 4 USE dep defaults). Bug #358927 + tracks all bugs fixed since 2.1.9.42. + + 09 Apr 2011; Zac Medico portage-2.1.6.7.ebuild, + portage-2.1.6.13.ebuild, portage-2.1.8.3.ebuild, portage-2.1.9.25.ebuild, + portage-2.1.9.42.ebuild, portage-2.1.9.45.ebuild, + portage-2.2.0_alpha28.ebuild, portage-2.2.0_alpha29.ebuild, + portage-9999.ebuild: + Bug #358847 - Remove virtual/portage PROVIDE since it's been replaced by + the virtual/package-manager new-style virtual ebuild (GLEP 37). + + 05 Apr 2011; Zac Medico -portage-2.1.9.43.ebuild, + -portage-2.1.9.44.ebuild, -portage-2.2.0_alpha26.ebuild, + -portage-2.2.0_alpha27.ebuild: + Remove old versions. + +*portage-2.2.0_alpha29 (27 Mar 2011) + + 27 Mar 2011; Zac Medico +portage-2.2.0_alpha29.ebuild: + 2.2.0_alpha29 version bump. This includes all of the fixes in + portage-2.1.9.45. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.9.45 (27 Mar 2011) + + 27 Mar 2011; Zac Medico +portage-2.1.9.45.ebuild: + 2.1.9.45 version bump. This fixes bug #359675 (UnicodeEncodeError triggered + by UnsupportedAPIException during unmerge), bug #359681 (fix whitespace in + CONFIGURATION FILES update message), and bug #360233 (support --ask=n). + Bug #358927 tracks all bugs fixed since 2.1.9.42. + + 21 Mar 2011; Zac Medico portage-2.1.6.7.ebuild, + portage-2.1.6.13.ebuild, portage-2.1.8.3.ebuild, portage-2.1.9.25.ebuild, + portage-2.1.9.42.ebuild, portage-2.1.9.43.ebuild, portage-2.1.9.44.ebuild, + portage-2.2.0_alpha26.ebuild, portage-2.2.0_alpha27.ebuild, + portage-2.2.0_alpha28.ebuild, portage-9999.ebuild: + Bug #359731 - Die early if get_libdir fails. + +*portage-2.2.0_alpha28 (18 Mar 2011) + + 18 Mar 2011; Zac Medico +portage-2.2.0_alpha28.ebuild: + 2.2.0_alpha28 version bump. This includes all of the fixes in + portage-2.1.9.44. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.9.44 (18 Mar 2011) + + 18 Mar 2011; Zac Medico +portage-2.1.9.44.ebuild: + 2.1.9.44 version bump. This fixes bug #359273 (make.conf.5 spelling + correction for "direcory"). It also includes various fixes for emerge + Ctrl-C/SIGINT/SIGTERM handling, for some cases in which it would hang + or crash instead of exiting properly. Bug #358927 tracks all bugs + fixed since 2.1.9.42. + + 17 Mar 2011; Raúl Porcel portage-2.1.9.42.ebuild: + alpha/ia64/m68k/s390/sh/x86 stable wrt #358009 + + 14 Mar 2011; Michael Weber portage-2.1.9.42.ebuild: + arm/sparc stable (bug 358009) + +*portage-2.2.0_alpha27 (14 Mar 2011) + + 14 Mar 2011; Zac Medico +portage-2.2.0_alpha27.ebuild: + 2.2.0_alpha27 version bump. This includes all of the fixes in + portage-2.1.9.43. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.9.43 (14 Mar 2011) + + 14 Mar 2011; Zac Medico +portage-2.1.9.43.ebuild: + 2.1.9.43 version bump. This fixes bug #346899 (allow noexec /var/tmp mount + with default config), bug #357009 (disallow uninstall of default python + interpreter), bug #357093 (don't output \b to non-tty), bug #357297 (fix + whitespace handling for PORTDIR_OVERLAY), and bug #357581 (fix confusing + message aux_get error when eclass directory is missing). Bug #358927 tracks + all bugs fixed since 2.1.9.42. + + 11 Mar 2011; Jeroen Roovers portage-2.1.9.42.ebuild: + Stable for HPPA (bug #358009). + + 09 Mar 2011; Kacper Kowalik portage-2.1.9.42.ebuild: + ppc/ppc64 stable wrt #358009 + + 09 Mar 2011; Markos Chandras portage-2.1.9.42.ebuild: + Stable on amd64 wrt bug #358009 + + 05 Mar 2011; Zac Medico -portage-2.1.9.41.ebuild, + -portage-2.2.0_alpha25.ebuild: + Remove old versions. + +*portage-2.2.0_alpha26 (02 Mar 2011) + + 02 Mar 2011; Zac Medico +portage-2.2.0_alpha26.ebuild: + 2.2.0_alpha26 version bump. This includes all of the fixes in + portage-2.1.9.42. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.9.42 (02 Mar 2011) + + 02 Mar 2011; Zac Medico +portage-2.1.9.42.ebuild: + 2.1.9.42 version bump. This fixes bug #262365 (repoman portage.internal + warning for ecompress, ecompressdir, prepall, prepalldocs, and preplib), + bug #356375 (fix emerge --sync to handle properly handle hardcoded IPv6 + address in SYNC), bug #356461 (dodoc -r collapses directory structure), + and bug #356555 (make unmatched argument package name search case- + insensitive). There's also a fix for the repoman variable.usedwithhelpers + check, to prevent false matches inside quoted strings. Bug #349307 tracks + all bugs fixed since 2.1.9.25. + + 01 Mar 2011; Zac Medico -portage-2.1.9.40.ebuild, + -portage-2.2.0_alpha24.ebuild: + Remove old versions. + + 25 Feb 2011; Zac Medico portage-9999.ebuild: + Fix broken doexe call with all symlinks. + +*portage-2.2.0_alpha25 (22 Feb 2011) + + 22 Feb 2011; Zac Medico +portage-2.2.0_alpha25.ebuild: + 2.2.0_alpha25 version bump. This includes all of the fixes in + portage-2.1.9.41. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.9.41 (22 Feb 2011) + + 22 Feb 2011; Zac Medico +portage-2.1.9.41.ebuild: + 2.1.9.41 version bump. This fixes bug #269534 (omit 'null' category from + umatched atoms for --unmerge), bug #354787 (suggest --depclean after world + updates), bug #355447 (support post_emerge hook), bug #355621 (repoman + variable.usedwithhelpers false positives), bug #355629 (REQUIRED_USE + malformed syntax message for missing IUSE), bug #355635 (make EAPI 4 + default_src_install conform to PMS for empty DOC setting), and bug #355803 + (fix plurality of emerge 'config files need updating' message). + Bug #349307 tracks all bugs fixed since 2.1.9.25. + + 22 Feb 2011; Zac Medico -portage-2.1.9.35.ebuild, + -portage-2.1.9.39.ebuild, -portage-2.2.0_alpha19.ebuild, + -portage-2.2.0_alpha23.ebuild: + Remove old versions. + +*portage-2.2.0_alpha24 (15 Feb 2011) + + 15 Feb 2011; Zac Medico +portage-2.2.0_alpha24.ebuild: + 2.2.0_alpha24 version bump. This includes all of the fixes in + portage-2.1.9.40. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.9.40 (15 Feb 2011) + + 15 Feb 2011; Zac Medico +portage-2.1.9.40.ebuild: + 2.1.9.40 version bump. This fixes bug #353933 (distorted virtual atoms in + unsatisfied dep messages), bug #354387 (ebuild.1 man page references + BUILD_PREFIX instead of PORTAGE_TMPDIR), bug #354437 (cross-reference + --newuse and --reinstall=changed-use), bug #354441 (regression causing + unnecessary reinstall of binary packages), bug #354685 (repoman + variable.usedwithhelpers errors triggered by comments), bug #354687 + (egencache -update-use-local-desc error handling tweaks), and bug #354747 + (unsatisfied dep messages should show packages scheduled for merge when + possible). Bug #349307 tracks all bugs fixed since 2.1.9.25. + +*portage-2.2.0_alpha23 (08 Feb 2011) + + 08 Feb 2011; Zac Medico -portage-2.2.0_alpha22.ebuild, + +portage-2.2.0_alpha23.ebuild: + 2.2.0_alpha23 version bump. This includes all of the fixes in + portage-2.1.9.39. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.9.39 (08 Feb 2011) + + 08 Feb 2011; Zac Medico -portage-2.1.9.38.ebuild, + +portage-2.1.9.39.ebuild: + 2.1.9.39 version bump. This fixes bug #354057 (test failure involving + ENODATA on FreeBSD), bug #354137 (clarify emerge man page description + of package arguments), and bug #354141 (support paths starting with + ../ for emerge package arguments). This also fixes a regression in + 2.1.9.38 which can cause emerge to crash with an AttributeError. + Bug #349307 tracks all bugs fixed since 2.1.9.25. + + 08 Feb 2011; Zac Medico portage-9999.ebuild: + Prefer python3 if both python2 and python3 are enabled. + + 08 Feb 2011; Zac Medico portage-9999.ebuild, + metadata.xml: + Support USE=python2, for cases in which portage dependencies such as + libselinux only work with python2. + +*portage-2.2.0_alpha22 (08 Feb 2011) + + 08 Feb 2011; Zac Medico +portage-2.2.0_alpha22.ebuild: + 2.2.0_alpha22 version bump. This includes all of the fixes in + portage-2.1.9.38. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.9.38 (08 Feb 2011) + + 08 Feb 2011; Zac Medico +portage-2.1.9.38.ebuild: + 2.1.9.38 version bump. This fixes bug #354003 (equery crashes with + InvalidDependString triggered by EAPI 4 USE dep default atoms). + Bug #349307 tracks all bugs fixed since 2.1.9.25. + + 08 Feb 2011; Zac Medico -portage-2.1.9.36.ebuild, + -portage-2.1.9.37.ebuild, -portage-2.2.0_alpha20.ebuild, + -portage-2.2.0_alpha21.ebuild: + Remove old versions. + +*portage-2.2.0_alpha21 (07 Feb 2011) + + 07 Feb 2011; Zac Medico +portage-2.2.0_alpha21.ebuild: + 2.2.0_alpha21 version bump. This includes all of the fixes in + portage-2.1.9.37. + +*portage-2.1.9.37 (07 Feb 2011) + + 07 Feb 2011; Zac Medico +portage-2.1.9.37.ebuild: + 2.1.9.37 version bump. This fixes bug #353836 (test failure without + python[sqlite]) and bug #353897 (fix default_src_test to work with + EAPI 4). Bug #349307 tracks all bugs fixed since 2.1.9.25. + + 06 Feb 2011; Zac Medico portage-2.1.8.3.ebuild, + portage-2.1.9.25.ebuild, portage-2.1.9.35.ebuild, portage-2.1.9.36.ebuild, + portage-2.2.0_alpha19.ebuild, portage-2.2.0_alpha20.ebuild, + portage-9999.ebuild: + Update libselinux deps to require USE=python. + +*portage-2.2.0_alpha20 (05 Feb 2011) + + 05 Feb 2011; Zac Medico +portage-2.2.0_alpha20.ebuild: + 2.2.0_alpha20 version bump. This includes all of the fixes in + portage-2.1.9.36, and also includes a fix for a backtracking regression + in the master branch since 2.2_rc92. Bug #210077 tracks all bugs fixed + since portage-2.1.x. + +*portage-2.1.9.36 (05 Feb 2011) + + 05 Feb 2011; Zac Medico +portage-2.1.9.36.ebuild: + 2.1.9.36 version bump. This fixes bug #353234 (reduce noise in REQUIRED_USE + messages), bug #353239 (regression in SIGINT handling during fetch), + bug #353443 (REQUIRED_USE triggers erroneous warings about world file), + and bug #353613 (dropped dependencies in rare cases). Bug #349307 tracks + all bugs fixed since 2.1.9.25. + + 29 Jan 2011; Zac Medico -portage-2.1.9.33.ebuild, + -portage-2.1.9.34.ebuild, -portage-2.2.0_alpha17.ebuild, + -portage-2.2.0_alpha18.ebuild: + Remove old versions. + +*portage-2.2.0_alpha19 (22 Jan 2011) + + 22 Jan 2011; Zac Medico +portage-2.2.0_alpha19.ebuild: + 2.2.0_alpha19 version bump. This includes all of the fixes in + portage-2.1.9.35. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.9.35 (22 Jan 2011) + + 22 Jan 2011; Zac Medico +portage-2.1.9.35.ebuild: + 2.1.9.35 version bump. This fixes bug #287648 (logging via pty with + python3). Bug #349307 tracks all bugs fixed since 2.1.9.25. + +*portage-2.2.0_alpha18 (19 Jan 2011) + + 19 Jan 2011; Zac Medico +portage-2.2.0_alpha18.ebuild: + 2.2.0_alpha18 version bump. This includes all of the fixes in + portage-2.1.9.34. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.9.34 (19 Jan 2011) + + 19 Jan 2011; Zac Medico +portage-2.1.9.34.ebuild: + 2.1.9.34 version bump. This fixes bug #315603 (restrict default + archive-dir permissions), bug #349070 (document/initialize FFLAGS and + FCFLAGS), bug #351505 ($A undefined for pkg_nofetch), and bug #351828 + (regression in || dep handling when installed package is masked). + Bug #349307 tracks all bugs fixed since 2.1.9.25. + + 19 Jan 2011; Zac Medico -portage-2.1.9.24.ebuild, + -portage-2.1.9.31.ebuild, -portage-2.2.0_alpha15.ebuild: + Remove old versions. + +*portage-2.2.0_alpha17 (18 Jan 2011) + + 18 Jan 2011; Zac Medico -portage-2.2.0_alpha16.ebuild, + +portage-2.2.0_alpha17.ebuild: + 2.2.0_alpha17 version bump. This includes all of the fixes in + portage-2.1.9.33. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.9.33 (18 Jan 2011) + + 18 Jan 2011; Zac Medico -portage-2.1.9.32.ebuild, + +portage-2.1.9.33.ebuild: + 2.1.9.33 version bump. This completes the fix for bug #351505 (Ensure $A is + defined for pkg_nofetch) which was only partially fixed in the previous + release. Bug #349307 tracks all bugs fixed since 2.1.9.25. + +*portage-2.2.0_alpha16 (18 Jan 2011) + + 18 Jan 2011; Zac Medico +portage-2.2.0_alpha16.ebuild: + 2.2.0_alpha16 version bump. This includes all of the fixes in + portage-2.1.9.32. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.9.32 (18 Jan 2011) + + 18 Jan 2011; Zac Medico +portage-2.1.9.32.ebuild: + 2.1.9.32 version bump. This fixes bug #351505 (Ensure $A is defined for + pkg_nofetch) and bug #351814 (handle malformed sym entries in old + CONTENTS). Bug #349307 tracks all bugs fixed since 2.1.9.25. + +*portage-2.2.0_alpha15 (12 Jan 2011) + + 12 Jan 2011; Zac Medico +portage-2.2.0_alpha15.ebuild: + 2.2.0_alpha15 version bump. This includes all of the fixes in + portage-2.1.9.31. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.9.31 (12 Jan 2011) + + 12 Jan 2011; Zac Medico +portage-2.1.9.31.ebuild: + 2.1.9.31 version bump. This fixes bug #211529 (econf looks in configure + --help output for disable-dependency-tracking in EAPI 4). Bug #349307 + tracks all bugs fixed since 2.1.9.25. + + 12 Jan 2011; Zac Medico -portage-2.1.9.29.ebuild, + -portage-2.1.9.30.ebuild, -portage-2.2.0_alpha13.ebuild, + -portage-2.2.0_alpha14.ebuild: + Remove old versions. + +*portage-2.2.0_alpha14 (07 Jan 2011) + + 07 Jan 2011; Zac Medico +portage-2.2.0_alpha14.ebuild: + 2.2.0_alpha14 version bump. This includes all of the fixes in + portage-2.1.9.30. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.9.30 (07 Jan 2011) + + 07 Jan 2011; Zac Medico +portage-2.1.9.30.ebuild: + 2.1.9.30 version bump. This adds support for USE flag display when + REQUIRED_USE is unsatisfied, and emerge-webrsync support xz snapshots. + Bug #349307 tracks all bugs fixed since 2.1.9.25. + + 07 Jan 2011; Zac Medico -portage-2.1.9.26.ebuild, + -portage-2.1.9.27.ebuild, -portage-2.1.9.28.ebuild, + -portage-2.2.0_alpha9.ebuild, -portage-2.2.0_alpha10.ebuild, + -portage-2.2.0_alpha11.ebuild, -portage-2.2.0_alpha12.ebuild: + Remove old versions. + +*portage-2.2.0_alpha13 (05 Jan 2011) + + 05 Jan 2011; Zac Medico +portage-2.2.0_alpha13.ebuild: + 2.2.0_alpha13 version bump. This includes all of the fixes in + portage-2.1.9.29. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.9.29 (05 Jan 2011) + + 05 Jan 2011; Zac Medico +portage-2.1.9.29.ebuild: + 2.1.9.29 version bump. This fixes bug #350254 (prevent missed updates + due to REQUIRED_USE) and bug 350488 (regression in || dep handling for + masked installed packages). Bug #349307 tracks all bugs fixed since + 2.1.9.25. + +*portage-2.2.0_alpha12 (03 Jan 2011) + + 03 Jan 2011; Zac Medico +portage-2.2.0_alpha12.ebuild: + 2.2.0_alpha12 version bump. This includes all of the fixes in + portage-2.1.9.28. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.9.28 (03 Jan 2011) + + 03 Jan 2011; Zac Medico +portage-2.1.9.28.ebuild: + 2.1.9.28 version bump. This fixes bug #350285 (depclean newer slots + masked by keywords), bug #350379 (fix prefix in elog syslog messages), + and bug #350385 (newins broken in EAPI 4). This also includes + documentation for bug #322049 (use_with/enable empty third arg handling + in EAPI 4). Bug #349307 tracks all bugs fixed since 2.1.9.25. + + 02 Jan 2011; Raúl Porcel portage-2.1.9.25.ebuild: + alpha/ia64/m68k/s390/sh/sparc stable wrt #349098 + +*portage-2.2.0_alpha11 (31 Dec 2010) + + 31 Dec 2010; Zac Medico +portage-2.2.0_alpha11.ebuild: + 2.2.0_alpha11 version bump. This includes all of the fixes in + portage-2.1.9.27. Bug #210077 tracks all bugs fixed since portage-2.1.x. + +*portage-2.1.9.27 (31 Dec 2010) + + 31 Dec 2010; Zac Medico +portage-2.1.9.27.ebuild: + 2.1.9.27 version bump. This fixes bug #289486 (prevent SIGQUIT + interference with sandbox), bug #338744 (endless broken pipe loop when + unpacking zip files), bug #348864 (bail out if Manifest is missing + distfiles digests), bug #349757 (handle EPERM when trying to unmerge a + directory that is a mount point), bug #350045 (doins -r fails for some + file names), and bug #53607 (anydbm cache module fails with multiple + processes). This release also includes support for EAPI 4, which has + been recently approved by the Gentoo Council. Refer to the PMS EAPI + Cheat Sheet, portage's html docs installed with USE=doc, or + `man 5 ebuild` for more info about EAPI 4. Bug #349307 tracks all bugs + fixed since 2.1.9.25. + + 31 Dec 2010; Zac Medico -portage-2.2.0_alpha6.ebuild, + -portage-2.2.0_alpha7.ebuild, -portage-2.2.0_alpha8.ebuild: + Remove old versions. + + 28 Dec 2010; Markus Meier portage-2.1.9.25.ebuild: + arm stable, bug #349098 + + 27 Dec 2010; Brent Baude portage-2.1.9.25.ebuild: + Marking portage-2.1.9.25 ppc64 for bug 349098 + + 27 Dec 2010; Brent Baude portage-2.1.9.24.ebuild: + Marking portage-2.1.9.24 ppc64 for bug 346819 + + 27 Dec 2010; Brent Baude portage-2.1.9.24.ebuild: + Marking portage-2.1.9.24 ppc64 for bug 346819 + + 24 Dec 2010; Jeroen Roovers portage-2.1.9.25.ebuild: + Stable for HPPA PPC (bug #349098). + +*portage-2.2.0_alpha10 (21 Dec 2010) + + 21 Dec 2010; Zac Medico +portage-2.2.0_alpha10.ebuild: + 2.2.0_alpha10 version bump. This fixes bug #349273 (backward compatibility + api fix for doebuild) and includes various other minor fixes that are also + included in portage-2.1.9.26. Bug #210077 tracks all bugs fixed since + portage-2.1.x. + +*portage-2.1.9.26 (21 Dec 2010) + + 21 Dec 2010; Zac Medico +portage-2.1.9.26.ebuild: + 2.1.9.26 version bump. This fixes bug #338509 (quickpkg creates broken + 0 byte hardlinks), bug #339670 (avoid ELOOP due to circular symlink in + $T), bug #346847 (broken QA_PREBUILT to QA_EXECSTACK mapping), bug #348460 + (fix regression in xterm title reset when PROMPT_COMMAND is unset), and + bug #348561 (etc-update option to save example config). Bug #349307 tracks + all bugs fixed since 2.1.9.25. + + 20 Dec 2010; Pawel Hajdan jr + portage-2.1.9.25.ebuild: + x86 stable wrt bug #349098 + + 20 Dec 2010; Markos Chandras portage-2.1.9.25.ebuild: + Stable on amd64 wrt bug #349098 + +*portage-2.2.0_alpha9 (16 Dec 2010) + + 16 Dec 2010; Zac Medico +portage-2.2.0_alpha9.ebuild: + 2.2.0_alpha9 version bump. This fixes bug #339670 (avoid ELOOP due to + circular symlink in $T) and bug #348389 (AttributeError triggered by + SLOT conflict). Bug #210077 tracks all bugs fixed since 2.1.x. + +*portage-2.2.0_alpha8 (13 Dec 2010) + + 13 Dec 2010; Zac Medico +portage-2.2.0_alpha8.ebuild: + 2.2.0_alpha8 version bump. This fixes bug #338509 (quickpkg creates broken + 0 byte hardlinks), bug #348460 (fix regression in xterm title reset when + PROMPT_COMMAND is unset), and bug #348561 (etc-update option to save + example config). Bug #210077 tracks all bugs fixed since 2.1.x. + + 13 Dec 2010; Zac Medico -portage-2.2.0_alpha4.ebuild, + -portage-2.2.0_alpha5.ebuild: + Remove old versions. + +*portage-2.2.0_alpha7 (06 Dec 2010) + + 06 Dec 2010; Zac Medico +portage-2.2.0_alpha7.ebuild: + 2.2.0_alpha7 version bump. This adds MERGE_TYPE support to EAPI 4_pre1 + (bug #347351), fixes QA_PREBUILT to QA_EXECSTACK mapping (bug #346847), + and has various minor fixes for EAPI 4_pre1. Bug #210077 tracks all bugs + fixed since 2.1.x. + + 28 Nov 2010; Zac Medico -portage-2.1.7.17.ebuild, + -portage-2.2_rc67.ebuild, -portage-2.2.0_alpha3.ebuild: + Remove old versions. + +*portage-2.2.0_alpha6 (27 Nov 2010) + + 27 Nov 2010; Zac Medico +portage-2.2.0_alpha6.ebuild: + 2.2.0_alpha6 version bump. This includes all of the fixes in + portage-2.1.9.25. Bug #210077 tracks all bugs fixed since 2.1.x. + +*portage-2.1.9.25 (27 Nov 2010) + + 27 Nov 2010; Zac Medico +portage-2.1.9.25.ebuild: + 2.1.9.25 version bump. This fixes bug #315421 (proxy settings don't work + sometimes), bug #344845 (regenworld AttributeError), bug #345097 (slot + conflict display shows malformed atoms), bug #345289 (^C traceback), + bug #345979 (broken handling of USE deps for masked USE flags), and + bug #346349 (accept 'y' for emerge options that accept 'n). Bug #346909 + tracks all bugs fixed since 2.1.9.24. + +*portage-2.1.8.3 (10 Mar 2010) + + 10 Mar 2010; Zac Medico +portage-2.1.8.3.ebuild: + 2.1.8.3 version bump. This fixes bug #303567 (generate implicit libc + dependencies) and also fixes emerge crash due to ImportError when + downgrading portage. Bug #307597 tracks all bugs fixed since + portage-2.1.7.x. + +*portage-2.1.7.17 (29 Jan 2010) + + 29 Jan 2010; Zac Medico +portage-2.1.7.17.ebuild: + 2.1.7.17 bump. This fixes bug #269225 (repoman check for virtual HOMEPAGE + and LICENSE), bug #296700 (EAPI 3 support), bug #298310 (AttributeError + when generating manifest on selinux systems), bug #299248 (fix doins to + fail in more cases), bug #300378 (don't export FILESDIR during depend + phase), bug #300388 (handle TERM=dumb), bug #300744 (make quickpkg exclude + CONTENTS from xpak), bug #301926 (ValueError triggered by corrupt manifest), + and bug #302005 (remove broken __main__ code from sets module). Bug #302803 + tracks all bugs fixed since portage-2.1.7.16. Note that this is the first + release with support for EAPI 3. + +*portage-2.1.7.16 (24 Dec 2009) + + 24 Dec 2009; Zac Medico +portage-2.1.7.16.ebuild: + 2.1.7.16 bump. This fixes bug #297364 (make ebuild.sh interfere with PATH + less), bug #297541 (repoman upstream.workaround check for no-as-needed), + and bug #297933 (filter BASHOPTS for bash-4.1). Bug #288499 tracks all + bugs fixed since 2.1.6.x. + +*portage-2.1.6.13 (03 May 2009) + + 03 May 2009; Zac Medico +portage-2.1.6.13.ebuild: + 2.1.6.13 bump. This fixes bug #268398 (document econf automatic die) + and bug #267104 (handle insufficient space interaction with userfetch). + Bug #268228 tracks all bugs fixed since 2.1.6.11. diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/Manifest b/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/Manifest new file mode 100644 index 0000000000..0ee962c154 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/Manifest @@ -0,0 +1,29 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +AUX README.RESCUE 137 SHA256 69bea0c755eab59b6b4d90838b8551744f0b0c8eeac170b1cd13a71ee83f9ac4 SHA512 dba0f0d6d4cd140e636cc70dfb7bdb298e2f2fb040bc07b0874cac994bdbabd26bfd9361d85a0f8b9a92a185281e4901606b9e4f563afdc8867341bbe6af1cb0 WHIRLPOOL 713fcc790442999d56e13efaf536fec9954dadeda680b3642d0358311332096ddedf8b55697bd1ca620d84f0dc7d025ff7931e086c74c1f5032be72dca2ff8f5 +DIST portage-2.1.11.31.tar.bz2 848585 SHA256 3013e9ba1fc3f87a5fedff8e5a1d2b36d6a9e06538fdebee6ab7b4cf61d273ce SHA512 12222ecb8e3f3b239c7616568475d87f2ef705b83cb72311c0d70df49c7eef1f1bb4e898afb6f17023b40077a80f9ae26129aef0a52f9f16e22140e5ea8d8522 WHIRLPOOL b3d3b0fc90476c6bd6c41a1dea17999ca21598db547c8e691fdd378e9bbacb991954f03378a033755008d7bc27d15b2505f62e6408ec914e840ead4edc0a5c9a +DIST portage-2.1.11.50.tar.bz2 895469 SHA256 39f61e4f2256cbc9f7b6e5da9d6eeb43ff16fd674d7304a7b280ff84d8835110 SHA512 4d313e62ee250b852950ebfd2bb8edf465f56d8e6b9f473b0c55b3856755ad4cb6c6875ab067ca2978c4a0cc75ad6583dc14425b5b4fcf096e72797bc5271a8c WHIRLPOOL cf0b2212eda9c78a8e57f37570dc87a0af0f11ea7b9b79938e7ac78b2196283880571e8bd000c35d665e5188500064aa5065dc7b5a2d0de21c9b8e4d54a2bfec +DIST portage-2.1.6.7.patch.bz2 50118 SHA256 5f0605b51a24d23703330b040d2f7154322284db3e0cefa7499002ff1fa733c0 SHA512 dd2acc1d436cad77cfc83c4dec79316763c1fb88d61b7702e8e47e6f31b2b9fe49e8a4cf4a947614a2acd6db2ef080ed8b4ae5fce9d9be29d7e218a0ec1576c0 WHIRLPOOL 050f923249fde7c4774a2a8a944889e4270a89b00441f1923c01ab0be38f107503e018d7ab7a7f42615e7e375f0f6c0eb3bdbf3ff4ce1ce226957238a729b1ee +DIST portage-2.1.6.7_p1.patch.bz2 4741 SHA256 ddaae2ad8c01e6477bfe22e23a4da57eb9d079a27a17a08385d56fe2c49eec30 SHA512 39058d815827b340787d813515ed4fb8c52c4fb0caa12ae70c8a9a97b9ba16c2bf4177190cb7d1c508055ce8a7aaa390ba9b31642c7d74bfb4a14d729e720617 WHIRLPOOL 8eab9574ed2e6cabac593d93f8b6ff71465c01376e7eec4cf357c336b5ed3d4f3fb3521991148ba4e34ba00c56bec5534c98311167c03866812277a8d88b0494 +DIST portage-2.1.6.tar.bz2 518771 SHA256 b1c507445b3858449c861568f477e1cfab8b2326ded906b852c5193fb3839647 SHA512 d035f84601802ecaea3c0edea037a783fec743733bd40895eb5bb8a220449eb24cf1e2623cbca2e378197caba63a833d8cc54f1e49d886266307288b0adcfbdc WHIRLPOOL 25b6a6e3810f428c630ec7a6dc3cf2cfbe6bfdf276553786e1436b2630532ab442186e427bc75f249a224c5171b508a92303ce352b07be1a8a4d805c568ec10f +DIST portage-2.2.0_alpha142.tar.bz2 848765 SHA256 c2fb4499fbf747ad11a297f2ab0340f6af7958868cc72530627dd46596e88ff5 SHA512 f0fb016503d1e7998cc295c07ea83d4210075ea3d8c9421e2e9fe4256dde4138a073c60c6f11dc1dd0b3a362404810dea84ee878eec8a0c74bd43ef8e3741d2c WHIRLPOOL 34f1f5ebd2f18e52b1d441d763fda335cdbcc879aa89e36ca5a8e344567c8ab30d7a88864f97a332ba4b2a9d226eae89a41302e73ebe7eb2d33d2a9a0a3211be +DIST portage-2.2.0_alpha160.tar.bz2 895123 SHA256 25741e1a0cb2169008a20a3eda99666223694f1a046b3ed26ef43246f77acc84 SHA512 bfaf840c56d088a57211fcb6a7e78279f9980078dc0d199828a6cd663fe3801b76a0375ba4cfe00c4455fe822a40d104b3424608751d85f577824cdc03605b35 WHIRLPOOL e3c4a8f9a484e42c30319fe842807557e2953c4bf6c8849a639b6b908044f84f7283f18dd260cd3d8ce5c8ef1f037fa51b67d08c062b76f8267d76ab83f2f6d0 +DIST portage-2.2.0_alpha161.patch.bz2 2850 SHA256 77e949bb0b3c6ef10839ec9ae5f29477e88211a35964b75459ec4fa363a1ced5 SHA512 656181fe02cd983e647b4dbe615718e62284cbccf118f98cb7bff02f704d4d3f7fd24d4f161eb1d34ceab3d4e3ac233743a8d1ab33312517de8498c8f3417eb7 WHIRLPOOL 3127c9347a006ac393a2ffd1ebe8c18c3363fec5ca3114a99375c9446daf5737fbdc6d9e813ce95d75851b954c40cf658f0fd81800560cc2b5c2dd6d4c75a969 +DIST portage-man-pl-2.1.2.tar.bz2 53893 SHA256 960eaa7c6f3a2af44bdc665266a8e884628a562373cc477d301597ecc5ef961f SHA512 5f5c8dd1559048546633b1e7291ff8c0f5d637595f1a4c98405424b08c30c089fc9359e0214f78fbe358754f20d327794f4692b9b67639585c29b755975ee853 WHIRLPOOL 756e267b84077501d976f46fa448cda5368cd52aeca6ec43d109c81fe8e2364e0cd0f35630d68a4186c70e3b440b7c870b86ac7ef83cc0afa43e10f9f8e1f422 +EBUILD portage-2.1.11.31.ebuild 9491 SHA256 9863b8e6dde0e56fa233e173681627b0829ad3a435ac1baa9f83009c0674261d SHA512 507850eeca468753feeb90c422d182491246fd6f7aae7ef1a250464d1e0cc03385258e07cbf0d3f142db2d95ea23d373739c30fc640793c10e3e9b472f5e0bb7 WHIRLPOOL aff26d5e9fdd8459ee2a217bab8c8fb2210428ad8ac5418bfcfb2c4420cf8d9a4a65f20972d678ca4986bfe88e290989c3c6477d14f8799573fb8fa7df8a9674 +EBUILD portage-2.1.11.50.ebuild 9527 SHA256 f8970421a7200ee8e9df3c2614cbfd03dd5beabdff7efe9acc5e410a34a07f68 SHA512 d17f855c8fc0942f93d7a39d3e79ab092d56990c69f698337b1ab4ed8d0ea5560dd97c9f08fec2c42862b636ac6f5b5c974dbd640cb2f9ec61f6d38e354c6c0a WHIRLPOOL 6ab24d858c216a893f8ca823210e2cd011d5caa739eb4a31b982679d736d20df3b1ce2aba2264af28bcefac838bc148e61efd678b76d90d5c45265a11f26878e +EBUILD portage-2.1.6.7_p1.ebuild 8391 SHA256 aa62c9abf35aa31026863d881fcc47eab499992fa290a4aeda39435289358c94 SHA512 f5c66cf066f6096c930a25825314837b214d9c23386f62af8ee4f50b92c8878765ce81274a5335b5f45c8707849ecd3ca5dedb466af7dbbd2744cd356ab7bcbc WHIRLPOOL 6eca21d68dc0ad96d0ab6c9bb84b14dd21100cd48a7531305fa63a1276a1d90ddda33724c32d695632215da338aa91fba412b2f398d2d1ee91fd730d4678484d +EBUILD portage-2.2.0_alpha142.ebuild 11604 SHA256 43d5a0819c0c6e1eba6367e9e7dae5d9d2ea2d225b3b4d6ae411e901fd958fb6 SHA512 a6915f0247c7c2569f0375f438653be00ced292c6103c2fdbaa929b2356644d34e470303f3febe1699f5e34f0ad18159b5ac806b8f274936914f24c78f2f60be WHIRLPOOL 9794d6d300605cc03bd685e6e53254980d9213aee9b5b6302d6307652c615cedd84376fe01b06bb7440ffe6d5d72e6271bf3f87b7f0dae44686549cb76b2d77d +EBUILD portage-2.2.0_alpha161.ebuild 11629 SHA256 caa4d9b6b957cfa6a56a9222777b251b26ce5bea9a9d047184c3810ed52c4059 SHA512 55bae972b15f73486c55e05fe5ac7855e59669f8872076a07cf6996965f084e1a46d32ef2516cf83e71775c1dd40cda1a5d5f28f902f20f800a919481606fe61 WHIRLPOOL 395158708748eccaab91a7f79dbb62edf86df1035e243933964a03119790a12fa6de0575ca14455ea65a77d20b99698ced07a40cd00fee09730cc04485459e2b +EBUILD portage-9999.ebuild 10879 SHA256 b96acd02aebee2316dec2b9645ef4daa77ea8c4a494332f3f523c48f026212f1 SHA512 724873dffe51cec7439854159d0a440e1f153dcc08abdd4dec36ac1690b4d7decc7888fc6fcdf20ea0d2a53b06c6a476d69f7ce774316e26a2046d2b1e4b45ac WHIRLPOOL 0443ef6e30f230361ae1bc1ccf37e37547017e0ca764003cce60814acffbaa6c5a018cd2c70575c6f8334416d19fa60127f476749304c5b42a261a9272bf071e +MISC ChangeLog 9278 SHA256 114f5b33895b68e1000c43a2d74cd17da0e2053888ab30be7377c67237ad14f6 SHA512 95009d5680035a088f5f1f20ac6240c1020cb6884374295fe9c4f0de5a1c99fa90d938a3d4a91dd019ea33c3fc1dbac934088ed16f08d0e50aafac9e43b1bb6e WHIRLPOOL 6159c1642cd0529c149e418aff8a24eecfd66606b521a919c723de46c66d0e77d28cfef03c750ab489429ecaad71f164ee1122e12235930b14ce401fc8af3ccc +MISC ChangeLog-2012 133873 SHA256 157a7eb13d4cf2e2c94bfcb7e91f218af1ea88f5ff20c24a50546950a9839c94 SHA512 1241f4ccd7b31bdd340649417257b0e95202992feb66e0cd4d41fc2d35bf0baeac19680f34a831d2fefce0c0fec03aa6e7a191f783e59cf9b93aaf266f010a3f WHIRLPOOL b027bdba0f5ccc1b3a2dc18df92d82b473af5e55536816b7177071c1ae1a89e4d50d42c2093fa1bbe28b92a42014fbefbfc9e7daa4e6426ebecbd5bffc3d479f +MISC metadata.xml 926 SHA256 8736b6884463a876892a4fd45f6239a123c1229d2372ce47d5dff719f0eba2b9 SHA512 38d3c969b49012a94bfadecd1d48936513391a305eee5e5e55eb6c4a6b82e05b6ebf1dd6dfe6fbb5a96ba5fffc33fddcfda8d41f3d367ff4ad030859a655ef8b WHIRLPOOL 6f9afcacb628f75f84d03e812ed93b4e3613fcfc4e1180bcb0551c1c8025050ebd3b21fcdef79358aaad3606558345fcd6f914928eb62155e5b9a50bde0d3bf4 +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.0.19 (GNU/Linux) + +iEYEAREIAAYFAlEFpGAACgkQ/ejvha5XGaO9jwCeLeUuxo6dikEYzv1dbXeK7v03 +49MAn1wp8Fi6XMI0oWoJz6t6n7P88ll5 +=g6Ji +-----END PGP SIGNATURE----- diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/files/2.1.10.11-r9.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/files/2.1.10.11-r9.patch new file mode 100644 index 0000000000..5d20f2e941 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/files/2.1.10.11-r9.patch @@ -0,0 +1,3458 @@ +diff --git a/bin/ebuild b/bin/ebuild +index f8b6d79..66ea6cf 100755 +--- a/bin/ebuild ++++ b/bin/ebuild +@@ -204,8 +204,9 @@ def discard_digests(myebuild, mysettings, mydbapi): + portage._doebuild_manifest_exempt_depend += 1 + pkgdir = os.path.dirname(myebuild) + fetchlist_dict = portage.FetchlistDict(pkgdir, mysettings, mydbapi) +- from portage.manifest import Manifest +- mf = Manifest(pkgdir, mysettings["DISTDIR"], ++ mf = mysettings.repositories.get_repo_for_location( ++ os.path.dirname(os.path.dirname(pkgdir))) ++ mf = mf.load_manifest(pkgdir, mysettings["DISTDIR"], + fetchlist_dict=fetchlist_dict, manifest1_compat=False) + mf.create(requiredDistfiles=None, + assumeDistHashesSometimes=True, assumeDistHashesAlways=True) +@@ -228,10 +229,8 @@ build_dir_phases = set(["setup", "unpack", "prepare", "configure", "compile", + # sourced again even if $T/environment already exists. + ebuild_changed = False + if mytree == "porttree" and build_dir_phases.intersection(pargs): +- metadata, st, emtime = \ +- portage.portdb._pull_valid_cache(cpv, ebuild, ebuild_portdir) +- if metadata is None: +- ebuild_changed = True ++ ebuild_changed = \ ++ portage.portdb._pull_valid_cache(cpv, ebuild, ebuild_portdir)[0] is None + + tmpsettings = portage.config(clone=portage.settings) + tmpsettings["PORTAGE_VERBOSE"] = "1" +diff --git a/bin/ebuild-helpers/prepstrip b/bin/ebuild-helpers/prepstrip +index d25259d..098e0c6 100755 +--- a/bin/ebuild-helpers/prepstrip ++++ b/bin/ebuild-helpers/prepstrip +@@ -4,31 +4,60 @@ + + source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh + ++# avoid multiple calls to `has`. this creates things like: ++# FEATURES_foo=false ++# if "foo" is not in $FEATURES ++tf() { "$@" && echo true || echo false ; } ++exp_tf() { ++ local flag var=$1 ++ shift ++ for flag in "$@" ; do ++ eval ${var}_${flag}=$(tf has ${flag} ${!var}) ++ done ++} ++exp_tf FEATURES installsources nostrip splitdebug ++exp_tf RESTRICT binchecks installsources strip ++ + banner=false + SKIP_STRIP=false +-if has nostrip ${FEATURES} || \ +- has strip ${RESTRICT} +-then ++if ${RESTRICT_strip} || ${FEATURES_nostrip} ; then + SKIP_STRIP=true + banner=true +- has installsources ${FEATURES} || exit 0 ++ ${FEATURES_installsources} || exit 0 + fi + +-STRIP=${STRIP:-${CHOST}-strip} +-type -P -- ${STRIP} > /dev/null || STRIP=strip +-OBJCOPY=${OBJCOPY:-${CHOST}-objcopy} +-type -P -- ${OBJCOPY} > /dev/null || OBJCOPY=objcopy ++# look up the tools we might be using ++for t in STRIP:strip OBJCOPY:objcopy READELF:readelf ; do ++ v=${t%:*} # STRIP ++ t=${t#*:} # strip ++ eval ${v}=\"${!v:-${CHOST}-${t}}\" ++ type -P -- ${!v} >/dev/null || eval ${v}=${t} ++done ++ ++# Figure out what tool set we're using to strip stuff ++unset SAFE_STRIP_FLAGS DEF_STRIP_FLAGS SPLIT_STRIP_FLAGS ++case $(${STRIP} --version 2>/dev/null) in ++*elfutils*) # dev-libs/elfutils ++ # elfutils default behavior is always safe, so don't need to specify ++ # any flags at all ++ SAFE_STRIP_FLAGS="" ++ DEF_STRIP_FLAGS="--remove-comment" ++ SPLIT_STRIP_FLAGS="-f" ++ ;; ++*GNU*) # sys-devel/binutils ++ # We'll leave out -R .note for now until we can check out the relevance ++ # of the section when it has the ALLOC flag set on it ... ++ SAFE_STRIP_FLAGS="--strip-unneeded" ++ DEF_STRIP_FLAGS="-R .comment -R .GCC.command.line" ++ SPLIT_STRIP_FLAGS= ++ ;; ++esac ++: ${PORTAGE_STRIP_FLAGS=${SAFE_STRIP_FLAGS} ${DEF_STRIP_FLAGS}} + +-# We'll leave out -R .note for now until we can check out the relevance +-# of the section when it has the ALLOC flag set on it ... +-export SAFE_STRIP_FLAGS="--strip-unneeded" +-export PORTAGE_STRIP_FLAGS=${PORTAGE_STRIP_FLAGS-${SAFE_STRIP_FLAGS} -R .comment} + prepstrip_sources_dir=/usr/src/debug/${CATEGORY}/${PF} + +-if has installsources ${FEATURES} && ! type -P debugedit >/dev/null ; then +- ewarn "FEATURES=installsources is enabled but the debugedit binary could not" +- ewarn "be found. This feature will not work unless debugedit is installed!" +-fi ++type -P debugedit >/dev/null && debugedit_found=true || debugedit_found=false ++debugedit_warned=false + + unset ${!INODE_*} + +@@ -41,19 +70,33 @@ inode_var_name() { + } + + save_elf_sources() { +- has installsources ${FEATURES} || return 0 +- has installsources ${RESTRICT} && return 0 +- type -P debugedit >/dev/null || return 0 ++ ${FEATURES_installsources} || return 0 ++ ${RESTRICT_installsources} && return 0 ++ if ! ${debugedit_found} ; then ++ if ! ${debugedit_warned} ; then ++ debugedit_warned=true ++ ewarn "FEATURES=installsources is enabled but the debugedit binary could not" ++ ewarn "be found. This feature will not work unless debugedit is installed!" ++ fi ++ return 0 ++ fi + + local x=$1 + local inode=$(inode_var_name "$x") + [[ -n ${!inode} ]] && return 0 +- debugedit -b "${WORKDIR}" -d "${prepstrip_sources_dir}" \ +- -l "${T}"/debug.sources "${x}" ++ ++ # since we're editing the ELF here, we should recompute the build-id ++ # (the -i flag below). save that output so we don't need to recompute ++ # it later on in the save_elf_debug step. ++ buildid=$(debugedit -i \ ++ -b "${WORKDIR}" \ ++ -d "${prepstrip_sources_dir}" \ ++ -l "${T}"/debug.sources \ ++ "${x}") + } + + save_elf_debug() { +- has splitdebug ${FEATURES} || return 0 ++ ${FEATURES_splitdebug} || return 0 + + local x=$1 + local y="${D}usr/lib/debug/${x:${#D}}.debug" +@@ -61,23 +104,30 @@ save_elf_debug() { + # dont save debug info twice + [[ ${x} == *".debug" ]] && return 0 + +- # this will recompute the build-id, but for now that's ok +- local buildid="$( type -P debugedit >/dev/null && debugedit -i "${x}" )" +- +- mkdir -p $(dirname "${y}") ++ mkdir -p "${y%/*}" + + local inode=$(inode_var_name "$x") + if [[ -n ${!inode} ]] ; then + ln "${D}usr/lib/debug/${!inode:${#D}}.debug" "$y" + else + eval $inode=\$x +- ${OBJCOPY} --only-keep-debug "${x}" "${y}" +- ${OBJCOPY} --add-gnu-debuglink="${y}" "${x}" +- [[ -g ${x} ]] && chmod go-r "${y}" +- [[ -u ${x} ]] && chmod go-r "${y}" +- chmod a-x,o-w "${y}" ++ if [[ -e ${T}/prepstrip.split.debug ]] ; then ++ mv "${T}"/prepstrip.split.debug "${y}" ++ else ++ ${OBJCOPY} --only-keep-debug "${x}" "${y}" ++ ${OBJCOPY} --add-gnu-debuglink="${y}" "${x}" ++ fi ++ local args="a-x,o-w" ++ [[ -g ${x} || -u ${x} ]] && args+=",go-r" ++ chmod ${args} "${y}" + fi + ++ # if we don't already have build-id from debugedit, look it up ++ if [[ -z ${buildid} ]] ; then ++ # convert the readelf output to something useful ++ buildid=$(${READELF} -x .note.gnu.build-id "${x}" 2>/dev/null \ ++ | awk '$NF ~ /GNU/ { getline; printf $2$3$4$5; getline; print $2 }') ++ fi + if [[ -n ${buildid} ]] ; then + local buildid_dir="${D}usr/lib/debug/.build-id/${buildid:0:2}" + local buildid_file="${buildid_dir}/${buildid:2}" +@@ -87,11 +137,31 @@ save_elf_debug() { + fi + } + ++process_elf() { ++ local x=$1 strip_flags=${*:2} ++ ++ vecho " ${x:${#D}}" ++ save_elf_sources "${x}" ++ ++ if ${strip_this} ; then ++ # see if we can split & strip at the same time ++ if [[ -n ${SPLIT_STRIP_FLAGS} ]] ; then ++ ${STRIP} ${strip_flags} \ ++ -f "${T}"/prepstrip.split.debug \ ++ -F "${x##*/}.debug" \ ++ "${x}" ++ save_elf_debug "${x}" ++ else ++ save_elf_debug "${x}" ++ ${STRIP} ${strip_flags} "${x}" ++ fi ++ fi ++} ++ + # The existance of the section .symtab tells us that a binary is stripped. + # We want to log already stripped binaries, as this may be a QA violation. + # They prevent us from getting the splitdebug data. +-if ! has binchecks ${RESTRICT} && \ +- ! has strip ${RESTRICT} ; then ++if ! ${RESTRICT_binchecks} && ! ${RESTRICT_strip} ; then + log=$T/scanelf-already-stripped.log + qa_var="QA_PRESTRIPPED_${ARCH/-/_}" + [[ -n ${!qa_var} ]] && QA_PRESTRIPPED="${!qa_var}" +@@ -149,6 +219,7 @@ do + # actually causes problems. install sources for all + # elf types though cause that stuff is good. + ++ buildid= + if [[ ${f} == *"current ar archive"* ]] ; then + vecho " ${x:${#D}}" + if ${strip_this} ; then +@@ -156,12 +227,7 @@ do + ${STRIP} -g "${x}" + fi + elif [[ ${f} == *"SB executable"* || ${f} == *"SB shared object"* ]] ; then +- vecho " ${x:${#D}}" +- save_elf_sources "${x}" +- if ${strip_this} ; then +- save_elf_debug "${x}" +- ${STRIP} ${PORTAGE_STRIP_FLAGS} "${x}" +- fi ++ process_elf "${x}" ${PORTAGE_STRIP_FLAGS} + elif [[ ${f} == *"SB relocatable"* ]] ; then + vecho " ${x:${#D}}" + save_elf_sources "${x}" +@@ -173,9 +239,9 @@ do + done + + if [[ -s ${T}/debug.sources ]] && \ +- has installsources ${FEATURES} && \ +- ! has installsources ${RESTRICT} && \ +- type -P debugedit >/dev/null ++ ${FEATURES_installsources} && \ ++ ! ${RESTRICT_installsources} && \ ++ ${debugedit_found} + then + vecho "installsources: rsyncing source files" + [[ -d ${D}${prepstrip_sources_dir} ]] || mkdir -p "${D}${prepstrip_sources_dir}" +diff --git a/bin/egencache b/bin/egencache +index 1b4265d..5e68980 100755 +--- a/bin/egencache ++++ b/bin/egencache +@@ -38,6 +38,7 @@ except ImportError: + from portage import os, _encodings, _unicode_encode, _unicode_decode + from _emerge.MetadataRegen import MetadataRegen + from portage.cache.cache_errors import CacheError, StatCollision ++from portage.cache import metadata + from portage.manifest import guessManifestFileType + from portage.util import cmp_sort_key, writemsg_level + from portage import cpv_getkey +@@ -203,9 +204,11 @@ class GenCache(object): + consumer=self._metadata_callback, + max_jobs=max_jobs, max_load=max_load) + self.returncode = os.EX_OK +- metadbmodule = portdb.settings.load_best_module("portdbapi.metadbmodule") +- self._trg_cache = metadbmodule(portdb.porttrees[0], +- "metadata/cache", portage.auxdbkeys[:]) ++ conf = portdb.repositories.get_repo_for_location(portdb.porttrees[0]) ++ self._trg_cache = conf.get_pregenerated_cache(portage.auxdbkeys[:], ++ force=True, readonly=False) ++ if self._trg_cache is None: ++ raise Exception("cache format %s isn't supported" % (conf.cache_format,)) + if rsync: + self._trg_cache.raise_stat_collision = True + try: +@@ -215,13 +218,15 @@ class GenCache(object): + pass + self._existing_nodes = set() + +- def _metadata_callback(self, cpv, ebuild_path, repo_path, metadata): ++ def _metadata_callback(self, cpv, repo_path, metadata, ebuild_hash): + self._existing_nodes.add(cpv) + self._cp_missing.discard(cpv_getkey(cpv)) + if metadata is not None: + if metadata.get('EAPI') == '0': + del metadata['EAPI'] + try: ++ chf = self._trg_cache.validation_chf ++ metadata['_%s_' % chf] = getattr(ebuild_hash, chf) + try: + self._trg_cache[cpv] = metadata + except StatCollision as sc: +@@ -240,7 +245,7 @@ class GenCache(object): + max_mtime += 1 + max_mtime = long(max_mtime) + try: +- os.utime(ebuild_path, (max_mtime, max_mtime)) ++ os.utime(ebuild_hash.location, (max_mtime, max_mtime)) + except OSError as e: + self.returncode |= 1 + writemsg_level( +diff --git a/bin/misc-functions.sh b/bin/misc-functions.sh +index 8c191ff..05136f4 100755 +--- a/bin/misc-functions.sh ++++ b/bin/misc-functions.sh +@@ -882,8 +882,16 @@ preinst_selinux_labels() { + dyn_package() { + # Make sure $PWD is not ${D} so that we don't leave gmon.out files + # in there in case any tools were built with -pg in CFLAGS. ++ + cd "${T}" +- install_mask "${PORTAGE_BUILDDIR}/image" "${PKG_INSTALL_MASK}" ++ ++ local PROOT="${T}/packaging" ++ # make a temporary copy of ${D} so that any modifications we do that ++ # are binpkg specific, do not influence the actual installed image. ++ cp -la "${PORTAGE_BUILDDIR}/image" "${PROOT}" || die "failed creating packaging tree" ++ ++ install_mask "${PROOT}" "${PKG_INSTALL_MASK}" ++ + local tar_options="" + [[ $PORTAGE_VERBOSE = 1 ]] && tar_options+=" -v" + # Sandbox is disabled in case the user wants to use a symlink +@@ -892,7 +900,7 @@ dyn_package() { + [ -z "${PORTAGE_BINPKG_TMPFILE}" ] && \ + die "PORTAGE_BINPKG_TMPFILE is unset" + mkdir -p "${PORTAGE_BINPKG_TMPFILE%/*}" || die "mkdir failed" +- tar $tar_options -cf - $PORTAGE_BINPKG_TAR_OPTS -C "${D}" . | \ ++ tar $tar_options -cf - $PORTAGE_BINPKG_TAR_OPTS -C "${PROOT}" . | \ + $PORTAGE_BZIP2_COMMAND -c > "$PORTAGE_BINPKG_TMPFILE" + assert "failed to pack binary package: '$PORTAGE_BINPKG_TMPFILE'" + PYTHONPATH=${PORTAGE_PYM_PATH}${PYTHONPATH:+:}${PYTHONPATH} \ +@@ -913,6 +921,9 @@ dyn_package() { + [ -n "${md5_hash}" ] && \ + echo ${md5_hash} > "${PORTAGE_BUILDDIR}"/build-info/BINPKGMD5 + vecho ">>> Done." ++ ++ # cleanup our temp tree ++ rm -rf "${PROOT}" + cd "${PORTAGE_BUILDDIR}" + >> "$PORTAGE_BUILDDIR/.packaged" || \ + die "Failed to create $PORTAGE_BUILDDIR/.packaged" +@@ -985,6 +996,21 @@ success_hooks() { + done + } + ++install_hooks() { ++ local hooks_dir="${PORTAGE_CONFIGROOT}etc/portage/hooks/install" ++ local fp ++ local ret=0 ++ shopt -s nullglob ++ for fp in "${hooks_dir}"/*; do ++ if [ -x "$fp" ]; then ++ "$fp" ++ ret=$(( $ret | $? )) ++ fi ++ done ++ shopt -u nullglob ++ return $ret ++} ++ + if [ -n "${MISC_FUNCTIONS_ARGS}" ]; then + source_all_bashrcs + [ "$PORTAGE_DEBUG" == "1" ] && set -x +diff --git a/bin/portageq b/bin/portageq +index 57a7c39..a8a3a63 100755 +--- a/bin/portageq ++++ b/bin/portageq +@@ -473,6 +473,9 @@ def best_visible(argv): + if pkg.visible: + writemsg_stdout("%s\n" % (pkg.cpv,), noiselevel=-1) + return os.EX_OK ++ ++ # No package found, write out an empty line. ++ writemsg_stdout("\n", noiselevel=-1) + except KeyError: + pass + return 1 +@@ -480,16 +483,27 @@ best_visible.uses_root = True + + + def mass_best_visible(argv): +- """ []+ ++ """ [] []+ + Returns category/package-version (without .ebuild). ++ The pkgtype argument defaults to "ebuild" if unspecified, ++ otherwise it must be one of ebuild, binary, or installed. + """ ++ type_map = { ++ "ebuild":"porttree", ++ "binary":"bintree", ++ "installed":"vartree"} ++ + if (len(argv) < 2): + print("ERROR: insufficient parameters!") + sys.exit(2) + try: +- for pack in argv[1:]: +- mylist=portage.db[argv[0]]["porttree"].dbapi.match(pack) +- print(pack+":"+portage.best(mylist)) ++ root = argv.pop(0) ++ pkgtype = "ebuild" ++ if argv[0] in type_map: ++ pkgtype = argv.pop(0) ++ for pack in argv: ++ writemsg_stdout("%s:" % pack, noiselevel=-1) ++ best_visible([root, pkgtype, pack]) + except KeyError: + sys.exit(1) + mass_best_visible.uses_root = True +diff --git a/bin/repoman b/bin/repoman +index 10f603e..a90729c 100755 +--- a/bin/repoman ++++ b/bin/repoman +@@ -1103,7 +1103,9 @@ for x in scanlist: + portage._doebuild_manifest_exempt_depend += 1 + try: + distdir = repoman_settings['DISTDIR'] +- mf = portage.manifest.Manifest(checkdir, distdir, ++ mf = repoman_settings.repositories.get_repo_for_location( ++ os.path.dirname(os.path.dirname(checkdir))) ++ mf = mf.load_manifest(checkdir, distdir, + fetchlist_dict=fetchlist_dict) + mf.create(requiredDistfiles=None, + assumeDistHashesAlways=True) +@@ -1308,7 +1310,9 @@ for x in scanlist: + raise + continue + +- mf = Manifest(checkdir, repoman_settings["DISTDIR"]) ++ mf = repoman_settings.repositories.get_repo_for_location( ++ os.path.dirname(os.path.dirname(checkdir))) ++ mf = mf.load_manifest(checkdir, repoman_settings["DISTDIR"]) + mydigests=mf.getTypeDigests("DIST") + + fetchlist_dict = portage.FetchlistDict(checkdir, repoman_settings, portdb) +diff --git a/cnf/make.globals b/cnf/make.globals +index 0be9732..df40d6e 100644 +--- a/cnf/make.globals ++++ b/cnf/make.globals +@@ -101,6 +101,9 @@ PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress + # message should be produced. + PORTAGE_SYNC_STALE="30" + ++# Executed before emerge exit if FEATURES=clean-logs is enabled. ++PORT_LOGDIR_CLEAN="find \"\${PORT_LOGDIR}\" -type f ! -name \"summary.log*\" -mtime +7 -delete" ++ + # Minimal CONFIG_PROTECT + CONFIG_PROTECT="/etc" + CONFIG_PROTECT_MASK="/etc/env.d" +diff --git a/man/emerge.1 b/man/emerge.1 +index 835d2c0..e1df6d2 100644 +--- a/man/emerge.1 ++++ b/man/emerge.1 +@@ -543,18 +543,16 @@ to be set in the \fBmake.conf\fR(5) + \fBEMERGE_DEFAULT_OPTS\fR variable. + .TP + .BR "\-\-rebuild\-if\-new\-rev [ y | n ]" +-Rebuild packages when dependencies that are used at both build\-time and +-run\-time are built, if the dependency is not already installed with the +-same version and revision. ++Rebuild packages when build\-time dependencies are built from source, if the ++dependency is not already installed with the same version and revision. + .TP + .BR "\-\-rebuild\-if\-new\-ver [ y | n ]" +-Rebuild packages when dependencies that are used at both build\-time and +-run\-time are built, if the dependency is not already installed with the +-same version. Revision numbers are ignored. ++Rebuild packages when build\-time dependencies are built from source, if the ++dependency is not already installed with the same version. Revision numbers ++are ignored. + .TP + .BR "\-\-rebuild\-if\-unbuilt [ y | n ]" +-Rebuild packages when dependencies that are used at both build\-time and +-run\-time are built. ++Rebuild packages when build\-time dependencies are built from source. + .TP + .BR "\-\-rebuilt\-binaries [ y | n ]" + Replace installed packages with binary packages that have +diff --git a/man/make.conf.5 b/man/make.conf.5 +index e86dc74..a388fd4 100644 +--- a/man/make.conf.5 ++++ b/man/make.conf.5 +@@ -198,10 +198,6 @@ non-developers as well. The \fBsandbox\fR feature is very important and + should not be disabled by default. + .RS + .TP +-.B allow\-missing\-manifests +-Allow missing manifest entries. This is primarily useful for temporary +-trees or instances where manifests aren't used. +-.TP + .B assume\-digests + When commiting work to cvs with \fBrepoman\fR(1), assume that all existing + SRC_URI digests are correct. This feature also affects digest generation via +@@ -241,6 +237,12 @@ like "File not recognized: File truncated"), try recompiling the application + with ccache disabled before reporting a bug. Unless you are doing development + work, do not enable ccache. + .TP ++.B clean\-logs ++Enable automatic execution of the command specified by the ++PORT_LOGDIR_CLEAN variable. The default PORT_LOGDIR_CLEAN setting will ++remove all files from PORT_LOGDIR that were last modified at least 7 ++days ago. ++.TP + .B collision\-protect + A QA\-feature to ensure that a package doesn't overwrite files it doesn't own. + The \fICOLLISION_IGNORE\fR variable can be used to selectively disable this +@@ -599,6 +601,13 @@ directory does not exist, it will be created automatically and group permissions + will be applied to it. If the directory already exists, portage will not + modify it's permissions. + .TP ++.B PORT_LOGDIR_CLEAN ++This variable should contain a command for portage to call in order ++to clean PORT_LOGDIR. The command string should contain a ++\\${PORT_LOGDIR} place\-holder that will be substituted ++with the value of that variable. This variable will have no effect ++unless \fBclean\-logs\fR is enabled in \fBFEATURES\fR. ++.TP + \fBPORTAGE_BINHOST\fR = \fI[space delimited URI list]\fR + This is a list of hosts from which portage will grab prebuilt\-binary packages. + Each entry in the list must specify the full address of a directory +diff --git a/man/portage.5 b/man/portage.5 +index f115570..1f05d97 100644 +--- a/man/portage.5 ++++ b/man/portage.5 +@@ -776,6 +776,13 @@ precedence over settings in \fBlayout.conf\fR, except tools such as + masters = gentoo java-overlay + # indicate that this repo can be used as a substitute for foo-overlay + aliases = foo-overlay ++# do not sign manifests in this repo ++sign\-manifests = false ++# thin\-manifests only contain DIST entries ++thin\-manifests = true ++# indicate that this repo requires manifests for each package, and is ++# considered a failure if a manifest file is missing/incorrect ++use\-manifests = strict + .fi + .RE + .TP +diff --git a/pym/_emerge/EbuildFetcher.py b/pym/_emerge/EbuildFetcher.py +index feb68d0..61c7848 100644 +--- a/pym/_emerge/EbuildFetcher.py ++++ b/pym/_emerge/EbuildFetcher.py +@@ -21,7 +21,7 @@ class EbuildFetcher(SpawnProcess): + + __slots__ = ("config_pool", "ebuild_path", "fetchonly", "fetchall", + "pkg", "prefetch") + \ +- ("_digests", "_settings", "_uri_map") ++ ("_digests", "_manifest", "_settings", "_uri_map") + + def already_fetched(self, settings): + """ +@@ -40,7 +40,7 @@ class EbuildFetcher(SpawnProcess): + + digests = self._get_digests() + distdir = settings["DISTDIR"] +- allow_missing = "allow-missing-manifests" in settings.features ++ allow_missing = self._get_manifest().allow_missing + + for filename in uri_map: + # Use stat rather than lstat since fetch() creates +@@ -179,7 +179,7 @@ class EbuildFetcher(SpawnProcess): + not in ('yes', 'true') + + rval = 1 +- allow_missing = 'allow-missing-manifests' in self._settings.features ++ allow_missing = self._get_manifest().allow_missing + try: + if fetch(self._uri_map, self._settings, fetchonly=self.fetchonly, + digests=copy.deepcopy(self._get_digests()), +@@ -203,11 +203,16 @@ class EbuildFetcher(SpawnProcess): + raise AssertionError("ebuild not found for '%s'" % self.pkg.cpv) + return self.ebuild_path + ++ def _get_manifest(self): ++ if self._manifest is None: ++ pkgdir = os.path.dirname(self._get_ebuild_path()) ++ self._manifest = self.pkg.root_config.settings.repositories.get_repo_for_location( ++ os.path.dirname(os.path.dirname(pkgdir))).load_manifest(pkgdir, None) ++ return self._manifest ++ + def _get_digests(self): +- if self._digests is not None: +- return self._digests +- self._digests = portage.Manifest(os.path.dirname( +- self._get_ebuild_path()), None).getTypeDigests("DIST") ++ if self._digests is None: ++ self._digests = self._get_manifest().getTypeDigests("DIST") + return self._digests + + def _get_uri_map(self): +diff --git a/pym/_emerge/EbuildMetadataPhase.py b/pym/_emerge/EbuildMetadataPhase.py +index e53298b..f51b86f 100644 +--- a/pym/_emerge/EbuildMetadataPhase.py ++++ b/pym/_emerge/EbuildMetadataPhase.py +@@ -20,8 +20,8 @@ class EbuildMetadataPhase(SubProcess): + used to extract metadata from the ebuild. + """ + +- __slots__ = ("cpv", "ebuild_path", "fd_pipes", "metadata_callback", +- "ebuild_mtime", "metadata", "portdb", "repo_path", "settings") + \ ++ __slots__ = ("cpv", "ebuild_hash", "fd_pipes", "metadata_callback", ++ "metadata", "portdb", "repo_path", "settings") + \ + ("_raw_metadata",) + + _file_names = ("ebuild",) +@@ -31,7 +31,7 @@ class EbuildMetadataPhase(SubProcess): + def _start(self): + settings = self.settings + settings.setcpv(self.cpv) +- ebuild_path = self.ebuild_path ++ ebuild_path = self.ebuild_hash.location + + eapi = None + if eapi is None and \ +@@ -44,8 +44,8 @@ class EbuildMetadataPhase(SubProcess): + + if eapi is not None: + if not portage.eapi_is_supported(eapi): +- self.metadata_callback(self.cpv, self.ebuild_path, +- self.repo_path, {'EAPI' : eapi}, self.ebuild_mtime) ++ self.metadata_callback(self.cpv, ++ self.repo_path, {'EAPI' : eapi}, self.ebuild_hash) + self._set_returncode((self.pid, os.EX_OK << 8)) + self.wait() + return +@@ -128,6 +128,5 @@ class EbuildMetadataPhase(SubProcess): + else: + metadata = zip(portage.auxdbkeys, metadata_lines) + self.metadata = self.metadata_callback(self.cpv, +- self.ebuild_path, self.repo_path, metadata, +- self.ebuild_mtime) ++ self.repo_path, metadata, self.ebuild_hash) + +diff --git a/pym/_emerge/MetadataRegen.py b/pym/_emerge/MetadataRegen.py +index 8103175..b338056 100644 +--- a/pym/_emerge/MetadataRegen.py ++++ b/pym/_emerge/MetadataRegen.py +@@ -3,6 +3,7 @@ + + import portage + from portage import os ++from portage.eclass_cache import hashed_path + from _emerge.EbuildMetadataPhase import EbuildMetadataPhase + from _emerge.PollScheduler import PollScheduler + +@@ -68,16 +69,15 @@ class MetadataRegen(PollScheduler): + ebuild_path, repo_path = portdb.findname2(cpv) + if ebuild_path is None: + raise AssertionError("ebuild not found for '%s'" % cpv) +- metadata, st, emtime = portdb._pull_valid_cache( ++ metadata, ebuild_hash = portdb._pull_valid_cache( + cpv, ebuild_path, repo_path) + if metadata is not None: + if consumer is not None: +- consumer(cpv, ebuild_path, +- repo_path, metadata) ++ consumer(cpv, repo_path, metadata, ebuild_hash) + continue + +- yield EbuildMetadataPhase(cpv=cpv, ebuild_path=ebuild_path, +- ebuild_mtime=emtime, ++ yield EbuildMetadataPhase(cpv=cpv, ++ ebuild_hash=ebuild_hash, + metadata_callback=portdb._metadata_callback, + portdb=portdb, repo_path=repo_path, + settings=portdb.doebuild_settings) +@@ -176,9 +176,9 @@ class MetadataRegen(PollScheduler): + # On failure, still notify the consumer (in this case the metadata + # argument is None). + self._consumer(metadata_process.cpv, +- metadata_process.ebuild_path, + metadata_process.repo_path, +- metadata_process.metadata) ++ metadata_process.metadata, ++ metadata_process.ebuild_hash) + + self._schedule() + +diff --git a/pym/_emerge/MiscFunctionsProcess.py b/pym/_emerge/MiscFunctionsProcess.py +index ce0ab14..afa44fb 100644 +--- a/pym/_emerge/MiscFunctionsProcess.py ++++ b/pym/_emerge/MiscFunctionsProcess.py +@@ -29,5 +29,11 @@ class MiscFunctionsProcess(AbstractEbuildProcess): + AbstractEbuildProcess._start(self) + + def _spawn(self, args, **kwargs): +- self.settings.pop("EBUILD_PHASE", None) +- return spawn(" ".join(args), self.settings, **kwargs) ++ # Temporarily unset EBUILD_PHASE so that bashrc code doesn't ++ # think this is a real phase. ++ phase_backup = self.settings.pop("EBUILD_PHASE", None) ++ try: ++ return spawn(" ".join(args), self.settings, **kwargs) ++ finally: ++ if phase_backup is not None: ++ self.settings["EBUILD_PHASE"] = phase_backup +diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py +index 2166963..6b65b56 100644 +--- a/pym/_emerge/actions.py ++++ b/pym/_emerge/actions.py +@@ -1658,14 +1658,6 @@ def action_metadata(settings, portdb, myopts, porttrees=None): + porttrees_data = [] + for path in porttrees: + src_db = portdb._pregen_auxdb.get(path) +- if src_db is None and \ +- os.path.isdir(os.path.join(path, 'metadata', 'cache')): +- src_db = portdb.metadbmodule( +- path, 'metadata/cache', auxdbkeys, readonly=True) +- try: +- src_db.ec = portdb._repo_info[path].eclass_db +- except AttributeError: +- pass + + if src_db is not None: + porttrees_data.append(TreeData(portdb.auxdb[path], +@@ -1704,7 +1696,6 @@ def action_metadata(settings, portdb, myopts, porttrees=None): + if onProgress is not None: + onProgress(maxval, curval) + +- from portage.cache.util import quiet_mirroring + from portage import eapi_is_supported, \ + _validate_cache_for_unsupported_eapis + +@@ -1713,7 +1704,6 @@ def action_metadata(settings, portdb, myopts, porttrees=None): + # 1) erase the progress bar + # 2) show the error message + # 3) redraw the progress bar on a new line +- noise = quiet_mirroring() + + for cp in cp_all: + for tree_data in porttrees_data: +@@ -1721,13 +1711,7 @@ def action_metadata(settings, portdb, myopts, porttrees=None): + tree_data.valid_nodes.add(cpv) + try: + src = tree_data.src_db[cpv] +- except KeyError as e: +- noise.missing_entry(cpv) +- del e +- continue +- except CacheError as ce: +- noise.exception(cpv, ce) +- del ce ++ except (CacheError, KeyError): + continue + + eapi = src.get('EAPI') +@@ -1737,8 +1721,6 @@ def action_metadata(settings, portdb, myopts, porttrees=None): + eapi_supported = eapi_is_supported(eapi) + if not eapi_supported: + if not _validate_cache_for_unsupported_eapis: +- noise.misc(cpv, "unable to validate " + \ +- "cache for EAPI='%s'" % eapi) + continue + + dest = None +@@ -1753,8 +1735,9 @@ def action_metadata(settings, portdb, myopts, porttrees=None): + + if dest is not None: + if not (dest['_mtime_'] == src['_mtime_'] and \ +- tree_data.eclass_db.is_eclass_data_valid( +- dest['_eclasses_']) and \ ++ tree_data.eclass_db.validate_and_rewrite_cache( ++ dest['_eclasses_'], tree_data.dest_db.validation_chf, ++ tree_data.dest_db.store_eclass_paths) is not None and \ + set(dest['_eclasses_']) == set(src['_eclasses_'])): + dest = None + else: +@@ -1775,15 +1758,13 @@ def action_metadata(settings, portdb, myopts, porttrees=None): + try: + inherited = src.get('INHERITED', '') + eclasses = src.get('_eclasses_') +- except CacheError as ce: +- noise.exception(cpv, ce) +- del ce ++ except CacheError: + continue + + if eclasses is not None: +- if not tree_data.eclass_db.is_eclass_data_valid( +- src['_eclasses_']): +- noise.eclass_stale(cpv) ++ if tree_data.eclass_db.validate_and_rewrite_cache( ++ src['_eclasses_'], tree_data.src_db.validation_chf, ++ tree_data.src_db.store_eclass_paths) is None: + continue + inherited = eclasses + else: +@@ -1791,7 +1772,6 @@ def action_metadata(settings, portdb, myopts, porttrees=None): + + if tree_data.src_db.complete_eclass_entries and \ + eclasses is None: +- noise.corruption(cpv, "missing _eclasses_ field") + continue + + if inherited: +@@ -1801,11 +1781,9 @@ def action_metadata(settings, portdb, myopts, porttrees=None): + eclasses = tree_data.eclass_db.get_eclass_data(inherited) + except KeyError: + # INHERITED contains a non-existent eclass. +- noise.eclass_stale(cpv) + continue + + if eclasses is None: +- noise.eclass_stale(cpv) + continue + src['_eclasses_'] = eclasses + else: +@@ -1820,9 +1798,9 @@ def action_metadata(settings, portdb, myopts, porttrees=None): + + try: + tree_data.dest_db[cpv] = src +- except CacheError as ce: +- noise.exception(cpv, ce) +- del ce ++ except CacheError: ++ # ignore it; can't do anything about it. ++ pass + + curval += 1 + if onProgress is not None: +diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py +index 8b6125d..42cc659 100644 +--- a/pym/_emerge/depgraph.py ++++ b/pym/_emerge/depgraph.py +@@ -174,7 +174,7 @@ class _rebuild_config(object): + rebuild_exclude = self._frozen_config.rebuild_exclude + rebuild_ignore = self._frozen_config.rebuild_ignore + if (self.rebuild and isinstance(parent, Package) and +- parent.built and (priority.buildtime or priority.runtime) and ++ parent.built and priority.buildtime and + isinstance(dep_pkg, Package) and + not rebuild_exclude.findAtomForPackage(parent) and + not rebuild_ignore.findAtomForPackage(dep_pkg)): +@@ -209,66 +209,63 @@ class _rebuild_config(object): + + return True + +- def _trigger_rebuild(self, parent, build_deps, runtime_deps): ++ def _trigger_rebuild(self, parent, build_deps): + root_slot = (parent.root, parent.slot_atom) + if root_slot in self.rebuild_list: + return False + trees = self._frozen_config.trees +- children = set(build_deps).intersection(runtime_deps) + reinstall = False +- for slot_atom in children: +- kids = set([build_deps[slot_atom], runtime_deps[slot_atom]]) +- for dep_pkg in kids: +- dep_root_slot = (dep_pkg.root, slot_atom) +- if self._needs_rebuild(dep_pkg): ++ for slot_atom, dep_pkg in build_deps.items(): ++ dep_root_slot = (dep_pkg.root, slot_atom) ++ if self._needs_rebuild(dep_pkg): ++ self.rebuild_list.add(root_slot) ++ return True ++ elif ("--usepkg" in self._frozen_config.myopts and ++ (dep_root_slot in self.reinstall_list or ++ dep_root_slot in self.rebuild_list or ++ not dep_pkg.installed)): ++ ++ # A direct rebuild dependency is being installed. We ++ # should update the parent as well to the latest binary, ++ # if that binary is valid. ++ # ++ # To validate the binary, we check whether all of the ++ # rebuild dependencies are present on the same binhost. ++ # ++ # 1) If parent is present on the binhost, but one of its ++ # rebuild dependencies is not, then the parent should ++ # be rebuilt from source. ++ # 2) Otherwise, the parent binary is assumed to be valid, ++ # because all of its rebuild dependencies are ++ # consistent. ++ bintree = trees[parent.root]["bintree"] ++ uri = bintree.get_pkgindex_uri(parent.cpv) ++ dep_uri = bintree.get_pkgindex_uri(dep_pkg.cpv) ++ bindb = bintree.dbapi ++ if self.rebuild_if_new_ver and uri and uri != dep_uri: ++ cpv_norev = catpkgsplit(dep_pkg.cpv)[:-1] ++ for cpv in bindb.match(dep_pkg.slot_atom): ++ if cpv_norev == catpkgsplit(cpv)[:-1]: ++ dep_uri = bintree.get_pkgindex_uri(cpv) ++ if uri == dep_uri: ++ break ++ if uri and uri != dep_uri: ++ # 1) Remote binary package is invalid because it was ++ # built without dep_pkg. Force rebuild. + self.rebuild_list.add(root_slot) + return True +- elif ("--usepkg" in self._frozen_config.myopts and +- (dep_root_slot in self.reinstall_list or +- dep_root_slot in self.rebuild_list or +- not dep_pkg.installed)): +- +- # A direct rebuild dependency is being installed. We +- # should update the parent as well to the latest binary, +- # if that binary is valid. +- # +- # To validate the binary, we check whether all of the +- # rebuild dependencies are present on the same binhost. +- # +- # 1) If parent is present on the binhost, but one of its +- # rebuild dependencies is not, then the parent should +- # be rebuilt from source. +- # 2) Otherwise, the parent binary is assumed to be valid, +- # because all of its rebuild dependencies are +- # consistent. +- bintree = trees[parent.root]["bintree"] +- uri = bintree.get_pkgindex_uri(parent.cpv) +- dep_uri = bintree.get_pkgindex_uri(dep_pkg.cpv) +- bindb = bintree.dbapi +- if self.rebuild_if_new_ver and uri and uri != dep_uri: +- cpv_norev = catpkgsplit(dep_pkg.cpv)[:-1] +- for cpv in bindb.match(dep_pkg.slot_atom): +- if cpv_norev == catpkgsplit(cpv)[:-1]: +- dep_uri = bintree.get_pkgindex_uri(cpv) +- if uri == dep_uri: +- break +- if uri and uri != dep_uri: +- # 1) Remote binary package is invalid because it was +- # built without dep_pkg. Force rebuild. +- self.rebuild_list.add(root_slot) +- return True +- elif (parent.installed and +- root_slot not in self.reinstall_list): +- inst_build_time = parent.metadata.get("BUILD_TIME") +- try: +- bin_build_time, = bindb.aux_get(parent.cpv, +- ["BUILD_TIME"]) +- except KeyError: +- continue +- if bin_build_time != inst_build_time: +- # 2) Remote binary package is valid, and local package +- # is not up to date. Force reinstall. +- reinstall = True ++ elif (parent.installed and ++ root_slot not in self.reinstall_list): ++ inst_build_time = parent.metadata.get("BUILD_TIME") ++ try: ++ bin_build_time, = bindb.aux_get(parent.cpv, ++ ["BUILD_TIME"]) ++ except KeyError: ++ continue ++ if bin_build_time != inst_build_time: ++ # 2) Remote binary package is valid, and local package ++ # is not up to date. Force reinstall. ++ reinstall = True + if reinstall: + self.reinstall_list.add(root_slot) + return reinstall +@@ -282,31 +279,15 @@ class _rebuild_config(object): + need_restart = False + graph = self._graph + build_deps = {} +- runtime_deps = {} +- leaf_nodes = deque(graph.leaf_nodes()) +- +- def ignore_non_runtime(priority): +- return not priority.runtime + +- def ignore_non_buildtime(priority): +- return not priority.buildtime ++ leaf_nodes = deque(graph.leaf_nodes()) + + # Trigger rebuilds bottom-up (starting with the leaves) so that parents + # will always know which children are being rebuilt. + while graph: + if not leaf_nodes: +- # We're interested in intersection of buildtime and runtime, +- # so ignore edges that do not contain both. +- leaf_nodes.extend(graph.leaf_nodes( +- ignore_priority=ignore_non_runtime)) +- if not leaf_nodes: +- leaf_nodes.extend(graph.leaf_nodes( +- ignore_priority=ignore_non_buildtime)) +- if not leaf_nodes: +- # We'll have to drop an edge that is both +- # buildtime and runtime. This should be +- # quite rare. +- leaf_nodes.append(graph.order[-1]) ++ # We'll have to drop an edge. This should be quite rare. ++ leaf_nodes.append(graph.order[-1]) + + node = leaf_nodes.popleft() + if node not in graph: +@@ -315,32 +296,23 @@ class _rebuild_config(object): + slot_atom = node.slot_atom + + # Remove our leaf node from the graph, keeping track of deps. +- parents = graph.nodes[node][1].items() ++ parents = graph.parent_nodes(node) + graph.remove(node) + node_build_deps = build_deps.get(node, {}) +- node_runtime_deps = runtime_deps.get(node, {}) +- for parent, priorities in parents: ++ for parent in parents: + if parent == node: + # Ignore a direct cycle. + continue + parent_bdeps = build_deps.setdefault(parent, {}) +- parent_rdeps = runtime_deps.setdefault(parent, {}) +- for priority in priorities: +- if priority.buildtime: +- parent_bdeps[slot_atom] = node +- if priority.runtime: +- parent_rdeps[slot_atom] = node +- if slot_atom in parent_bdeps and slot_atom in parent_rdeps: +- parent_rdeps.update(node_runtime_deps) ++ parent_bdeps[slot_atom] = node + if not graph.child_nodes(parent): + leaf_nodes.append(parent) + + # Trigger rebuilds for our leaf node. Because all of our children +- # have been processed, build_deps and runtime_deps will be +- # completely filled in, and self.rebuild_list / self.reinstall_list +- # will tell us whether any of our children need to be rebuilt or +- # reinstalled. +- if self._trigger_rebuild(node, node_build_deps, node_runtime_deps): ++ # have been processed, the build_deps will be completely filled in, ++ # and self.rebuild_list / self.reinstall_list will tell us whether ++ # any of our children need to be rebuilt or reinstalled. ++ if self._trigger_rebuild(node, node_build_deps): + need_restart = True + + return need_restart +diff --git a/pym/_emerge/help.py b/pym/_emerge/help.py +index c978ce2..57b376d 100644 +--- a/pym/_emerge/help.py ++++ b/pym/_emerge/help.py +@@ -641,26 +641,24 @@ def help(myopts, havecolor=1): + print() + print(" " + green("--rebuild-if-new-rev") + " [ %s | %s ]" % \ + (turquoise("y"), turquoise("n"))) +- desc = "Rebuild packages when dependencies that are " + \ +- "used at both build-time and run-time are built, " + \ +- "if the dependency is not already installed with the " + \ +- "same version and revision." ++ desc = "Rebuild packages when build-time dependencies are built " + \ ++ "from source, if the dependency is not already installed with " + \ ++ "the same version and revision." + for line in wrap(desc, desc_width): + print(desc_indent + line) + print() + print(" " + green("--rebuild-if-new-ver") + " [ %s | %s ]" % \ + (turquoise("y"), turquoise("n"))) +- desc = "Rebuild packages when dependencies that are " + \ +- "used at both build-time and run-time are built, " + \ +- "if the dependency is not already installed with the " + \ +- "same version. Revision numbers are ignored." ++ desc = "Rebuild packages when build-time dependencies are built " + \ ++ "from source, if the dependency is not already installed with " + \ ++ "the same version. Revision numbers are ignored." + for line in wrap(desc, desc_width): + print(desc_indent + line) + print() + print(" " + green("--rebuild-if-unbuilt") + " [ %s | %s ]" % \ + (turquoise("y"), turquoise("n"))) +- desc = "Rebuild packages when dependencies that are " + \ +- "used at both build-time and run-time are built." ++ desc = "Rebuild packages when build-time dependencies are built " + \ ++ "from source" + for line in wrap(desc, desc_width): + print(desc_indent + line) + print() +diff --git a/pym/_emerge/main.py b/pym/_emerge/main.py +index 2830214..4cabafd 100644 +--- a/pym/_emerge/main.py ++++ b/pym/_emerge/main.py +@@ -28,7 +28,8 @@ import portage.exception + from portage.data import secpass + from portage.dbapi.dep_expand import dep_expand + from portage.util import normalize_path as normpath +-from portage.util import shlex_split, writemsg_level, writemsg_stdout ++from portage.util import (shlex_split, varexpand, ++ writemsg_level, writemsg_stdout) + from portage._sets import SETPREFIX + from portage._global_updates import _global_updates + +@@ -388,6 +389,8 @@ def post_emerge(myaction, myopts, myfiles, + " %s spawn failed of %s\n" % (bad("*"), postemerge,), + level=logging.ERROR, noiselevel=-1) + ++ clean_logs(settings) ++ + if "--quiet" not in myopts and \ + myaction is None and "@world" in myfiles: + show_depclean_suggestion() +@@ -1222,7 +1225,6 @@ def ionice(settings): + if not ionice_cmd: + return + +- from portage.util import varexpand + variables = {"PID" : str(os.getpid())} + cmd = [varexpand(x, mydict=variables) for x in ionice_cmd] + +@@ -1238,6 +1240,35 @@ def ionice(settings): + out.eerror("PORTAGE_IONICE_COMMAND returned %d" % (rval,)) + out.eerror("See the make.conf(5) man page for PORTAGE_IONICE_COMMAND usage instructions.") + ++def clean_logs(settings): ++ ++ if "clean-logs" not in settings.features: ++ return ++ ++ clean_cmd = settings.get("PORT_LOGDIR_CLEAN") ++ if clean_cmd: ++ clean_cmd = shlex_split(clean_cmd) ++ if not clean_cmd: ++ return ++ ++ logdir = settings.get("PORT_LOGDIR") ++ if logdir is None or not os.path.isdir(logdir): ++ return ++ ++ variables = {"PORT_LOGDIR" : logdir} ++ cmd = [varexpand(x, mydict=variables) for x in clean_cmd] ++ ++ try: ++ rval = portage.process.spawn(cmd, env=os.environ) ++ except portage.exception.CommandNotFound: ++ rval = 127 ++ ++ if rval != os.EX_OK: ++ out = portage.output.EOutput() ++ out.eerror("PORT_LOGDIR_CLEAN returned %d" % (rval,)) ++ out.eerror("See the make.conf(5) man page for " ++ "PORT_LOGDIR_CLEAN usage instructions.") ++ + def setconfig_fallback(root_config): + from portage._sets.base import DummyPackageSet + from portage._sets.files import WorldSelectedSet +diff --git a/pym/_emerge/search.py b/pym/_emerge/search.py +index 35f0412..3fed2b6 100644 +--- a/pym/_emerge/search.py ++++ b/pym/_emerge/search.py +@@ -305,8 +305,9 @@ class search(object): + myebuild = self._findname(mycpv) + if myebuild: + pkgdir = os.path.dirname(myebuild) +- from portage import manifest +- mf = manifest.Manifest( ++ mf = self.settings.repositories.get_repo_for_location( ++ os.path.dirname(os.path.dirname(pkgdir))) ++ mf = mf.load_manifest( + pkgdir, self.settings["DISTDIR"]) + try: + uri_map = self._getFetchMap(mycpv) +diff --git a/pym/portage/cache/flat_hash.py b/pym/portage/cache/flat_hash.py +index b6bc074..2eae9f6 100644 +--- a/pym/portage/cache/flat_hash.py ++++ b/pym/portage/cache/flat_hash.py +@@ -31,7 +31,7 @@ class database(fs_template.FsBased): + self.label.lstrip(os.path.sep).rstrip(os.path.sep)) + write_keys = set(self._known_keys) + write_keys.add("_eclasses_") +- write_keys.add("_mtime_") ++ write_keys.add("_%s_" % (self.validation_chf,)) + self._write_keys = sorted(write_keys) + if not self.readonly and not os.path.exists(self.location): + self._ensure_dirs() +@@ -69,7 +69,6 @@ class database(fs_template.FsBased): + raise cache_errors.CacheCorruption(cpv, e) + + def _setitem(self, cpv, values): +-# import pdb;pdb.set_trace() + s = cpv.rfind("/") + fp = os.path.join(self.location,cpv[:s],".update.%i.%s" % (os.getpid(), cpv[s+1:])) + try: +@@ -153,3 +152,9 @@ class database(fs_template.FsBased): + dirs.append((depth+1, p)) + continue + yield p[len_base+1:] ++ ++ ++class md5_database(database): ++ ++ validation_chf = 'md5' ++ store_eclass_paths = False +diff --git a/pym/portage/cache/metadata.py b/pym/portage/cache/metadata.py +index 4c735d7..07ec20e 100644 +--- a/pym/portage/cache/metadata.py ++++ b/pym/portage/cache/metadata.py +@@ -6,6 +6,7 @@ import errno + import re + import stat + import sys ++from operator import attrgetter + from portage import os + from portage import _encodings + from portage import _unicode_encode +@@ -63,9 +64,11 @@ class database(flat_hash.database): + if "INHERITED" in d: + if self.ec is None: + self.ec = portage.eclass_cache.cache(self.location[:-15]) ++ getter = attrgetter(self.validation_chf) + try: +- d["_eclasses_"] = self.ec.get_eclass_data( +- d["INHERITED"].split()) ++ ec_data = self.ec.get_eclass_data(d["INHERITED"].split()) ++ d["_eclasses_"] = dict((k, (v.eclass_dir, getter(v))) ++ for k,v in ec_data.items()) + except KeyError as e: + # INHERITED contains a non-existent eclass. + raise cache_errors.CacheCorruption(cpv, e) +diff --git a/pym/portage/cache/metadata_overlay.py b/pym/portage/cache/metadata_overlay.py +deleted file mode 100644 +index cfa0051..0000000 +--- a/pym/portage/cache/metadata_overlay.py ++++ /dev/null +@@ -1,105 +0,0 @@ +-# Copyright 1999-2010 Gentoo Foundation +-# Distributed under the terms of the GNU General Public License v2 +- +-from portage.cache import template +-from portage.cache.cache_errors import CacheCorruption +-from portage.cache.flat_hash import database as db_rw +-from portage.cache.metadata import database as db_ro +- +-class database(template.database): +- +- serialize_eclasses = False +- +- def __init__(self, location, label, auxdbkeys, db_rw=db_rw, db_ro=db_ro, +- *args, **config): +- super_config = config.copy() +- super_config.pop("gid", None) +- super_config.pop("perms", None) +- super(database, self).__init__(location, label, auxdbkeys, +- *args, **super_config) +- self.db_rw = db_rw(location, label, auxdbkeys, **config) +- self.commit = self.db_rw.commit +- self.autocommits = self.db_rw.autocommits +- if isinstance(db_ro, type): +- ro_config = config.copy() +- ro_config["readonly"] = True +- self.db_ro = db_ro(label, "metadata/cache", auxdbkeys, **ro_config) +- else: +- self.db_ro = db_ro +- +- def __getitem__(self, cpv): +- """funnel whiteout validation through here, since value needs to be fetched""" +- try: +- value = self.db_rw[cpv] +- except KeyError: +- return self.db_ro[cpv] # raises a KeyError when necessary +- except CacheCorruption: +- del self.db_rw[cpv] +- return self.db_ro[cpv] # raises a KeyError when necessary +- if self._is_whiteout(value): +- if self._is_whiteout_valid(cpv, value): +- raise KeyError(cpv) +- else: +- del self.db_rw[cpv] +- return self.db_ro[cpv] # raises a KeyError when necessary +- else: +- return value +- +- def _setitem(self, name, values): +- try: +- value_ro = self.db_ro.get(name) +- except CacheCorruption: +- value_ro = None +- if value_ro is not None and \ +- self._are_values_identical(value_ro, values): +- # we have matching values in the underlying db_ro +- # so it is unnecessary to store data in db_rw +- try: +- del self.db_rw[name] # delete unwanted whiteout when necessary +- except KeyError: +- pass +- return +- self.db_rw[name] = values +- +- def _delitem(self, cpv): +- value = self[cpv] # validates whiteout and/or raises a KeyError when necessary +- if cpv in self.db_ro: +- self.db_rw[cpv] = self._create_whiteout(value) +- else: +- del self.db_rw[cpv] +- +- def __contains__(self, cpv): +- try: +- self[cpv] # validates whiteout when necessary +- except KeyError: +- return False +- return True +- +- def __iter__(self): +- s = set() +- for cpv in self.db_rw: +- if cpv in self: # validates whiteout when necessary +- yield cpv +- # set includes whiteouts so they won't be yielded later +- s.add(cpv) +- for cpv in self.db_ro: +- if cpv not in s: +- yield cpv +- +- def _is_whiteout(self, value): +- return value["EAPI"] == "whiteout" +- +- def _create_whiteout(self, value): +- return {"EAPI":"whiteout","_eclasses_":value["_eclasses_"],"_mtime_":value["_mtime_"]} +- +- def _is_whiteout_valid(self, name, value_rw): +- try: +- value_ro = self.db_ro[name] +- return self._are_values_identical(value_rw,value_ro) +- except KeyError: +- return False +- +- def _are_values_identical(self, value1, value2): +- if value1['_mtime_'] != value2['_mtime_']: +- return False +- return value1["_eclasses_"] == value2["_eclasses_"] +diff --git a/pym/portage/cache/template.py b/pym/portage/cache/template.py +index f84d8f4..515ba02 100644 +--- a/pym/portage/cache/template.py ++++ b/pym/portage/cache/template.py +@@ -7,6 +7,7 @@ from portage.cache.cache_errors import InvalidRestriction + from portage.cache.mappings import ProtectedDict + import sys + import warnings ++import operator + + if sys.hexversion >= 0x3000000: + basestring = str +@@ -21,6 +22,8 @@ class database(object): + autocommits = False + cleanse_keys = False + serialize_eclasses = True ++ validation_chf = 'mtime' ++ store_eclass_paths = True + + def __init__(self, location, label, auxdbkeys, readonly=False): + """ initialize the derived class; specifically, store label/keys""" +@@ -40,7 +43,8 @@ class database(object): + self.updates = 0 + d=self._getitem(cpv) + if self.serialize_eclasses and "_eclasses_" in d: +- d["_eclasses_"] = reconstruct_eclasses(cpv, d["_eclasses_"]) ++ d["_eclasses_"] = reconstruct_eclasses(cpv, d["_eclasses_"], ++ self.validation_chf, paths=self.store_eclass_paths) + elif "_eclasses_" not in d: + d["_eclasses_"] = {} + mtime = d.get('_mtime_') +@@ -60,22 +64,46 @@ class database(object): + override this in derived classess""" + raise NotImplementedError + ++ @staticmethod ++ def _internal_eclasses(extern_ec_dict, chf_type, paths): ++ """ ++ When serialize_eclasses is False, we have to convert an external ++ eclass dict containing hashed_path objects into an appropriate ++ internal dict containing values of chf_type (and eclass dirs ++ if store_eclass_paths is True). ++ """ ++ if not extern_ec_dict: ++ return extern_ec_dict ++ chf_getter = operator.attrgetter(chf_type) ++ if paths: ++ intern_ec_dict = dict((k, (v.eclass_dir, chf_getter(v))) ++ for k, v in extern_ec_dict.items()) ++ else: ++ intern_ec_dict = dict((k, chf_getter(v)) ++ for k, v in extern_ec_dict.items()) ++ return intern_ec_dict ++ + def __setitem__(self, cpv, values): + """set a cpv to values + This shouldn't be overriden in derived classes since it handles the readonly checks""" + if self.readonly: + raise cache_errors.ReadOnlyRestriction() ++ d = None + if self.cleanse_keys: + d=ProtectedDict(values) + for k, v in list(d.items()): + if not v: + del d[k] +- if self.serialize_eclasses and "_eclasses_" in values: +- d["_eclasses_"] = serialize_eclasses(d["_eclasses_"]) +- elif self.serialize_eclasses and "_eclasses_" in values: +- d = ProtectedDict(values) +- d["_eclasses_"] = serialize_eclasses(d["_eclasses_"]) +- else: ++ if "_eclasses_" in values: ++ if d is None: ++ d = ProtectedDict(values) ++ if self.serialize_eclasses: ++ d["_eclasses_"] = serialize_eclasses(d["_eclasses_"], ++ self.validation_chf, paths=self.store_eclass_paths) ++ else: ++ d["_eclasses_"] = self._internal_eclasses(d["_eclasses_"], ++ self.validation_chf, self.store_eclass_paths) ++ elif d is None: + d = values + self._setitem(cpv, d) + if not self.autocommits: +@@ -159,6 +187,18 @@ class database(object): + except KeyError: + return x + ++ def validate_entry(self, entry, ebuild_hash, eclass_db): ++ hash_key = '_%s_' % self.validation_chf ++ if entry[hash_key] != getattr(ebuild_hash, self.validation_chf): ++ return False ++ update = eclass_db.validate_and_rewrite_cache(entry['_eclasses_'], self.validation_chf, ++ self.store_eclass_paths) ++ if update is None: ++ return False ++ if update: ++ entry['_eclasses_'] = update ++ return True ++ + def get_matches(self, match_dict): + """generic function for walking the entire cache db, matching restrictions to + filter what cpv's are returned. Derived classes should override this if they +@@ -195,7 +235,9 @@ class database(object): + keys = __iter__ + items = iteritems + +-def serialize_eclasses(eclass_dict): ++_keysorter = operator.itemgetter(0) ++ ++def serialize_eclasses(eclass_dict, chf_type='mtime', paths=True): + """takes a dict, returns a string representing said dict""" + """The "new format", which causes older versions of = noise.call_update_min: +- noise.update(x) +- count = 0 +- +- if not trg_cache.autocommits: +- trg_cache.commit() +- +- # ok. by this time, the trg_cache is up to date, and we have a dict +- # with a crapload of cpv's. we now walk the target db, removing stuff if it's in the list. +- for key in dead_nodes: +- try: +- del trg_cache[key] +- except KeyError: +- pass +- except cache_errors.CacheError as ce: +- noise.exception(ce) +- del ce +- noise.finish() +- +- +-class quiet_mirroring(object): +- # call_update_every is used by mirror_cache to determine how often to call in. +- # quiet defaults to 2^24 -1. Don't call update, 'cept once every 16 million or so :) +- call_update_min = 0xffffff +- def update(self,key,*arg): pass +- def exception(self,key,*arg): pass +- def eclass_stale(self,*arg): pass +- def missing_entry(self, key): pass +- def misc(self,key,*arg): pass +- def corruption(self, key, s): pass +- def finish(self, *arg): pass +- +-class non_quiet_mirroring(quiet_mirroring): +- call_update_min=1 +- def update(self,key,*arg): print("processed",key) +- def exception(self, key, *arg): print("exec",key,arg) +- def missing(self,key): print("key %s is missing", key) +- def corruption(self,key,*arg): print("corrupt %s:" % key,arg) +- def eclass_stale(self,key,*arg):print("stale %s:"%key,arg) +- +diff --git a/pym/portage/cache/volatile.py b/pym/portage/cache/volatile.py +index 0bf6bab..f96788d 100644 +--- a/pym/portage/cache/volatile.py ++++ b/pym/portage/cache/volatile.py +@@ -8,6 +8,7 @@ class database(template.database): + + autocommits = True + serialize_eclasses = False ++ store_eclass_paths = False + + def __init__(self, *args, **config): + config.pop("gid", None) +@@ -21,5 +22,5 @@ class database(template.database): + def _setitem(self, name, values): + self._data[name] = copy.deepcopy(values) + +- def _getitem(self, cpv): ++ def __getitem__(self, cpv): + return copy.deepcopy(self._data[cpv]) +diff --git a/pym/portage/checksum.py b/pym/portage/checksum.py +index 9e7e455..ef90bf6 100644 +--- a/pym/portage/checksum.py ++++ b/pym/portage/checksum.py +@@ -255,8 +255,10 @@ def perform_checksum(filename, hashname="MD5", calc_prelink=0): + " hash function not available (needs dev-python/pycrypto)") + myhash, mysize = hashfunc_map[hashname](myfilename) + except (OSError, IOError) as e: +- if e.errno == errno.ENOENT: ++ if e.errno in (errno.ENOENT, errno.ESTALE): + raise portage.exception.FileNotFound(myfilename) ++ elif e.errno == portage.exception.PermissionDenied.errno: ++ raise portage.exception.PermissionDenied(myfilename) + raise + return myhash, mysize + finally: +diff --git a/pym/portage/const.py b/pym/portage/const.py +index f108176..bfcdbef 100644 +--- a/pym/portage/const.py ++++ b/pym/portage/const.py +@@ -86,16 +86,16 @@ EBUILD_PHASES = ("pretend", "setup", "unpack", "prepare", "configure" + "package", "preinst", "postinst","prerm", "postrm", + "nofetch", "config", "info", "other") + SUPPORTED_FEATURES = frozenset([ +- "allow-missing-manifests", + "assume-digests", "binpkg-logs", "buildpkg", "buildsyspkg", "candy", +- "ccache", "chflags", "collision-protect", "compress-build-logs", ++ "ccache", "chflags", "clean-logs", ++ "collision-protect", "compress-build-logs", + "digest", "distcc", "distcc-pump", "distlocks", "ebuild-locks", "fakeroot", + "fail-clean", "fixpackages", "force-mirror", "getbinpkg", + "installsources", "keeptemp", "keepwork", "fixlafiles", "lmirror", + "metadata-transfer", "mirror", "multilib-strict", "news", + "noauto", "noclean", "nodoc", "noinfo", "noman", +- "nostrip", "notitles", "parallel-fetch", "parallel-install", +- "parse-eapi-ebuild-head", ++ "nostrip", "notitles", "no-env-update", "parallel-fetch", ++ "parallel-install", "parse-eapi-ebuild-head", + "prelink-checksums", "preserve-libs", + "protect-owned", "python-trace", "sandbox", + "selinux", "sesandbox", "sfperms", +diff --git a/pym/portage/dbapi/porttree.py b/pym/portage/dbapi/porttree.py +index bf8ecd9..46524e4 100644 +--- a/pym/portage/dbapi/porttree.py ++++ b/pym/portage/dbapi/porttree.py +@@ -17,7 +17,7 @@ portage.proxy.lazyimport.lazyimport(globals(), + 'portage.versions:best,catpkgsplit,_pkgsplit@pkgsplit,ver_regexp', + ) + +-from portage.cache import metadata_overlay, volatile ++from portage.cache import volatile + from portage.cache.cache_errors import CacheError + from portage.cache.mappings import Mapping + from portage.dbapi import dbapi +@@ -121,8 +121,6 @@ class portdbapi(dbapi): + self._have_root_eclass_dir = os.path.isdir( + os.path.join(self.settings.repositories.mainRepoLocation(), "eclass")) + +- self.metadbmodule = self.settings.load_best_module("portdbapi.metadbmodule") +- + #if the portdbapi is "frozen", then we assume that we can cache everything (that no updates to it are happening) + self.xcache = {} + self.frozen = 0 +@@ -153,6 +151,9 @@ class portdbapi(dbapi): + self.auxdbmodule = self.settings.load_best_module("portdbapi.auxdbmodule") + self.auxdb = {} + self._pregen_auxdb = {} ++ # If the current user doesn't have depcachedir write permission, ++ # then the depcachedir cache is kept here read-only access. ++ self._ro_auxdb = {} + self._init_cache_dirs() + depcachedir_w_ok = os.access(self.depcachedir, os.W_OK) + cache_kwargs = { +@@ -169,18 +170,14 @@ class portdbapi(dbapi): + # to the cache entries/directories. + if secpass < 1 or not depcachedir_w_ok: + for x in self.porttrees: ++ self.auxdb[x] = volatile.database( ++ self.depcachedir, x, filtered_auxdbkeys, ++ **cache_kwargs) + try: +- db_ro = self.auxdbmodule(self.depcachedir, x, ++ self._ro_auxdb[x] = self.auxdbmodule(self.depcachedir, x, + filtered_auxdbkeys, readonly=True, **cache_kwargs) + except CacheError: +- self.auxdb[x] = volatile.database( +- self.depcachedir, x, filtered_auxdbkeys, +- **cache_kwargs) +- else: +- self.auxdb[x] = metadata_overlay.database( +- self.depcachedir, x, filtered_auxdbkeys, +- db_rw=volatile.database, db_ro=db_ro, +- **cache_kwargs) ++ pass + else: + for x in self.porttrees: + if x in self.auxdb: +@@ -188,17 +185,16 @@ class portdbapi(dbapi): + # location, label, auxdbkeys + self.auxdb[x] = self.auxdbmodule( + self.depcachedir, x, filtered_auxdbkeys, **cache_kwargs) +- if self.auxdbmodule is metadata_overlay.database: +- self.auxdb[x].db_ro.ec = self._repo_info[x].eclass_db + if "metadata-transfer" not in self.settings.features: + for x in self.porttrees: + if x in self._pregen_auxdb: + continue +- if os.path.isdir(os.path.join(x, "metadata", "cache")): +- self._pregen_auxdb[x] = self.metadbmodule( +- x, "metadata/cache", filtered_auxdbkeys, readonly=True) ++ conf = self.repositories.get_repo_for_location(x) ++ cache = conf.get_pregenerated_cache(filtered_auxdbkeys, readonly=True) ++ if cache is not None: ++ self._pregen_auxdb[x] = cache + try: +- self._pregen_auxdb[x].ec = self._repo_info[x].eclass_db ++ cache.ec = self._repo_info[x].eclass_db + except AttributeError: + pass + # Selectively cache metadata in order to optimize dep matching. +@@ -340,16 +336,16 @@ class portdbapi(dbapi): + @returns: A new EbuildMetadataPhase instance, or None if the + metadata cache is already valid. + """ +- metadata, st, emtime = self._pull_valid_cache(cpv, ebuild_path, repo_path) ++ metadata, ebuild_hash = self._pull_valid_cache(cpv, ebuild_path, repo_path) + if metadata is not None: + return None + +- process = EbuildMetadataPhase(cpv=cpv, ebuild_path=ebuild_path, +- ebuild_mtime=emtime, metadata_callback=self._metadata_callback, ++ process = EbuildMetadataPhase(cpv=cpv, ++ ebuild_hash=ebuild_hash, metadata_callback=self._metadata_callback, + portdb=self, repo_path=repo_path, settings=self.doebuild_settings) + return process + +- def _metadata_callback(self, cpv, ebuild_path, repo_path, metadata, mtime): ++ def _metadata_callback(self, cpv, repo_path, metadata, ebuild_hash): + + i = metadata + if hasattr(metadata, "items"): +@@ -362,8 +358,17 @@ class portdbapi(dbapi): + else: + metadata["_eclasses_"] = {} + ++ try: ++ cache = self.auxdb[repo_path] ++ chf = cache.validation_chf ++ metadata['_%s_' % chf] = getattr(ebuild_hash, chf) ++ except CacheError: ++ # Normally this shouldn't happen, so we'll show ++ # a traceback for debugging purposes. ++ traceback.print_exc() ++ cache = None ++ + metadata.pop("INHERITED", None) +- metadata["_mtime_"] = mtime + + eapi = metadata.get("EAPI") + if not eapi or not eapi.strip(): +@@ -374,21 +379,22 @@ class portdbapi(dbapi): + metadata[k] = "" + metadata["EAPI"] = "-" + eapi.lstrip("-") + +- try: +- self.auxdb[repo_path][cpv] = metadata +- except CacheError: +- # Normally this shouldn't happen, so we'll show +- # a traceback for debugging purposes. +- traceback.print_exc() ++ if cache is not None: ++ try: ++ cache[cpv] = metadata ++ except CacheError: ++ # Normally this shouldn't happen, so we'll show ++ # a traceback for debugging purposes. ++ traceback.print_exc() + return metadata + + def _pull_valid_cache(self, cpv, ebuild_path, repo_path): + try: +- # Don't use unicode-wrapped os module, for better performance. +- st = _os.stat(_unicode_encode(ebuild_path, +- encoding=_encodings['fs'], errors='strict')) +- emtime = st[stat.ST_MTIME] +- except OSError: ++ ebuild_hash = eclass_cache.hashed_path(ebuild_path) ++ # snag mtime since we use it later, and to trigger stat failure ++ # if it doesn't exist ++ ebuild_hash.mtime ++ except FileNotFound: + writemsg(_("!!! aux_get(): ebuild for " \ + "'%s' does not exist at:\n") % (cpv,), noiselevel=-1) + writemsg("!!! %s\n" % ebuild_path, noiselevel=-1) +@@ -401,39 +407,35 @@ class portdbapi(dbapi): + pregen_auxdb = self._pregen_auxdb.get(repo_path) + if pregen_auxdb is not None: + auxdbs.append(pregen_auxdb) ++ ro_auxdb = self._ro_auxdb.get(repo_path) ++ if ro_auxdb is not None: ++ auxdbs.append(ro_auxdb) + auxdbs.append(self.auxdb[repo_path]) + eclass_db = self._repo_info[repo_path].eclass_db + +- doregen = True + for auxdb in auxdbs: + try: + metadata = auxdb[cpv] + except KeyError: +- pass ++ continue + except CacheError: +- if auxdb is not pregen_auxdb: ++ if not auxdb.readonly: + try: + del auxdb[cpv] +- except KeyError: +- pass +- except CacheError: ++ except (KeyError, CacheError): + pass +- else: +- eapi = metadata.get('EAPI', '').strip() +- if not eapi: +- eapi = '0' +- if not (eapi[:1] == '-' and eapi_is_supported(eapi[1:])) and \ +- emtime == metadata['_mtime_'] and \ +- eclass_db.is_eclass_data_valid(metadata['_eclasses_']): +- doregen = False +- +- if not doregen: ++ continue ++ eapi = metadata.get('EAPI', '').strip() ++ if not eapi: ++ eapi = '0' ++ if eapi[:1] == '-' and eapi_is_supported(eapi[1:]): ++ continue ++ if auxdb.validate_entry(metadata, ebuild_hash, eclass_db): + break +- +- if doregen: ++ else: + metadata = None + +- return (metadata, st, emtime) ++ return (metadata, ebuild_hash) + + def aux_get(self, mycpv, mylist, mytree=None, myrepo=None): + "stub code for returning auxilliary db information, such as SLOT, DEPEND, etc." +@@ -467,7 +469,7 @@ class portdbapi(dbapi): + _("ebuild not found for '%s'") % mycpv, noiselevel=1) + raise KeyError(mycpv) + +- mydata, st, emtime = self._pull_valid_cache(mycpv, myebuild, mylocation) ++ mydata, ebuild_hash = self._pull_valid_cache(mycpv, myebuild, mylocation) + doregen = mydata is None + + if doregen: +@@ -490,10 +492,10 @@ class portdbapi(dbapi): + + if eapi is not None and not portage.eapi_is_supported(eapi): + mydata = self._metadata_callback( +- mycpv, myebuild, mylocation, {'EAPI':eapi}, emtime) ++ mycpv, mylocation, {'EAPI':eapi}, ebuild_hash) + else: +- proc = EbuildMetadataPhase(cpv=mycpv, ebuild_path=myebuild, +- ebuild_mtime=emtime, ++ proc = EbuildMetadataPhase(cpv=mycpv, ++ ebuild_hash=ebuild_hash, + metadata_callback=self._metadata_callback, portdb=self, + repo_path=mylocation, + scheduler=PollScheduler().sched_iface, +@@ -511,15 +513,17 @@ class portdbapi(dbapi): + # do we have a origin repository name for the current package + mydata["repository"] = self.repositories.get_name_for_location(mylocation) + mydata["INHERITED"] = ' '.join(mydata.get("_eclasses_", [])) +- mydata["_mtime_"] = st[stat.ST_MTIME] ++ mydata["_mtime_"] = ebuild_hash.mtime + + eapi = mydata.get("EAPI") + if not eapi: + eapi = "0" + mydata["EAPI"] = eapi + if not eapi_is_supported(eapi): +- for k in set(mydata).difference(("_mtime_", "_eclasses_")): +- mydata[k] = "" ++ keys = set(mydata) ++ keys.discard("_eclasses_") ++ keys.discard("_mtime_") ++ mydata.update((k, '') for k in keys) + mydata["EAPI"] = "-" + eapi.lstrip("-") + + #finally, we look at our internal cache entry and return the requested data. +@@ -576,7 +580,9 @@ class portdbapi(dbapi): + if myebuild is None: + raise AssertionError(_("ebuild not found for '%s'") % mypkg) + pkgdir = os.path.dirname(myebuild) +- mf = Manifest(pkgdir, self.settings["DISTDIR"]) ++ mf = self.repositories.get_repo_for_location( ++ os.path.dirname(os.path.dirname(pkgdir))).load_manifest( ++ pkgdir, self.settings["DISTDIR"]) + checksums = mf.getDigests() + if not checksums: + if debug: +@@ -644,7 +650,9 @@ class portdbapi(dbapi): + if myebuild is None: + raise AssertionError(_("ebuild not found for '%s'") % mypkg) + pkgdir = os.path.dirname(myebuild) +- mf = Manifest(pkgdir, self.settings["DISTDIR"]) ++ mf = self.repositories.get_repo_for_location( ++ os.path.dirname(os.path.dirname(pkgdir))) ++ mf = mf.load_manifest(pkgdir, self.settings["DISTDIR"]) + mysums = mf.getDigests() + + failures = {} +diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py +index 7f7873b..5214aa1 100644 +--- a/pym/portage/dbapi/vartree.py ++++ b/pym/portage/dbapi/vartree.py +@@ -60,6 +60,7 @@ from _emerge.PollScheduler import PollScheduler + from _emerge.MiscFunctionsProcess import MiscFunctionsProcess + + import errno ++import fileinput + import gc + import io + from itertools import chain +@@ -194,7 +195,7 @@ class vardbapi(dbapi): + """ + if self._lock_count: + self._lock_count += 1 +- else: ++ elif os.environ.get("PORTAGE_LOCKS") != "false": + if self._lock is not None: + raise AssertionError("already locked") + # At least the parent needs to exist for the lock file. +@@ -210,7 +211,7 @@ class vardbapi(dbapi): + """ + if self._lock_count > 1: + self._lock_count -= 1 +- else: ++ elif os.environ.get("PORTAGE_LOCKS") != "false": + if self._lock is None: + raise AssertionError("not locked") + self._lock_count = 0 +@@ -1839,16 +1840,10 @@ class dblink(object): + else: + self.settings.pop("PORTAGE_LOG_FILE", None) + +- # Lock the config memory file to prevent symlink creation +- # in merge_contents from overlapping with env-update. +- self.vartree.dbapi._fs_lock() +- try: +- env_update(target_root=self.settings['ROOT'], +- prev_mtimes=ldpath_mtimes, +- contents=contents, env=self.settings.environ(), +- writemsg_level=self._display_merge) +- finally: +- self.vartree.dbapi._fs_unlock() ++ env_update(target_root=self.settings['ROOT'], ++ prev_mtimes=ldpath_mtimes, ++ contents=contents, env=self.settings.environ(), ++ writemsg_level=self._display_merge, vardbapi=self.vartree.dbapi) + + return os.EX_OK + +@@ -3270,6 +3265,15 @@ class dblink(object): + max_dblnk = dblnk + self._installed_instance = max_dblnk + ++ if self.settings.get("INSTALL_MASK"): ++ # Apply INSTALL_MASK before collision-protect, since it may ++ # be useful to avoid collisions in some scenarios. ++ phase = MiscFunctionsProcess(background=False, ++ commands=["preinst_mask"], phase="preinst", ++ scheduler=self._scheduler, settings=self.settings) ++ phase.start() ++ phase.wait() ++ + # We check for unicode encoding issues after src_install. However, + # the check must be repeated here for binary packages (it's + # inexpensive since we call os.walk() here anyway). +@@ -3394,14 +3398,6 @@ class dblink(object): + if installed_files: + return 1 + +- # check for package collisions +- blockers = self._blockers +- if blockers is None: +- blockers = [] +- collisions, symlink_collisions, plib_collisions = \ +- self._collision_protect(srcroot, destroot, +- others_in_slot + blockers, myfilelist, mylinklist) +- + # Make sure the ebuild environment is initialized and that ${T}/elog + # exists for logging of collision-protect eerror messages. + if myebuild is None: +@@ -3413,6 +3409,14 @@ class dblink(object): + for other in others_in_slot]) + prepare_build_dirs(settings=self.settings, cleanup=cleanup) + ++ # check for package collisions ++ blockers = self._blockers ++ if blockers is None: ++ blockers = [] ++ collisions, symlink_collisions, plib_collisions = \ ++ self._collision_protect(srcroot, destroot, ++ others_in_slot + blockers, myfilelist, mylinklist) ++ + if collisions: + collision_protect = "collision-protect" in self.settings.features + protect_owned = "protect-owned" in self.settings.features +@@ -3803,17 +3807,24 @@ class dblink(object): + if pkgcmp(catpkgsplit(self.pkg)[1:], catpkgsplit(v)[1:]) < 0: + downgrade = True + +- # Lock the config memory file to prevent symlink creation +- # in merge_contents from overlapping with env-update. +- self.vartree.dbapi._fs_lock() +- try: +- #update environment settings, library paths. DO NOT change symlinks. +- env_update(makelinks=(not downgrade), +- target_root=self.settings['ROOT'], prev_mtimes=prev_mtimes, +- contents=contents, env=self.settings.environ(), +- writemsg_level=self._display_merge) +- finally: +- self.vartree.dbapi._fs_unlock() ++ #update environment settings, library paths. DO NOT change symlinks. ++ env_update(makelinks=(not downgrade), ++ target_root=self.settings['ROOT'], prev_mtimes=prev_mtimes, ++ contents=contents, env=self.settings.environ(), ++ writemsg_level=self._display_merge, vardbapi=self.vartree.dbapi) ++ ++ # Fix *.la files to point to libs in target_root, if they ++ # don't do so already. ++ re_root = self.settings["ROOT"].strip("/") ++ if re_root: ++ fix_files = [] ++ for path in contents: ++ if path.endswith(".la"): ++ if os.path.exists(path): fix_files.append(path) ++ if fix_files: ++ pat = re.compile(r"([' =](?:-[IL])?/)(usr|lib|opt)") ++ for line in fileinput.input(fix_files, inplace=1): ++ sys.stdout.write(pat.sub(r"\1%s/\2" % re_root, line)) + + # For gcc upgrades, preserved libs have to be removed after the + # the library path has been updated. +diff --git a/pym/portage/eclass_cache.py b/pym/portage/eclass_cache.py +index 1374f1d..1044ad0 100644 +--- a/pym/portage/eclass_cache.py ++++ b/pym/portage/eclass_cache.py +@@ -6,21 +6,57 @@ __all__ = ["cache"] + + import stat + import sys ++import operator + from portage.util import normalize_path + import errno +-from portage.exception import PermissionDenied ++from portage.exception import FileNotFound, PermissionDenied + from portage import os ++from portage import checksum + + if sys.hexversion >= 0x3000000: + long = int + ++ ++class hashed_path(object): ++ ++ def __init__(self, location): ++ self.location = location ++ ++ def __getattr__(self, attr): ++ if attr == 'mtime': ++ # use stat.ST_MTIME; accessing .st_mtime gets you a float ++ # depending on the python version, and long(float) introduces ++ # some rounding issues that aren't present for people using ++ # the straight c api. ++ # thus use the defacto python compatibility work around; ++ # access via index, which guarantees you get the raw long. ++ try: ++ self.mtime = obj = os.stat(self.location)[stat.ST_MTIME] ++ except OSError as e: ++ if e.errno in (errno.ENOENT, errno.ESTALE): ++ raise FileNotFound(self.location) ++ elif e.errno == PermissionDenied.errno: ++ raise PermissionDenied(self.location) ++ raise ++ return obj ++ if not attr.islower(): ++ # we don't care to allow .mD5 as an alias for .md5 ++ raise AttributeError(attr) ++ hashname = attr.upper() ++ if hashname not in checksum.hashfunc_map: ++ raise AttributeError(attr) ++ val = checksum.perform_checksum(self.location, hashname)[0] ++ setattr(self, attr, val) ++ return val ++ ++ + class cache(object): + """ + Maintains the cache information about eclasses used in ebuild. + """ + def __init__(self, porttree_root, overlays=[]): + +- self.eclasses = {} # {"Name": ("location","_mtime_")} ++ self.eclasses = {} # {"Name": hashed_path} + self._eclass_locations = {} + + # screw with the porttree ordering, w/out having bash inherit match it, and I'll hurt you. +@@ -80,14 +116,16 @@ class cache(object): + for y in eclass_filenames: + if not y.endswith(".eclass"): + continue ++ obj = hashed_path(os.path.join(x, y)) ++ obj.eclass_dir = x + try: +- mtime = os.stat(os.path.join(x, y))[stat.ST_MTIME] +- except OSError: ++ mtime = obj.mtime ++ except FileNotFound: + continue + ys=y[:-eclass_len] + if x == self._master_eclass_root: + master_eclasses[ys] = mtime +- self.eclasses[ys] = (x, mtime) ++ self.eclasses[ys] = obj + self._eclass_locations[ys] = x + continue + +@@ -98,22 +136,30 @@ class cache(object): + # so prefer the master entry. + continue + +- self.eclasses[ys] = (x, mtime) ++ self.eclasses[ys] = obj + self._eclass_locations[ys] = x + +- def is_eclass_data_valid(self, ec_dict): ++ def validate_and_rewrite_cache(self, ec_dict, chf_type, stores_paths): ++ """ ++ This will return an empty dict if the ec_dict parameter happens ++ to be empty, therefore callers must take care to distinguish ++ between empty dict and None return values. ++ """ + if not isinstance(ec_dict, dict): +- return False +- for eclass, tup in ec_dict.items(): +- cached_data = self.eclasses.get(eclass, None) +- """ Only use the mtime for validation since the probability of a +- collision is small and, depending on the cache implementation, the +- path may not be specified (cache from rsync mirrors, for example). +- """ +- if cached_data is None or tup[1] != cached_data[1]: +- return False +- +- return True ++ return None ++ our_getter = operator.attrgetter(chf_type) ++ cache_getter = lambda x:x ++ if stores_paths: ++ cache_getter = operator.itemgetter(1) ++ d = {} ++ for eclass, ec_data in ec_dict.items(): ++ cached_data = self.eclasses.get(eclass) ++ if cached_data is None: ++ return None ++ if cache_getter(ec_data) != our_getter(cached_data): ++ return None ++ d[eclass] = cached_data ++ return d + + def get_eclass_data(self, inherits): + ec_dict = {} +diff --git a/pym/portage/manifest.py b/pym/portage/manifest.py +index 13efab7..b2f96e6 100644 +--- a/pym/portage/manifest.py ++++ b/pym/portage/manifest.py +@@ -49,6 +49,12 @@ def guessManifestFileType(filename): + else: + return "DIST" + ++def guessThinManifestFileType(filename): ++ type = guessManifestFileType(filename) ++ if type != "DIST": ++ return None ++ return "DIST" ++ + def parseManifest2(mysplit): + myentry = None + if len(mysplit) > 4 and mysplit[0] in portage.const.MANIFEST2_IDENTIFIERS: +@@ -93,12 +99,15 @@ class Manifest2Entry(ManifestEntry): + class Manifest(object): + parsers = (parseManifest2,) + def __init__(self, pkgdir, distdir, fetchlist_dict=None, +- manifest1_compat=False, from_scratch=False): ++ manifest1_compat=False, from_scratch=False, thin=False, allow_missing=False, ++ allow_create=True): + """ create new Manifest instance for package in pkgdir + and add compability entries for old portage versions if manifest1_compat == True. + Do not parse Manifest file if from_scratch == True (only for internal use) + The fetchlist_dict parameter is required only for generation of +- a Manifest (not needed for parsing and checking sums).""" ++ a Manifest (not needed for parsing and checking sums). ++ If thin is specified, then the manifest carries only info for ++ distfiles.""" + self.pkgdir = _unicode_decode(pkgdir).rstrip(os.sep) + os.sep + self.fhashdict = {} + self.hashes = set() +@@ -120,7 +129,13 @@ class Manifest(object): + else: + self.fetchlist_dict = {} + self.distdir = distdir +- self.guessType = guessManifestFileType ++ self.thin = thin ++ if thin: ++ self.guessType = guessThinManifestFileType ++ else: ++ self.guessType = guessManifestFileType ++ self.allow_missing = allow_missing ++ self.allow_create = allow_create + + def getFullname(self): + """ Returns the absolute path to the Manifest file for this instance """ +@@ -223,11 +238,13 @@ class Manifest(object): + + def write(self, sign=False, force=False): + """ Write Manifest instance to disk, optionally signing it """ ++ if not self.allow_create: ++ return + self.checkIntegrity() + try: + myentries = list(self._createManifestEntries()) + update_manifest = True +- if not force: ++ if myentries and not force: + try: + f = io.open(_unicode_encode(self.getFullname(), + encoding=_encodings['fs'], errors='strict'), +@@ -246,9 +263,20 @@ class Manifest(object): + pass + else: + raise ++ + if update_manifest: +- write_atomic(self.getFullname(), +- "".join("%s\n" % str(myentry) for myentry in myentries)) ++ if myentries or not (self.thin or self.allow_missing): ++ write_atomic(self.getFullname(), "".join("%s\n" % ++ str(myentry) for myentry in myentries)) ++ else: ++ # With thin manifest, there's no need to have ++ # a Manifest file if there are no DIST entries. ++ try: ++ os.unlink(self.getFullname()) ++ except OSError as e: ++ if e.errno != errno.ENOENT: ++ raise ++ + if sign: + self.sign() + except (IOError, OSError) as e: +@@ -305,6 +333,8 @@ class Manifest(object): + distfiles to raise a FileNotFound exception for (if no file or existing + checksums are available), and defaults to all distfiles when not + specified.""" ++ if not self.allow_create: ++ return + if checkExisting: + self.checkAllHashes() + if assumeDistHashesSometimes or assumeDistHashesAlways: +@@ -313,64 +343,20 @@ class Manifest(object): + distfilehashes = {} + self.__init__(self.pkgdir, self.distdir, + fetchlist_dict=self.fetchlist_dict, from_scratch=True, +- manifest1_compat=False) +- cpvlist = [] ++ manifest1_compat=False, thin=self.thin) + pn = os.path.basename(self.pkgdir.rstrip(os.path.sep)) + cat = self._pkgdir_category() + + pkgdir = self.pkgdir ++ if self.thin: ++ cpvlist = self._update_thin_pkgdir(cat, pn, pkgdir) ++ else: ++ cpvlist = self._update_thick_pkgdir(cat, pn, pkgdir) + +- for pkgdir, pkgdir_dirs, pkgdir_files in os.walk(pkgdir): +- break +- for f in pkgdir_files: +- try: +- f = _unicode_decode(f, +- encoding=_encodings['fs'], errors='strict') +- except UnicodeDecodeError: +- continue +- if f[:1] == ".": +- continue +- pf = None +- if f[-7:] == '.ebuild': +- pf = f[:-7] +- if pf is not None: +- mytype = "EBUILD" +- ps = portage.versions._pkgsplit(pf) +- cpv = "%s/%s" % (cat, pf) +- if not ps: +- raise PortagePackageException( +- _("Invalid package name: '%s'") % cpv) +- if ps[0] != pn: +- raise PortagePackageException( +- _("Package name does not " +- "match directory name: '%s'") % cpv) +- cpvlist.append(cpv) +- elif manifest2MiscfileFilter(f): +- mytype = "MISC" +- else: +- continue +- self.fhashdict[mytype][f] = perform_multiple_checksums(self.pkgdir+f, self.hashes) +- recursive_files = [] +- +- pkgdir = self.pkgdir +- cut_len = len(os.path.join(pkgdir, "files") + os.sep) +- for parentdir, dirs, files in os.walk(os.path.join(pkgdir, "files")): +- for f in files: +- try: +- f = _unicode_decode(f, +- encoding=_encodings['fs'], errors='strict') +- except UnicodeDecodeError: +- continue +- full_path = os.path.join(parentdir, f) +- recursive_files.append(full_path[cut_len:]) +- for f in recursive_files: +- if not manifest2AuxfileFilter(f): +- continue +- self.fhashdict["AUX"][f] = perform_multiple_checksums( +- os.path.join(self.pkgdir, "files", f.lstrip(os.sep)), self.hashes) + distlist = set() + for cpv in cpvlist: + distlist.update(self._getCpvDistfiles(cpv)) ++ + if requiredDistfiles is None: + # This allows us to force removal of stale digests for the + # ebuild --force digest option (no distfiles are required). +@@ -404,6 +390,81 @@ class Manifest(object): + if f in requiredDistfiles: + raise + ++ def _is_cpv(self, cat, pn, filename): ++ if not filename.endswith(".ebuild"): ++ return None ++ pf = filename[:-7] ++ if pf is None: ++ return None ++ ps = portage.versions._pkgsplit(pf) ++ cpv = "%s/%s" % (cat, pf) ++ if not ps: ++ raise PortagePackageException( ++ _("Invalid package name: '%s'") % cpv) ++ if ps[0] != pn: ++ raise PortagePackageException( ++ _("Package name does not " ++ "match directory name: '%s'") % cpv) ++ return cpv ++ ++ def _update_thin_pkgdir(self, cat, pn, pkgdir): ++ for pkgdir, pkgdir_dirs, pkgdir_files in os.walk(pkgdir): ++ break ++ cpvlist = [] ++ for f in pkgdir_files: ++ try: ++ f = _unicode_decode(f, ++ encoding=_encodings['fs'], errors='strict') ++ except UnicodeDecodeError: ++ continue ++ if f[:1] == '.': ++ continue ++ pf = self._is_cpv(cat, pn, f) ++ if pf is not None: ++ cpvlist.append(pf) ++ return cpvlist ++ ++ def _update_thick_pkgdir(self, cat, pn, pkgdir): ++ cpvlist = [] ++ for pkgdir, pkgdir_dirs, pkgdir_files in os.walk(pkgdir): ++ break ++ for f in pkgdir_files: ++ try: ++ f = _unicode_decode(f, ++ encoding=_encodings['fs'], errors='strict') ++ except UnicodeDecodeError: ++ continue ++ if f[:1] == ".": ++ continue ++ pf = self._is_cpv(cat, pn, f) ++ if pf is not None: ++ mytype = "EBUILD" ++ cpvlist.append(pf) ++ elif manifest2MiscfileFilter(f): ++ mytype = "MISC" ++ else: ++ continue ++ self.fhashdict[mytype][f] = perform_multiple_checksums(self.pkgdir+f, self.hashes) ++ recursive_files = [] ++ ++ pkgdir = self.pkgdir ++ cut_len = len(os.path.join(pkgdir, "files") + os.sep) ++ for parentdir, dirs, files in os.walk(os.path.join(pkgdir, "files")): ++ for f in files: ++ try: ++ f = _unicode_decode(f, ++ encoding=_encodings['fs'], errors='strict') ++ except UnicodeDecodeError: ++ continue ++ full_path = os.path.join(parentdir, f) ++ recursive_files.append(full_path[cut_len:]) ++ for f in recursive_files: ++ if not manifest2AuxfileFilter(f): ++ continue ++ self.fhashdict["AUX"][f] = perform_multiple_checksums( ++ os.path.join(self.pkgdir, "files", f.lstrip(os.sep)), self.hashes) ++ return cpvlist ++ + def _pkgdir_category(self): + return self.pkgdir.rstrip(os.sep).split(os.sep)[-2] + +diff --git a/pym/portage/package/ebuild/_config/special_env_vars.py b/pym/portage/package/ebuild/_config/special_env_vars.py +index 87aa606..02a7844 100644 +--- a/pym/portage/package/ebuild/_config/special_env_vars.py ++++ b/pym/portage/package/ebuild/_config/special_env_vars.py +@@ -156,7 +156,7 @@ environ_filter += [ + "PORTAGE_RO_DISTDIRS", + "PORTAGE_RSYNC_EXTRA_OPTS", "PORTAGE_RSYNC_OPTS", + "PORTAGE_RSYNC_RETRIES", "PORTAGE_SYNC_STALE", +- "PORTAGE_USE", "PORT_LOGDIR", ++ "PORTAGE_USE", "PORT_LOGDIR", "PORT_LOGDIR_CLEAN", + "QUICKPKG_DEFAULT_OPTS", + "RESUMECOMMAND", "RESUMECOMMAND_FTP", + "RESUMECOMMAND_HTTP", "RESUMECOMMAND_HTTPS", +diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py +index a591c9a..5ed477e 100644 +--- a/pym/portage/package/ebuild/config.py ++++ b/pym/portage/package/ebuild/config.py +@@ -309,7 +309,6 @@ class config(object): + if self.modules["user"] is None: + self.modules["user"] = {} + self.modules["default"] = { +- "portdbapi.metadbmodule": "portage.cache.metadata.database", + "portdbapi.auxdbmodule": "portage.cache.flat_hash.database", + } + +@@ -864,7 +863,11 @@ class config(object): + try: + mod = load_mod(best_mod) + except ImportError: +- raise ++ if best_mod == "portage.cache.metadata_overlay.database": ++ best_mod = "portage.cache.flat_hash.database" ++ mod = load_mod(best_mod) ++ else: ++ raise + return mod + + def lock(self): +diff --git a/pym/portage/package/ebuild/digestcheck.py b/pym/portage/package/ebuild/digestcheck.py +index 1e34b14..6c823e0 100644 +--- a/pym/portage/package/ebuild/digestcheck.py ++++ b/pym/portage/package/ebuild/digestcheck.py +@@ -28,49 +28,33 @@ def digestcheck(myfiles, mysettings, strict=False, justmanifest=None, mf=None): + + if mysettings.get("EBUILD_SKIP_MANIFEST") == "1": + return 1 +- allow_missing = "allow-missing-manifests" in mysettings.features + pkgdir = mysettings["O"] +- manifest_path = os.path.join(pkgdir, "Manifest") +- if not os.path.exists(manifest_path): +- if allow_missing: +- return 1 +- writemsg(_("!!! Manifest file not found: '%s'\n") % manifest_path, +- noiselevel=-1) +- if strict: +- return 0 +- else: +- return 1 + if mf is None: +- mf = Manifest(pkgdir, mysettings["DISTDIR"]) +- manifest_empty = True +- for d in mf.fhashdict.values(): +- if d: +- manifest_empty = False +- break +- if manifest_empty: +- writemsg(_("!!! Manifest is empty: '%s'\n") % manifest_path, +- noiselevel=-1) +- if strict: +- return 0 +- else: +- return 1 ++ mf = mysettings.repositories.get_repo_for_location( ++ os.path.dirname(os.path.dirname(pkgdir))) ++ mf = mf.load_manifest(pkgdir, mysettings["DISTDIR"]) + eout = EOutput() + eout.quiet = mysettings.get("PORTAGE_QUIET", None) == "1" + try: + if strict and "PORTAGE_PARALLEL_FETCHONLY" not in mysettings: +- eout.ebegin(_("checking ebuild checksums ;-)")) +- mf.checkTypeHashes("EBUILD") +- eout.eend(0) +- eout.ebegin(_("checking auxfile checksums ;-)")) +- mf.checkTypeHashes("AUX") +- eout.eend(0) +- eout.ebegin(_("checking miscfile checksums ;-)")) +- mf.checkTypeHashes("MISC", ignoreMissingFiles=True) +- eout.eend(0) ++ if mf.fhashdict.get("EBUILD"): ++ eout.ebegin(_("checking ebuild checksums ;-)")) ++ mf.checkTypeHashes("EBUILD") ++ eout.eend(0) ++ if mf.fhashdict.get("AUX"): ++ eout.ebegin(_("checking auxfile checksums ;-)")) ++ mf.checkTypeHashes("AUX") ++ eout.eend(0) ++ if mf.fhashdict.get("MISC"): ++ eout.ebegin(_("checking miscfile checksums ;-)")) ++ mf.checkTypeHashes("MISC", ignoreMissingFiles=True) ++ eout.eend(0) + for f in myfiles: + eout.ebegin(_("checking %s ;-)") % f) + ftype = mf.findFile(f) + if ftype is None: ++ if mf.allow_missing: ++ continue + eout.eend(1) + writemsg(_("\n!!! Missing digest for '%s'\n") % (f,), + noiselevel=-1) +@@ -90,7 +74,7 @@ def digestcheck(myfiles, mysettings, strict=False, justmanifest=None, mf=None): + writemsg(_("!!! Got: %s\n") % e.value[2], noiselevel=-1) + writemsg(_("!!! Expected: %s\n") % e.value[3], noiselevel=-1) + return 0 +- if allow_missing: ++ if mf.thin or mf.allow_missing: + # In this case we ignore any missing digests that + # would otherwise be detected below. + return 1 +diff --git a/pym/portage/package/ebuild/digestgen.py b/pym/portage/package/ebuild/digestgen.py +index eb7210e..f7cf149 100644 +--- a/pym/portage/package/ebuild/digestgen.py ++++ b/pym/portage/package/ebuild/digestgen.py +@@ -53,8 +53,15 @@ def digestgen(myarchives=None, mysettings=None, myportdb=None): + return 0 + mytree = os.path.dirname(os.path.dirname(mysettings["O"])) + manifest1_compat = False +- mf = Manifest(mysettings["O"], mysettings["DISTDIR"], ++ mf = mysettings.repositories.get_repo_for_location(mytree) ++ mf = mf.load_manifest(mysettings["O"], mysettings["DISTDIR"], + fetchlist_dict=fetchlist_dict, manifest1_compat=manifest1_compat) ++ ++ if not mf.allow_create: ++ writemsg_stdout(_(">>> Skipping creating Manifest for %s; " ++ "repository is configured to not use them\n") % mysettings["O"]) ++ return 1 ++ + # Don't require all hashes since that can trigger excessive + # fetches when sufficient digests already exist. To ease transition + # while Manifest 1 is being removed, only require hashes that will +diff --git a/pym/portage/package/ebuild/doebuild.py b/pym/portage/package/ebuild/doebuild.py +index a710e09..f5c4c81 100644 +--- a/pym/portage/package/ebuild/doebuild.py ++++ b/pym/portage/package/ebuild/doebuild.py +@@ -3,6 +3,7 @@ + + __all__ = ['doebuild', 'doebuild_environment', 'spawn', 'spawnebuild'] + ++import fileinput + import gzip + import errno + import io +@@ -50,7 +51,6 @@ from portage.exception import DigestException, FileNotFound, \ + IncorrectParameter, InvalidDependString, PermissionDenied, \ + UnsupportedAPIException + from portage.localization import _ +-from portage.manifest import Manifest + from portage.output import style_to_ansi_code + from portage.package.ebuild.prepare_build_dirs import prepare_build_dirs + from portage.util import apply_recursive_permissions, \ +@@ -480,21 +480,27 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=0, + return 1 + + global _doebuild_manifest_cache ++ pkgdir = os.path.dirname(myebuild) ++ manifest_path = os.path.join(pkgdir, "Manifest") ++ if tree == "porttree": ++ repo_config = mysettings.repositories.get_repo_for_location( ++ os.path.dirname(os.path.dirname(pkgdir))) ++ else: ++ repo_config = None + mf = None + if "strict" in features and \ + "digest" not in features and \ + tree == "porttree" and \ ++ not repo_config.thin_manifest and \ + mydo not in ("digest", "manifest", "help") and \ +- not portage._doebuild_manifest_exempt_depend: ++ not portage._doebuild_manifest_exempt_depend and \ ++ not (repo_config.allow_missing_manifest and not os.path.exists(manifest_path)): + # Always verify the ebuild checksums before executing it. + global _doebuild_broken_ebuilds + + if myebuild in _doebuild_broken_ebuilds: + return 1 + +- pkgdir = os.path.dirname(myebuild) +- manifest_path = os.path.join(pkgdir, "Manifest") +- + # Avoid checking the same Manifest several times in a row during a + # regen with an empty cache. + if _doebuild_manifest_cache is None or \ +@@ -505,7 +511,7 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=0, + out.eerror(_("Manifest not found for '%s'") % (myebuild,)) + _doebuild_broken_ebuilds.add(myebuild) + return 1 +- mf = Manifest(pkgdir, mysettings["DISTDIR"]) ++ mf = repo_config.load_manifest(pkgdir, mysettings["DISTDIR"]) + + else: + mf = _doebuild_manifest_cache +@@ -513,10 +519,12 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=0, + try: + mf.checkFileHashes("EBUILD", os.path.basename(myebuild)) + except KeyError: +- out = portage.output.EOutput() +- out.eerror(_("Missing digest for '%s'") % (myebuild,)) +- _doebuild_broken_ebuilds.add(myebuild) +- return 1 ++ if not (mf.allow_missing and ++ os.path.basename(myebuild) not in mf.fhashdict["EBUILD"]): ++ out = portage.output.EOutput() ++ out.eerror(_("Missing digest for '%s'") % (myebuild,)) ++ _doebuild_broken_ebuilds.add(myebuild) ++ return 1 + except FileNotFound: + out = portage.output.EOutput() + out.eerror(_("A file listed in the Manifest " +@@ -536,7 +544,7 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=0, + if mf.getFullname() in _doebuild_broken_manifests: + return 1 + +- if mf is not _doebuild_manifest_cache: ++ if mf is not _doebuild_manifest_cache and not mf.allow_missing: + + # Make sure that all of the ebuilds are + # actually listed in the Manifest. +@@ -553,8 +561,8 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=0, + _doebuild_broken_manifests.add(manifest_path) + return 1 + +- # Only cache it if the above stray files test succeeds. +- _doebuild_manifest_cache = mf ++ # We cache it only after all above checks succeed. ++ _doebuild_manifest_cache = mf + + logfile=None + builddir_lock = None +@@ -1300,13 +1308,14 @@ _post_phase_cmds = { + + "install" : [ + "install_qa_check", +- "install_symlink_html_docs"], ++ "install_symlink_html_docs", ++ "install_hooks"], + + "preinst" : [ + "preinst_sfperms", + "preinst_selinux_labels", + "preinst_suid_scan", +- "preinst_mask"] ++ ] + } + + def _post_phase_userpriv_perms(mysettings): +@@ -1497,6 +1506,7 @@ def _post_src_install_uid_fix(mysettings, out): + + destdir = mysettings["D"] + unicode_errors = [] ++ fix_files = [] + + while True: + +@@ -1585,10 +1595,12 @@ def _post_src_install_uid_fix(mysettings, out): + new_contents, mode='wb') + + mystat = os.lstat(fpath) +- if stat.S_ISREG(mystat.st_mode) and \ +- mystat.st_ino not in counted_inodes: +- counted_inodes.add(mystat.st_ino) +- size += mystat.st_size ++ if stat.S_ISREG(mystat.st_mode): ++ if fname.endswith(".la"): ++ fix_files.append(fpath) ++ if mystat.st_ino not in counted_inodes: ++ counted_inodes.add(mystat.st_ino) ++ size += mystat.st_size + if mystat.st_uid != portage_uid and \ + mystat.st_gid != portage_gid: + continue +@@ -1656,6 +1668,14 @@ def _post_src_install_uid_fix(mysettings, out): + mode='w', encoding=_encodings['repo.content'], + errors='strict').write(_unicode_decode(v + '\n')) + ++ re_root = mysettings["ROOT"].strip("/") ++ if fix_files and re_root: ++ # Replace references to our sysroot with references to "/" in binpkg. ++ # Sysroot will be re-appended when the package is installed. ++ pat = re.compile(r"([' =](-[IL])?/)%s/" % re.escape(re_root)) ++ for line in fileinput.input(fix_files, inplace=1): ++ sys.stdout.write(pat.sub(r"\1", line)) ++ + _reapply_bsdflags_to_image(mysettings) + + def _reapply_bsdflags_to_image(mysettings): +diff --git a/pym/portage/package/ebuild/fetch.py b/pym/portage/package/ebuild/fetch.py +index 5cbbf87..11c4c01 100644 +--- a/pym/portage/package/ebuild/fetch.py ++++ b/pym/portage/package/ebuild/fetch.py +@@ -356,7 +356,8 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, + allow_missing_digests = True + pkgdir = mysettings.get("O") + if digests is None and not (pkgdir is None or skip_manifest): +- mydigests = Manifest( ++ mydigests = mysettings.repositories.get_repo_for_location( ++ os.path.dirname(os.path.dirname(pkgdir))).load_manifest( + pkgdir, mysettings["DISTDIR"]).getTypeDigests("DIST") + elif digests is None or skip_manifest: + # no digests because fetch was not called for a specific package +diff --git a/pym/portage/repository/config.py b/pym/portage/repository/config.py +index 9f0bb99..0fe4a0e 100644 +--- a/pym/portage/repository/config.py ++++ b/pym/portage/repository/config.py +@@ -16,6 +16,7 @@ from portage.util import normalize_path, writemsg, writemsg_level, shlex_split + from portage.localization import _ + from portage import _unicode_encode + from portage import _encodings ++from portage import manifest + + _repo_name_sub_re = re.compile(r'[^\w-]') + +@@ -36,7 +37,8 @@ class RepoConfig(object): + """Stores config of one repository""" + + __slots__ = ['aliases', 'eclass_overrides', 'eclass_locations', 'location', 'user_location', 'masters', 'main_repo', +- 'missing_repo_name', 'name', 'priority', 'sync', 'format'] ++ 'missing_repo_name', 'name', 'priority', 'sync', 'format', 'sign_manifest', 'thin_manifest', ++ 'allow_missing_manifest', 'create_manifest', 'disable_manifest', 'cache_format'] + + def __init__(self, name, repo_opts): + """Build a RepoConfig with options in repo_opts +@@ -105,6 +107,36 @@ class RepoConfig(object): + missing = False + self.name = name + self.missing_repo_name = missing ++ self.thin_manifest = False ++ self.allow_missing_manifest = False ++ self.create_manifest = True ++ self.disable_manifest = False ++ self.cache_format = None ++ ++ def get_pregenerated_cache(self, auxdbkeys, readonly=True, force=False): ++ format = self.cache_format ++ if format is None: ++ if not force: ++ return None ++ format = 'pms' ++ if format == 'pms': ++ from portage.cache.metadata import database ++ name = 'metadata/cache' ++ elif format == 'md5-dict': ++ from portage.cache.flat_hash import md5_database as database ++ name = 'metadata/md5-cache' ++ else: ++ return None ++ return database(self.location, name, ++ auxdbkeys, readonly=readonly) ++ ++ def load_manifest(self, *args, **kwds): ++ kwds['thin'] = self.thin_manifest ++ kwds['allow_missing'] = self.allow_missing_manifest ++ kwds['allow_create'] = self.create_manifest ++ if self.disable_manifest: ++ kwds['from_scratch'] = True ++ return manifest.Manifest(*args, **kwds) + + def update(self, new_repo): + """Update repository with options in another RepoConfig""" +@@ -169,107 +201,101 @@ class RepoConfig(object): + + class RepoConfigLoader(object): + """Loads and store config of several repositories, loaded from PORTDIR_OVERLAY or repos.conf""" +- def __init__(self, paths, settings): +- """Load config from files in paths""" +- def parse(paths, prepos, ignored_map, ignored_location_map): +- """Parse files in paths to load config""" +- parser = SafeConfigParser() +- try: +- parser.read(paths) +- except ParsingError as e: +- writemsg(_("!!! Error while reading repo config file: %s\n") % e, noiselevel=-1) +- prepos['DEFAULT'] = RepoConfig("DEFAULT", parser.defaults()) +- for sname in parser.sections(): +- optdict = {} +- for oname in parser.options(sname): +- optdict[oname] = parser.get(sname, oname) +- +- repo = RepoConfig(sname, optdict) +- if repo.location and not os.path.exists(repo.location): +- writemsg(_("!!! Invalid repos.conf entry '%s'" +- " (not a dir): '%s'\n") % (sname, repo.location), noiselevel=-1) +- continue + +- if repo.name in prepos: +- old_location = prepos[repo.name].location +- if old_location is not None and repo.location is not None and old_location != repo.location: +- ignored_map.setdefault(repo.name, []).append(old_location) +- ignored_location_map[old_location] = repo.name +- prepos[repo.name].update(repo) +- else: +- prepos[repo.name] = repo +- +- def add_overlays(portdir, portdir_overlay, prepos, ignored_map, ignored_location_map): +- """Add overlays in PORTDIR_OVERLAY as repositories""" +- overlays = [] +- if portdir: +- portdir = normalize_path(portdir) +- overlays.append(portdir) +- port_ov = [normalize_path(i) for i in shlex_split(portdir_overlay)] +- overlays.extend(port_ov) +- default_repo_opts = {} +- if prepos['DEFAULT'].aliases is not None: +- default_repo_opts['aliases'] = \ +- ' '.join(prepos['DEFAULT'].aliases) +- if prepos['DEFAULT'].eclass_overrides is not None: +- default_repo_opts['eclass-overrides'] = \ +- ' '.join(prepos['DEFAULT'].eclass_overrides) +- if prepos['DEFAULT'].masters is not None: +- default_repo_opts['masters'] = \ +- ' '.join(prepos['DEFAULT'].masters) +- if overlays: +- #overlay priority is negative because we want them to be looked before any other repo +- base_priority = 0 +- for ov in overlays: +- if os.path.isdir(ov): +- repo_opts = default_repo_opts.copy() +- repo_opts['location'] = ov +- repo = RepoConfig(None, repo_opts) +- repo_conf_opts = prepos.get(repo.name) +- if repo_conf_opts is not None: +- if repo_conf_opts.aliases is not None: +- repo_opts['aliases'] = \ +- ' '.join(repo_conf_opts.aliases) +- if repo_conf_opts.eclass_overrides is not None: +- repo_opts['eclass-overrides'] = \ +- ' '.join(repo_conf_opts.eclass_overrides) +- if repo_conf_opts.masters is not None: +- repo_opts['masters'] = \ +- ' '.join(repo_conf_opts.masters) +- repo = RepoConfig(repo.name, repo_opts) +- if repo.name in prepos: +- old_location = prepos[repo.name].location +- if old_location is not None and old_location != repo.location: +- ignored_map.setdefault(repo.name, []).append(old_location) +- ignored_location_map[old_location] = repo.name +- if old_location == portdir: +- portdir = repo.user_location +- prepos[repo.name].update(repo) +- repo = prepos[repo.name] +- else: +- prepos[repo.name] = repo +- +- if ov == portdir and portdir not in port_ov: +- repo.priority = -1000 +- else: +- repo.priority = base_priority +- base_priority += 1 ++ @staticmethod ++ def _add_overlays(portdir, portdir_overlay, prepos, ignored_map, ignored_location_map): ++ """Add overlays in PORTDIR_OVERLAY as repositories""" ++ overlays = [] ++ if portdir: ++ portdir = normalize_path(portdir) ++ overlays.append(portdir) ++ port_ov = [normalize_path(i) for i in shlex_split(portdir_overlay)] ++ overlays.extend(port_ov) ++ default_repo_opts = {} ++ if prepos['DEFAULT'].aliases is not None: ++ default_repo_opts['aliases'] = \ ++ ' '.join(prepos['DEFAULT'].aliases) ++ if prepos['DEFAULT'].eclass_overrides is not None: ++ default_repo_opts['eclass-overrides'] = \ ++ ' '.join(prepos['DEFAULT'].eclass_overrides) ++ if prepos['DEFAULT'].masters is not None: ++ default_repo_opts['masters'] = \ ++ ' '.join(prepos['DEFAULT'].masters) ++ if overlays: ++ #overlay priority is negative because we want them to be looked before any other repo ++ base_priority = 0 ++ for ov in overlays: ++ if os.path.isdir(ov): ++ repo_opts = default_repo_opts.copy() ++ repo_opts['location'] = ov ++ repo = RepoConfig(None, repo_opts) ++ repo_conf_opts = prepos.get(repo.name) ++ if repo_conf_opts is not None: ++ if repo_conf_opts.aliases is not None: ++ repo_opts['aliases'] = \ ++ ' '.join(repo_conf_opts.aliases) ++ if repo_conf_opts.eclass_overrides is not None: ++ repo_opts['eclass-overrides'] = \ ++ ' '.join(repo_conf_opts.eclass_overrides) ++ if repo_conf_opts.masters is not None: ++ repo_opts['masters'] = \ ++ ' '.join(repo_conf_opts.masters) ++ repo = RepoConfig(repo.name, repo_opts) ++ if repo.name in prepos: ++ old_location = prepos[repo.name].location ++ if old_location is not None and old_location != repo.location: ++ ignored_map.setdefault(repo.name, []).append(old_location) ++ ignored_location_map[old_location] = repo.name ++ if old_location == portdir: ++ portdir = repo.user_location ++ prepos[repo.name].update(repo) ++ repo = prepos[repo.name] ++ else: ++ prepos[repo.name] = repo + ++ if ov == portdir and portdir not in port_ov: ++ repo.priority = -1000 + else: +- writemsg(_("!!! Invalid PORTDIR_OVERLAY" +- " (not a dir): '%s'\n") % ov, noiselevel=-1) ++ repo.priority = base_priority ++ base_priority += 1 ++ ++ else: ++ writemsg(_("!!! Invalid PORTDIR_OVERLAY" ++ " (not a dir): '%s'\n") % ov, noiselevel=-1) ++ ++ return portdir ++ ++ @staticmethod ++ def _parse(paths, prepos, ignored_map, ignored_location_map): ++ """Parse files in paths to load config""" ++ parser = SafeConfigParser() ++ try: ++ parser.read(paths) ++ except ParsingError as e: ++ writemsg(_("!!! Error while reading repo config file: %s\n") % e, noiselevel=-1) ++ prepos['DEFAULT'] = RepoConfig("DEFAULT", parser.defaults()) ++ for sname in parser.sections(): ++ optdict = {} ++ for oname in parser.options(sname): ++ optdict[oname] = parser.get(sname, oname) ++ ++ repo = RepoConfig(sname, optdict) ++ if repo.location and not os.path.exists(repo.location): ++ writemsg(_("!!! Invalid repos.conf entry '%s'" ++ " (not a dir): '%s'\n") % (sname, repo.location), noiselevel=-1) ++ continue + +- return portdir ++ if repo.name in prepos: ++ old_location = prepos[repo.name].location ++ if old_location is not None and repo.location is not None and old_location != repo.location: ++ ignored_map.setdefault(repo.name, []).append(old_location) ++ ignored_location_map[old_location] = repo.name ++ prepos[repo.name].update(repo) ++ else: ++ prepos[repo.name] = repo + +- def repo_priority(r): +- """ +- Key funtion for comparing repositories by priority. +- None is equal priority zero. +- """ +- x = prepos[r].priority +- if x is None: +- return 0 +- return x ++ def __init__(self, paths, settings): ++ """Load config from files in paths""" + + prepos = {} + location_map = {} +@@ -279,10 +305,12 @@ class RepoConfigLoader(object): + + portdir = settings.get('PORTDIR', '') + portdir_overlay = settings.get('PORTDIR_OVERLAY', '') +- parse(paths, prepos, ignored_map, ignored_location_map) ++ ++ self._parse(paths, prepos, ignored_map, ignored_location_map) ++ + # If PORTDIR_OVERLAY contains a repo with the same repo_name as + # PORTDIR, then PORTDIR is overridden. +- portdir = add_overlays(portdir, portdir_overlay, prepos, ++ portdir = self._add_overlays(portdir, portdir_overlay, prepos, + ignored_map, ignored_location_map) + if portdir and portdir.strip(): + portdir = os.path.realpath(portdir) +@@ -319,6 +347,21 @@ class RepoConfigLoader(object): + aliases.extend(repo.aliases) + repo.aliases = tuple(sorted(set(aliases))) + ++ if layout_data.get('thin-manifests', '').lower() == 'true': ++ repo.thin_manifest = True ++ ++ manifest_policy = layout_data.get('use-manifests', 'strict').lower() ++ repo.allow_missing_manifest = manifest_policy != 'strict' ++ repo.create_manifest = manifest_policy != 'false' ++ repo.disable_manifest = manifest_policy == 'false' ++ ++ # for compatibility w/ PMS, fallback to pms; but also check if the ++ # cache exists or not. ++ repo.cache_format = layout_data.get('cache-format', 'pms').lower() ++ if repo.cache_format == 'pms' and not os.path.isdir( ++ os.path.join(repo.location, 'metadata', 'cache')): ++ repo.cache_format = None ++ + #Take aliases into account. + new_prepos = {} + for repo_name, repo in prepos.items(): +@@ -342,9 +385,11 @@ class RepoConfigLoader(object): + + # filter duplicates from aliases, by only including + # items where repo.name == key +- prepos_order = [repo.name for key, repo in prepos.items() \ ++ ++ prepos_order = sorted(prepos.items(), key=lambda r:r[1].priority or 0) ++ ++ prepos_order = [repo.name for (key, repo) in prepos_order + if repo.name == key and repo.location is not None] +- prepos_order.sort(key=repo_priority) + + if portdir in location_map: + portdir_repo = prepos[location_map[portdir]] +@@ -488,6 +533,9 @@ class RepoConfigLoader(object): + return None + return self.treemap[repo_name] + ++ def get_repo_for_location(self, location): ++ return self.prepos[self.get_name_for_location(location)] ++ + def __getitem__(self, repo_name): + return self.prepos[repo_name] + +diff --git a/pym/portage/tests/resolver/test_rebuild.py b/pym/portage/tests/resolver/test_rebuild.py +index b9c4d6d..6f1a783 100644 +--- a/pym/portage/tests/resolver/test_rebuild.py ++++ b/pym/portage/tests/resolver/test_rebuild.py +@@ -9,57 +9,58 @@ class RebuildTestCase(TestCase): + + def testRebuild(self): + """ +- Rebuild packages when dependencies that are used at both build-time and +- run-time are upgraded. ++ Rebuild packages when build-time dependencies are upgraded. + """ + + ebuilds = { + "sys-libs/x-1": { }, + "sys-libs/x-1-r1": { }, + "sys-libs/x-2": { }, +- "sys-apps/a-1": { "DEPEND" : "sys-libs/x", "RDEPEND" : "sys-libs/x"}, +- "sys-apps/a-2": { "DEPEND" : "sys-libs/x", "RDEPEND" : "sys-libs/x"}, +- "sys-apps/b-1": { "DEPEND" : "sys-libs/x", "RDEPEND" : "sys-libs/x"}, +- "sys-apps/b-2": { "DEPEND" : "sys-libs/x", "RDEPEND" : "sys-libs/x"}, ++ "sys-apps/a-1": { "DEPEND" : "sys-libs/x", "RDEPEND" : ""}, ++ "sys-apps/a-2": { "DEPEND" : "sys-libs/x", "RDEPEND" : ""}, ++ "sys-apps/b-1": { "DEPEND" : "sys-libs/x", "RDEPEND" : ""}, ++ "sys-apps/b-2": { "DEPEND" : "sys-libs/x", "RDEPEND" : ""}, + "sys-apps/c-1": { "DEPEND" : "sys-libs/x", "RDEPEND" : ""}, + "sys-apps/c-2": { "DEPEND" : "sys-libs/x", "RDEPEND" : ""}, + "sys-apps/d-1": { "RDEPEND" : "sys-libs/x"}, + "sys-apps/d-2": { "RDEPEND" : "sys-libs/x"}, +- "sys-apps/e-2": { "DEPEND" : "sys-libs/x", "RDEPEND" : "sys-libs/x"}, +- "sys-apps/f-2": { "DEPEND" : "sys-apps/a", "RDEPEND" : "sys-apps/a"}, ++ "sys-apps/e-2": { "DEPEND" : "sys-libs/x", "RDEPEND" : ""}, ++ "sys-apps/f-2": { "DEPEND" : "sys-apps/a", "RDEPEND" : ""}, + "sys-apps/g-2": { "DEPEND" : "sys-apps/b sys-libs/x", +- "RDEPEND" : "sys-apps/b"}, ++ "RDEPEND" : ""}, + } + + installed = { + "sys-libs/x-1": { }, +- "sys-apps/a-1": { "DEPEND" : "sys-libs/x", "RDEPEND" : "sys-libs/x"}, +- "sys-apps/b-1": { "DEPEND" : "sys-libs/x", "RDEPEND" : "sys-libs/x"}, ++ "sys-apps/a-1": { "DEPEND" : "sys-libs/x", "RDEPEND" : ""}, ++ "sys-apps/b-1": { "DEPEND" : "sys-libs/x", "RDEPEND" : ""}, + "sys-apps/c-1": { "DEPEND" : "sys-libs/x", "RDEPEND" : ""}, + "sys-apps/d-1": { "RDEPEND" : "sys-libs/x"}, +- "sys-apps/e-1": { "DEPEND" : "sys-libs/x", "RDEPEND" : "sys-libs/x"}, +- "sys-apps/f-1": { "DEPEND" : "sys-apps/a", "RDEPEND" : "sys-apps/a"}, +- "sys-apps/g-1": { "DEPEND" : "sys-apps/b sys-libs/x", +- "RDEPEND" : "sys-apps/b"}, ++ "sys-apps/e-1": { "DEPEND" : "sys-libs/x", "RDEPEND" : ""}, ++ "sys-apps/f-1": { "DEPEND" : "sys-apps/a", "RDEPEND" : ""}, ++ "sys-apps/g-1": { "DEPEND" : "sys-apps/b", ++ "RDEPEND" : ""}, + } + + world = ["sys-apps/a", "sys-apps/b", "sys-apps/c", "sys-apps/d", + "sys-apps/e", "sys-apps/f", "sys-apps/g"] + ++ + test_cases = ( + ResolverPlaygroundTestCase( +- ["sys-libs/x"], ++ ["sys-libs/x", "sys-apps/b"], + options = {"--rebuild-if-unbuilt" : True, +- "--rebuild-exclude" : ["sys-apps/b"]}, +- mergelist = ['sys-libs/x-2', 'sys-apps/a-2', 'sys-apps/e-2'], ++ "--rebuild-exclude" : ["sys-apps/c"]}, ++ mergelist = ['sys-libs/x-2', 'sys-apps/a-2', 'sys-apps/b-2', ++ 'sys-apps/e-2', 'sys-apps/g-2'], + ignore_mergelist_order = True, + success = True), + + ResolverPlaygroundTestCase( +- ["sys-libs/x"], ++ ["sys-libs/x", "sys-apps/b"], + options = {"--rebuild-if-unbuilt" : True}, + mergelist = ['sys-libs/x-2', 'sys-apps/a-2', 'sys-apps/b-2', +- 'sys-apps/e-2', 'sys-apps/g-2'], ++ 'sys-apps/c-2', 'sys-apps/e-2', 'sys-apps/g-2'], + ignore_mergelist_order = True, + success = True), + +@@ -72,27 +73,29 @@ class RebuildTestCase(TestCase): + success = True), + + ResolverPlaygroundTestCase( +- ["sys-libs/x"], ++ ["sys-libs/x", "sys-apps/b"], + options = {"--rebuild-if-unbuilt" : True, + "--rebuild-ignore" : ["sys-apps/b"]}, + mergelist = ['sys-libs/x-2', 'sys-apps/a-2', 'sys-apps/b-2', +- 'sys-apps/e-2'], ++ 'sys-apps/c-2', 'sys-apps/e-2'], + ignore_mergelist_order = True, + success = True), + + ResolverPlaygroundTestCase( +- ["=sys-libs/x-1-r1"], ++ ["=sys-libs/x-1-r1", "sys-apps/b"], + options = {"--rebuild-if-unbuilt" : True}, + mergelist = ['sys-libs/x-1-r1', 'sys-apps/a-2', +- 'sys-apps/b-2', 'sys-apps/e-2', 'sys-apps/g-2'], ++ 'sys-apps/b-2', 'sys-apps/c-2', 'sys-apps/e-2', ++ 'sys-apps/g-2'], + ignore_mergelist_order = True, + success = True), + + ResolverPlaygroundTestCase( +- ["=sys-libs/x-1-r1"], ++ ["=sys-libs/x-1-r1", "sys-apps/b"], + options = {"--rebuild-if-new-rev" : True}, + mergelist = ['sys-libs/x-1-r1', 'sys-apps/a-2', +- 'sys-apps/b-2', 'sys-apps/e-2', 'sys-apps/g-2'], ++ 'sys-apps/b-2', 'sys-apps/c-2', 'sys-apps/e-2', ++ 'sys-apps/g-2'], + ignore_mergelist_order = True, + success = True), + +@@ -104,10 +107,11 @@ class RebuildTestCase(TestCase): + success = True), + + ResolverPlaygroundTestCase( +- ["sys-libs/x"], ++ ["sys-libs/x", "sys-apps/b"], + options = {"--rebuild-if-new-ver" : True}, + mergelist = ['sys-libs/x-2', 'sys-apps/a-2', +- 'sys-apps/b-2', 'sys-apps/e-2', 'sys-apps/g-2'], ++ 'sys-apps/b-2', 'sys-apps/c-2', 'sys-apps/e-2', ++ 'sys-apps/g-2'], + ignore_mergelist_order = True, + success = True), + +@@ -119,10 +123,11 @@ class RebuildTestCase(TestCase): + success = True), + + ResolverPlaygroundTestCase( +- ["=sys-libs/x-1"], ++ ["=sys-libs/x-1", "=sys-apps/b-1"], + options = {"--rebuild-if-unbuilt" : True}, + mergelist = ['sys-libs/x-1', 'sys-apps/a-2', +- 'sys-apps/b-2', 'sys-apps/e-2', 'sys-apps/g-2'], ++ 'sys-apps/b-1', 'sys-apps/c-2', 'sys-apps/e-2', ++ 'sys-apps/g-2'], + ignore_mergelist_order = True, + success = True), + ) +diff --git a/pym/portage/util/env_update.py b/pym/portage/util/env_update.py +index eb8a0d9..725b0d2 100644 +--- a/pym/portage/util/env_update.py ++++ b/pym/portage/util/env_update.py +@@ -19,12 +19,14 @@ from portage.process import find_binary + from portage.util import atomic_ofstream, ensure_dirs, getconfig, \ + normalize_path, writemsg + from portage.util.listdir import listdir ++from portage.dbapi.vartree import vartree ++from portage.package.ebuild.config import config + + if sys.hexversion >= 0x3000000: + long = int + + def env_update(makelinks=1, target_root=None, prev_mtimes=None, contents=None, +- env=None, writemsg_level=None): ++ env=None, writemsg_level=None, vardbapi=None): + """ + Parse /etc/env.d and use it to generate /etc/profile.env, csh.env, + ld.so.conf, and prelink.conf. Finally, run ldconfig. When ldconfig is +@@ -39,6 +41,41 @@ def env_update(makelinks=1, target_root=None, prev_mtimes=None, contents=None, + defaults to portage.settings["ROOT"]. + @type target_root: String (Path) + """ ++ settings = getattr(portage, 'settings', None) ++ if settings is None: ++ settings = config(config_root=target_root, ++ target_root=target_root) ++ ++ if 'no-env-update' in settings.features: ++ return ++ ++ if vardbapi is None: ++ if isinstance(env, config): ++ vardbapi = vartree(settings=env).dbapi ++ else: ++ if target_root is None: ++ target_root = portage.settings["ROOT"] ++ if hasattr(portage, "db") and target_root in portage.db: ++ vardbapi = portage.db[target_root]["vartree"].dbapi ++ else: ++ settings = config(config_root=target_root, ++ target_root=target_root) ++ target_root = settings["ROOT"] ++ if env is None: ++ env = settings ++ vardbapi = vartree(settings=settings).dbapi ++ ++ # Lock the config memory file to prevent symlink creation ++ # in merge_contents from overlapping with env-update. ++ vardbapi._fs_lock() ++ try: ++ return _env_update(makelinks, target_root, prev_mtimes, contents, ++ env, writemsg_level) ++ finally: ++ vardbapi._fs_unlock() ++ ++def _env_update(makelinks, target_root, prev_mtimes, contents, env, ++ writemsg_level): + if writemsg_level is None: + writemsg_level = portage.util.writemsg_level + if target_root is None: +diff --git a/pym/portage/xpak.py b/pym/portage/xpak.py +index 7487d67..a939532 100644 +--- a/pym/portage/xpak.py ++++ b/pym/portage/xpak.py +@@ -1,4 +1,4 @@ +-# Copyright 2001-2010 Gentoo Foundation ++# Copyright 2001-2012 Gentoo Foundation + # Distributed under the terms of the GNU General Public License v2 + + +@@ -241,16 +241,9 @@ def getitem(myid,myitem): + return mydata[myloc[0]:myloc[0]+myloc[1]] + + def xpand(myid,mydest): ++ mydest = normalize_path(mydest) + os.sep + myindex=myid[0] + mydata=myid[1] +- try: +- origdir=os.getcwd() +- except SystemExit as e: +- raise +- except: +- os.chdir("/") +- origdir="/" +- os.chdir(mydest) + myindexlen=len(myindex) + startpos=0 + while ((startpos+8) +Date: Wed, 20 Mar 2013 11:13:53 -0700 +Subject: [PATCH] resolver: output: check for None mainRepo() + +mainRepo() can return none when we are on a machine that is only using +PORTAGE_BINHOST and not a normal PORTAGE. Make sure we don't crash here. +--- + pym/_emerge/resolver/output.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/pym/_emerge/resolver/output.py b/pym/_emerge/resolver/output.py +index 46a13bf..a14478e 100644 +--- a/pym/_emerge/resolver/output.py ++++ b/pym/_emerge/resolver/output.py +@@ -385,7 +385,7 @@ class Display(object): + if old_pkg.slot != old_pkg.sub_slot or \ + old_pkg.slot == pkg.slot and old_pkg.sub_slot != pkg.sub_slot: + key += "/" + old_pkg.sub_slot +- if not self.quiet_repo_display and (self.verbose_main_repo_display or ++ if not self.quiet_repo_display and self.portdb.repositories.mainRepo() and (self.verbose_main_repo_display or + any(x.repo != self.portdb.repositories.mainRepo().name for x in myoldbest + [pkg])): + key += _repo_separator + old_pkg.repo + versions.append(key) +@@ -419,7 +419,7 @@ class Display(object): + @param pkg_info: dictionary + @rtype string + """ +- if not self.quiet_repo_display and (self.verbose_main_repo_display or ++ if not self.quiet_repo_display and self.portdb.repositories.mainRepo() and (self.verbose_main_repo_display or + any(x.repo != self.portdb.repositories.mainRepo().name for x in pkg_info.oldbest_list + [pkg])): + pkg_str += _repo_separator + pkg.repo + return pkg_str +-- +1.8.1.4 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/metadata.xml b/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/metadata.xml new file mode 100644 index 0000000000..90e04cd819 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/metadata.xml @@ -0,0 +1,18 @@ + + + + + mailto:dev-portage@gentoo.org + http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=blob_plain;f=RELEASE-NOTES + http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=3 + + dev-portage@gentoo.org + + Build html API documentation with epydoc. + Use inter-process communication between portage and running ebuilds. + Pull in sys-apps/less as default pager for etc-update. + Use pypy-c2.0 as Python interpreter. + Use python2 as Python interpreter. + Use python3 as Python interpreter. + + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/portage-2.1.10.11-r9.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/portage-2.1.10.11-r9.ebuild new file mode 100644 index 0000000000..ef7e0d2230 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/portage-2.1.10.11-r9.ebuild @@ -0,0 +1,331 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-apps/portage/portage-2.1.10.3.ebuild,v 1.1 2011/06/14 00:42:00 zmedico Exp $ + +# Require EAPI 2 since we now require at least python-2.6 (for python 3 +# syntax support) which also requires EAPI 2. +EAPI=2 +inherit eutils multilib python + +DESCRIPTION="Portage is the package management and distribution system for Gentoo" +HOMEPAGE="http://www.gentoo.org/proj/en/portage/index.xml" +LICENSE="GPL-2" +KEYWORDS="~alpha amd64 arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86 ~sparc-fbsd ~x86-fbsd" +SLOT="0" +IUSE="build doc epydoc +ipc +less linguas_pl python2 python3 selinux" +PROVIDE="virtual/portage" + +python_dep="python3? ( =dev-lang/python-3* ) + !python2? ( !python3? ( + build? ( || ( dev-lang/python:2.7 dev-lang/python:2.6 ) ) + !build? ( || ( dev-lang/python:2.7 dev-lang/python:2.6 >=dev-lang/python-3 ) ) + ) ) + python2? ( !python3? ( || ( dev-lang/python:2.7 dev-lang/python:2.6 ) ) )" + +# The pysqlite blocker is for bug #282760. +DEPEND="${python_dep} + !build? ( >=sys-apps/sed-4.0.5 ) + doc? ( app-text/xmlto ~app-text/docbook-xml-dtd-4.4 ) + epydoc? ( >=dev-python/epydoc-2.0 !<=dev-python/pysqlite-2.4.1 )" + +RDEPEND="${python_dep} + !build? ( >=sys-apps/sed-4.0.5 + >=app-shells/bash-3.2_p17 + >=app-admin/eselect-1.2 ) + elibc_FreeBSD? ( sys-freebsd/freebsd-bin ) + elibc_glibc? ( >=sys-apps/sandbox-1.6 ) + elibc_uclibc? ( >=sys-apps/sandbox-1.6 ) + >=app-misc/pax-utils-0.1.17 + selinux? ( || ( >=sys-libs/libselinux-2.0.94[python] = 0x2060000 and "good" or "bad")') = good ]] +} + +pkg_setup() { + # Bug #359731 - Die early if get_libdir fails. + [[ -z $(get_libdir) ]] && \ + die "get_libdir returned an empty string" + + 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 python2 && ! use python3 && ! compatible_python_is_selected ; then + ewarn "Attempting to select a compatible default python interpreter" + local x success=0 + for x in /usr/bin/python2.* ; do + x=${x#/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 + + if use python3; then + python_set_active_version 3 + elif use python2; then + python_set_active_version 2 + 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 + epatch "${FILESDIR}"/${PVR}.patch + einfo "Setting portage.VERSION to ${PVR} ..." + sed -e "s/^VERSION=.*/VERSION=\"${PVR}\"/" -i pym/portage/__init__.py || \ + die "Failed to patch portage.VERSION" + sed -e "1s/VERSION/${PVR}/" -i doc/fragment/version || \ + die "Failed to patch VERSION in doc/fragment/version" + sed -e "1s/VERSION/${PVR}/" -i man/* || \ + die "Failed to patch VERSION in man page headers" + + 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 python3; then + einfo "Converting shebangs for python3..." + python_convert_shebangs -r 3 . + elif use python2; then + einfo "Converting shebangs for python2..." + python_convert_shebangs -r 2 . + fi +} + +src_compile() { + if use doc; then + cd "${S}"/doc + touch fragment/date + make xhtml xhtml-nochunks || die "failed to make docs" + fi + + if use epydoc; then + einfo "Generating api docs" + mkdir "${WORKDIR}"/api + local my_modules epydoc_opts="" + my_modules="$(find "${S}/pym" -name "*.py" \ + | sed -e 's:/__init__.py$::' -e 's:\.py$::' -e "s:^${S}/pym/::" \ + -e 's:/:.:g' | sort)" || die "error listing modules" + # workaround for bug 282760 + > "$S/pym/pysqlite2.py" + PYTHONPATH=${S}/pym:${PYTHONPATH:+:}${PYTHONPATH} \ + epydoc -o "${WORKDIR}"/api \ + -qqqqq --no-frames --show-imports $epydoc_opts \ + --name "${PN}" --url "${HOMEPAGE}" \ + ${my_modules} || die "epydoc failed" + rm "$S/pym/pysqlite2.py" + fi +} + +src_test() { + # make files executable, in case they were created by patch + find bin -type f | xargs chmod +x + PYTHONPATH=${S}/pym:${PYTHONPATH:+:}${PYTHONPATH} \ + ./pym/portage/tests/runTests || die "test(s) failed" +} + +src_install() { + local libdir=$(get_libdir) + local portage_base="/usr/${libdir}/portage" + local portage_share_config=/usr/share/portage/config + + cd "${S}"/cnf + insinto /etc + doins etc-update.conf dispatch-conf.conf || die + + insinto "$portage_share_config" + doins "$S/cnf/make.globals" || die + if [ -f "make.conf.${ARCH}".diff ]; then + patch make.conf "make.conf.${ARCH}".diff || \ + die "Failed to patch make.conf.example" + newins make.conf make.conf.example || die + 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 "" + newins make.conf make.conf.example || die + fi + + dosym ..${portage_share_config}/make.globals /etc/make.globals + + insinto /etc/logrotate.d + doins "${S}"/cnf/logrotate.d/elog-save-summary || die + + # BSD and OSX need a sed wrapper so that find/xargs work properly + if use userland_GNU; then + rm "${S}"/bin/ebuild-helpers/sed || die "Failed to remove sed wrapper" + fi + + local x symlinks files + + cd "$S" || die "cd failed" + for x in $(find bin -type d) ; do + exeinto $portage_base/$x || die "exeinto failed" + cd "$S"/$x || die "cd failed" + files=$(find . -mindepth 1 -maxdepth 1 -type f ! -type l) + if [ -n "$files" ] ; then + doexe $files || die "doexe failed" + fi + symlinks=$(find . -mindepth 1 -maxdepth 1 -type l) + if [ -n "$symlinks" ] ; then + cp -P $symlinks "$D$portage_base/$x" || die "cp failed" + fi + done + + cd "$S" || die "cd failed" + for x in $(find pym/* -type d) ; do + insinto $portage_base/$x || die "insinto failed" + cd "$S"/$x || die "cd failed" + # __pycache__ directories contain no py files + [[ "*.py" != $(echo *.py) ]] || continue + doins *.py || die "doins failed" + symlinks=$(find . -mindepth 1 -maxdepth 1 -type l) + if [ -n "$symlinks" ] ; then + cp -P $symlinks "$D$portage_base/$x" || die "cp failed" + fi + done + + # Symlinks to directories cause up/downgrade issues and the use of these + # modules outside of portage is probably negligible. + for x in "${D}${portage_base}/pym/"{cache,elog_modules} ; do + [ ! -L "${x}" ] && continue + die "symlink to directory will cause upgrade/downgrade issues: '${x}'" + done + + exeinto ${portage_base}/pym/portage/tests + doexe "${S}"/pym/portage/tests/runTests + + doman "${S}"/man/*.[0-9] + if use linguas_pl; then + doman -i18n=pl "${S_PL}"/man/pl/*.[0-9] + doman -i18n=pl_PL.UTF-8 "${S_PL}"/man/pl_PL.UTF-8/*.[0-9] + fi + + dodoc "${S}"/{ChangeLog,NEWS,RELEASE-NOTES} + use doc && dohtml -r "${S}"/doc/* + use epydoc && dohtml -r "${WORKDIR}"/api + + dodir /usr/bin + for x in ebuild egencache emerge portageq quickpkg repoman ; do + dosym ../${libdir}/portage/bin/${x} /usr/bin/${x} + done + + dodir /usr/sbin + local my_syms="archive-conf + dispatch-conf + emaint + emerge-webrsync + env-update + etc-update + fixpackages + regenworld" + local x + for x in ${my_syms}; do + dosym ../${libdir}/portage/bin/${x} /usr/sbin/${x} + done + dosym env-update /usr/sbin/update-env + dosym etc-update /usr/sbin/update-etc + + dodir /etc/portage + keepdir /etc/portage +} + +pkg_preinst() { + if ! use build && ! has_version dev-python/pycrypto && \ + ! has_version '>=dev-lang/python-2.6[ssl]' ; then + ewarn "If you are an ebuild developer and you plan to commit ebuilds" + ewarn "with this system then please install dev-python/pycrypto or" + ewarn "enable the ssl USE flag for >=dev-lang/python-2.6 in order" + ewarn "to enable RMD160 hash support." + ewarn "See bug #198398 for more information." + fi + if [ -f "${ROOT}/etc/make.globals" ]; then + rm "${ROOT}/etc/make.globals" + fi + + [[ -n $PORTDIR_OVERLAY ]] && has_version "<${CATEGORY}/${PN}-2.1.6.12" + REPO_LAYOUT_CONF_WARN=$? +} + +pkg_postinst() { + # Compile all source files recursively. Any orphans + # will be identified and removed in postrm. + python_mod_optimize /usr/$(get_libdir)/portage/pym + + if [ $REPO_LAYOUT_CONF_WARN = 0 ] ; then + ewarn + echo "If you want overlay eclasses to override eclasses from" \ + "other repos then see the portage(5) man page" \ + "for information about the new layout.conf and repos.conf" \ + "configuration files." \ + | fmt -w 75 | while read -r ; do ewarn "$REPLY" ; done + ewarn + fi + + einfo + einfo "For help with using portage please consult the Gentoo Handbook" + einfo "at http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=3" + einfo +} + +pkg_postrm() { + python_mod_cleanup /usr/$(get_libdir)/portage/pym +} diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/portage-2.1.11.31.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/portage-2.1.11.31.ebuild new file mode 100644 index 0000000000..7dfa464b0d --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/portage-2.1.11.31.ebuild @@ -0,0 +1,279 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-apps/portage/portage-2.1.11.31.ebuild,v 1.12 2013/01/27 22:04:14 zmedico Exp $ + +# Require EAPI 2 since we now require at least python-2.6 (for python 3 +# syntax support) which also requires EAPI 2. +EAPI=2 +inherit eutils python + +DESCRIPTION="Portage is the package management and distribution system for Gentoo" +HOMEPAGE="http://www.gentoo.org/proj/en/portage/index.xml" +LICENSE="GPL-2" +KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~sparc-fbsd ~x86-fbsd" +SLOT="0" +IUSE="build doc epydoc +ipc linguas_pl pypy2_0 python2 python3 selinux xattr" + +# 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,}" + +# The pysqlite blocker is for bug #282760. +DEPEND="${python_dep} + >=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). +RDEPEND="${python_dep} + !build? ( >=sys-apps/sed-4.0.5 + || ( >=app-shells/bash-4.2_p37[readline] ( =app-shells/bash-3.2_p17 ) ) + >=app-admin/eselect-1.2 + || ( ${python_dep_ssl} dev-python/python-mhash ) + ) + 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 + xattr? ( kernel_linux? ( || ( >=dev-lang/python-3.3_pre20110902 dev-python/pyxattr ) ) ) + selinux? ( || ( >=sys-libs/libselinux-2.0.94[python] = 0x2060000 and "good" or "bad")') = good ]] +} + +current_python_has_xattr() { + [[ $(/usr/bin/python -c 'import sys ; sys.stdout.write(sys.hexversion >= 0x3030000 and "yes" or "no")') = yes ]] || \ + /usr/bin/python -c 'import xattr' 2>/dev/null +} + +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 /usr/bin/python2.* ; do + x=${x#/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 + + if use python3; then + python_set_active_version 3 + elif use python2; then + python_set_active_version 2 + elif use pypy2_0; then + python_set_active_version 2.7-pypy-2.0 + fi +} + +src_prepare() { + epatch "${FILESDIR}/resolver-output-check-for-None-mainRepo.patch" + 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 + einfo "Setting portage.VERSION to ${PVR} ..." + sed -e "s/^VERSION=.*/VERSION=\"${PVR}\"/" -i pym/portage/__init__.py || \ + die "Failed to patch portage.VERSION" + sed -e "1s/VERSION/${PVR}/" -i doc/fragment/version || \ + die "Failed to patch VERSION in doc/fragment/version" + sed -e "1s/VERSION/${PVR}/" -i man/* || \ + die "Failed to patch VERSION in man page headers" + + 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 use python3; then + einfo "Converting shebangs for python3..." + python_convert_shebangs -r 3 . + elif use python2; then + einfo "Converting shebangs for python2..." + python_convert_shebangs -r 2 . + elif use pypy2_0; then + einfo "Converting shebangs for pypy-c2.0..." + python_convert_shebangs -r 2.7-pypy-2.0 . + fi + + 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 +} + +src_compile() { + if use doc; then + emake docbook || die + fi + + if use epydoc; then + einfo "Generating api docs" + emake epydoc || die + fi +} + +src_test() { + emake test || die +} + +src_install() { + emake DESTDIR="${D}" \ + sysconfdir="/etc" \ + prefix="/usr" \ + install || die + + # Extended set config is currently disabled in portage-2.1.x. + rm -rf "${D}/usr/share/portage/config/sets" || die + + # Use dodoc for compression, since the Makefile doesn't do that. + dodoc "${S}"/{ChangeLog,NEWS,RELEASE-NOTES} || die + + if use linguas_pl; then + doman -i18n=pl "${S_PL}"/man/pl/*.[0-9] || die + doman -i18n=pl_PL.UTF-8 "${S_PL}"/man/pl_PL.UTF-8/*.[0-9] || die + fi + + # Set PYTHONPATH for portage API consumers. This way we don't have + # to rely on patched python having the correct path, since it has + # been known to incorrectly add /usr/libx32/portage/pym to sys.path. + echo "PYTHONPATH=\"/usr/lib/portage/pym\"" > \ + "${T}/05portage" || die + doenvd "${T}/05portage" || die +} + +pkg_preinst() { + if [[ $ROOT == / ]] ; then + # Run some minimal tests as a sanity check. + local test_runner=$(find "$D" -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 + + if [[ -d ${ROOT}var/log/portage && \ + $(ls -ld "${ROOT}var/log/portage") != *" portage portage "* ]] && \ + has_version '= 0x2060000 and "good" or "bad")') = good ]] +} + +current_python_has_xattr() { + [[ $(/usr/bin/python -c 'import sys ; sys.stdout.write(sys.hexversion >= 0x3030000 and "yes" or "no")') = yes ]] || \ + /usr/bin/python -c 'import xattr' 2>/dev/null +} + +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 /usr/bin/python2.* ; do + x=${x#/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 + + if use python3; then + python_set_active_version 3 + elif use python2; then + python_set_active_version 2 + elif use pypy2_0; then + python_set_active_version 2.7-pypy-2.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 + einfo "Setting portage.VERSION to ${PVR} ..." + sed -e "s/^VERSION=.*/VERSION=\"${PVR}\"/" -i pym/portage/__init__.py || \ + die "Failed to patch portage.VERSION" + sed -e "1s/VERSION/${PVR}/" -i doc/fragment/version || \ + die "Failed to patch VERSION in doc/fragment/version" + sed -e "1s/VERSION/${PVR}/" -i $(find man -type f) || \ + die "Failed to patch VERSION in man page headers" + + 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 use python3; then + einfo "Converting shebangs for python3..." + python_convert_shebangs -r 3 . + elif use python2; then + einfo "Converting shebangs for python2..." + python_convert_shebangs -r 2 . + elif use pypy2_0; then + einfo "Converting shebangs for pypy-c2.0..." + python_convert_shebangs -r 2.7-pypy-2.0 . + fi + + 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 +} + +src_compile() { + if use doc; then + emake docbook || die + fi + + if use epydoc; then + einfo "Generating api docs" + emake epydoc || die + fi +} + +src_test() { + emake test || die +} + +src_install() { + emake DESTDIR="${D}" \ + sysconfdir="/etc" \ + prefix="/usr" \ + install || die + + # Extended set config is currently disabled in portage-2.1.x. + rm -rf "${D}/usr/share/portage/config/sets" || die + + # Use dodoc for compression, since the Makefile doesn't do that. + dodoc "${S}"/{ChangeLog,NEWS,RELEASE-NOTES} || die + + if use linguas_pl; then + doman -i18n=pl "${S_PL}"/man/pl/*.[0-9] || die + doman -i18n=pl_PL.UTF-8 "${S_PL}"/man/pl_PL.UTF-8/*.[0-9] || die + fi + + # Set PYTHONPATH for portage API consumers. This way we don't have + # to rely on patched python having the correct path, since it has + # been known to incorrectly add /usr/libx32/portage/pym to sys.path. + echo "PYTHONPATH=\"/usr/lib/portage/pym\"" > \ + "${T}/05portage" || die + doenvd "${T}/05portage" || die +} + +pkg_preinst() { + if [[ $ROOT == / ]] ; then + # Run some minimal tests as a sanity check. + local test_runner=$(find "$D" -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 + + if [[ -d ${ROOT}var/log/portage && \ + $(ls -ld "${ROOT}var/log/portage") != *" portage portage "* ]] && \ + has_version '=dev-python/epydoc-3_pre0' && \ + epydoc_opts='--exclude-introspect portage\.dbapi' + my_modules="$(find "${S}/pym" -name "*.py" \ + | sed -e 's:/__init__.py$::' -e 's:\.py$::' -e "s:^${S}/pym/::" \ + -e 's:/:.:g' | sort)" || die "error listing modules" + # workaround for bug 282760 + > "$S/pym/pysqlite2.py" + PYTHONPATH="${S}/pym:${PYTHONPATH}" epydoc -o "${WORKDIR}"/api \ + -qqqqq --no-frames --show-imports $epydoc_opts \ + --name "${PN}" --url "${HOMEPAGE}" \ + ${my_modules} || die "epydoc failed" + rm "$S/pym/pysqlite2.py" + fi +} + +src_test() { + ./pym/portage/tests/runTests || \ + die "test(s) failed" +} + +src_install() { + local libdir=$(get_libdir) + local portage_base="/usr/${libdir}/portage" + local portage_share_config=/usr/share/portage/config + + cd "${S}"/cnf + insinto /etc + doins etc-update.conf dispatch-conf.conf + + dodir "${portage_share_config}" + insinto "${portage_share_config}" + doins "${S}/cnf/"make.globals + if [ -f "make.conf.${ARCH}".diff ]; then + patch make.conf "make.conf.${ARCH}".diff || \ + die "Failed to patch make.conf.example" + newins make.conf 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 "" + newins make.conf make.conf.example + fi + + dosym ..${portage_share_config}/make.globals /etc/make.globals + + insinto /etc/logrotate.d + doins "${S}"/cnf/logrotate.d/elog-save-summary + + dodir ${portage_base}/bin + exeinto ${portage_base}/bin + + # BSD and OSX need a sed wrapper so that find/xargs work properly + if use userland_GNU; then + rm "${S}"/bin/sed || die "Failed to remove sed wrapper" + fi + + cd "${S}"/bin + doexe * + dosym newins ${portage_base}/bin/donewins + + local symlinks + for mydir in $(find "${S}"/pym -type d | sed -e "s:^${S}/::") ; do + dodir ${portage_base}/${mydir} + insinto ${portage_base}/${mydir} + cd "${S}"/${mydir} + doins *.py + symlinks=$(find . -mindepth 1 -maxdepth 1 -type l) + [ -n "${symlinks}" ] && cp -P ${symlinks} "${D}${portage_base}/${mydir}" + done + + # Symlinks to directories cause up/downgrade issues and the use of these + # modules outside of portage is probably negligible. + for x in "${D}${portage_base}/pym/"{cache,elog_modules} ; do + [ ! -L "${x}" ] && continue + die "symlink to directory will cause upgrade/downgrade issues: '${x}'" + done + + exeinto ${portage_base}/pym/portage/tests + doexe "${S}"/pym/portage/tests/runTests + + doman "${S}"/man/*.[0-9] + if use linguas_pl; then + doman -i18n=pl "${S_PL}"/man/pl/*.[0-9] + doman -i18n=pl_PL.UTF-8 "${S_PL}"/man/pl_PL.UTF-8/*.[0-9] + fi + + dodoc "${S}"/{ChangeLog,NEWS,RELEASE-NOTES} + use doc && dohtml -r "${S}"/doc/* + use epydoc && dohtml -r "${WORKDIR}"/api + + dodir /usr/bin + for x in ebuild emerge portageq repoman xpak; do + dosym ../${libdir}/portage/bin/${x} /usr/bin/${x} + done + + dodir /usr/sbin + local x + for x in archive-conf dispatch-conf emaint emerge-webrsync env-update \ + etc-update fixpackages quickpkg regenworld ; do + dosym ../${libdir}/portage/bin/${x} /usr/sbin/${x} + done + dosym env-update /usr/sbin/update-env + dosym etc-update /usr/sbin/update-etc + + dodir /etc/portage + keepdir /etc/portage +} + +pkg_preinst() { + if [ -f "${ROOT}/etc/make.globals" ]; then + rm "${ROOT}/etc/make.globals" + fi + has_version ">=${CATEGORY}/${PN}-2.2_pre" + DOWNGRADE_FROM_2_2=$? + has_version "<${CATEGORY}/${PN}-2.1.6_pre" + UPGRADE_FROM_2_1=$? +} + +pkg_postinst() { + # Compile all source files recursively. Any orphans + # will be identified and removed in postrm. + python_mod_optimize /usr/$(get_libdir)/portage/pym + + local warning_shown=0 + if [ $DOWNGRADE_FROM_2_2 = 0 ] ; then + ewarn + echo "Since you have downgraded from portage-2.2, do not forget to" \ + "use revdep-rebuild when appropriate, since the @preserved-rebuild" \ + "package set is only supported with portage-2.2." | fmt -w 70 | \ + while read ; do ewarn "$REPLY" ; done + warning_shown=1 + fi + if [ $UPGRADE_FROM_2_1 = 0 ] ; then + ewarn + echo "In portage-2.1.6, the default behavior has changed for" \ + "\`emerge world\` and \`emerge system\` commands. These commands" \ + "will reinstall all packages from the given set unless an option" \ + "such as --noreplace, --update, or --newuse is specified." \ + | fmt -w 70 | while read ; do ewarn "$REPLY" ; done + ewarn + echo "File collision protection is now enabled by default via" \ + "make.globals with FEATURES=protect-owned. If you want to" \ + "disable collision protection completely (not recommended), then" \ + "you need to ensure that neither protect-owned nor collision-protect" \ + "are enabled." | fmt -w 70 | while read ; do ewarn "$REPLY" ; done + ewarn + echo "If you have overridden FETCHCOMMAND or RESUMECOMMAND variables," \ + "for compatibility with EAPI 2, you must ensure that these variables" \ + "are written such that the downloaded file will be placed at" \ + "\"\${DISTDIR}/\${FILE}\". Refer to make.conf(5) for" \ + "information about FETCHCOMMAND and RESUMECOMMAND." | \ + fmt -w 70 | while read ; do ewarn "$REPLY" ; done + warning_shown=1 + fi + if [ $warning_shown = 1 ] ; then + ewarn # for symmetry + fi +} + +pkg_postrm() { + python_mod_cleanup /usr/$(get_libdir)/portage/pym +} diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/portage-2.2.0_alpha142.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/portage-2.2.0_alpha142.ebuild new file mode 100644 index 0000000000..ed4ff4788b --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/portage-2.2.0_alpha142.ebuild @@ -0,0 +1,332 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-apps/portage/portage-2.2.0_alpha142.ebuild,v 1.6 2013/01/27 22:04:14 zmedico Exp $ + +# Require EAPI 2 since we now require at least python-2.6 (for python 3 +# syntax support) which also requires EAPI 2. +EAPI=3 +inherit eutils python + +DESCRIPTION="Portage is the package management and distribution system for Gentoo" +HOMEPAGE="http://www.gentoo.org/proj/en/portage/index.xml" +LICENSE="GPL-2" +KEYWORDS="~amd64-fbsd ~sparc-fbsd ~x86-fbsd" +SLOT="0" +IUSE="build doc epydoc +ipc linguas_pl pypy2_0 python2 python3 selinux xattr" + +# 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,}" + +# The pysqlite blocker is for bug #282760. +DEPEND="${python_dep} + >=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). +RDEPEND="${python_dep} + !build? ( >=sys-apps/sed-4.0.5 + || ( >=app-shells/bash-4.2_p37[readline] ( =app-shells/bash-3.2_p17 ) ) + >=app-admin/eselect-1.2 + || ( ${python_dep_ssl} dev-python/python-mhash ) + ) + 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 + xattr? ( kernel_linux? ( || ( >=dev-lang/python-3.3_pre20110902 dev-python/pyxattr ) ) ) + selinux? ( || ( >=sys-libs/libselinux-2.0.94[python] = 0x2060000 and "good" or "bad")') = good ]] +} + +current_python_has_xattr() { + [[ $("${EPREFIX}/usr/bin/python" -c 'import sys ; sys.stdout.write(sys.hexversion >= 0x3030000 and "yes" or "no")') = yes ]] || \ + "${EPREFIX}/usr/bin/python" -c 'import xattr' 2>/dev/null +} + +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 /usr/bin/python2.* ; do + x=${x#/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 + + if use python3; then + python_set_active_version 3 + elif use python2; then + python_set_active_version 2 + elif use pypy2_0; then + python_set_active_version 2.7-pypy-2.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 + einfo "Setting portage.VERSION to ${PVR} ..." + sed -e "s/^VERSION=.*/VERSION=\"${PVR}\"/" -i pym/portage/__init__.py || \ + die "Failed to patch portage.VERSION" + sed -e "1s/VERSION/${PVR}/" -i doc/fragment/version || \ + die "Failed to patch VERSION in doc/fragment/version" + sed -e "1s/VERSION/${PVR}/" -i man/* || \ + die "Failed to patch VERSION in man page headers" + + 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 use python3; then + einfo "Converting shebangs for python3..." + python_convert_shebangs -r 3 . + elif use python2; then + einfo "Converting shebangs for python2..." + python_convert_shebangs -r 2 . + elif use pypy2_0; then + einfo "Converting shebangs for pypy-c2.0..." + python_convert_shebangs -r 2.7-pypy-2.0 . + 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 ..." + find . -type f -print0 | \ + 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 + + einfo "Adjusting make.globals ..." + sed -e 's|^SYNC=.*|SYNC="rsync://rsync.prefix.freens.org/gentoo-portage-prefix"|' \ + -e "s|^\(PORTDIR=\)\(/usr/portage\)|\\1\"${EPREFIX}\\2\"|" \ + -e "s|^\(PORTAGE_TMPDIR=\)\(/var/tmp\)|\\1\"${EPREFIX}\\2\"|" \ + -i cnf/make.globals || 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 + + echo -e '\nFEATURES="${FEATURES} preserve-libs"' >> cnf/make.globals \ + || die "failed to append to make.globals" + + 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 +} + +src_compile() { + if use doc; then + emake docbook || die + fi + + if use epydoc; then + einfo "Generating api docs" + emake epydoc || die + fi +} + +src_test() { + # make files executable, in case they were created by patch + find bin -type f | xargs chmod +x + emake test || die +} + +src_install() { + emake DESTDIR="${D}" \ + sysconfdir="${EPREFIX}/etc" \ + prefix="${EPREFIX}/usr" \ + install || die + + # Use dodoc for compression, since the Makefile doesn't do that. + dodoc "${S}"/{ChangeLog,NEWS,RELEASE-NOTES} || die + + if use linguas_pl; then + doman -i18n=pl "${S_PL}"/man/pl/*.[0-9] || die + doman -i18n=pl_PL.UTF-8 "${S_PL}"/man/pl_PL.UTF-8/*.[0-9] || die + fi + + # Set PYTHONPATH for portage API consumers. This way we don't have + # to rely on patched python having the correct path, since it has + # been known to incorrectly add /usr/libx32/portage/pym to sys.path. + echo "PYTHONPATH=\"${EPREFIX}/usr/lib/portage/pym\"" > \ + "${T}/05portage" || die + doenvd "${T}/05portage" || die +} + +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_pre5" \ + && WORLD_MIGRATION_UPGRADE=true || WORLD_MIGRATION_UPGRADE=false + + # If portage-2.1.6 is installed and the preserved_libs_registry exists, + # assume that the NEEDED.ELF.2 files have already been generated. + has_version "<=${CATEGORY}/${PN}-2.2_pre7" && \ + ! ( [ -e "${EROOT}"var/lib/portage/preserved_libs_registry ] && \ + has_version ">=${CATEGORY}/${PN}-2.1.6_rc" ) \ + && NEEDED_REBUILD_UPGRADE=true || NEEDED_REBUILD_UPGRADE=false +} + +pkg_postinst() { + # Compile all source files recursively. Any orphans + # will be identified and removed in postrm. + python_mod_optimize /usr/lib/portage/pym + + if $WORLD_MIGRATION_UPGRADE && \ + grep -q "^@" "${EROOT}/var/lib/portage/world"; then + einfo "moving set references from the worldfile into world_sets" + cd "${EROOT}/var/lib/portage/" + grep "^@" world >> world_sets + sed -i -e '/^@/d' world + fi + + if $NEEDED_REBUILD_UPGRADE ; then + einfo "rebuilding NEEDED.ELF.2 files" + for cpv in "${EROOT}/var/db/pkg"/*/*; do + if [ -f "${cpv}/NEEDED" ]; then + rm -f "${cpv}/NEEDED.ELF.2" + while read line; do + filename=${line% *} + needed=${line#* } + needed=${needed//+/++} + needed=${needed//#/##} + needed=${needed//%/%%} + newline=$(scanelf -BF "%a;%F;%S;%r;${needed}" $filename) + newline=${newline// - } + echo "${newline:3}" >> "${cpv}/NEEDED.ELF.2" + done < "${cpv}/NEEDED" + fi + done + fi +} + +pkg_postrm() { + python_mod_cleanup /usr/lib/portage/pym +} diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/portage-2.2.0_alpha161.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/portage-2.2.0_alpha161.ebuild new file mode 100644 index 0000000000..472198783f --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/portage-2.2.0_alpha161.ebuild @@ -0,0 +1,332 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-apps/portage/portage-2.2.0_alpha161.ebuild,v 1.2 2013/01/27 22:04:14 zmedico Exp $ + +# Require EAPI 2 since we now require at least python-2.6 (for python 3 +# syntax support) which also requires EAPI 2. +EAPI=3 +inherit eutils python + +DESCRIPTION="Portage is the package management and distribution system for Gentoo" +HOMEPAGE="http://www.gentoo.org/proj/en/portage/index.xml" +LICENSE="GPL-2" +KEYWORDS="~amd64-fbsd ~sparc-fbsd ~x86-fbsd" +SLOT="0" +IUSE="build doc epydoc +ipc linguas_pl linguas_ru pypy2_0 python2 python3 selinux xattr" + +# 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,}" + +# The pysqlite blocker is for bug #282760. +DEPEND="${python_dep} + >=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). +RDEPEND="${python_dep} + !build? ( >=sys-apps/sed-4.0.5 + || ( >=app-shells/bash-4.2_p37[readline] ( =app-shells/bash-3.2_p17 ) ) + >=app-admin/eselect-1.2 + || ( ${python_dep_ssl} dev-python/python-mhash ) + ) + 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 + xattr? ( kernel_linux? ( || ( >=dev-lang/python-3.3_pre20110902 dev-python/pyxattr ) ) ) + selinux? ( || ( >=sys-libs/libselinux-2.0.94[python] = 0x2060000 and "good" or "bad")') = good ]] +} + +current_python_has_xattr() { + [[ $("${EPREFIX}/usr/bin/python" -c 'import sys ; sys.stdout.write(sys.hexversion >= 0x3030000 and "yes" or "no")') = yes ]] || \ + "${EPREFIX}/usr/bin/python" -c 'import xattr' 2>/dev/null +} + +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 /usr/bin/python2.* ; do + x=${x#/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 + + if use python3; then + python_set_active_version 3 + elif use python2; then + python_set_active_version 2 + elif use pypy2_0; then + python_set_active_version 2.7-pypy-2.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 + einfo "Setting portage.VERSION to ${PVR} ..." + sed -e "s/^VERSION=.*/VERSION=\"${PVR}\"/" -i pym/portage/__init__.py || \ + die "Failed to patch portage.VERSION" + sed -e "1s/VERSION/${PVR}/" -i doc/fragment/version || \ + die "Failed to patch VERSION in doc/fragment/version" + sed -e "1s/VERSION/${PVR}/" -i $(find man -type f) || \ + die "Failed to patch VERSION in man page headers" + + 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 use python3; then + einfo "Converting shebangs for python3..." + python_convert_shebangs -r 3 . + elif use python2; then + einfo "Converting shebangs for python2..." + python_convert_shebangs -r 2 . + elif use pypy2_0; then + einfo "Converting shebangs for pypy-c2.0..." + python_convert_shebangs -r 2.7-pypy-2.0 . + 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 ..." + find . -type f -print0 | \ + 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 + + einfo "Adjusting make.globals ..." + sed -e 's|^SYNC=.*|SYNC="rsync://rsync.prefix.freens.org/gentoo-portage-prefix"|' \ + -e "s|^\(PORTDIR=\)\(/usr/portage\)|\\1\"${EPREFIX}\\2\"|" \ + -e "s|^\(PORTAGE_TMPDIR=\)\(/var/tmp\)|\\1\"${EPREFIX}\\2\"|" \ + -i cnf/make.globals || 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 + + echo -e '\nFEATURES="${FEATURES} preserve-libs"' >> cnf/make.globals \ + || die "failed to append to make.globals" + + 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 +} + +src_compile() { + if use doc; then + emake docbook || die + fi + + if use epydoc; then + einfo "Generating api docs" + emake epydoc || die + fi +} + +src_test() { + # make files executable, in case they were created by patch + find bin -type f | xargs chmod +x + emake test || die +} + +src_install() { + emake DESTDIR="${D}" \ + sysconfdir="${EPREFIX}/etc" \ + prefix="${EPREFIX}/usr" \ + install || die + + # Use dodoc for compression, since the Makefile doesn't do that. + dodoc "${S}"/{ChangeLog,NEWS,RELEASE-NOTES} || die + + if use linguas_pl; then + doman -i18n=pl "${S_PL}"/man/pl/*.[0-9] || die + doman -i18n=pl_PL.UTF-8 "${S_PL}"/man/pl_PL.UTF-8/*.[0-9] || die + fi + + # Set PYTHONPATH for portage API consumers. This way we don't have + # to rely on patched python having the correct path, since it has + # been known to incorrectly add /usr/libx32/portage/pym to sys.path. + echo "PYTHONPATH=\"${EPREFIX}/usr/lib/portage/pym\"" > \ + "${T}/05portage" || die + doenvd "${T}/05portage" || die +} + +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_pre5" \ + && WORLD_MIGRATION_UPGRADE=true || WORLD_MIGRATION_UPGRADE=false + + # If portage-2.1.6 is installed and the preserved_libs_registry exists, + # assume that the NEEDED.ELF.2 files have already been generated. + has_version "<=${CATEGORY}/${PN}-2.2_pre7" && \ + ! ( [ -e "${EROOT}"var/lib/portage/preserved_libs_registry ] && \ + has_version ">=${CATEGORY}/${PN}-2.1.6_rc" ) \ + && NEEDED_REBUILD_UPGRADE=true || NEEDED_REBUILD_UPGRADE=false +} + +pkg_postinst() { + # Compile all source files recursively. Any orphans + # will be identified and removed in postrm. + python_mod_optimize /usr/lib/portage/pym + + if $WORLD_MIGRATION_UPGRADE && \ + grep -q "^@" "${EROOT}/var/lib/portage/world"; then + einfo "moving set references from the worldfile into world_sets" + cd "${EROOT}/var/lib/portage/" + grep "^@" world >> world_sets + sed -i -e '/^@/d' world + fi + + if $NEEDED_REBUILD_UPGRADE ; then + einfo "rebuilding NEEDED.ELF.2 files" + for cpv in "${EROOT}/var/db/pkg"/*/*; do + if [ -f "${cpv}/NEEDED" ]; then + rm -f "${cpv}/NEEDED.ELF.2" + while read line; do + filename=${line% *} + needed=${line#* } + needed=${needed//+/++} + needed=${needed//#/##} + needed=${needed//%/%%} + newline=$(scanelf -BF "%a;%F;%S;%r;${needed}" $filename) + newline=${newline// - } + echo "${newline:3}" >> "${cpv}/NEEDED.ELF.2" + done < "${cpv}/NEEDED" + fi + done + fi +} + +pkg_postrm() { + python_mod_cleanup /usr/lib/portage/pym +} diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/portage-9999.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/portage-9999.ebuild new file mode 100644 index 0000000000..864a291ac8 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/portage/portage-9999.ebuild @@ -0,0 +1,311 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-apps/portage/portage-9999.ebuild,v 1.67 2013/01/27 22:04:14 zmedico Exp $ + +EAPI=3 +inherit git-2 eutils python + +DESCRIPTION="Portage is the package management and distribution system for Gentoo" +HOMEPAGE="http://www.gentoo.org/proj/en/portage/index.xml" +LICENSE="GPL-2" +KEYWORDS="" +SLOT="0" +IUSE="build doc epydoc +ipc linguas_ru pypy2_0 python2 python3 selinux xattr" + +# 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,}" + +# The pysqlite blocker is for bug #282760. +DEPEND="${python_dep} + >=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). +RDEPEND="${python_dep} + !build? ( >=sys-apps/sed-4.0.5 + || ( >=app-shells/bash-4.2_p37[readline] ( =app-shells/bash-3.2_p17 ) ) + >=app-admin/eselect-1.2 + || ( ${python_dep_ssl} dev-python/python-mhash ) + ) + 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 + xattr? ( kernel_linux? ( || ( >=dev-lang/python-3.3_pre20110902 dev-python/pyxattr ) ) ) + selinux? ( || ( >=sys-libs/libselinux-2.0.94[python] = 0x2060000 and "good" or "bad")') = good ]] +} + +current_python_has_xattr() { + [[ $("${EPREFIX}/usr/bin/python" -c 'import sys ; sys.stdout.write(sys.hexversion >= 0x3030000 and "yes" or "no")') = yes ]] || \ + "${EPREFIX}/usr/bin/python" -c 'import xattr' 2>/dev/null +} + +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 /usr/bin/python2.* ; do + x=${x#/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 + + if use python3; then + python_set_active_version 3 + elif use python2; then + python_set_active_version 2 + elif use pypy2_0; then + python_set_active_version 2.7-pypy-2.0 + fi +} + +src_prepare() { + epatch_user + + einfo "Producing ChangeLog from Git history..." + pushd "${S}/.git" >/dev/null || die + git log ebcf8975b37a8aae9735eb491a9b4cb63549bd5d^.. \ + > "${S}"/ChangeLog || die + popd >/dev/null || die + + local _version=$(cd "${S}/.git" && git describe --tags | sed -e 's|-\([0-9]\+\)-.\+$|_p\1|') + _version=${_version:1} + einfo "Setting portage.VERSION to ${_version} ..." + sed -e "s/^VERSION=.*/VERSION='${_version}'/" -i pym/portage/__init__.py || \ + die "Failed to patch portage.VERSION" + sed -e "1s/VERSION/${_version}/" -i doc/fragment/version || \ + die "Failed to patch VERSION in doc/fragment/version" + sed -e "1s/VERSION/${_version}/" -i $(find man -type f) || \ + die "Failed to patch VERSION in man page headers" + + 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 use python3; then + einfo "Converting shebangs for python3..." + python_convert_shebangs -r 3 . + elif use python2; then + einfo "Converting shebangs for python2..." + python_convert_shebangs -r 2 . + elif use pypy2_0; then + einfo "Converting shebangs for pypy-c2.0..." + python_convert_shebangs -r 2.7-pypy-2.0 . + 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 ..." + find . -type f -print0 | \ + 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 + + einfo "Adjusting make.globals ..." + sed -e 's|^SYNC=.*|SYNC="rsync://rsync.prefix.freens.org/gentoo-portage-prefix"|' \ + -e "s|^\(PORTDIR=\)\(/usr/portage\)|\\1\"${EPREFIX}\\2\"|" \ + -e "s|^\(PORTAGE_TMPDIR=\)\(/var/tmp\)|\\1\"${EPREFIX}\\2\"|" \ + -i cnf/make.globals || 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 + + echo -e '\nFEATURES="${FEATURES} preserve-libs"' >> cnf/make.globals \ + || die "failed to append to make.globals" + + 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 +} + +src_compile() { + if use doc; then + emake docbook || die + fi + + if use epydoc; then + einfo "Generating api docs" + emake epydoc || die + fi +} + +src_test() { + ./runtests.sh || die "tests failed" +} + +src_install() { + emake DESTDIR="${D}" \ + sysconfdir="${EPREFIX}/etc" \ + prefix="${EPREFIX}/usr" \ + install || die + + # Use dodoc for compression, since the Makefile doesn't do that. + dodoc "${S}"/{ChangeLog,NEWS,RELEASE-NOTES} || die + + # Set PYTHONPATH for portage API consumers. This way we don't have + # to rely on patched python having the correct path, since it has + # been known to incorrectly add /usr/libx32/portage/pym to sys.path. + echo "PYTHONPATH=\"${EPREFIX}/usr/lib/portage/pym\"" > \ + "${T}/05portage" || die + doenvd "${T}/05portage" +} + +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_pre5" \ + && WORLD_MIGRATION_UPGRADE=true || WORLD_MIGRATION_UPGRADE=false + + # If portage-2.1.6 is installed and the preserved_libs_registry exists, + # assume that the NEEDED.ELF.2 files have already been generated. + has_version "<=${CATEGORY}/${PN}-2.2_pre7" && \ + ! ( [ -e "${EROOT}"var/lib/portage/preserved_libs_registry ] && \ + has_version ">=${CATEGORY}/${PN}-2.1.6_rc" ) \ + && NEEDED_REBUILD_UPGRADE=true || NEEDED_REBUILD_UPGRADE=false +} + +pkg_postinst() { + # Compile all source files recursively. Any orphans + # will be identified and removed in postrm. + python_mod_optimize /usr/lib/portage/pym + + if $WORLD_MIGRATION_UPGRADE && \ + grep -q "^@" "${EROOT}/var/lib/portage/world"; then + einfo "moving set references from the worldfile into world_sets" + cd "${EROOT}/var/lib/portage/" + grep "^@" world >> world_sets + sed -i -e '/^@/d' world + fi + + if $NEEDED_REBUILD_UPGRADE ; then + einfo "rebuilding NEEDED.ELF.2 files" + for cpv in "${EROOT}/var/db/pkg"/*/*; do + if [ -f "${cpv}/NEEDED" ]; then + rm -f "${cpv}/NEEDED.ELF.2" + while read line; do + filename=${line% *} + needed=${line#* } + needed=${needed//+/++} + needed=${needed//#/##} + needed=${needed//%/%%} + newline=$(scanelf -BF "%a;%F;%S;%r;${needed}" $filename) + newline=${newline// - } + echo "${newline:3}" >> "${cpv}/NEEDED.ELF.2" + done < "${cpv}/NEEDED" + fi + done + fi +} + +pkg_postrm() { + python_mod_cleanup /usr/lib/portage/pym +}