summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/emerge10
-rw-r--r--pym/portage.py4
2 files changed, 11 insertions, 3 deletions
diff --git a/bin/emerge b/bin/emerge
index 75258b12b..6e4dae692 100755
--- a/bin/emerge
+++ b/bin/emerge
@@ -689,9 +689,13 @@ class depgraph:
#"no downgrade" emerge
"""
- jbigkey=string.join(mybigkey)
- # Prevent cycles where packages are already in the digraph
- if self.digraph.hasnode(jbigkey+" merge") or self.digraph.hasnode(jbigkey+" nomerge"):
+ jbigkey = " ".join(mybigkey) + " merge"
+ if self.digraph.hasnode(jbigkey):
+ if addme:
+ self.digraph.addnode(jbigkey, myparent)
+ return 1
+ jbigkey = " ".join(mybigkey) + " nomerge"
+ if self.digraph.hasnode(jbigkey):
return 1
self.spinner.update()
diff --git a/pym/portage.py b/pym/portage.py
index c46aea9f9..96791b377 100644
--- a/pym/portage.py
+++ b/pym/portage.py
@@ -318,6 +318,10 @@ class digraph:
self.okeys=[]
def addnode(self,mykey,myparent):
+ if mykey == myparent:
+ # Refuse to make a node depend on itself so that the caller doesn't
+ # accidentally create a bogus circular dependency.
+ myparent = None
if not self.dict.has_key(mykey):
self.okeys.append(mykey)
if myparent is None: