[yum] update to latest HEAD
Valentina Mukhamedzhanova
vmukhame at fedoraproject.org
Mon Mar 10 16:20:34 UTC 2014
commit d5dbb0f3df9e0b1918f4b5799a70a1156ab3488d
Author: Valentina Mukhamedzhanova <vmukhame at redhat.com>
Date: Mon Mar 10 17:20:14 2014 +0100
update to latest HEAD
- Fix repo-pkgs check-update not showing any updates.
- Fix ValueError when /var/lib/yum/groups/installed is empty. BZ 971307
- Fix 'yum updateinfo list all new-packages' traceback. BZ 1072945
- Make yum quit when an invalid option is provided with --setopt.
yum-HEAD.patch | 361 +++++++++++++++++++++++++++++---------------------------
yum.spec | 9 ++-
2 files changed, 194 insertions(+), 176 deletions(-)
---
diff --git a/yum-HEAD.patch b/yum-HEAD.patch
index f5b2593..630a105 100644
--- a/yum-HEAD.patch
+++ b/yum-HEAD.patch
@@ -186965,7 +186965,7 @@ index c1af4ad..2c2f022 100644
pass
diff --git a/yum/__init__.py b/yum/__init__.py
-index 99039e0..dc468cb 100644
+index 99039e0..56ec04d 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -21,6 +21,7 @@ The Yum RPM software updater.
@@ -187232,7 +187232,7 @@ index 99039e0..dc468cb 100644
# Check sections in the .repo file that was just slurped up
for section in parser.sections():
-@@ -429,7 +495,21 @@ class YumBase(depsolve.Depsolve):
+@@ -429,17 +495,41 @@ class YumBase(depsolve.Depsolve):
thisrepo.base_persistdir = self.conf._repos_persistdir
@@ -187246,15 +187246,17 @@ index 99039e0..dc468cb 100644
+ if fnmatch.fnmatch(thisrepo.id, i):
+ for opt in self.repo_setopts[i].items:
-+ if not hasattr(thisrepo, opt):
-+ msg = "Repo %s did not have a %s attr. before setopt"
-+ self.logger.warning(msg % (thisrepo.id, opt))
++ self._checkOption(opt, thisrepo)
+ setattr(thisrepo, opt, getattr(self.repo_setopts[i], opt))
+
if thisrepo.id in self.repo_setopts:
for opt in self.repo_setopts[thisrepo.id].items:
- if not hasattr(thisrepo, opt):
-@@ -440,6 +520,20 @@ class YumBase(depsolve.Depsolve):
+- if not hasattr(thisrepo, opt):
+- msg = "Repo %s did not have a %s attr. before setopt"
+- self.logger.warning(msg % (thisrepo.id, opt))
++ self._checkOption(opt, thisrepo)
+ setattr(thisrepo, opt, getattr(self.repo_setopts[thisrepo.id], opt))
+
if validate and not validate(thisrepo):
continue
@@ -187275,12 +187277,19 @@ index 99039e0..dc468cb 100644
# Got our list of repo objects, add them to the repos
# collection
try:
-@@ -448,8 +542,11 @@ class YumBase(depsolve.Depsolve):
+@@ -447,9 +537,18 @@ class YumBase(depsolve.Depsolve):
+ except Errors.RepoError, e:
self.logger.warning(e)
- def getReposFromConfig(self):
+- def getReposFromConfig(self):
- """read in repositories from config main and .repo files"""
--
++ def _checkOption(self, opt, thisrepo):
++ """Quit if the option is invalid"""
++ if not hasattr(thisrepo, opt):
++ msg = "Invalid option: %s"
++ raise Errors.ConfigError(msg % opt)
+
++ def getReposFromConfig(self):
+ """Read in repositories from the main yum conf file, and from
+ .repo files. The location of the main yum conf file is given
+ by self.conf.config_file_path, and the location of the
@@ -187289,7 +187298,7 @@ index 99039e0..dc468cb 100644
# Read .repo files from directories specified by the reposdir option
# (typically /etc/yum/repos.d)
repo_config_age = self.conf.config_file_age
-@@ -466,18 +563,22 @@ class YumBase(depsolve.Depsolve):
+@@ -466,18 +565,22 @@ class YumBase(depsolve.Depsolve):
if os.path.isdir(reposdir):
for repofn in sorted(glob.glob('%s/*.repo' % reposdir)):
@@ -187317,7 +187326,7 @@ index 99039e0..dc468cb 100644
repo = yumRepo.YumRepository(section)
try:
repo.populate(parser, section, self.conf)
-@@ -493,38 +594,40 @@ class YumBase(depsolve.Depsolve):
+@@ -493,38 +596,40 @@ class YumBase(depsolve.Depsolve):
repo.name = to_unicode(repo.name)
# Set attributes not from the config file
@@ -187380,7 +187389,7 @@ index 99039e0..dc468cb 100644
if isinstance(self.plugins, plugins.YumPlugins):
raise RuntimeError(_("plugins already initialised"))
-@@ -533,6 +636,8 @@ class YumBase(depsolve.Depsolve):
+@@ -533,6 +638,8 @@ class YumBase(depsolve.Depsolve):
def doRpmDBSetup(self):
@@ -187389,7 +187398,7 @@ index 99039e0..dc468cb 100644
warnings.warn(_('doRpmDBSetup() will go away in a future version of Yum.\n'),
Errors.YumFutureDeprecationWarning, stacklevel=2)
-@@ -552,7 +657,8 @@ class YumBase(depsolve.Depsolve):
+@@ -552,7 +659,8 @@ class YumBase(depsolve.Depsolve):
return self._rpmdb
def closeRpmDB(self):
@@ -187399,7 +187408,7 @@ index 99039e0..dc468cb 100644
if self._rpmdb is not None:
self._rpmdb.ts = None
self._rpmdb.dropCachedData()
-@@ -561,12 +667,19 @@ class YumBase(depsolve.Depsolve):
+@@ -561,12 +669,19 @@ class YumBase(depsolve.Depsolve):
self._tsInfo = None
self._up = None
self.comps = None
@@ -187419,7 +187428,7 @@ index 99039e0..dc468cb 100644
warnings.warn(_('doRepoSetup() will go away in a future version of Yum.\n'),
Errors.YumFutureDeprecationWarning, stacklevel=2)
-@@ -577,6 +690,12 @@ class YumBase(depsolve.Depsolve):
+@@ -577,6 +692,12 @@ class YumBase(depsolve.Depsolve):
if hasattr(self, 'prerepoconf'):
self.conf # touch the config class first
@@ -187432,7 +187441,7 @@ index 99039e0..dc468cb 100644
self.getReposFromConfig()
# For rhnplugin, and in theory other stuff, calling
-@@ -588,7 +707,8 @@ class YumBase(depsolve.Depsolve):
+@@ -588,7 +709,8 @@ class YumBase(depsolve.Depsolve):
prerepoconf = self.prerepoconf
del self.prerepoconf
@@ -187442,7 +187451,7 @@ index 99039e0..dc468cb 100644
self.repos.callback = prerepoconf.callback
self.repos.setFailureCallback(prerepoconf.failure_callback)
self.repos.setInterruptCallback(prerepoconf.interrupt_callback)
-@@ -602,24 +722,6 @@ class YumBase(depsolve.Depsolve):
+@@ -602,24 +724,6 @@ class YumBase(depsolve.Depsolve):
if doSetup:
@@ -187467,7 +187476,7 @@ index 99039e0..dc468cb 100644
repo_st = time.time()
self._repos.doSetup(thisrepo)
self.verbose_logger.debug('repo time: %0.3f' % (time.time() - repo_st))
-@@ -630,6 +732,14 @@ class YumBase(depsolve.Depsolve):
+@@ -630,6 +734,14 @@ class YumBase(depsolve.Depsolve):
self._repos = RepoStorage(self)
def doSackSetup(self, archlist=None, thisrepo=None):
@@ -187482,7 +187491,7 @@ index 99039e0..dc468cb 100644
warnings.warn(_('doSackSetup() will go away in a future version of Yum.\n'),
Errors.YumFutureDeprecationWarning, stacklevel=2)
-@@ -711,6 +821,9 @@ class YumBase(depsolve.Depsolve):
+@@ -711,6 +823,9 @@ class YumBase(depsolve.Depsolve):
def doUpdateSetup(self):
@@ -187492,7 +187501,7 @@ index 99039e0..dc468cb 100644
warnings.warn(_('doUpdateSetup() will go away in a future version of Yum.\n'),
Errors.YumFutureDeprecationWarning, stacklevel=2)
-@@ -765,6 +878,8 @@ class YumBase(depsolve.Depsolve):
+@@ -765,6 +880,8 @@ class YumBase(depsolve.Depsolve):
return self._up
def doGroupSetup(self):
@@ -187501,7 +187510,7 @@ index 99039e0..dc468cb 100644
warnings.warn(_('doGroupSetup() will go away in a future version of Yum.\n'),
Errors.YumFutureDeprecationWarning, stacklevel=2)
-@@ -776,7 +891,12 @@ class YumBase(depsolve.Depsolve):
+@@ -776,7 +893,12 @@ class YumBase(depsolve.Depsolve):
# if we unset the comps object, we need to undo which repos have
# been added to the group file as well
if self._repos:
@@ -187515,7 +187524,7 @@ index 99039e0..dc468cb 100644
repo.groups_added = False
self._comps = val
-@@ -813,6 +933,21 @@ class YumBase(depsolve.Depsolve):
+@@ -813,6 +935,21 @@ class YumBase(depsolve.Depsolve):
overwrite = self.conf.overwrite_groups
self._comps = comps.Comps(overwrite_groups = overwrite)
@@ -187537,7 +187546,7 @@ index 99039e0..dc468cb 100644
for repo in reposWithGroups:
if repo.groups_added: # already added the groups from this repo
continue
-@@ -820,16 +955,14 @@ class YumBase(depsolve.Depsolve):
+@@ -820,16 +957,14 @@ class YumBase(depsolve.Depsolve):
self.verbose_logger.log(logginglevels.DEBUG_4,
_('Adding group file from repository: %s'), repo)
groupfile = repo.getGroups()
@@ -187559,7 +187568,7 @@ index 99039e0..dc468cb 100644
self.logger.critical(msg)
else:
repo.groups_added = True
-@@ -837,7 +970,10 @@ class YumBase(depsolve.Depsolve):
+@@ -837,7 +972,10 @@ class YumBase(depsolve.Depsolve):
if self._comps.compscount == 0:
raise Errors.GroupsError, _('No Groups Available in any repository')
@@ -187571,7 +187580,7 @@ index 99039e0..dc468cb 100644
self.verbose_logger.debug('group time: %0.3f' % (time.time() - group_st))
return self._comps
-@@ -868,22 +1004,72 @@ class YumBase(depsolve.Depsolve):
+@@ -868,22 +1006,72 @@ class YumBase(depsolve.Depsolve):
# feed it into _tags.add()
self._tags.add(repo.id, tag_sqlite)
except (Errors.RepoError, Errors.PkgTagsError), e:
@@ -187646,7 +187655,7 @@ index 99039e0..dc468cb 100644
# properties so they auto-create themselves with defaults
repos = property(fget=lambda self: self._getRepos(),
fset=lambda self, value: setattr(self, "_repos", value),
-@@ -921,16 +1107,31 @@ class YumBase(depsolve.Depsolve):
+@@ -921,16 +1109,31 @@ class YumBase(depsolve.Depsolve):
fdel=lambda self: setattr(self, "_history", None),
doc="Yum History Object")
@@ -187682,7 +187691,7 @@ index 99039e0..dc468cb 100644
necessary = False
# I can't think of a nice way of doing this, we have to have the sack here
-@@ -951,25 +1152,37 @@ class YumBase(depsolve.Depsolve):
+@@ -951,25 +1154,37 @@ class YumBase(depsolve.Depsolve):
self.repos.populateSack(mdtype='filelists')
def yumUtilsMsg(self, func, prog):
@@ -187731,7 +187740,7 @@ index 99039e0..dc468cb 100644
self.logger.critical(msg)
self.yumUtilsMsg(self.logger.critical, "yum-complete-transaction")
time.sleep(3)
-@@ -1004,7 +1217,7 @@ class YumBase(depsolve.Depsolve):
+@@ -1004,7 +1219,7 @@ class YumBase(depsolve.Depsolve):
# If transaction was changed by postresolve plugins then we should run skipbroken again
(rescode, restring) = self._doSkipBroken(rescode, restring, clear_skipped=False )
@@ -187740,7 +187749,7 @@ index 99039e0..dc468cb 100644
self.tsInfo.pkgSack.dropCachedData()
# FIXME: This is horrible, see below and yummain. Maybe create a real
-@@ -1044,6 +1257,39 @@ class YumBase(depsolve.Depsolve):
+@@ -1044,6 +1259,39 @@ class YumBase(depsolve.Depsolve):
if first.verEQ(other):
continue
msg = _('Protected multilib versions: %s != %s')
@@ -187780,7 +187789,7 @@ index 99039e0..dc468cb 100644
xrestring.append(msg % (first, other))
if xrestring:
rescode = 1
-@@ -1227,7 +1473,7 @@ class YumBase(depsolve.Depsolve):
+@@ -1227,7 +1475,7 @@ class YumBase(depsolve.Depsolve):
self.verbose_logger.info(msg)
self.skipped_packages.extend(skipped_list) # make the skipped packages public
else:
@@ -187789,7 +187798,7 @@ index 99039e0..dc468cb 100644
self.verbose_logger.info("Skip-broken could not solve problems")
return 1, orig_restring
return rescode, restring
-@@ -1242,13 +1488,15 @@ class YumBase(depsolve.Depsolve):
+@@ -1242,13 +1490,15 @@ class YumBase(depsolve.Depsolve):
if None in pkgtup:
return None
return pkgtup
@@ -187809,7 +187818,7 @@ index 99039e0..dc468cb 100644
if pkgtup is None:
return
self._not_found_i[pkgtup] = YumNotFoundPackage(pkgtup)
-@@ -1267,7 +1515,7 @@ class YumBase(depsolve.Depsolve):
+@@ -1267,7 +1517,7 @@ class YumBase(depsolve.Depsolve):
for pkg in txmbr.obsoleted_by:
# check if the obsoleting txmbr is in the transaction
# else remove the obsoleted txmbr
@@ -187818,7 +187827,7 @@ index 99039e0..dc468cb 100644
if not self.tsInfo.exists(pkg.pkgtup):
self.verbose_logger.debug('SKIPBROKEN: Remove extra obsoleted %s (%s)' % (txmbr.po,pkg) )
self.tsInfo.remove(txmbr.po.pkgtup)
-@@ -1275,14 +1523,14 @@ class YumBase(depsolve.Depsolve):
+@@ -1275,14 +1525,14 @@ class YumBase(depsolve.Depsolve):
def _checkUpdatedLeftovers(self):
"""
If multiple packages is updated the same package
@@ -187835,7 +187844,7 @@ index 99039e0..dc468cb 100644
if not self.tsInfo.exists(pkg.pkgtup):
self.verbose_logger.debug('SKIPBROKEN: Remove extra updated %s (%s)' % (txmbr.po,pkg) )
self.tsInfo.remove(txmbr.po.pkgtup)
-@@ -1379,9 +1627,19 @@ class YumBase(depsolve.Depsolve):
+@@ -1379,9 +1629,19 @@ class YumBase(depsolve.Depsolve):
def _getDepsToRemove(self,po, deptree, toRemove):
for dep in deptree.get(po, []): # Loop trough all deps of po
@@ -187855,7 +187864,7 @@ index 99039e0..dc468cb 100644
toRemove.add(dep)
self._getDepsToRemove(dep, deptree, toRemove)
-@@ -1454,7 +1712,46 @@ class YumBase(depsolve.Depsolve):
+@@ -1454,7 +1714,46 @@ class YumBase(depsolve.Depsolve):
return probs
def runTransaction(self, cb):
@@ -187903,7 +187912,7 @@ index 99039e0..dc468cb 100644
self.plugins.run('pretrans')
-@@ -1516,10 +1813,23 @@ class YumBase(depsolve.Depsolve):
+@@ -1516,10 +1815,23 @@ class YumBase(depsolve.Depsolve):
pass
self._ts_save_file = None
@@ -187927,7 +187936,7 @@ index 99039e0..dc468cb 100644
# make resultobject - just a plain yumgenericholder object
resultobject = misc.GenericHolder()
-@@ -1544,8 +1854,7 @@ class YumBase(depsolve.Depsolve):
+@@ -1544,8 +1856,7 @@ class YumBase(depsolve.Depsolve):
errors=errors)
@@ -187937,7 +187946,7 @@ index 99039e0..dc468cb 100644
self.cleanUsedHeadersPackages()
for i in ('ts_all_fn', 'ts_done_fn'):
-@@ -1567,13 +1876,35 @@ class YumBase(depsolve.Depsolve):
+@@ -1567,13 +1878,35 @@ class YumBase(depsolve.Depsolve):
self.plugins.run('posttrans')
# sync up what just happened versus what is in the rpmdb
if not self.ts.isTsFlagSet(rpm.RPMTRANS_FLAG_TEST):
@@ -187978,7 +187987,7 @@ index 99039e0..dc468cb 100644
# check to see that the rpmdb and the tsInfo roughly matches
# push package object metadata outside of rpmdb into yumdb
# delete old yumdb metadata entries
-@@ -1584,24 +1915,58 @@ class YumBase(depsolve.Depsolve):
+@@ -1584,24 +1917,58 @@ class YumBase(depsolve.Depsolve):
# that there is not also an install of this pkg in the tsInfo (reinstall)
# for any kind of install add from_repo to the yumdb, and the cmdline
# and the install reason
@@ -188039,7 +188048,7 @@ index 99039e0..dc468cb 100644
if hasattr(self, 'args') and self.args:
po.yumdb_info.command_line = ' '.join(self.args)
elif hasattr(self, 'cmds') and self.cmds:
-@@ -1630,6 +1995,10 @@ class YumBase(depsolve.Depsolve):
+@@ -1630,6 +1997,10 @@ class YumBase(depsolve.Depsolve):
if md:
po.yumdb_info.from_repo_timestamp = str(md.timestamp)
@@ -188050,7 +188059,7 @@ index 99039e0..dc468cb 100644
loginuid = misc.getloginuid()
if txmbr.updates or txmbr.downgrades or txmbr.reinstall:
if txmbr.updates:
-@@ -1640,11 +2009,16 @@ class YumBase(depsolve.Depsolve):
+@@ -1640,11 +2011,16 @@ class YumBase(depsolve.Depsolve):
opo = po
if 'installed_by' in opo.yumdb_info:
po.yumdb_info.installed_by = opo.yumdb_info.installed_by
@@ -188067,7 +188076,7 @@ index 99039e0..dc468cb 100644
# Remove old ones after installing new ones, so we can copy values.
for txmbr in self.tsInfo:
if txmbr.output_state in TS_INSTALL_STATES:
-@@ -1662,10 +2036,13 @@ class YumBase(depsolve.Depsolve):
+@@ -1662,10 +2038,13 @@ class YumBase(depsolve.Depsolve):
' but is not!' % txmbr.po))
# Note: Get Panu to do te.Failed() so we don't have to
txmbr.output_state = TS_FAILED
@@ -188081,7 +188090,7 @@ index 99039e0..dc468cb 100644
self.verbose_logger.log(logginglevels.DEBUG_2, 'What is this? %s' % txmbr.po)
self.plugins.run('postverifytrans')
-@@ -1680,10 +2057,11 @@ class YumBase(depsolve.Depsolve):
+@@ -1680,10 +2059,11 @@ class YumBase(depsolve.Depsolve):
self.verbose_logger.debug('VerifyTransaction time: %0.3f' % (time.time() - vt_st))
def costExcludePackages(self):
@@ -188097,7 +188106,7 @@ index 99039e0..dc468cb 100644
# if all the repo.costs are equal then don't bother running things
costs = {}
for r in self.repos.listEnabled():
-@@ -1705,10 +2083,12 @@ class YumBase(depsolve.Depsolve):
+@@ -1705,10 +2085,12 @@ class YumBase(depsolve.Depsolve):
done = True
def excludePackages(self, repo=None):
@@ -188113,7 +188122,7 @@ index 99039e0..dc468cb 100644
if "all" in self.conf.disable_excludes:
return
-@@ -1735,9 +2115,14 @@ class YumBase(depsolve.Depsolve):
+@@ -1735,9 +2117,14 @@ class YumBase(depsolve.Depsolve):
self.pkgSack.addPackageExcluder(repoid, exid,'exclude.match', match)
def includePackages(self, repo):
@@ -188131,7 +188140,7 @@ index 99039e0..dc468cb 100644
includelist = repo.getIncludePkgList()
if len(includelist) == 0:
-@@ -1757,8 +2142,11 @@ class YumBase(depsolve.Depsolve):
+@@ -1757,8 +2144,11 @@ class YumBase(depsolve.Depsolve):
self.pkgSack.addPackageExcluder(repo.id, exid, 'exclude.marked')
def doLock(self, lockfile = YUM_PID_FILE):
@@ -188145,7 +188154,7 @@ index 99039e0..dc468cb 100644
if self.conf.uid != 0:
# If we are a user, assume we are using the root cache ... so don't
# bother locking.
-@@ -1773,39 +2161,39 @@ class YumBase(depsolve.Depsolve):
+@@ -1773,39 +2163,39 @@ class YumBase(depsolve.Depsolve):
lockfile = os.path.normpath(lockfile) # get rid of silly preceding extra /
mypid=str(os.getpid())
@@ -188213,7 +188222,7 @@ index 99039e0..dc468cb 100644
# if we're not root then we don't lock - just return nicely
# Note that we can get here from __del__, so if we haven't created
# YumBase.conf we don't want to do so here as creating stuff inside
-@@ -1830,31 +2218,74 @@ class YumBase(depsolve.Depsolve):
+@@ -1830,31 +2220,74 @@ class YumBase(depsolve.Depsolve):
self._unlock(lockfile)
self._lockfile = None
@@ -188300,7 +188309,7 @@ index 99039e0..dc468cb 100644
failed = False
if type(fo) is types.InstanceType:
-@@ -1877,10 +2308,10 @@ class YumBase(depsolve.Depsolve):
+@@ -1877,10 +2310,10 @@ class YumBase(depsolve.Depsolve):
cursize = os.stat(fo)[6]
totsize = long(po.size)
if cursize >= totsize and not po.repo.cache:
@@ -188314,7 +188323,7 @@ index 99039e0..dc468cb 100644
os.unlink(fo)
if raiseError:
-@@ -1894,9 +2325,16 @@ class YumBase(depsolve.Depsolve):
+@@ -1894,9 +2327,16 @@ class YumBase(depsolve.Depsolve):
def verifyChecksum(self, fo, checksumType, csum):
@@ -188334,7 +188343,7 @@ index 99039e0..dc468cb 100644
try:
filesum = misc.checksum(checksumType, fo)
except Errors.MiscError, e:
-@@ -1908,13 +2346,26 @@ class YumBase(depsolve.Depsolve):
+@@ -1908,13 +2348,26 @@ class YumBase(depsolve.Depsolve):
return 0
def downloadPkgs(self, pkglist, callback=None, callback_total=None):
@@ -188362,7 +188371,7 @@ index 99039e0..dc468cb 100644
if a is None:
return -1
if b is None:
-@@ -1925,12 +2376,11 @@ class YumBase(depsolve.Depsolve):
+@@ -1925,12 +2378,11 @@ class YumBase(depsolve.Depsolve):
return 1
return 0
@@ -188377,7 +188386,7 @@ index 99039e0..dc468cb 100644
# We close the history DB here because some plugins (presto) use
# threads. And sqlite really doesn't like threads. And while I don't
-@@ -1943,116 +2393,215 @@ class YumBase(depsolve.Depsolve):
+@@ -1943,116 +2395,215 @@ class YumBase(depsolve.Depsolve):
self.history.close()
self.plugins.run('predownload', pkglist=pkglist)
@@ -188682,7 +188691,7 @@ index 99039e0..dc468cb 100644
if type(fo) is types.InstanceType:
fo = fo.filename
-@@ -2076,9 +2625,12 @@ class YumBase(depsolve.Depsolve):
+@@ -2076,9 +2627,12 @@ class YumBase(depsolve.Depsolve):
return 1
def downloadHeader(self, po):
@@ -188697,7 +188706,7 @@ index 99039e0..dc468cb 100644
if hasattr(po, 'pkgtype') and po.pkgtype == 'local':
return
-@@ -2122,15 +2674,17 @@ class YumBase(depsolve.Depsolve):
+@@ -2122,15 +2676,17 @@ class YumBase(depsolve.Depsolve):
return
def sigCheckPkg(self, po):
@@ -188723,7 +188732,7 @@ index 99039e0..dc468cb 100644
if self._override_sigchecks:
check = False
hasgpgkey = 0
-@@ -2181,6 +2735,9 @@ class YumBase(depsolve.Depsolve):
+@@ -2181,6 +2737,9 @@ class YumBase(depsolve.Depsolve):
return result, msg
def cleanUsedHeadersPackages(self):
@@ -188733,7 +188742,7 @@ index 99039e0..dc468cb 100644
filelist = []
for txmbr in self.tsInfo:
if txmbr.po.state not in TS_INSTALL_STATES:
-@@ -2189,6 +2746,8 @@ class YumBase(depsolve.Depsolve):
+@@ -2189,6 +2748,8 @@ class YumBase(depsolve.Depsolve):
continue
if txmbr.po.repoid not in self.repos.repos:
continue
@@ -188742,7 +188751,7 @@ index 99039e0..dc468cb 100644
# make sure it's not a local file
repo = self.repos.repos[txmbr.po.repoid]
-@@ -2218,27 +2777,42 @@ class YumBase(depsolve.Depsolve):
+@@ -2218,27 +2779,42 @@ class YumBase(depsolve.Depsolve):
_('%s removed'), fn)
def cleanHeaders(self):
@@ -188787,7 +188796,7 @@ index 99039e0..dc468cb 100644
cachedir = self.conf.persistdir + "/rpmdb-indexes/"
if not os.path.exists(cachedir):
filelist = []
-@@ -2271,9 +2845,31 @@ class YumBase(depsolve.Depsolve):
+@@ -2271,9 +2847,31 @@ class YumBase(depsolve.Depsolve):
return 0, [msg]
def doPackageLists(self, pkgnarrow='all', patterns=None, showdups=None,
@@ -188822,7 +188831,7 @@ index 99039e0..dc468cb 100644
if showdups is None:
showdups = self.conf.showdupesfromrepos
ygh = misc.GenericHolder(iter=pkgnarrow)
-@@ -2295,6 +2891,8 @@ class YumBase(depsolve.Depsolve):
+@@ -2295,6 +2893,8 @@ class YumBase(depsolve.Depsolve):
ndinst = {} # Newest versions by name.arch
for po in self.rpmdb.returnPackages(patterns=patterns,
ignore_case=ic):
@@ -188831,7 +188840,7 @@ index 99039e0..dc468cb 100644
dinst[po.pkgtup] = po
if showdups:
continue
-@@ -2304,8 +2902,13 @@ class YumBase(depsolve.Depsolve):
+@@ -2304,8 +2904,13 @@ class YumBase(depsolve.Depsolve):
installed = dinst.values()
if showdups:
@@ -188846,7 +188855,7 @@ index 99039e0..dc468cb 100644
else:
try:
avail = self.pkgSack.returnNewestByNameArch(patterns=patterns,
-@@ -2323,16 +2926,31 @@ class YumBase(depsolve.Depsolve):
+@@ -2323,16 +2928,31 @@ class YumBase(depsolve.Depsolve):
key = (pkg.name, pkg.arch)
if pkg.pkgtup in dinst:
reinstall_available.append(pkg)
@@ -188881,7 +188890,7 @@ index 99039e0..dc468cb 100644
if len(matches) > 1:
updates.append(matches[0])
self.verbose_logger.log(logginglevels.DEBUG_1,
-@@ -2352,13 +2970,19 @@ class YumBase(depsolve.Depsolve):
+@@ -2352,13 +2972,19 @@ class YumBase(depsolve.Depsolve):
elif pkgnarrow == 'installed':
installed = self.rpmdb.returnPackages(patterns=patterns,
ignore_case=ic)
@@ -188902,7 +188911,7 @@ index 99039e0..dc468cb 100644
else:
try:
avail = self.pkgSack.returnNewestByNameArch(patterns=patterns,
-@@ -2392,9 +3016,21 @@ class YumBase(depsolve.Depsolve):
+@@ -2392,9 +3018,21 @@ class YumBase(depsolve.Depsolve):
avail = set(avail)
for po in self.rpmdb.returnPackages(patterns=patterns,
ignore_case=ic):
@@ -188924,7 +188933,7 @@ index 99039e0..dc468cb 100644
# obsoleting packages (and what they obsolete)
elif pkgnarrow == 'obsoletes':
self.conf.obsoletes = 1
-@@ -2402,6 +3038,7 @@ class YumBase(depsolve.Depsolve):
+@@ -2402,6 +3040,7 @@ class YumBase(depsolve.Depsolve):
for (pkgtup, instTup) in self.up.getObsoletesTuples():
(n,a,e,v,r) = pkgtup
pkgs = self.pkgSack.searchNevra(name=n, arch=a, ver=v, rel=r, epoch=e)
@@ -188932,7 +188941,7 @@ index 99039e0..dc468cb 100644
instpo = self.getInstalledPackageObject(instTup)
for po in pkgs:
obsoletes.append(po)
-@@ -2433,7 +3070,12 @@ class YumBase(depsolve.Depsolve):
+@@ -2433,7 +3072,12 @@ class YumBase(depsolve.Depsolve):
recentlimit = now-(self.conf.recent*86400)
if showdups:
avail = self.pkgSack.returnPackages(patterns=patterns,
@@ -188946,7 +188955,7 @@ index 99039e0..dc468cb 100644
else:
try:
avail = self.pkgSack.returnNewestByNameArch(patterns=patterns,
-@@ -2461,14 +3103,13 @@ class YumBase(depsolve.Depsolve):
+@@ -2461,14 +3105,13 @@ class YumBase(depsolve.Depsolve):
def findDeps(self, pkgs):
@@ -188966,7 +188975,7 @@ index 99039e0..dc468cb 100644
results = {}
for pkg in pkgs:
-@@ -2495,10 +3136,22 @@ class YumBase(depsolve.Depsolve):
+@@ -2495,10 +3138,22 @@ class YumBase(depsolve.Depsolve):
# pre 3.2.10 API used to always showdups, so that's the default atm.
def searchGenerator(self, fields, criteria, showdups=True, keys=False,
searchtags=True, searchrpmdb=True):
@@ -188993,7 +189002,7 @@ index 99039e0..dc468cb 100644
sql_fields = []
for f in fields:
sql_fields.append(RPM_TO_SQLITE.get(f, f))
-@@ -2614,7 +3267,7 @@ class YumBase(depsolve.Depsolve):
+@@ -2614,7 +3269,7 @@ class YumBase(depsolve.Depsolve):
# ...but without showdups we want to output _just_ #3, which requires
# we find the newest EVR po for the best "matching value". Without keys
# it's the same, except we just want the newest EVR.
@@ -189002,7 +189011,7 @@ index 99039e0..dc468cb 100644
# either, so it's pretty thankless. HTH. HAND.
# By default just sort using package sorting
sort_func = operator.itemgetter(0)
-@@ -2661,6 +3314,14 @@ class YumBase(depsolve.Depsolve):
+@@ -2661,6 +3316,14 @@ class YumBase(depsolve.Depsolve):
yield (po, vs)
def searchPackageTags(self, criteria):
@@ -189017,7 +189026,7 @@ index 99039e0..dc468cb 100644
results = {} # name = [(criteria, taglist)]
for c in criteria:
c = c.lower()
-@@ -2677,11 +3338,16 @@ class YumBase(depsolve.Depsolve):
+@@ -2677,11 +3340,16 @@ class YumBase(depsolve.Depsolve):
return results
def searchPackages(self, fields, criteria, callback=None):
@@ -189039,7 +189048,7 @@ index 99039e0..dc468cb 100644
warnings.warn(_('searchPackages() will go away in a future version of Yum.\
Use searchGenerator() instead. \n'),
Errors.YumFutureDeprecationWarning, stacklevel=2)
-@@ -2700,13 +3366,23 @@ class YumBase(depsolve.Depsolve):
+@@ -2700,13 +3368,23 @@ class YumBase(depsolve.Depsolve):
def searchPackageProvides(self, args, callback=None,
callback_has_matchfor=False):
@@ -189067,7 +189076,7 @@ index 99039e0..dc468cb 100644
else:
isglob = True
canBeFile = misc.re_filename(arg)
-@@ -2723,7 +3399,7 @@ class YumBase(depsolve.Depsolve):
+@@ -2723,7 +3401,7 @@ class YumBase(depsolve.Depsolve):
where = self.returnPackagesByDep(arg)
else:
usedDepString = False
@@ -189076,7 +189085,7 @@ index 99039e0..dc468cb 100644
self.verbose_logger.log(logginglevels.DEBUG_1,
P_('Searching %d package', 'Searching %d packages', len(where)), len(where))
-@@ -2817,64 +3493,268 @@ class YumBase(depsolve.Depsolve):
+@@ -2817,29 +3495,170 @@ class YumBase(depsolve.Depsolve):
return matches
@@ -189125,7 +189134,6 @@ index 99039e0..dc468cb 100644
- if grp.user_visible:
- installed.append(grp)
- else:
-- installed.append(grp)
+ if not ipkgs:
+ ret[pkg_name] = 'blacklisted-available'
+ continue
@@ -189267,10 +189275,10 @@ index 99039e0..dc468cb 100644
+ if grp.user_visible:
+ installed.append(grp)
+ else:
-+ installed.append(grp)
+ installed.append(grp)
else:
if uservisible:
- if grp.user_visible:
+@@ -2847,34 +3666,97 @@ class YumBase(depsolve.Depsolve):
available.append(grp)
else:
available.append(grp)
@@ -189376,7 +189384,7 @@ index 99039e0..dc468cb 100644
thesegroups = self.comps.return_groups(grpid)
if not thesegroups:
raise Errors.GroupsError, _("No Group named %s exists") % to_unicode(grpid)
-@@ -2898,18 +3778,53 @@ class YumBase(depsolve.Depsolve):
+@@ -2898,18 +3780,53 @@ class YumBase(depsolve.Depsolve):
self.tsInfo.remove(txmbr.po.pkgtup)
@@ -189440,7 +189448,7 @@ index 99039e0..dc468cb 100644
txmbrs_used = []
thesegroups = self.comps.return_groups(grpid)
-@@ -2920,12 +3835,18 @@ class YumBase(depsolve.Depsolve):
+@@ -2920,12 +3837,18 @@ class YumBase(depsolve.Depsolve):
if group_package_types:
package_types = group_package_types
@@ -189459,7 +189467,7 @@ index 99039e0..dc468cb 100644
pkgs = []
if 'mandatory' in package_types:
pkgs.extend(thisgroup.mandatory_packages)
-@@ -2934,12 +3855,56 @@ class YumBase(depsolve.Depsolve):
+@@ -2934,12 +3857,56 @@ class YumBase(depsolve.Depsolve):
if 'optional' in package_types:
pkgs.extend(thisgroup.optional_packages)
@@ -189517,7 +189525,7 @@ index 99039e0..dc468cb 100644
except Errors.InstallError, e:
self.verbose_logger.debug(_('No package named %s available to be installed'),
pkg)
-@@ -2953,7 +3918,9 @@ class YumBase(depsolve.Depsolve):
+@@ -2953,7 +3920,9 @@ class YumBase(depsolve.Depsolve):
group_conditionals = enable_group_conditionals
count_cond_test = 0
@@ -189528,7 +189536,7 @@ index 99039e0..dc468cb 100644
for condreq, cond in thisgroup.conditional_packages.iteritems():
if self.isPackageInstalled(cond):
try:
-@@ -2990,17 +3957,23 @@ class YumBase(depsolve.Depsolve):
+@@ -2990,17 +3959,23 @@ class YumBase(depsolve.Depsolve):
if cond not in self.tsInfo.conditionals:
self.tsInfo.conditionals[cond] = []
self.tsInfo.conditionals[cond].extend(pkgs)
@@ -189559,7 +189567,7 @@ index 99039e0..dc468cb 100644
if not self.comps.has_group(grpid):
raise Errors.GroupsError, _("No Group named %s exists") % to_unicode(grpid)
-@@ -3008,7 +3981,8 @@ class YumBase(depsolve.Depsolve):
+@@ -3008,7 +3983,8 @@ class YumBase(depsolve.Depsolve):
thesegroups = self.comps.return_groups(grpid)
if not thesegroups:
raise Errors.GroupsError, _("No Group named %s exists") % to_unicode(grpid)
@@ -189569,7 +189577,7 @@ index 99039e0..dc468cb 100644
for thisgroup in thesegroups:
thisgroup.selected = False
-@@ -3034,13 +4008,114 @@ class YumBase(depsolve.Depsolve):
+@@ -3034,13 +4010,114 @@ class YumBase(depsolve.Depsolve):
for pkg in self.tsInfo.conditionals.get(txmbr.name, []):
self.tsInfo.remove(pkg.pkgtup)
@@ -189690,7 +189698,7 @@ index 99039e0..dc468cb 100644
# look it up in the self.localPackages first:
for po in self.localPackages:
if po.pkgtup == pkgtup:
-@@ -3049,7 +4124,7 @@ class YumBase(depsolve.Depsolve):
+@@ -3049,7 +4126,7 @@ class YumBase(depsolve.Depsolve):
pkgs = self.pkgSack.searchPkgTuple(pkgtup)
if len(pkgs) == 0:
@@ -189699,7 +189707,7 @@ index 99039e0..dc468cb 100644
if allow_missing: # This can happen due to excludes after .up has
return None # happened.
raise Errors.DepError, _('Package tuple %s could not be found in packagesack') % str(pkgtup)
-@@ -3065,13 +4140,21 @@ class YumBase(depsolve.Depsolve):
+@@ -3065,13 +4142,21 @@ class YumBase(depsolve.Depsolve):
return result
def getInstalledPackageObject(self, pkgtup):
@@ -189726,7 +189734,7 @@ index 99039e0..dc468cb 100644
raise Errors.RpmDBError, _('Package tuple %s could not be found in rpmdb') % str(pkgtup)
# Dito. FIXME from getPackageObject() for len() > 1 ... :)
-@@ -3079,9 +4162,11 @@ class YumBase(depsolve.Depsolve):
+@@ -3079,9 +4164,11 @@ class YumBase(depsolve.Depsolve):
return po
def gpgKeyCheck(self):
@@ -189740,7 +189748,7 @@ index 99039e0..dc468cb 100644
gpgkeyschecked = self.conf.cachedir + '/.gpgkeyschecked.yum'
if os.path.exists(gpgkeyschecked):
return 1
-@@ -3106,9 +4191,13 @@ class YumBase(depsolve.Depsolve):
+@@ -3106,9 +4193,13 @@ class YumBase(depsolve.Depsolve):
return 1
def returnPackagesByDep(self, depstring):
@@ -189756,7 +189764,7 @@ index 99039e0..dc468cb 100644
if not depstring:
return []
-@@ -3132,12 +4221,23 @@ class YumBase(depsolve.Depsolve):
+@@ -3132,12 +4223,23 @@ class YumBase(depsolve.Depsolve):
raise Errors.YumBaseError, _('Invalid version flag from: %s') % str(depstring)
depflags = SYMBOLFLAGS[flagsymbol]
@@ -189783,7 +189791,7 @@ index 99039e0..dc468cb 100644
# we get all sorts of randomness here
errstring = depstring
if type(depstring) not in types.StringTypes:
-@@ -3149,16 +4249,22 @@ class YumBase(depsolve.Depsolve):
+@@ -3149,16 +4251,22 @@ class YumBase(depsolve.Depsolve):
raise Errors.YumBaseError, _('No Package found for %s') % errstring
ps = ListPackageSack(pkglist)
@@ -189810,7 +189818,7 @@ index 99039e0..dc468cb 100644
if not depstring:
return []
-@@ -3182,14 +4288,53 @@ class YumBase(depsolve.Depsolve):
+@@ -3182,14 +4290,53 @@ class YumBase(depsolve.Depsolve):
raise Errors.YumBaseError, _('Invalid version flag from: %s') % str(depstring)
depflags = SYMBOLFLAGS[flagsymbol]
@@ -189866,7 +189874,7 @@ index 99039e0..dc468cb 100644
if len(pkglist) == 0:
-@@ -3198,14 +4343,23 @@ class YumBase(depsolve.Depsolve):
+@@ -3198,14 +4345,23 @@ class YumBase(depsolve.Depsolve):
if len(pkglist) == 1:
return pkglist[0]
@@ -189896,7 +189904,7 @@ index 99039e0..dc468cb 100644
returnlist = []
compatArchList = self.arch.get_arch_list(arch)
multiLib = []
-@@ -3222,9 +4376,9 @@ class YumBase(depsolve.Depsolve):
+@@ -3222,9 +4378,9 @@ class YumBase(depsolve.Depsolve):
singleLib.append(po)
# we now have three lists. find the best package(s) of each
@@ -189909,7 +189917,7 @@ index 99039e0..dc468cb 100644
if single_name and multi and single and multi.name != single.name:
# Sinlge _must_ match multi, if we want a single package name
-@@ -3238,7 +4392,7 @@ class YumBase(depsolve.Depsolve):
+@@ -3238,7 +4394,7 @@ class YumBase(depsolve.Depsolve):
# if there's a noarch and it's newer than the multilib, we want
# just the noarch. otherwise, we want multi + single
elif multi:
@@ -189918,7 +189926,7 @@ index 99039e0..dc468cb 100644
if best.arch == "noarch":
returnlist.append(no)
else:
-@@ -3246,7 +4400,7 @@ class YumBase(depsolve.Depsolve):
+@@ -3246,7 +4402,7 @@ class YumBase(depsolve.Depsolve):
if single: returnlist.append(single)
# similar for the non-multilib case
elif single:
@@ -189927,7 +189935,7 @@ index 99039e0..dc468cb 100644
if best.arch == "noarch":
returnlist.append(no)
else:
-@@ -3350,28 +4504,71 @@ class YumBase(depsolve.Depsolve):
+@@ -3350,28 +4506,71 @@ class YumBase(depsolve.Depsolve):
done = True
slow = next_func(slow)
@@ -190009,7 +190017,7 @@ index 99039e0..dc468cb 100644
try:
txmbrs = self.groupRemove(group_string)
except yum.Errors.GroupsError:
-@@ -3387,6 +4584,8 @@ class YumBase(depsolve.Depsolve):
+@@ -3387,6 +4586,8 @@ class YumBase(depsolve.Depsolve):
assert pattern[0] == '@'
grpid = pattern[1:]
@@ -190018,7 +190026,7 @@ index 99039e0..dc468cb 100644
thesegroups = self.comps.return_groups(grpid)
if not thesegroups:
raise Errors.GroupsError, _("No Group named %s exists") % to_unicode(grpid)
-@@ -3398,7 +4597,11 @@ class YumBase(depsolve.Depsolve):
+@@ -3398,7 +4599,11 @@ class YumBase(depsolve.Depsolve):
def _minus_deselect(self, pattern):
""" Remove things from the transaction, like kickstart. """
assert pattern[0] == '-'
@@ -190031,7 +190039,7 @@ index 99039e0..dc468cb 100644
if pat and pat[0] == '@':
pat = pat[1:]
-@@ -3437,14 +4640,87 @@ class YumBase(depsolve.Depsolve):
+@@ -3437,14 +4642,87 @@ class YumBase(depsolve.Depsolve):
if flag not in self.tsInfo.probFilterFlags:
self.tsInfo.probFilterFlags.append(flag)
@@ -190125,7 +190133,7 @@ index 99039e0..dc468cb 100644
pkgs = []
was_pattern = False
if po:
-@@ -3464,9 +4740,14 @@ class YumBase(depsolve.Depsolve):
+@@ -3464,9 +4742,14 @@ class YumBase(depsolve.Depsolve):
if kwargs['pattern'] and kwargs['pattern'][0] == '@':
return self._at_groupinstall(kwargs['pattern'])
@@ -190140,7 +190148,7 @@ index 99039e0..dc468cb 100644
ignore_case=False)
pkgs.extend(mypkgs)
# if we have anything left unmatched, let's take a look for it
-@@ -3477,20 +4758,14 @@ class YumBase(depsolve.Depsolve):
+@@ -3477,20 +4760,14 @@ class YumBase(depsolve.Depsolve):
self.verbose_logger.debug(_('Checking for virtual provide or file-provide for %s'),
arg)
@@ -190169,7 +190177,7 @@ index 99039e0..dc468cb 100644
else:
nevra_dict = self._nevra_kwarg_parse(kwargs)
-@@ -3499,6 +4774,8 @@ class YumBase(depsolve.Depsolve):
+@@ -3499,6 +4776,8 @@ class YumBase(depsolve.Depsolve):
ver=nevra_dict['version'], rel=nevra_dict['release'])
self._add_not_found_a(pkgs, nevra_dict)
@@ -190178,7 +190186,7 @@ index 99039e0..dc468cb 100644
if pkgs:
# if was_pattern or nevra-dict['arch'] is none, take the list
# of arches based on our multilib_compat config and
-@@ -3577,17 +4854,21 @@ class YumBase(depsolve.Depsolve):
+@@ -3577,17 +4856,21 @@ class YumBase(depsolve.Depsolve):
continue
# make sure this shouldn't be passed to update:
@@ -190204,7 +190212,7 @@ index 99039e0..dc468cb 100644
obsoleting_pkg = self._test_loop(po, self._pkg2obspkg)
if obsoleting_pkg is not None:
# this is not a definitive check but it'll make sure we don't
-@@ -3600,23 +4881,23 @@ class YumBase(depsolve.Depsolve):
+@@ -3600,23 +4883,23 @@ class YumBase(depsolve.Depsolve):
already_obs = pkgs[0]
if already_obs:
@@ -190235,7 +190243,7 @@ index 99039e0..dc468cb 100644
continue
# make sure we don't have a name.arch of this already installed
-@@ -3630,8 +4911,8 @@ class YumBase(depsolve.Depsolve):
+@@ -3630,8 +4913,8 @@ class YumBase(depsolve.Depsolve):
found = True
break
if not found:
@@ -190246,7 +190254,7 @@ index 99039e0..dc468cb 100644
tx_return.extend(txmbrs)
continue
-@@ -3719,19 +5000,47 @@ class YumBase(depsolve.Depsolve):
+@@ -3719,19 +5002,47 @@ class YumBase(depsolve.Depsolve):
return txmbr
def update(self, po=None, requiringPo=None, update_to=False, **kwargs):
@@ -190301,7 +190309,7 @@ index 99039e0..dc468cb 100644
tx_return = []
if not po and not kwargs: # update everything (the easy case)
self.verbose_logger.log(logginglevels.DEBUG_2, _('Updating Everything'))
-@@ -3765,7 +5074,15 @@ class YumBase(depsolve.Depsolve):
+@@ -3765,7 +5076,15 @@ class YumBase(depsolve.Depsolve):
if new is None:
continue
tx_return.extend(self.update(po=new))
@@ -190318,7 +190326,7 @@ index 99039e0..dc468cb 100644
return tx_return
# complications
-@@ -3787,13 +5104,16 @@ class YumBase(depsolve.Depsolve):
+@@ -3787,13 +5106,16 @@ class YumBase(depsolve.Depsolve):
return self._minus_deselect(kwargs['pattern'])
if kwargs['pattern'] and kwargs['pattern'][0] == '@':
@@ -190337,7 +190345,7 @@ index 99039e0..dc468cb 100644
if not instpkgs and not availpkgs:
depmatches = []
-@@ -3805,6 +5125,8 @@ class YumBase(depsolve.Depsolve):
+@@ -3805,6 +5127,8 @@ class YumBase(depsolve.Depsolve):
except yum.Errors.YumBaseError, e:
self.logger.critical(_('%s') % e)
@@ -190346,7 +190354,7 @@ index 99039e0..dc468cb 100644
if update_to:
availpkgs.extend(depmatches)
else:
-@@ -3816,9 +5138,12 @@ class YumBase(depsolve.Depsolve):
+@@ -3816,9 +5140,12 @@ class YumBase(depsolve.Depsolve):
try:
if update_to:
m = []
@@ -190360,7 +190368,7 @@ index 99039e0..dc468cb 100644
m = self.pkgSack.returnNewestByNameArch(patterns=pats)
except Errors.PackageSackError:
m = []
-@@ -3843,7 +5168,7 @@ class YumBase(depsolve.Depsolve):
+@@ -3843,7 +5170,7 @@ class YumBase(depsolve.Depsolve):
availpkgs = self._compare_providers(availpkgs, requiringPo)
availpkgs = map(lambda x: x[0], availpkgs)
elif not availpkgs:
@@ -190369,7 +190377,7 @@ index 99039e0..dc468cb 100644
# for any thing specified
# get the list of available pkgs matching it (or take the po)
-@@ -3879,6 +5204,7 @@ class YumBase(depsolve.Depsolve):
+@@ -3879,6 +5206,7 @@ class YumBase(depsolve.Depsolve):
if obsoleting_pkg is None:
continue
obs_pkgs.append(obsoleting_pkg)
@@ -190377,7 +190385,7 @@ index 99039e0..dc468cb 100644
for obsoleting_pkg in packagesNewestByName(obs_pkgs):
tx_return.extend(self.install(po=obsoleting_pkg))
for available_pkg in availpkgs:
-@@ -3920,11 +5246,29 @@ class YumBase(depsolve.Depsolve):
+@@ -3920,11 +5248,29 @@ class YumBase(depsolve.Depsolve):
tx_return.append(txmbr)
for available_pkg in availpkgs:
@@ -190407,7 +190415,7 @@ index 99039e0..dc468cb 100644
self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is obsoleted: %s'), available_pkg)
tx_return.extend(self.update(po=obsoleting_pkg))
continue
-@@ -3985,11 +5329,18 @@ class YumBase(depsolve.Depsolve):
+@@ -3985,11 +5331,18 @@ class YumBase(depsolve.Depsolve):
return tx_return
def remove(self, po=None, **kwargs):
@@ -190431,7 +190439,7 @@ index 99039e0..dc468cb 100644
if not po and not kwargs:
raise Errors.RemoveError, 'Nothing specified to remove'
-@@ -4008,6 +5359,10 @@ class YumBase(depsolve.Depsolve):
+@@ -4008,6 +5361,10 @@ class YumBase(depsolve.Depsolve):
return self._at_groupremove(kwargs['pattern'])
(e,m,u) = self.rpmdb.matchPackageNames([kwargs['pattern']])
@@ -190442,7 +190450,7 @@ index 99039e0..dc468cb 100644
pkgs.extend(e)
pkgs.extend(m)
if u:
-@@ -4018,6 +5373,10 @@ class YumBase(depsolve.Depsolve):
+@@ -4018,6 +5375,10 @@ class YumBase(depsolve.Depsolve):
except yum.Errors.YumBaseError, e:
self.logger.critical(_('%s') % e)
@@ -190453,7 +190461,7 @@ index 99039e0..dc468cb 100644
if not depmatches:
arg = to_unicode(arg)
self.logger.critical(_('No Match for argument: %s') % to_unicode(arg))
-@@ -4055,17 +5414,19 @@ class YumBase(depsolve.Depsolve):
+@@ -4055,17 +5416,19 @@ class YumBase(depsolve.Depsolve):
return tx_return
def installLocal(self, pkg, po=None, updateonly=False):
@@ -190483,7 +190491,7 @@ index 99039e0..dc468cb 100644
# read in the package into a YumLocalPackage Object
# append it to self.localPackages
# check if it can be installed or updated based on nevra versus rpmdb
-@@ -4183,16 +5544,15 @@ class YumBase(depsolve.Depsolve):
+@@ -4183,16 +5546,15 @@ class YumBase(depsolve.Depsolve):
return tx_return
def reinstallLocal(self, pkg, po=None):
@@ -190508,7 +190516,7 @@ index 99039e0..dc468cb 100644
if not po:
try:
po = YumUrlPackage(self, ts=self.rpmdb.readOnlyTS(), url=pkg,
-@@ -4215,13 +5575,29 @@ class YumBase(depsolve.Depsolve):
+@@ -4215,13 +5577,29 @@ class YumBase(depsolve.Depsolve):
return self.reinstall(po=po)
def reinstall(self, po=None, **kwargs):
@@ -190541,7 +190549,7 @@ index 99039e0..dc468cb 100644
tx_mbrs = []
if po: # The po, is the "available" po ... we want the installed po
tx_mbrs.extend(self.remove(pkgtup=po.pkgtup))
-@@ -4240,10 +5616,11 @@ class YumBase(depsolve.Depsolve):
+@@ -4240,10 +5618,11 @@ class YumBase(depsolve.Depsolve):
# pkgs that are obsolete.
old_conf_obs = self.conf.obsoletes
self.conf.obsoletes = False
@@ -190555,7 +190563,7 @@ index 99039e0..dc468cb 100644
self.conf.obsoletes = old_conf_obs
if len(members) == 0:
self.tsInfo.remove(item.pkgtup)
-@@ -4259,16 +5636,15 @@ class YumBase(depsolve.Depsolve):
+@@ -4259,16 +5638,15 @@ class YumBase(depsolve.Depsolve):
return tx_mbrs
def downgradeLocal(self, pkg, po=None):
@@ -190580,7 +190588,7 @@ index 99039e0..dc468cb 100644
if not po:
try:
po = YumUrlPackage(self, ts=self.rpmdb.readOnlyTS(), url=pkg,
-@@ -4309,13 +5685,19 @@ class YumBase(depsolve.Depsolve):
+@@ -4309,13 +5687,19 @@ class YumBase(depsolve.Depsolve):
return False
def downgrade(self, po=None, **kwargs):
@@ -190607,7 +190615,7 @@ index 99039e0..dc468cb 100644
if not po and not kwargs:
raise Errors.DowngradeError, 'Nothing specified to downgrade'
-@@ -4397,6 +5779,10 @@ class YumBase(depsolve.Depsolve):
+@@ -4397,6 +5781,10 @@ class YumBase(depsolve.Depsolve):
# installed version. Indexed fromn the latest installed pkgtup.
downgrade_apkgs = {}
for pkg in sorted(apkgs):
@@ -190618,7 +190626,7 @@ index 99039e0..dc468cb 100644
na = (pkg.name, pkg.arch)
# Here we allow downgrades from .i386 => .noarch, or .i586 => .i386
-@@ -4421,6 +5807,9 @@ class YumBase(depsolve.Depsolve):
+@@ -4421,6 +5809,9 @@ class YumBase(depsolve.Depsolve):
warned_nas.add(na)
continue
@@ -190628,7 +190636,7 @@ index 99039e0..dc468cb 100644
if pkg.verGE(lipkg):
if na not in warned_nas:
msg = _('Only Upgrade available on package: %s') % pkg
-@@ -4457,7 +5846,7 @@ class YumBase(depsolve.Depsolve):
+@@ -4457,7 +5848,7 @@ class YumBase(depsolve.Depsolve):
if e and v and r:
evr = '%s:%s-%s' % (e, v, r)
elif v and r:
@@ -190637,7 +190645,7 @@ index 99039e0..dc468cb 100644
elif e and v:
evr = '%s:%s' % (e, v)
elif v: # e and r etc. is just too weird to print
-@@ -4500,12 +5889,24 @@ class YumBase(depsolve.Depsolve):
+@@ -4500,12 +5891,24 @@ class YumBase(depsolve.Depsolve):
return returndict
@@ -190665,7 +190673,7 @@ index 99039e0..dc468cb 100644
old_conf_obs = self.conf.obsoletes
self.conf.obsoletes = False
done = False
-@@ -4515,19 +5916,46 @@ class YumBase(depsolve.Depsolve):
+@@ -4515,19 +5918,46 @@ class YumBase(depsolve.Depsolve):
done = True
for pkg in transaction.trans_data:
if pkg.state == 'Downgrade':
@@ -190712,7 +190720,7 @@ index 99039e0..dc468cb 100644
if self.install(pkgtup=pkg.pkgtup):
done = True
for pkg in transaction.trans_data:
-@@ -4538,8 +5966,14 @@ class YumBase(depsolve.Depsolve):
+@@ -4538,8 +5968,14 @@ class YumBase(depsolve.Depsolve):
return done
def history_undo(self, transaction):
@@ -190729,7 +190737,7 @@ index 99039e0..dc468cb 100644
# NOTE: This is somewhat basic atm. ... for instance we don't check
# that we are going from the old new version. However it's still
# better than the RHN rollback code, and people pay for that :).
-@@ -4616,7 +6050,7 @@ class YumBase(depsolve.Depsolve):
+@@ -4616,7 +6052,7 @@ class YumBase(depsolve.Depsolve):
except urlgrabber.grabber.URLGrabError, e:
raise Errors.YumBaseError(_('GPG key retrieval failed: ') +
@@ -190738,7 +190746,7 @@ index 99039e0..dc468cb 100644
# check for a .asc file accompanying it - that's our gpg sig on the key
# suck it down and do the check
-@@ -4649,7 +6083,7 @@ class YumBase(depsolve.Depsolve):
+@@ -4649,7 +6085,7 @@ class YumBase(depsolve.Depsolve):
keys_info = misc.getgpgkeyinfo(rawkey, multiple=True)
except ValueError, e:
raise Errors.YumBaseError(_('Invalid GPG Key from %s: %s') %
@@ -190747,7 +190755,7 @@ index 99039e0..dc468cb 100644
keys = []
for keyinfo in keys_info:
thiskey = {}
-@@ -4674,39 +6108,49 @@ class YumBase(depsolve.Depsolve):
+@@ -4674,39 +6110,49 @@ class YumBase(depsolve.Depsolve):
if pkgs:
pkgs = sorted(pkgs)[-1]
msg = (_('Importing %s key 0x%s:\n'
@@ -190815,7 +190823,7 @@ index 99039e0..dc468cb 100644
user_cb_fail = False
for keyurl in keyurls:
keys = self._retrievePublicKey(keyurl, repo)
-@@ -4725,7 +6169,9 @@ class YumBase(depsolve.Depsolve):
+@@ -4725,7 +6171,9 @@ class YumBase(depsolve.Depsolve):
# Try installing/updating GPG key
self._getKeyImportMessage(info, keyurl)
rc = False
@@ -190826,7 +190834,7 @@ index 99039e0..dc468cb 100644
rc = True
# grab the .sig/.asc for the keyurl, if it exists
-@@ -4751,8 +6197,8 @@ class YumBase(depsolve.Depsolve):
+@@ -4751,8 +6199,8 @@ class YumBase(depsolve.Depsolve):
ts = self.rpmdb.readOnlyTS()
result = ts.pgpImportPubkey(misc.procgpgkey(info['raw_key']))
if result != 0:
@@ -190837,7 +190845,7 @@ index 99039e0..dc468cb 100644
self.logger.info(_('Key imported successfully'))
key_installed = True
-@@ -4760,18 +6206,20 @@ class YumBase(depsolve.Depsolve):
+@@ -4760,18 +6208,20 @@ class YumBase(depsolve.Depsolve):
raise Errors.YumBaseError, _("Didn't install any keys")
if not key_installed:
@@ -190863,7 +190871,7 @@ index 99039e0..dc468cb 100644
def _getAnyKeyForRepo(self, repo, destdir, keyurl_list, is_cakey=False, callback=None):
"""
-@@ -4788,6 +6236,18 @@ class YumBase(depsolve.Depsolve):
+@@ -4788,6 +6238,18 @@ class YumBase(depsolve.Depsolve):
"""
key_installed = False
@@ -190882,7 +190890,7 @@ index 99039e0..dc468cb 100644
user_cb_fail = False
for keyurl in keyurl_list:
keys = self._retrievePublicKey(keyurl, repo, getSig=not is_cakey)
-@@ -4819,8 +6279,11 @@ class YumBase(depsolve.Depsolve):
+@@ -4819,8 +6281,11 @@ class YumBase(depsolve.Depsolve):
if not key_installed:
self._getKeyImportMessage(info, keyurl, keytype)
rc = False
@@ -190895,7 +190903,7 @@ index 99039e0..dc468cb 100644
elif callback:
rc = callback({"repo": repo, "userid": info['userid'],
"hexkeyid": info['hexkeyid'], "keyurl": keyurl,
-@@ -4835,7 +6298,8 @@ class YumBase(depsolve.Depsolve):
+@@ -4835,7 +6300,8 @@ class YumBase(depsolve.Depsolve):
# Import the key
result = misc.import_key_to_pubring(info['raw_key'], info['hexkeyid'], gpgdir=destdir)
if not result:
@@ -190905,7 +190913,7 @@ index 99039e0..dc468cb 100644
self.logger.info(_('Key imported successfully'))
key_installed = True
# write out the key id to imported_cakeys in the repos basedir
-@@ -4851,36 +6315,35 @@ class YumBase(depsolve.Depsolve):
+@@ -4851,36 +6317,35 @@ class YumBase(depsolve.Depsolve):
pass
if not key_installed and user_cb_fail:
@@ -190958,7 +190966,7 @@ index 99039e0..dc468cb 100644
self._getAnyKeyForRepo(repo, repo.gpgcadir, repo.gpgcakey, is_cakey=True, callback=callback)
def _limit_installonly_pkgs(self):
-@@ -4889,7 +6352,7 @@ class YumBase(depsolve.Depsolve):
+@@ -4889,7 +6354,7 @@ class YumBase(depsolve.Depsolve):
New in 3.2.24: Obey yumdb_info.installonly data. """
def _sort_and_filter_installonly(pkgs):
@@ -190967,7 +190975,7 @@ index 99039e0..dc468cb 100644
using the yumdb. """
ret_beg = []
ret_mid = []
-@@ -4917,6 +6380,10 @@ class YumBase(depsolve.Depsolve):
+@@ -4917,6 +6382,10 @@ class YumBase(depsolve.Depsolve):
if self.conf.installonly_limit < 1 :
return
@@ -190978,7 +190986,7 @@ index 99039e0..dc468cb 100644
toremove = []
# We "probably" want to use either self.ts or self.rpmdb.ts if either
-@@ -4926,23 +6393,30 @@ class YumBase(depsolve.Depsolve):
+@@ -4926,23 +6395,30 @@ class YumBase(depsolve.Depsolve):
# so self.rpmdb.ts should be valid.
ts = self.rpmdb.readOnlyTS()
(cur_kernel_v, cur_kernel_r) = misc.get_running_kernel_version_release(ts)
@@ -191017,7 +191025,7 @@ index 99039e0..dc468cb 100644
for po in installed:
if (po.version, po.release) == (cur_kernel_v, cur_kernel_r):
# don't remove running
-@@ -4959,19 +6433,22 @@ class YumBase(depsolve.Depsolve):
+@@ -4959,19 +6435,22 @@ class YumBase(depsolve.Depsolve):
txmbr.depends_on.append(rel)
def processTransaction(self, callback=None,rpmTestDisplay=None, rpmDisplay=None):
@@ -191053,7 +191061,7 @@ index 99039e0..dc468cb 100644
if not callback:
callback = callbacks.ProcessTransNoOutputCallback()
-@@ -5062,8 +6539,8 @@ class YumBase(depsolve.Depsolve):
+@@ -5062,8 +6541,8 @@ class YumBase(depsolve.Depsolve):
raise Errors.YumRPMCheckError, retmsgs
retmsgs = [_('ERROR with transaction check vs depsolve:')]
retmsgs.extend(msgs)
@@ -191064,7 +191072,7 @@ index 99039e0..dc468cb 100644
raise Errors.YumRPMCheckError,retmsgs
tsConf = {}
-@@ -5114,13 +6591,19 @@ class YumBase(depsolve.Depsolve):
+@@ -5114,13 +6593,19 @@ class YumBase(depsolve.Depsolve):
return results
def add_enable_repo(self, repoid, baseurls=[], mirrorlist=None, **kwargs):
@@ -191091,7 +191099,7 @@ index 99039e0..dc468cb 100644
# out of place fixme - maybe we should make this the default repo addition
# routine and use it from getReposFromConfigFile(), etc.
newrepo = yumRepo.YumRepository(repoid)
-@@ -5167,9 +6650,15 @@ class YumBase(depsolve.Depsolve):
+@@ -5167,9 +6652,15 @@ class YumBase(depsolve.Depsolve):
def setCacheDir(self, force=False, tmpdir=None, reuse=True,
suffix='/$basearch/$releasever'):
@@ -191110,7 +191118,7 @@ index 99039e0..dc468cb 100644
if not force and os.geteuid() == 0:
return True # We are root, not forced, so happy with the global dir.
if tmpdir is None:
-@@ -5179,7 +6668,7 @@ class YumBase(depsolve.Depsolve):
+@@ -5179,7 +6670,7 @@ class YumBase(depsolve.Depsolve):
try:
cachedir = misc.getCacheDir(tmpdir, reuse)
except (IOError, OSError), e:
@@ -191119,7 +191127,7 @@ index 99039e0..dc468cb 100644
cachedir = None
if cachedir is None:
-@@ -5190,6 +6679,8 @@ class YumBase(depsolve.Depsolve):
+@@ -5190,6 +6681,8 @@ class YumBase(depsolve.Depsolve):
self.prerepoconf.cachedir = cachedir
else:
self.repos.setCacheDir(cachedir)
@@ -191128,7 +191136,7 @@ index 99039e0..dc468cb 100644
self.conf.cachedir = cachedir
return True # We got a new cache dir
-@@ -5220,13 +6711,24 @@ class YumBase(depsolve.Depsolve):
+@@ -5220,13 +6713,24 @@ class YumBase(depsolve.Depsolve):
self.history.write_addon_data('config-repos', myrepos)
def verify_plugins_cb(self, verify_package):
@@ -191156,7 +191164,7 @@ index 99039e0..dc468cb 100644
if self.tsInfo._unresolvedMembers:
if auto:
self.logger.critical(_("Dependencies not solved. Will not save unresolved transaction."))
-@@ -5234,7 +6736,7 @@ class YumBase(depsolve.Depsolve):
+@@ -5234,7 +6738,7 @@ class YumBase(depsolve.Depsolve):
raise Errors.YumBaseError(_("Dependencies not solved. Will not save unresolved transaction."))
if not filename:
@@ -191165,7 +191173,7 @@ index 99039e0..dc468cb 100644
fd,filename = tempfile.mkstemp(suffix='.yumtx', prefix=prefix)
f = os.fdopen(fd, 'w')
else:
-@@ -5244,13 +6746,17 @@ class YumBase(depsolve.Depsolve):
+@@ -5244,13 +6748,17 @@ class YumBase(depsolve.Depsolve):
msg = "%s\n" % self.rpmdb.simpleVersion(main_only=True)[0]
msg += "%s\n" % self.ts.getTsFlags()
@@ -191186,7 +191194,7 @@ index 99039e0..dc468cb 100644
msg += "%s\n" % len(self.tsInfo.getMembers())
for txmbr in self.tsInfo.getMembers():
msg += txmbr._dump()
-@@ -5260,42 +6766,84 @@ class YumBase(depsolve.Depsolve):
+@@ -5260,42 +6768,84 @@ class YumBase(depsolve.Depsolve):
except (IOError, OSError), e:
self._ts_save_file = None
if auto:
@@ -191283,7 +191291,7 @@ index 99039e0..dc468cb 100644
if ignorerpm:
msg += _(" ignoring, as requested.")
self.logger.critical(_(msg))
-@@ -5318,8 +6866,17 @@ class YumBase(depsolve.Depsolve):
+@@ -5318,8 +6868,17 @@ class YumBase(depsolve.Depsolve):
numrepos = int(data[2].strip())
repos = []
rindex=3+numrepos
@@ -191302,7 +191310,7 @@ index 99039e0..dc468cb 100644
# pkgs/txmbrs
numpkgs = int(data[rindex].strip())
-@@ -5329,6 +6886,7 @@ class YumBase(depsolve.Depsolve):
+@@ -5329,6 +6888,7 @@ class YumBase(depsolve.Depsolve):
pkgcount = 0
pkgprob = False
curpkg = None
@@ -191310,7 +191318,7 @@ index 99039e0..dc468cb 100644
for l in data[pkgstart:]:
l = l.rstrip()
# our main txmbrs
-@@ -5356,6 +6914,7 @@ class YumBase(depsolve.Depsolve):
+@@ -5356,6 +6916,7 @@ class YumBase(depsolve.Depsolve):
if not ignoremissing:
raise Errors.YumBaseError(msg)
else:
@@ -191318,7 +191326,7 @@ index 99039e0..dc468cb 100644
self.logger.critical(msg)
else:
pkgcount += 1
-@@ -5432,12 +6991,18 @@ class YumBase(depsolve.Depsolve):
+@@ -5432,12 +6993,18 @@ class YumBase(depsolve.Depsolve):
if pkgprob:
msg = _("Transaction members, relations are missing or ts has been modified,")
if ignoremissing:
@@ -191337,7 +191345,7 @@ index 99039e0..dc468cb 100644
return self.tsInfo.getMembers()
def _remove_old_deps(self):
-@@ -5470,18 +7035,6 @@ class YumBase(depsolve.Depsolve):
+@@ -5470,18 +7037,6 @@ class YumBase(depsolve.Depsolve):
if requiring == required: # if they are self-requiring skip them
continue
@@ -191356,7 +191364,7 @@ index 99039e0..dc468cb 100644
#for tbi_pkg in self.tsInfo.getMembersWithState(output_states=TS_INSTALL_STATES):
# for reqtuple in tbi_pkg.po.requires:
# if required.provides_for(reqtuple):
-@@ -5533,7 +7086,24 @@ class YumBase(depsolve.Depsolve):
+@@ -5533,7 +7088,24 @@ class YumBase(depsolve.Depsolve):
# Debugging output
self.verbose_logger.log(logginglevels.DEBUG_2, _("%s has revdep %s which was user-installed."), pkg, curpkg)
ok_to_remove[pkg] = False
@@ -191381,7 +191389,7 @@ index 99039e0..dc468cb 100644
visited[curpkg] = True
all_leaves_visited = True
leaves = curpkg.requiring_packages()
-@@ -5547,4 +7117,3 @@ class YumBase(depsolve.Depsolve):
+@@ -5547,4 +7119,3 @@ class YumBase(depsolve.Depsolve):
# Debugging output
self.verbose_logger.log(logginglevels.DEBUG_2, _("%s has no user-installed revdeps."), pkg)
return False
@@ -195312,10 +195320,10 @@ index 9889bf6..17267d6 100755
Something went wrong so we make a dummy _() wrapper there is just
diff --git a/yum/igroups.py b/yum/igroups.py
new file mode 100644
-index 0000000..73fbc2b
+index 0000000..104112d
--- /dev/null
+++ b/yum/igroups.py
-@@ -0,0 +1,307 @@
+@@ -0,0 +1,310 @@
+#! /usr/bin/python -tt
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
@@ -195429,7 +195437,10 @@ index 0000000..73fbc2b
+ return fo.readline()[:-1]
+
+ fo = open(self.filename)
-+ ver = int(_read_str(fo))
++ try:
++ ver = int(_read_str(fo))
++ except ValueError:
++ return
+ if ver != 1:
+ return
+
@@ -200403,7 +200414,7 @@ index e5e9ece..35359e2 100644
fo = None
diff --git a/yumcommands.py b/yumcommands.py
-index 4dcbea7..ef84c1f 100644
+index 4dcbea7..4e72a71 100644
--- a/yumcommands.py
+++ b/yumcommands.py
@@ -13,6 +13,7 @@
@@ -201987,7 +201998,8 @@ index 4dcbea7..ef84c1f 100644
+ """
+ updateinfo.exclude_updates(base)
obscmds = ['obsoletes'] + extcmds
- base.extcmds.insert(0, 'updates')
+- base.extcmds.insert(0, 'updates')
++ extcmds.insert(0, 'updates')
result = 0
- try:
- ypl = base.returnPkgLists(extcmds)
@@ -203406,7 +203418,7 @@ index 4dcbea7..ef84c1f 100644
chkcmd = 'all'
if extcmds:
chkcmd = extcmds
-@@ -1505,33 +3189,1736 @@ class CheckRpmdbCommand(YumCommand):
+@@ -1505,33 +3189,1735 @@ class CheckRpmdbCommand(YumCommand):
return rc, ['%s %s' % (basecmd, chkcmd)]
def needTs(self, base, basecmd, extcmds):
@@ -204068,7 +204080,7 @@ index 4dcbea7..ef84c1f 100644
+ mark = ''
+ if list_type == 'all':
+ mark = ' '
-+ if _upi._rpm_tup_vercmp(iname2tup[pkgtup[0]], pkgtup) >= 0:
++ if pkgtup[0] in iname2tup and _upi._rpm_tup_vercmp(iname2tup[pkgtup[0]], pkgtup) >= 0:
+ mark = 'i '
+ tn = notice['type']
+ if tn == 'security' and notice['severity']:
@@ -204107,7 +204119,7 @@ index 4dcbea7..ef84c1f 100644
+ obj = notice.__str__()
+
+ if list_type == 'all':
-+ if _upi._rpm_tup_vercmp(iname2tup[pkgtup[0]], pkgtup) >= 0:
++ if pkgtup[0] in iname2tup and _upi._rpm_tup_vercmp(iname2tup[pkgtup[0]], pkgtup) >= 0:
+ obj = obj + "\n Installed : true"
+ else:
+ obj = obj + "\n Installed : false"
@@ -204257,7 +204269,7 @@ index 4dcbea7..ef84c1f 100644
+ return 0, [basecmd + ' ' + subcommand + ' done']
+
+ def doCommand_li_new(self, base, list_type, extcmds, md_info, msg,
-+ show_pkgs):
++ show_pkgs, iname2tup):
+ done_pkgs = set()
+ data = []
+ for (notice, pkgtup) in sorted(self._get_new_pkgs(md_info),
@@ -204283,7 +204295,7 @@ index 4dcbea7..ef84c1f 100644
+ continue
+ done_pkgs.add(n)
+ data.append((notice, pkgtup, pkgs[0]))
-+ show_pkgs(base, md_info, list_type, None, {}, data, msg)
++ show_pkgs(base, md_info, list_type, None, iname2tup, data, msg)
+
+ def _parse_extcmds(self, extcmds):
+ filt_type = None
@@ -204314,12 +204326,6 @@ index 4dcbea7..ef84c1f 100644
+ if filt_type is None:
+ extcmds, show_type, filt_type = self._parse_extcmds(extcmds)
+
-+ if filt_type == "newpackage":
-+ # No filtering here, as we want what isn't installed...
-+ self.doCommand_li_new(base, list_type, extcmds, md_info, msg,
-+ show_pkgs)
-+ return 0, [basecmd + ' new done']
-+
+ opts.sec_cmds = extcmds
+ used_map = _upi._ysp_gen_used_map(base.updateinfo_filters)
+ iname2tup = {}
@@ -204332,6 +204338,11 @@ index 4dcbea7..ef84c1f 100644
+ elif list_type == 'available':
+ name2tup = _upi._get_name2instpkgtup(base)
+
++ if filt_type == "newpackage":
++ self.doCommand_li_new(base, list_type, extcmds, md_info, msg,
++ show_pkgs, iname2tup)
++ return 0, [basecmd + ' new done']
++
+ def _show_pkgtup(pkgtup):
+ name = pkgtup[0]
+ notices = reversed(md_info.get_applicable_notices(pkgtup))
diff --git a/yum.spec b/yum.spec
index 82b9c3c..2e3dc37 100644
--- a/yum.spec
+++ b/yum.spec
@@ -64,7 +64,7 @@ BuildRequires: bash-completion
Summary: RPM package installer/updater/manager
Name: yum
Version: 3.4.3
-Release: 140%{?dist}
+Release: 141%{?dist}
License: GPLv2+
Group: System Environment/Base
Source0: http://yum.baseurl.org/download/3.4/%{name}-%{version}.tar.gz
@@ -507,6 +507,13 @@ exit 0
%endif
%changelog
+* Mon Mar 10 2014 Valentina Mukhamedzhanova <vmukhame at redhat.com> - 3.4.3-141
+- update to latest HEAD
+- Fix repo-pkgs check-update not showing any updates.
+- Fix ValueError when /var/lib/yum/groups/installed is empty. BZ 971307
+- Fix 'yum updateinfo list all new-packages' traceback. BZ 1072945
+- Make yum quit when an invalid option is provided with --setopt.
+
* Sun Feb 23 2014 James Antill <james at fedoraproject.org> - 3.4.3-140
- update to latest HEAD
- Fix yum.conf file saving for filters.
More information about the scm-commits
mailing list