Index: emerge =================================================================== RCS file: /var/cvsroot/gentoo-src/portage/bin/emerge,v retrieving revision 1.345.2.13 diff -u -r1.345.2.13 emerge --- emerge 16 Jan 2005 02:35:33 -0000 1.345.2.13 +++ emerge 27 Jan 2005 13:52:25 -0000 @@ -925,17 +925,9 @@ merging=2 if merging==1: mybigkey.append("merge") - self.mydbapi[myroot].cpv_inject(mykey) else: mybigkey.append("nomerge") - # Adjust pkgsettings with any virtuals this package provides. - if merging!=0: - if mytype=="binary": - self.pkgsettings.setinst(mykey,portage.db["/"]["bintree"].dbapi) - elif merging: - self.pkgsettings.setinst(mykey,portage.db[myroot]["porttree"].dbapi) - # whatever the case, we need to add the node to our digraph so # that children can depend upon it. self.digraph.addnode(string.join(mybigkey),myparent) @@ -1118,12 +1110,30 @@ #mycheck=portage.dep_check(depstring,self.mydbapi[myroot],self.pkgsettings,myuse=myuse) if not mycheck[0]: - return 0 - mymerge=mycheck[1] + mymerge=[] + else: + mymerge=mycheck[1] else: #we're processing a command-line argument; unconditionally merge it even if it's already merged mymerge=[depstring] + + # dep_check has been run so we can now add our parent to our + # build state to update virtuals and other settings. This + # happens after the package is added to the tree so that a + # package can depend on a virtual which it satisfies. + if myparent: + myp = myparent.split() + if myp[3]=="merge": + self.mydbapi[myroot].cpv_inject(myp[2]) + if myp[0]=="binary": + self.pkgsettings.setinst(myp[2],portage.db["/"]["bintree"].dbapi) + else: + self.pkgsettings.setinst(myp[2],portage.db[myroot]["porttree"].dbapi) + + if not mymerge: + return 1 + if "--debug" in myopts: print "Candidates:",mymerge for x in mymerge: