summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-08-03 20:49:09 +0000
committerZac Medico <zmedico@gentoo.org>2009-08-03 20:49:09 +0000
commitf0d88cdd0befbefd94ba4a9769fac8e964a8d64f (patch)
tree74041d6ba39c4d1127d7fc209a72638fd9616af1
parent38a4cf4b0821f0d880d8aeb6adf2c8c55af63e20 (diff)
downloadportage-f0d88cdd0befbefd94ba4a9769fac8e964a8d64f.tar.gz
portage-f0d88cdd0befbefd94ba4a9769fac8e964a8d64f.tar.bz2
portage-f0d88cdd0befbefd94ba4a9769fac8e964a8d64f.zip
Bug #278729 - Add an Atom.without_use attribute which is identical to the
atom itself, except without any USE dependencies. svn path=/main/trunk/; revision=13880
-rw-r--r--pym/_emerge/depgraph.py18
-rw-r--r--pym/portage/dep.py9
2 files changed, 11 insertions, 16 deletions
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
index 143a6a8aa..34145b40b 100644
--- a/pym/_emerge/depgraph.py
+++ b/pym/_emerge/depgraph.py
@@ -712,14 +712,8 @@ class depgraph(object):
else:
# Do not backtrack if only USE have to be changed in
# order to satisfy the dependency.
- atom_without_use = dep.atom
- if dep.atom.use:
- atom_without_use = portage.dep.remove_slot(dep.atom)
- if dep.atom.slot:
- atom_without_use += ":" + dep.atom.slot
- atom_without_use = portage.dep.Atom(atom_without_use)
dep_pkg, existing_node = \
- self._select_package(dep.root, atom_without_use,
+ self._select_package(dep.root, atom.without_use,
onlydeps=dep.onlydeps)
if dep_pkg is None:
self._dynamic_config._runtime_pkg_mask.setdefault(
@@ -1845,12 +1839,6 @@ class depgraph(object):
def _show_unsatisfied_dep(self, root, atom, myparent=None, arg=None):
atom = portage.dep.Atom(atom)
atom_set = InternalPackageSet(initial_atoms=(atom,))
- atom_without_use = atom
- if atom.use:
- atom_without_use = portage.dep.remove_slot(atom)
- if atom.slot:
- atom_without_use += ":" + atom.slot
- atom_without_use = portage.dep.Atom(atom_without_use)
xinfo = '"%s"' % atom
if arg:
xinfo='"%s"' % arg
@@ -1871,9 +1859,9 @@ class depgraph(object):
continue
match = db.match
if hasattr(db, "xmatch"):
- cpv_list = db.xmatch("match-all", atom_without_use)
+ cpv_list = db.xmatch("match-all", atom.without_use)
else:
- cpv_list = db.match(atom_without_use)
+ cpv_list = db.match(atom.without_use)
# descending order
cpv_list.reverse()
for cpv in cpv_list:
diff --git a/pym/portage/dep.py b/pym/portage/dep.py
index 679a8558d..64215b68c 100644
--- a/pym/portage/dep.py
+++ b/pym/portage/dep.py
@@ -511,7 +511,7 @@ class Atom(object):
_atoms = weakref.WeakValueDictionary()
__slots__ = ("__weakref__", "blocker", "cp", "cpv", "operator",
- "slot", "use", "_str")
+ "slot", "use", "without_use", "_str",)
class _blocker(object):
__slots__ = ("overlap",)
@@ -550,9 +550,16 @@ class Atom(object):
use = dep_getusedeps(s)
if use:
use = _use_dep(use)
+ without_use = remove_slot(self)
+ if self.slot is not None:
+ without_use += ":" + self.slot
+ without_use = Atom(without_use)
else:
use = None
+ without_use = self
+
obj_setattr(self, "use", use)
+ obj_setattr(self, "without_use", without_use)
def __setattr__(self, name, value):
raise AttributeError("Atom instances are immutable",