[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