summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2006-09-22 09:55:27 +0000
committerZac Medico <zmedico@gentoo.org>2006-09-22 09:55:27 +0000
commitf98d48b871f7edac527f8d8b59bbe6aacaf7a069 (patch)
tree890e9d279ae192f60ff2ea4fc47841a243e5f3ba
parente976c893db680971bbf4ca67298b5ba34191c5cc (diff)
downloadportage-f98d48b871f7edac527f8d8b59bbe6aacaf7a069.tar.gz
portage-f98d48b871f7edac527f8d8b59bbe6aacaf7a069.tar.bz2
portage-f98d48b871f7edac527f8d8b59bbe6aacaf7a069.zip
Revert r4495, since conversion from nomerge to merge may put the depgraph into an inconsistent state du to USE flag mismatch. This can be solved by checking all args prior to marking packages as nomerge.
svn path=/main/trunk/; revision=4496
-rwxr-xr-xbin/emerge5
-rw-r--r--pym/portage.py26
2 files changed, 3 insertions, 28 deletions
diff --git a/bin/emerge b/bin/emerge
index a8af02919..afd107080 100755
--- a/bin/emerge
+++ b/bin/emerge
@@ -717,12 +717,13 @@ class depgraph:
return 1
jbigkey = " ".join(mybigkey) + " nomerge"
if self.digraph.hasnode(jbigkey):
+ """XXX: It's possible that this package has been explicitly
+ requested as a command line argument. This can be solved by
+ checking all args prior to marking packages as nomerge"""
if rev_dep and myparent:
self.digraph.addnode(myparent, jbigkey, soft_dep=soft_dep)
else:
self.digraph.addnode(jbigkey, myparent, soft_dep=soft_dep)
- if arg:
- self.digraph.replace(jbigkey, " ".join(mybigkey) + " merge")
return 1
self.spinner.update()
diff --git a/pym/portage.py b/pym/portage.py
index a97c50171..104f1a279 100644
--- a/pym/portage.py
+++ b/pym/portage.py
@@ -364,32 +364,6 @@ class digraph:
del self.nodes[node]
self.order.remove(node)
- def replace(self, oldnode, newnode):
- """Replace all references to oldnode with references to newnode.
- This is useful for upgrading a "nomerge" node to a "merge" node.
-
- @return:
- 1. None on success.
- 2. Raise a KeyError if oldnode does not exist.
- 3. Raise a ValueError if newnode already exists.
- """
- if not self.contains(oldnode):
- raise KeyError(oldnode)
- if oldnode == newnode:
- return
- if newnode in self.nodes:
- raise ValueError(newnode)
- for parent in self.nodes[oldnode][1]:
- self.nodes[parent][0][newnode] = self.nodes[parent][0][oldnode]
- del self.nodes[parent][0][oldnode]
- for child in self.nodes[oldnode][0]:
- self.nodes[child][1][newnode] = self.nodes[child][1][oldnode]
- del self.nodes[child][1][oldnode]
- self.nodes[newnode] = self.nodes[oldnode]
- del self.nodes[oldnode]
- oldindex = self.order.index(oldnode)
- self.order[oldindex] = newnode
-
def contains(self, node):
"""Checks if the digraph contains mynode"""
return node in self.nodes