From 8ec5af26b02cdc3613f2545e4c0be4eee158352e Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Wed, 9 Apr 2008 00:37:10 +0000 Subject: [PATCH] Make depgraph.select_files() detect when a package name given as an argument is ambiguous due to the existence of a new-style virtual with the same name (cpv_expand() will not always raise a ValueError in cases like this). svn path=/main/trunk/; revision=9762 --- pym/_emerge/__init__.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index 955ab8979..a2b651fe9 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -2204,6 +2204,13 @@ class depgraph(object): cp not in e[0]: raise del e + virtual_x = expand_virtual_atom(x) + if virtual_x and \ + self._have_new_virt(root_config.root, + portage.dep_getkey(virtual_x)) and \ + virtual_x != mykey: + raise ValueError([portage.dep_getkey(virtual_x), + portage.dep_getkey(mykey)]) args.append(AtomArg(arg=x, atom=mykey, root_config=root_config)) except ValueError, e: @@ -5492,6 +5499,22 @@ def checkUpdatedNewsItems(portdb, vardb, NEWS_PATH, UNREAD_PATH, repo_id): manager = NewsManager(portdb, vardb, NEWS_PATH, UNREAD_PATH) return manager.getUnreadItems( repo_id, update=True ) +def expand_virtual_atom(x): + """ + Take an atom without a category and insert virtual/ for the + category. This works correctly with atoms that have operators. + + @param x: an atom without a category + @type x: String + @returns: the atom with virtual/ inserted for the category, or None + """ + alphanum = re.search(r'\w', x) + if alphanum: + ret = x[:alphanum.start()] + "virtual/" + x[alphanum.start():] + else: + ret = None + return ret + def is_valid_package_atom(x): if "/" not in x: alphanum = re.search(r'\w', x) -- 2.26.2