summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2012-06-17 10:52:28 -0700
committerZac Medico <zmedico@gentoo.org>2012-06-17 10:52:28 -0700
commiteb401abc6a140aca85fc93c1744bc371f10ada10 (patch)
tree4701500a65f1bb0e2972b3e5be71a2201c06b264
parent525988ac9a74c75dff19a89887c44ea280628d3f (diff)
downloadportage-eb401abc6a140aca85fc93c1744bc371f10ada10.tar.gz
portage-eb401abc6a140aca85fc93c1744bc371f10ada10.tar.bz2
portage-eb401abc6a140aca85fc93c1744bc371f10ada10.zip
depgraph: use package sets for rebuild/reinstall
-rw-r--r--pym/_emerge/depgraph.py26
1 files changed, 21 insertions, 5 deletions
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
index a669166fd..8aa53aa59 100644
--- a/pym/_emerge/depgraph.py
+++ b/pym/_emerge/depgraph.py
@@ -2268,7 +2268,24 @@ class depgraph(object):
self._dynamic_config._initial_arg_list = args[:]
return self._resolve(myfavorites)
-
+
+ def _gen_reinstall_sets(self):
+
+ atom_list = []
+ for root, atom in self._rebuild.rebuild_list:
+ atom_list.append((root, '__auto_rebuild__', atom))
+ for root, atom in self._rebuild.reinstall_list:
+ atom_list.append((root, '__auto_reinstall__', atom))
+
+ set_dict = {}
+ for root, set_name, atom in atom_list:
+ set_dict.setdefault((root, set_name), []).append(atom)
+
+ for (root, set_name), atoms in set_dict.items():
+ yield SetArg(arg=(SETPREFIX + set_name),
+ pset=InternalPackageSet(initial_atoms=atoms),
+ root_config=self._frozen_config.roots[root])
+
def _resolve(self, myfavorites):
"""Given self._dynamic_config._initial_arg_list, pull in the root nodes,
call self._creategraph to process theier deps and return
@@ -2280,10 +2297,9 @@ class depgraph(object):
pprovideddict = pkgsettings.pprovideddict
virtuals = pkgsettings.getvirtuals()
args = self._dynamic_config._initial_arg_list[:]
- for root, atom in chain(self._rebuild.rebuild_list,
- self._rebuild.reinstall_list):
- args.append(AtomArg(arg=atom, atom=atom,
- root_config=self._frozen_config.roots[root]))
+
+ args.extend(self._gen_reinstall_sets())
+
for arg in self._expand_set_args(args, add_to_digraph=True):
for atom in arg.pset.getAtoms():
self._spinner_update()