From 03031782022dc12fceebc00830f0dfc7aaebee61 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Tue, 30 Jun 2009 23:03:34 +0000 Subject: Fix depgraph._resolve to do old-style virtual matches against package.provided when there is no other choice. svn path=/main/trunk/; revision=13749 --- pym/_emerge/depgraph.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index aeebda020..ee02417d9 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -1358,6 +1358,7 @@ class depgraph(object): myroot = self._frozen_config.target_root pkgsettings = self._frozen_config.pkgsettings[myroot] pprovideddict = pkgsettings.pprovideddict + virtuals = pkgsettings.getvirtuals() for arg in self._dynamic_config._initial_arg_list: for atom in arg.set: self._frozen_config.spinner.update() @@ -1383,6 +1384,22 @@ class depgraph(object): pkg, existing_node = self._select_package( myroot, atom, onlydeps=onlydeps) if not pkg: + pprovided_match = False + for virt_choice in virtuals.get(atom.cp, []): + expanded_atom = portage.dep.Atom( + atom.replace(atom.cp, + portage.dep_getkey(virt_choice), 1)) + pprovided = pprovideddict.get(expanded_atom.cp) + if pprovided and \ + portage.match_from_list(expanded_atom, pprovided): + # A provided package has been + # specified on the command line. + self._dynamic_config._pprovided_args.append((arg, atom)) + pprovided_match = True + break + if pprovided_match: + continue + if not (isinstance(arg, SetArg) and \ arg.name in ("system", "world")): self._dynamic_config._unsatisfied_deps_for_display.append( -- cgit v1.2.3-1-g7c22