summaryrefslogtreecommitdiffstats
path: root/pym/_emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-09-19 17:05:52 +0000
committerZac Medico <zmedico@gentoo.org>2009-09-19 17:05:52 +0000
commit2b45f9c05da69af178bc47a77b28e5d133577c42 (patch)
tree8a71400f819c5f4b67e302fd023c4d820cde80ff /pym/_emerge
parent9b8ce4835ede7499df792aa51e4994a284576049 (diff)
downloadportage-2b45f9c05da69af178bc47a77b28e5d133577c42.tar.gz
portage-2b45f9c05da69af178bc47a77b28e5d133577c42.tar.bz2
portage-2b45f9c05da69af178bc47a77b28e5d133577c42.zip
Avoid lots of redundant Atom constructor calls. Thanks to Marat Radchenko
<marat@slonopotamus.org> for the initial patch from bug #276813. svn path=/main/trunk/; revision=14282
Diffstat (limited to 'pym/_emerge')
-rw-r--r--pym/_emerge/Blocker.py2
-rw-r--r--pym/_emerge/FakeVartree.py3
-rw-r--r--pym/_emerge/actions.py3
-rw-r--r--pym/_emerge/depgraph.py26
4 files changed, 13 insertions, 21 deletions
diff --git a/pym/_emerge/Blocker.py b/pym/_emerge/Blocker.py
index 85462812f..5e34e5249 100644
--- a/pym/_emerge/Blocker.py
+++ b/pym/_emerge/Blocker.py
@@ -17,7 +17,7 @@ class Blocker(Task):
def __init__(self, **kwargs):
Task.__init__(self, **kwargs)
- self.cp = portage.dep_getkey(self.atom)
+ self.cp = self.atom.cp
def _get_hash_key(self):
hash_key = getattr(self, "_hash_key", None)
diff --git a/pym/_emerge/FakeVartree.py b/pym/_emerge/FakeVartree.py
index 25bed2905..e895cc86b 100644
--- a/pym/_emerge/FakeVartree.py
+++ b/pym/_emerge/FakeVartree.py
@@ -76,8 +76,7 @@ class FakeVartree(portage.vartree):
portage.locks.unlockdir(vdb_lock)
# Populate the old-style virtuals using the cached values.
if not self.settings.treeVirtuals:
- self.settings.treeVirtuals = portage.util.map_dictlist_vals(
- portage.getCPFromCPV, self.get_all_provides())
+ self.settings._populate_treeVirtuals(self)
# Intialize variables needed for lazy cache pulls of the live ebuild
# metadata. This ensures that the vardb lock is released ASAP, without
diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py
index f8c511a66..e1f7ffe19 100644
--- a/pym/_emerge/actions.py
+++ b/pym/_emerge/actions.py
@@ -2629,8 +2629,7 @@ def display_news_notification(root_config, myopts):
if not settings.treeVirtuals:
# Populate these using our existing vartree, to avoid
# having a temporary one instantiated.
- settings.treeVirtuals = portage.util.map_dictlist_vals(
- portage.getCPFromCPV, trees["vartree"].get_all_provides())
+ settings._populate_treeVirtuals(trees["vartree"])
for repo in portdb.getRepositories():
unreadItems = checkUpdatedNewsItems(
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
index d52d5ac6a..5b03dc3a2 100644
--- a/pym/_emerge/depgraph.py
+++ b/pym/_emerge/depgraph.py
@@ -1149,9 +1149,6 @@ class depgraph(object):
for atom in selected_atoms[pkg]:
try:
-
- atom = portage.dep.Atom(atom)
-
mypriority = dep_priority.copy()
if not atom.blocker and vardb.match(atom):
mypriority.satisfied = True
@@ -1306,16 +1303,15 @@ class depgraph(object):
atom_arg_map = self._dynamic_config._atom_arg_map
root_config = self._frozen_config.roots[pkg.root]
for atom in self._dynamic_config._set_atoms.iterAtomsForPackage(pkg):
- atom_cp = portage.dep_getkey(atom)
- if atom_cp != pkg.cp and \
- self._have_new_virt(pkg.root, atom_cp):
+ if atom.cp != pkg.cp and \
+ self._have_new_virt(pkg.root, atom.cp):
continue
visible_pkgs = \
self._dynamic_config._visible_pkgs[pkg.root].match_pkgs(atom)
visible_pkgs.reverse() # descending order
higher_slot = None
for visible_pkg in visible_pkgs:
- if visible_pkg.cp != atom_cp:
+ if visible_pkg.cp != atom.cp:
continue
if pkg >= visible_pkg:
# This is descending order, and we're not
@@ -1606,9 +1602,8 @@ class depgraph(object):
self._spinner_update()
dep = Dependency(atom=atom, onlydeps=onlydeps,
root=myroot, parent=arg)
- atom_cp = portage.dep_getkey(atom)
try:
- pprovided = pprovideddict.get(portage.dep_getkey(atom))
+ pprovided = pprovideddict.get(atom.cp)
if pprovided and portage.match_from_list(atom, pprovided):
# A provided package has been specified on the command line.
self._dynamic_config._pprovided_args.append((arg, atom))
@@ -1651,10 +1646,10 @@ class depgraph(object):
return 0, myfavorites
self._dynamic_config._missing_args.append((arg, atom))
continue
- if atom_cp != pkg.cp:
+ if atom.cp != pkg.cp:
# For old-style virtuals, we need to repeat the
# package.provided check against the selected package.
- expanded_atom = atom.replace(atom_cp, pkg.cp)
+ expanded_atom = atom.replace(atom.cp, pkg.cp)
pprovided = pprovideddict.get(pkg.cp)
if pprovided and \
portage.match_from_list(expanded_atom, pprovided):
@@ -2396,7 +2391,7 @@ class depgraph(object):
# Filter out any old-style virtual matches if they are
# mixed with new-style virtual matches.
- cp = portage.dep_getkey(atom)
+ cp = atom.cp
if len(matched_packages) > 1 and \
"virtual" == portage.catsplit(cp)[0]:
for pkg in matched_packages:
@@ -2737,8 +2732,8 @@ class depgraph(object):
for provider_entry in virtuals[blocker.cp]:
provider_cp = \
portage.dep_getkey(provider_entry)
- atoms.append(blocker.atom.replace(
- blocker.cp, provider_cp))
+ atoms.append(Atom(blocker.atom.replace(
+ blocker.cp, provider_cp)))
else:
atoms = [blocker.atom]
@@ -4896,7 +4891,6 @@ class _dep_check_composite_db(portage.dbapi):
# any matching slots in the graph db.
slots = set()
slots.add(pkg.metadata["SLOT"])
- atom_cp = portage.dep_getkey(atom)
if pkg.cp.startswith("virtual/"):
# For new-style virtual lookahead that occurs inside
# dep_check(), examine all slots. This is needed
@@ -4917,7 +4911,7 @@ class _dep_check_composite_db(portage.dbapi):
ret.append(pkg.cpv)
slots.remove(pkg.metadata["SLOT"])
while slots:
- slot_atom = "%s:%s" % (atom_cp, slots.pop())
+ slot_atom = Atom("%s:%s" % (atom.cp, slots.pop()))
pkg, existing = self._depgraph._select_package(
self._root, slot_atom)
if not pkg: