summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/emerge13
1 files changed, 12 insertions, 1 deletions
diff --git a/bin/emerge b/bin/emerge
index 90c1778b1..d2d3e768e 100755
--- a/bin/emerge
+++ b/bin/emerge
@@ -1307,6 +1307,7 @@ class depgraph:
return retlist
def xcreate(self,mode="system"):
+ vardb = self.trees[self.target_root]["vartree"].dbapi
world_problems = False
if mode=="system":
mylist = getlist(self.settings, "system")
@@ -1328,10 +1329,20 @@ class depgraph:
newlist = []
for atom in mylist:
- if portage.dep_getkey(atom).split("/")[-1] == "portage":
+ mykey = portage.dep_getkey(atom)
+ if portage.catsplit(mykey)[-1] == "portage":
newlist.insert(0, atom)
else:
newlist.append(atom)
+ """Make sure all installed slots are updated when possible.
+ Do this with --emptytree also, to ensure that all slots are
+ remerged."""
+ myslots = set()
+ for cpv in vardb.match(mykey):
+ myslots.add(vardb.aux_get(cpv, ["SLOT"])[0])
+ if len(myslots) > 1:
+ for myslot in myslots:
+ newlist.append("%s:%s" % (mykey, myslot))
mylist = newlist
missing_atoms = []