summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Savchenko <bircoph@gmail.com>2014-11-23 06:15:50 +0300
committerAndrew Savchenko <bircoph@gmail.com>2014-11-23 06:15:50 +0300
commitdc64e2d80324628db460e3eccd977b9291480b63 (patch)
tree6671517fcabc66e6c6d87e4498765aec50e93368 /sys-apps
parentportage: use_reduce cache evaluation (diff)
downloadbircoph-dc64e2d80324628db460e3eccd977b9291480b63.tar.gz
bircoph-dc64e2d80324628db460e3eccd977b9291480b63.tar.bz2
bircoph-dc64e2d80324628db460e3eccd977b9291480b63.zip
portage: add patch from bug 530010
performance optimization: selectively invalidate cache for _select_pkg_highest_available by Zac Medico
Diffstat (limited to 'sys-apps')
-rw-r--r--sys-apps/portage/Manifest5
-rw-r--r--sys-apps/portage/files/portage-2.2.14-bug_529660.patch (renamed from sys-apps/portage/files/portage-2.2.14-use_reduce-cache.patch)0
-rw-r--r--sys-apps/portage/files/portage-2.2.14-bug_530010.patch116
-rw-r--r--sys-apps/portage/portage-2.2.14.ebuild3
4 files changed, 121 insertions, 3 deletions
diff --git a/sys-apps/portage/Manifest b/sys-apps/portage/Manifest
index 0c02065..eaa4802 100644
--- a/sys-apps/portage/Manifest
+++ b/sys-apps/portage/Manifest
@@ -1,7 +1,8 @@
AUX README.RESCUE 137 SHA256 69bea0c755eab59b6b4d90838b8551744f0b0c8eeac170b1cd13a71ee83f9ac4 SHA512 dba0f0d6d4cd140e636cc70dfb7bdb298e2f2fb040bc07b0874cac994bdbabd26bfd9361d85a0f8b9a92a185281e4901606b9e4f563afdc8867341bbe6af1cb0 WHIRLPOOL 713fcc790442999d56e13efaf536fec9954dadeda680b3642d0358311332096ddedf8b55697bd1ca620d84f0dc7d025ff7931e086c74c1f5032be72dca2ff8f5
-AUX portage-2.2.14-use_reduce-cache.patch 3442 SHA256 46a6acfacc3d5015b31e43f1b3c9f61555fb6456f87ede1ee04c7012e2213d5c SHA512 6408fad400fc5605e5b7f5a65161a5781c580ba0a754d5fb11bb361ce575ca0d327738401434a5b9a0426d4fcf2080482386e74a90081d83c719dbee818e6cd0 WHIRLPOOL 91b8c1587dd85833782a328e3fd784543078b2fe35aa4d674ca883b22e19206caa7bc9721fc082d64c2080f2a386a23487a0460c4162f12166c659af4f4baacb
+AUX portage-2.2.14-bug_529660.patch 3442 SHA256 46a6acfacc3d5015b31e43f1b3c9f61555fb6456f87ede1ee04c7012e2213d5c SHA512 6408fad400fc5605e5b7f5a65161a5781c580ba0a754d5fb11bb361ce575ca0d327738401434a5b9a0426d4fcf2080482386e74a90081d83c719dbee818e6cd0 WHIRLPOOL 91b8c1587dd85833782a328e3fd784543078b2fe35aa4d674ca883b22e19206caa7bc9721fc082d64c2080f2a386a23487a0460c4162f12166c659af4f4baacb
+AUX portage-2.2.14-bug_530010.patch 4474 SHA256 e1d7b0b04f6a48af9032d9e1c9f7b1225b4e29f6dd632dc0ffd18d90d1bcad4c SHA512 577a07338326cf37a12a4cad67a194566eb746ea9c74c067858890eb8f4dc27d3d110651a80b9887736f74760772997c59d5394fd9899677364ebcb3cf447d38 WHIRLPOOL bda2ba5b43fe36494165805cf402a5ff8f978f4ce0ce485a46c4faa55d778809002d44f0952f31cad1fe72783ef955eba73515a6003edeef3825a85108bbc27f
DIST portage-2.2.14.tar.bz2 896674 SHA256 8dd65971e0f1c31dca922b0f7be06e622aabbed8d012d056ff25a169fc9946d8 SHA512 c8724b42d9932adf6065ff9f9c3bb3d22ec3258dcdb23e041ce704f2c7b634d459a36764f3ec5aa4613843733c70725025af10439816c538ec12837db50dc1ab WHIRLPOOL 82bb660fcc1f0bb4639b53829cf8207fc40ee01a0cb9935ad46fb5039f0558fbbbb3af3d12d208289e9701e0874d77a7990911fd50fe04806948c6c6955625fc
-EBUILD portage-2.2.14.ebuild 10868 SHA256 7b503efeb0db4bb22ac844de9b89740ee976bfdd954df5a6c29aa706d4927d95 SHA512 3fd7eb4e3db9470cecaac930c23f128a0aba286e2a3541844a488ce8f084347d1f1fcd4a71948e8dfe026de68cf64f7850ae29df175992fe51655ba977cefba0 WHIRLPOOL ce0e58aa586028574f63888e2d9f24a4230779f3c43ca2a7f060c65a227ab72d8ee169c4c5dd2122b459f9dded37a83ea393d2ed0276f62ea47afbedf5df1d90
+EBUILD portage-2.2.14.ebuild 10906 SHA256 1cbdaa3f6f44c3cd0e2b97b3b30c0f1db1f1321522102107f1bc3195f071900d SHA512 955524339577781045c34236f37b7dfd38bd4623c9bc60d28a67e7c4af3a363af6ad56f6f6c93203fe82a284d20796ebedd932710d5a9c6283d00cc0fa1552dc WHIRLPOOL 0a8d86cf9a76e4277c2c25cef269be71eebb4d5ef66605cc8e24f06d58354eb9984416eca6a0ac34fc5ee8bc3c9b13b5a977c3f4acefae0cd58c9f1395fd9f31
MISC ChangeLog 60244 SHA256 d7b95cee0d96cc3dfae87a06dc24302e2fec8e7c10cad103b751251d473651f5 SHA512 e2271cf5698ce974c2da4004458e39d6aefd7d2a06ae3ec9f58d3911a3e0711c830d79d3b6228c885d2a2e8da90798231019e782e241f68c7dcef4b390fdb48c WHIRLPOOL 0caa40b447fa6c3602a7b9e050e95fa6bee4d8717847cf3bf834024750630e17517a4a5c22ac6f5570e49c93a33e1b68b4e8ee0eec1470cce9d59d074c26f91b
MISC ChangeLog-2012 133873 SHA256 157a7eb13d4cf2e2c94bfcb7e91f218af1ea88f5ff20c24a50546950a9839c94 SHA512 1241f4ccd7b31bdd340649417257b0e95202992feb66e0cd4d41fc2d35bf0baeac19680f34a831d2fefce0c0fec03aa6e7a191f783e59cf9b93aaf266f010a3f WHIRLPOOL b027bdba0f5ccc1b3a2dc18df92d82b473af5e55536816b7177071c1ae1a89e4d50d42c2093fa1bbe28b92a42014fbefbfc9e7daa4e6426ebecbd5bffc3d479f
MISC metadata.xml 1089 SHA256 54047345d787e1a3d94193fe7512fbbcc77005c62c96d549d997a37b184d9567 SHA512 f083ddb6c5099aaed029211923c68ffa8e240443cd8f2681f9b607dae0f2946afd709cea32d39f44b26969769ecd7fe13b7dd0cfca1302f1ab927b9c6169ecf6 WHIRLPOOL 942aa501aaf6f61055964ef216d5269770f35c5fd7d10f849c70f01fccbe398aef9e18f9439e18586b2dcea813698eec34929501c388d8fd43055683f7262574
diff --git a/sys-apps/portage/files/portage-2.2.14-use_reduce-cache.patch b/sys-apps/portage/files/portage-2.2.14-bug_529660.patch
index 165567b..165567b 100644
--- a/sys-apps/portage/files/portage-2.2.14-use_reduce-cache.patch
+++ b/sys-apps/portage/files/portage-2.2.14-bug_529660.patch
diff --git a/sys-apps/portage/files/portage-2.2.14-bug_530010.patch b/sys-apps/portage/files/portage-2.2.14-bug_530010.patch
new file mode 100644
index 0000000..8ef1032
--- /dev/null
+++ b/sys-apps/portage/files/portage-2.2.14-bug_530010.patch
@@ -0,0 +1,116 @@
+From ca447e27c8c069bdfd0412b2c4e1bd1e8766309c Mon Sep 17 00:00:00 2001
+From: Zac Medico <zmedico@gentoo.org>
+Date: Thu, 20 Nov 2014 19:57:59 -0800
+Subject: [PATCH] _select_pkg_highest_available: selective cache invalidation
+ (530010)
+
+Implement selective invalidation of cache for the
+depgraph._select_pkg_highest_available method, so that the entire cache
+is not discarded whenever a package is added to the graph. On one of my
+computers with this patch, 'emerge -puvDN @world' takes 15% less time,
+and results in 58% fewer _select_pkg_highest_available_imp calls.
+
+X-Gentoo-Bug: 530010
+X-Gentoo-Url: https://bugs.gentoo.org/show_bug.cgi?id=530010
+---
+ pym/_emerge/Package.py | 18 ++++++++++++++++--
+ pym/_emerge/depgraph.py | 14 +++++++++++++-
+ 2 files changed, 29 insertions(+), 3 deletions(-)
+
+diff --git a/pym/_emerge/Package.py b/pym/_emerge/Package.py
+index a09f73c..8612e8b 100644
+--- a/pym/_emerge/Package.py
++++ b/pym/_emerge/Package.py
+@@ -35,8 +35,8 @@ class Package(Task):
+ "category", "counter", "cp", "cpv_split",
+ "inherited", "iuse", "mtime",
+ "pf", "root", "slot", "sub_slot", "slot_atom", "version") + \
+- ("_invalid", "_masks", "_metadata", "_raw_metadata", "_use",
+- "_validated_atoms", "_visible")
++ ("_invalid", "_masks", "_metadata", "_provided_cps",
++ "_raw_metadata", "_use", "_validated_atoms", "_visible")
+
+ metadata_keys = [
+ "BUILD_TIME", "CHOST", "COUNTER", "DEPEND", "EAPI",
+@@ -128,6 +128,20 @@ def properties(self):
+ return self._metadata.properties
+
+ @property
++ def provided_cps(self):
++
++ if self._provided_cps is None:
++ provided_cps = [self.cp]
++ for atom in self._metadata["PROVIDE"].split():
++ try:
++ provided_cps.append(Atom(atom).cp)
++ except InvalidAtom:
++ pass
++ self._provided_cps = tuple(provided_cps)
++
++ return self._provided_cps
++
++ @property
+ def restrict(self):
+ return self._metadata.restrict
+
+diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
+index 3f4a097..ab79aef 100644
+--- a/pym/_emerge/depgraph.py
++++ b/pym/_emerge/depgraph.py
+@@ -399,6 +399,7 @@ def __init__(self, depgraph, myparams, allow_backtracking, backtrack_parameters)
+ self._initially_unsatisfied_deps = []
+ self._ignored_deps = []
+ self._highest_pkg_cache = {}
++ self._highest_pkg_cache_cp_map = {}
+ self._flatten_atoms_cache = {}
+
+ # Binary packages that have been rejected because their USE
+@@ -2539,8 +2540,8 @@ def _add_pkg(self, pkg, dep):
+ if not previously_added:
+ self._dynamic_config._package_tracker.add_pkg(pkg)
+ self._dynamic_config._filtered_trees[pkg.root]["porttree"].dbapi._clear_cache()
+- self._dynamic_config._highest_pkg_cache.clear()
+ self._check_masks(pkg)
++ self._prune_highest_pkg_cache(pkg)
+
+ if not pkg.installed:
+ # Allow this package to satisfy old-style virtuals in case it
+@@ -2685,6 +2686,7 @@ def _remove_pkg(self, pkg):
+ # Clear caches.
+ self._dynamic_config._filtered_trees[pkg.root]["porttree"].dbapi._clear_cache()
+ self._dynamic_config._highest_pkg_cache.clear()
++ self._dynamic_config._highest_pkg_cache_cp_map.clear()
+
+
+ def _check_masks(self, pkg):
+@@ -3967,6 +3969,7 @@ def _set_args(self, args):
+ # Invalidate the package selection cache, since
+ # arguments influence package selections.
+ self._dynamic_config._highest_pkg_cache.clear()
++ self._dynamic_config._highest_pkg_cache_cp_map.clear()
+ for trees in self._dynamic_config._filtered_trees.values():
+ trees["porttree"].dbapi._clear_cache()
+
+@@ -4987,6 +4990,8 @@ def _select_pkg_highest_available(self, root, atom, onlydeps=False, parent=None)
+ return ret
+ ret = self._select_pkg_highest_available_imp(root, atom, onlydeps=onlydeps, parent=parent)
+ self._dynamic_config._highest_pkg_cache[cache_key] = ret
++ self._dynamic_config._highest_pkg_cache_cp_map. \
++ setdefault(atom.cp, []).append(cache_key)
+ pkg, existing = ret
+ if pkg is not None:
+ if self._pkg_visibility_check(pkg) and \
+@@ -4994,6 +4999,13 @@ def _select_pkg_highest_available(self, root, atom, onlydeps=False, parent=None)
+ self._dynamic_config._visible_pkgs[pkg.root].cpv_inject(pkg)
+ return ret
+
++ def _prune_highest_pkg_cache(self, pkg):
++ for cp in pkg.provided_cps:
++ for cache_key in self._dynamic_config. \
++ _highest_pkg_cache_cp_map.pop(cp, []):
++ self._dynamic_config._highest_pkg_cache.pop(
++ cache_key, None)
++
+ def _want_installed_pkg(self, pkg):
+ """
+ Given an installed package returned from select_pkg, return
diff --git a/sys-apps/portage/portage-2.2.14.ebuild b/sys-apps/portage/portage-2.2.14.ebuild
index 87160c8..6ed4ada 100644
--- a/sys-apps/portage/portage-2.2.14.ebuild
+++ b/sys-apps/portage/portage-2.2.14.ebuild
@@ -79,7 +79,8 @@ SRC_URI="mirror://gentoo/${PN}-${TARBALL_PV}.tar.bz2
python_prepare_all() {
distutils-r1_python_prepare_all
- epatch "${FILESDIR}/${P}-use_reduce-cache.patch"
+ epatch "${FILESDIR}/${P}-bug_529660.patch"
+ epatch "${FILESDIR}/${P}-bug_530010.patch"
if ! use ipc ; then
einfo "Disabling ipc..."