diff options
author | Andrew Savchenko <bircoph@gmail.com> | 2014-11-23 06:15:50 +0300 |
---|---|---|
committer | Andrew Savchenko <bircoph@gmail.com> | 2014-11-23 06:15:50 +0300 |
commit | dc64e2d80324628db460e3eccd977b9291480b63 (patch) | |
tree | 6671517fcabc66e6c6d87e4498765aec50e93368 /sys-apps | |
parent | portage: use_reduce cache evaluation (diff) | |
download | bircoph-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/Manifest | 5 | ||||
-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.patch | 116 | ||||
-rw-r--r-- | sys-apps/portage/portage-2.2.14.ebuild | 3 |
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..." |