[yum-cvs] yum/yum depsolve.py,1.141,1.142

Jeremy Katz katzj at linux.duke.edu
Mon Mar 19 20:29:05 UTC 2007


Update of /home/groups/yum/cvs/yum/yum
In directory login1.linux.duke.edu:/tmp/cvs-serv11035/yum

Modified Files:
	depsolve.py 
Log Message:
remove the busted attempt at depsolving since it keeps throwing off my searches


Index: depsolve.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/depsolve.py,v
retrieving revision 1.141
retrieving revision 1.142
diff -u -r1.141 -r1.142
--- depsolve.py	19 Mar 2007 20:21:11 -0000	1.141
+++ depsolve.py	19 Mar 2007 20:29:03 -0000	1.142
@@ -800,228 +800,6 @@
         return CheckDeps, conflicts
 
 
-class AnacondaDepsolver(Depsolve):
-
-    def __init__(self):
-        Depsolve.__init__(self)
-        self.deps = {}
-        self.path = []
-        self.loops = []
-
-    def isPackageInstalled(self, pkgname):
-        # FIXME: this sucks.  we should probably suck it into yum proper
-        # but it'll need a bit of cleanup first.
-        installed = False
-        if self.rpmdb.installed(name = pkgname):
-            installed = True
-
-        lst = self.tsInfo.matchNaevr(name = pkgname)
-        for txmbr in lst:
-            if txmbr.output_state in TS_INSTALL_STATES:
-                return True
-        if installed and len(lst) > 0:
-            # if we get here, then it was installed, but it's in the tsInfo
-            # for an erase or obsoleted --> not going to be installed at end
-            return False
-        return installed
-
-    def _provideToPkg(self, req):
-        best = None
-        (r, f, v) = req
-
-        for pkgtup in self.rpmdb.whatProvides(r, f, v):
-            # check the rpmdb first for something providing it that's not
-            # set to be removed
-            txmbrs = self.tsInfo.getMembers(pkgtup)
-            if not txmbrs:
-                po = self.getInstalledPackageObject(pkgtup)            
-                self.deps[req] = po                
-                return po
-            for txmbr in txmbrs:
-                if txmbr.output_state not in TS_REMOVE_STATES:
-                    po = self.getInstalledPackageObject(pkgtup)
-                    self.deps[req] = po                
-                    return po
-
-        satisfiers = []
-        for po in self.whatProvides(r, f, v):
-            # if we already have something to be installed which
-            # does the provide then that's obviously the one we want to use.
-            # this takes care of the case that we select, eg, kernel-smp
-            # and then have something which requires kernel
-            if self.tsInfo.getMembers(po.pkgtup):
-                self.deps[req] = po
-                return po
-            if po not in satisfiers:
-                satisfiers.append(po)
-
-        if satisfiers:
-            best = self.bestPackagesFromList(satisfiers)[0]
-            self.deps[req] = best
-            return best
-        return None
-
-    def _undoDepInstalls(self):
-        # clean up after ourselves in the case of failures
-        for txmbr in self.tsInfo:
-            if txmbr.isDep:
-                self.tsInfo.remove(txmbr.pkgtup)
-
-    def prof_resolveDeps(self):
-        fn = "anaconda.prof.0"
-        import hotshot, hotshot.stats
-        prof = hotshot.Profile(fn)
-        rc = prof.runcall(self._resolveDeps)
-        prof.close()
-        print "done running depcheck"
-        stats = hotshot.stats.load(fn)
-        stats.strip_dirs()
-        stats.sort_stats('time', 'calls')
-        stats.print_stats(20)
-        return rc
-
-    def resolveDeps(self):
-        if self.dsCallback: self.dsCallback.start()
-        unresolved = self.tsInfo.getMembers()
-        while len(unresolved) > 0:
-            if self.dsCallback: self.dsCallback.tscheck()
-            unresolved = self.tsCheck(unresolved)
-            if len(unresolved) > 0:
-                if self.dsCallback: self.dsCallback.restartLoop()
-        self.deps = {}
-        self.loops = []
-        self.path = []
-        self.tsInfo.changed = False        
-        return (2, ['Success - deps resolved'])
-
-    def _checkInstall(self, txmbr):
-        reqs = txmbr.po.returnPrco('requires')
-        provs = txmbr.po.returnPrco('provides')
-
-        ret = []
-        for req in reqs:
-            if req[0].startswith('rpmlib(') or req[0].startswith('config('):
-                continue
-            if req in provs:
-                continue
-            self.verbose_logger.log(logginglevels.DEBUG_2, "looking for %s as a requirement of %s" %(req, txmbr))
-            dep = self.deps.get(req, None)
-            if dep is None:
-                dep = self._provideToPkg(req)
-                if dep is None:
-                    # FIXME: We need to fail here.
-                    self.verbose_logger.warning("Unresolvable dependency %s in %s"
-                                                %(req[0], txmbr.name))
-                    continue
-
-            # Skip filebased requires on self, etc
-            if txmbr.name == dep.name:
-                continue
-            # FIXME: Yum doesn't need this, right?
-            #if (dep.name, txmbr.name) in whiteout.whitetup:
-            #   log.debug("ignoring %s>%s in whiteout" %(dep.name, txmbr.name))
-            #   continue
-            if self.isPackageInstalled(dep.name):
-                continue
-            if self.tsInfo.exists(dep.pkgtup):
-                pkgs = self.tsInfo.getMembers(pkgtup=dep.pkgtup)
-                member = self.bestPackagesFromList(pkgs)[0]
-            else:
-                if dep.name != req[0]:
-                    self.verbose_logger.info("adding %s for %s, required by %s" %(dep.name, req[0], txmbr.name))
-
-                member = self.tsInfo.addInstall(dep)
-                ret.append(member)
-
-            #Add relationship
-            found = False
-            for dependspo in txmbr.depends_on:
-                if member.po == dependspo:
-                    found = True
-                    break
-            if not found:
-                member.setAsDep(txmbr.po)
-        return ret
-
-    def _checkRemove(self, txmbr):
-        provs = txmbr.po.returnPrco('provides')
-
-        # get the files in the package and express them as "provides"
-        files = txmbr.po.filelist
-        filesasprovs = map(lambda f: (f, None, None), files)
-        provs.extend(filesasprovs)
-
-        ret = []
-        for prov in provs:
-            if prov[0].startswith('rpmlib('): # ignore rpmlib() provides
-                continue
-            if prov[0].startswith("/usr/share/doc"): # XXX: ignore doc files
-                continue
-            self.verbose_logger.log(logginglevels.DEBUG_4, "looking to see what requires %s of %s" %(prov, txmbr.po))
-            (r, f, v) = prov
-
-            removeList = []
-            # we don't care if they require exactly our version
-            for pkgtup in self.rpmdb.whatRequires(r, None, v):
-                if pkgtup in removeList:
-                    continue
-                # check the rpmdb first for something still installed
-                txmbrs = self.tsInfo.getMembers(pkgtup)
-                toRemove = False
-                for tx in txmbrs:
-                    if tx.output_state in TS_REMOVE_STATES:
-                        toRemove = True
-                        break
-                if not toRemove:
-                    removeList.append(pkgtup)
-
-            if len(removeList) == 0:
-                continue
-            
-            # if something else provides this name and it's not being
-            # removed, then we don't need to worry about it
-            stillavail = False
-            for pkgtup in self.rpmdb.whatProvides(r, None, None):
-                txmbrs = self.tsInfo.getMembers(pkgtup)
-                if len(txmbrs) == 0: # not in tsinfo, so must still be avail
-                    stillavail = True
-                    break
-                for tx in txmbrs:
-                    if tx.output_state not in TS_REMOVE_STATES:
-                        stillavail = True # it's being installed
-                        break
-            if stillavail:
-                self.verbose_logger.log(logginglevels.DEBUG_1, "more than one package provides %s" %(r,))                    
-                continue
-
-            for pkgtup in removeList:
-                po = self.getInstalledPackageObject(pkgtup)
-                self.verbose_logger.info("removing %s for %s, was provided by %s" %(po, r, txmbr.po))
-                tx = self.tsInfo.addErase(po)
-                tx.setAsDep(po = txmbr.po)
-                ret.append(tx)
-            
-        return ret
-
-    def tsCheck(self, tocheck):
-        unresolved = []
-
-        for txmbr in tocheck:
-            if txmbr.name == "redhat-lsb" and len(tocheck) > 2: # FIXME: this speeds things up a lot
-                unresolved.append(txmbr)
-                continue
-            # FIXME: Not enough args
-            #if self.dsCallback: self.dsCallback.pkgAdded()
-            if txmbr.output_state in TS_INSTALL_STATES:
-                unresolved.extend(self._checkInstall(txmbr))
-            elif txmbr.output_state in TS_REMOVE_STATES:
-                unresolved.extend(self._checkRemove(txmbr))
-
-        return unresolved
-
-    def _transactionDataFactory(self):
-        return SplitMediaTransactionData()
-
 class YumDepsolver(Depsolve):
     def __init__(self):
         Depsolve.__init__(self)




More information about the Yum-cvs-commits mailing list