[yum-git] Branch 'yum-3_2_X' - cli.py yum/__init__.py

Seth Vidal skvidal at linux.duke.edu
Wed Jul 16 15:48:48 UTC 2008


 cli.py          |   47 +++--------------------------------------------
 yum/__init__.py |   51 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 53 insertions(+), 45 deletions(-)

New commits:
commit b7f23f73ecd35441c403e57267544f92e69a0e49
Author: Seth Vidal <skvidal at fedoraproject.org>
Date:   Wed Jul 16 11:46:28 2008 -0400

    - make cli.updatePkgs() call YumBase.update() for most everything <-- watch this for interaction regressions
    - closes rh bug #455301
    - add add_enable_repo method to YumBase to facilitate adding repos by baseurl/mirrorlist easily

diff --git a/cli.py b/cli.py
index 4dc1772..1554911 100644
--- a/cli.py
+++ b/cli.py
@@ -544,30 +544,8 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
         # if there is a userlist then it's for updating pkgs, not obsoleting
         
         oldcount = len(self.tsInfo)
-        installed = self.rpmdb.simplePkgList()
-        updates = self.up.getUpdatesTuples()
-        if self.conf.obsoletes:
-            obsoletes = self.up.getObsoletesTuples(newest=1)
-        else:
-            obsoletes = []
-
         if len(userlist) == 0: # simple case - do them all
-            for (obsoleting, installed) in obsoletes:
-                obsoleting_pkg = self.getPackageObject(obsoleting)
-                installed_pkg =  self.rpmdb.searchPkgTuple(installed)[0]
-                self.tsInfo.addObsoleting(obsoleting_pkg, installed_pkg)
-                self.tsInfo.addObsoleted(installed_pkg, obsoleting_pkg)
-                                
-            for (new, old) in updates:
-                txmbrs = self.tsInfo.getMembers(pkgtup=old)
-
-                if txmbrs and txmbrs[0].output_state == TS_OBSOLETED: 
-                    self.verbose_logger.log(yum.logginglevels.DEBUG_2, _('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s'), old)
-                else:
-                    updating_pkg = self.getPackageObject(new)
-                    updated_pkg = self.rpmdb.searchPkgTuple(old)[0]
-                    self.tsInfo.addUpdate(updating_pkg, updated_pkg)
-
+            self.update()
 
         else:
             # go through the userlist - look for items that are local rpms. If we find them
@@ -582,27 +560,8 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
                 for item in localupdates:
                     userlist.remove(item)
                 
-            # we've got a userlist, match it against updates tuples and populate
-            # the tsInfo with the matches
-            updatesPo = []
-            for (new, old) in updates:
-                (n,a,e,v,r) = new
-                updatesPo.extend(self.pkgSack.searchNevra(name=n, arch=a, epoch=e, 
-                                 ver=v, rel=r))
-                                 
-            exactmatch, matched, unmatched = yum.packages.parsePackages(
-                                                updatesPo, userlist, casematch=1)
-            for userarg in unmatched:
-                if not quiet:
-                    self.logger.error(_('Could not find update match for %s') % userarg)
-
-            updateMatches = yum.misc.unique(matched + exactmatch)
-            for po in updateMatches:
-                for (new, old) in updates:
-                    if po.pkgtup == new:
-                        updated_pkg = self.rpmdb.searchPkgTuple(old)[0]
-                        self.tsInfo.addUpdate(po, updated_pkg)
-
+            for pattern in userlist:
+                self.update(pattern=pattern)
 
         if len(self.tsInfo) > oldcount:
             change = len(self.tsInfo) - oldcount
diff --git a/yum/__init__.py b/yum/__init__.py
index 521a8a0..c13055c 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -49,7 +49,7 @@ import comps
 import config
 from repos import RepoStorage
 import misc
-from parser import ConfigPreProcessor
+from parser import ConfigPreProcessor, varReplace
 import transactioninfo
 import urlgrabber
 from urlgrabber.grabber import URLGrabError
@@ -2963,3 +2963,52 @@ class YumBase(depsolve.Depsolve):
 
         self.dsCallback = dscb
         return results
+
+    def add_enable_repo(self, repoid, baseurls=[], mirrorlist=None, **kwargs):
+        """add and enable a repo with just a baseurl/mirrorlist and repoid
+           requires repoid and at least one of baseurl and mirrorlist
+           additional optional kwargs are:
+           variable_convert=bool (defaults to true)
+           and any other attribute settable to the normal repo setup
+           ex: metadata_expire, enable_groups, gpgcheck, cachedir, etc
+           returns the repo object it added"""
+        # out of place fixme - maybe we should make this the default repo addition
+        # routine and use it from getReposFromConfigFile(), etc.
+        newrepo = yumRepo.YumRepository(repoid)
+        newrepo.name = repoid
+        newrepo.basecachedir = self.conf.cachedir
+        var_convert = True
+        if kwargs.has_key('variable_convert') and not kwargs['variable_convert']:
+            var_convert = False
+        
+        if baseurls:
+            replaced = []
+            if var_convert:
+                for baseurl in baseurls:
+                    if baseurl:
+                        replaced.append(varReplace(baseurl, self.conf.yumvar))
+            else:
+                replaced = baseurls
+            newrepo.baseurl = replaced
+
+        if mirrorlist:
+            if var_convert:
+                mirrorlist = varReplace(mirrorlist, self.conf.yumvar)
+            newrepo.mirrorlist = mirrorlist
+
+        # some reasonable defaults, (imo)
+        newrepo.enablegroups = True
+        newrepo.metadata_expire = 0
+        newrepo.gpgcheck = self.conf.gpgcheck
+        newrepo.basecachedir = self.conf.cachedir
+
+        for key in kwargs.keys():
+            if not hasattr(newrepo, key): continue # skip the ones which aren't vars
+            setattr(newrepo, key, kwargs[key])
+        
+        # add the new repo
+        self.repos.add(newrepo)
+        # enable the main repo  
+        self.repos.enableRepo(newrepo.id)
+        return newrepo
+



More information about the Yum-cvs-commits mailing list