*** emerge.orig Thu Jul 4 08:55:19 2002 --- emerge Thu Jul 4 10:14:48 2002 *************** *** 367,373 **** #portage.db["/"]["vartree"].virtual={"virtual/glibc":"sys-libs/glibc"} self.outdatedpackages=[] ! def create(self,mybigkey,myparent=None,addme=1): """creates the actual digraph of packages to merge. return 1 on success, 0 on failure mybigkey = specification of package to merge; myparent = parent package (one depending on me); addme = should I be added to the tree? (for the --onlydeps mode)""" --- 367,373 ---- #portage.db["/"]["vartree"].virtual={"virtual/glibc":"sys-libs/glibc"} self.outdatedpackages=[] ! def create(self,mybigkey,myparent=None,addme=1,abandoned=1): """creates the actual digraph of packages to merge. return 1 on success, 0 on failure mybigkey = specification of package to merge; myparent = parent package (one depending on me); addme = should I be added to the tree? (for the --onlydeps mode)""" *************** *** 385,390 **** --- 385,395 ---- self.digraph.addnode(mybigkey,myparent) return 1 mytype,myroot,mykey=string.split(mybigkey) + #Since we can get abandoned we could have to stay with tree's root even if we have a parent + if abandoned: + home=None + else: + home=myparent #IMPORTANT: in the next line, ("--update" in self.myopts) should eventually be removed. #It will allow childrean of already-upgraded packages to be upgraded. Unfortunately, "fixing" this #creates a new problem -- when child deps are calculated, it uses the current USE settings rather than *************** *** 413,436 **** if not myparent: if portage.isspecific(mykey): if portage.db[myroot]["vartree"].exists_specific(mykey): ! self.digraph.addnode(mybigkey,myparent) else: if portage.db[myroot]["vartree"].hasnode(mykey): ! self.digraph.addnode(mybigkey,myparent) else: parenttype,parentroot,parentkey=string.split(myparent) if portage.isspecific(mykey): if portage.db[myroot]["vartree"].exists_specific(mykey): if portage.db[myroot]["vartree"].resolve_key(mykey) != portage.db[myroot]["vartree"].resolve_key(parentkey): #add the blocker, since we are not a package like app-editors/xemacs with a !virtual/xemacs in it ! self.digraph.addnode(mybigkey,myparent) else: if portage.db[myroot]["vartree"].hasnode(mykey): parentsplit=portage.catpkgsplit(parentkey) parentkey=parentsplit[0]+"/"+parentsplit[1] if portage.db[myroot]["vartree"].resolve_key(mykey) != portage.db[myroot]["vartree"].resolve_key(parentkey): #add the blocker, since we are not a package like app-editors/xemacs with a !virtual/xemacs in it ! self.digraph.addnode(mybigkey,myparent) if edepend: mydep={} if myroot=="/": --- 418,441 ---- if not myparent: if portage.isspecific(mykey): if portage.db[myroot]["vartree"].exists_specific(mykey): ! self.digraph.addnode(mybigkey,home) else: if portage.db[myroot]["vartree"].hasnode(mykey): ! self.digraph.addnode(mybigkey,home) else: parenttype,parentroot,parentkey=string.split(myparent) if portage.isspecific(mykey): if portage.db[myroot]["vartree"].exists_specific(mykey): if portage.db[myroot]["vartree"].resolve_key(mykey) != portage.db[myroot]["vartree"].resolve_key(parentkey): #add the blocker, since we are not a package like app-editors/xemacs with a !virtual/xemacs in it ! self.digraph.addnode(mybigkey,home) else: if portage.db[myroot]["vartree"].hasnode(mykey): parentsplit=portage.catpkgsplit(parentkey) parentkey=parentsplit[0]+"/"+parentsplit[1] if portage.db[myroot]["vartree"].resolve_key(mykey) != portage.db[myroot]["vartree"].resolve_key(parentkey): #add the blocker, since we are not a package like app-editors/xemacs with a !virtual/xemacs in it ! self.digraph.addnode(mybigkey,home) if edepend: mydep={} if myroot=="/": *************** *** 441,447 **** mydep["/"]=edepend[0] mydep[myroot]=edepend[1] if addme: ! self.digraph.addnode(mybigkey,myparent) if "--nodeps" in self.myopts: return 1 for dep in mydep.keys(): --- 446,452 ---- mydep["/"]=edepend[0] mydep[myroot]=edepend[1] if addme: ! self.digraph.addnode(mybigkey,home) if "--nodeps" in self.myopts: return 1 for dep in mydep.keys(): *************** *** 463,472 **** mynew=self.match(x,dep,mykey) if not self.digraph.hasnode(mynew): if addme: ! if not self.create(mynew,mybigkey): return 0 else: ! if not self.create(mynew,None): return 0 else: if addme: --- 468,477 ---- mynew=self.match(x,dep,mykey) if not self.digraph.hasnode(mynew): if addme: ! if not self.create(mynew,mybigkey,1,0): return 0 else: ! if not self.create(mynew,mybigkey,1,1): return 0 else: if addme: