[yum] update to latest HEAD Have users always use their own dirs. Minor updates.
James Antill
james at fedoraproject.org
Tue Dec 13 20:44:36 UTC 2011
commit fce936f4a6cfa5054f4380249b975a4c331ba4f4
Author: James Antill <james at and.org>
Date: Tue Dec 13 15:44:30 2011 -0500
update to latest HEAD
Have users always use their own dirs.
Minor updates.
yum-HEAD.patch | 392 +++++++++++++++++++++++++++++++++++++-------------------
yum.spec | 7 +-
2 files changed, 267 insertions(+), 132 deletions(-)
---
diff --git a/yum-HEAD.patch b/yum-HEAD.patch
index 3313f20..cef02f3 100644
--- a/yum-HEAD.patch
+++ b/yum-HEAD.patch
@@ -88,7 +88,7 @@ index 2f6154e..2e5a052 100644
diff --git a/cli.py b/cli.py
old mode 100644
new mode 100755
-index 6056d38..919120c
+index 6056d38..ac9522b
--- a/cli.py
+++ b/cli.py
@@ -25,7 +25,7 @@ import sys
@@ -768,11 +768,11 @@ index 6056d38..919120c
+ """Print out a formatted list of dependencies for a list of
+ packages. This is a cli wrapper method for
+ :class:`yum.YumBase.findDeps`.
-+
+
+ :param args: a list of names or wildcards specifying packages
+ that should have their dependenices printed
+ :return: (exit_code, [ errors ])
-
++
+ exit_code is::
+
+ 0 = we're done, exit
@@ -900,20 +900,29 @@ index 6056d38..919120c
uservisible=1
if len(userlist) > 0:
+@@ -1254,7 +1537,7 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
+ msg += ' (%s)' % group.groupid
+ if group.langonly:
+ msg += ' [%s]' % group.langonly
+- self.verbose_logger.log(yum.logginglevels.INFO_2, '%s', msg)
++ self.verbose_logger.info('%s', msg)
+
+ done = False
+ for group in installed:
@@ -1283,7 +1566,20 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
return 0, [_('Done')]
def returnGroupSummary(self, userlist):
+ """Print a summary of the groups that match the given names or
+ wildcards.
-+
+
+ :param userlist: a list of names or wildcards specifying the
+ groups to summarise. If *userlist* is an empty list, all
+ installed and available packages will be summarised
+ :return: (exit_code, [ errors ])
+
+ exit_code is::
-
++
+ 0 = we're done, exit
+ 1 = we've errored, exit with error string
+ 2 = we've got work yet to do, onto the next stage
@@ -969,13 +978,13 @@ index 6056d38..919120c
def removeGroups(self, grouplist):
- """Remove only packages of the named group(s). Do not recurse."""
+ """Mark the packages in the given groups for removal.
-+
+
+ :param grouplist: a list of names or wildcards specifying
+ groups to be removed
+ :return: (exit_code, [ errors ])
+
+ exit_code is::
-
++
+ 0 = we're done, exit
+ 1 = we've errored, exit with error string
+ 2 = we've got work yet to do, onto the next stage
@@ -1069,7 +1078,7 @@ index 6056d38..919120c
if not args:
(opts, cmds) = self.parse_args()
else:
-@@ -1536,7 +1881,9 @@ class YumOptionParser(OptionParser):
+@@ -1536,13 +1881,14 @@ class YumOptionParser(OptionParser):
# Handle remaining options
if opts.assumeyes:
@@ -1078,9 +1087,18 @@ index 6056d38..919120c
+ if opts.assumeno:
+ self.base.conf.assumeno = 1
- # Instead of going cache-only for a non-root user, try to use a
- # user writable cachedir. If that fails fall back to cache-only.
-@@ -1640,6 +1987,14 @@ class YumOptionParser(OptionParser):
+- # Instead of going cache-only for a non-root user, try to use a
+- # user writable cachedir. If that fails fall back to cache-only.
+- if opts.cacheonly:
++ # Treat users like root as much as possible:
++ if not self.base.setCacheDir():
+ self.base.conf.cache = 1
+- elif not self.base.setCacheDir():
++ if opts.cacheonly:
+ self.base.conf.cache = 1
+
+ if opts.obsoletes:
+@@ -1640,6 +1986,14 @@ class YumOptionParser(OptionParser):
sys.exit(1)
def getRoot(self,opts):
@@ -1095,7 +1113,7 @@ index 6056d38..919120c
self._checkAbsInstallRoot(opts)
# If the conf file is inside the installroot - use that.
# otherwise look for it in the normal root
-@@ -1713,6 +2068,10 @@ class YumOptionParser(OptionParser):
+@@ -1713,6 +2067,10 @@ class YumOptionParser(OptionParser):
help=_("verbose operation"))
group.add_option("-y", "--assumeyes", dest="assumeyes",
action="store_true", help=_("answer yes for all questions"))
@@ -2276,7 +2294,7 @@ index c60fa08..0000000
-ts run
-exit
diff --git a/etc/yum.bash b/etc/yum.bash
-index f1e06e8..c0e9c6b 100644
+index f1e06e8..f6a0039 100644
--- a/etc/yum.bash
+++ b/etc/yum.bash
@@ -8,7 +8,7 @@ _yum_list()
@@ -2288,19 +2306,20 @@ index f1e06e8..c0e9c6b 100644
# Try to strip in between headings like "Available Packages" - would
# be nice if e.g. -d 0 did that for us. This will obviously only work
# for English :P
-@@ -45,8 +45,9 @@ _yum_grouplist()
+@@ -44,9 +44,9 @@ _yum_repolist()
+ _yum_grouplist()
{
local IFS=$'\n'
- # TODO: add -d 0 when http://yum.baseurl.org/ticket/29 is fixed
+- # TODO: add -d 0 when http://yum.baseurl.org/ticket/29 is fixed
- COMPREPLY=( $( compgen -W "$( ${yum:-yum} -C grouplist $1 "$2*" \
- 2>/dev/null | sed -ne 's/^[[:space:]]\{1,\}\(.\{1,\}\)/\1/p' )" \
-+ COMPREPLY=( $( compgen -W "$( ${yum:-yum} -C grouplist $1 \
++ COMPREPLY=( $( compgen -W "$( ${yum:-yum} -d 0 -C grouplist $1 \
+ 2>/dev/null | sed -e 's/[[:space:]]\{1,\}\[.*$//' \
+ -ne 's/^[[:space:]]\{1,\}\(.\{1,\}\)/\1/p' )" \
-- "$2" ) )
}
-@@ -56,7 +57,7 @@ _yum_grouplist()
+@@ -56,7 +56,7 @@ _yum_grouplist()
_yum_plugins()
{
local val
@@ -2309,7 +2328,7 @@ index f1e06e8..c0e9c6b 100644
COMPREPLY+=( $( compgen -W '$( command grep -il "^\s*enabled\s*=\s*$val" \
/etc/yum/pluginconf.d/*.conf 2>/dev/null \
| sed -ne "s|^.*/\([^/]\{1,\}\)\.conf$|\1|p" )' -- "$2" ) )
-@@ -75,7 +76,7 @@ _yum_baseopts()
+@@ -75,7 +75,7 @@ _yum_baseopts()
{
local opts='--help --tolerant --cacheonly --config --randomwait
--debuglevel --showduplicates --errorlevel --rpmverbosity --quiet
@@ -2318,7 +2337,7 @@ index f1e06e8..c0e9c6b 100644
--disablerepo --exclude --disableexcludes --obsoletes --noplugins
--nogpgcheck --skip-broken --color --releasever --setopt'
[[ $COMP_LINE == *--noplugins* ]] || \
-@@ -89,6 +90,16 @@ _yum_transactions()
+@@ -89,6 +89,16 @@ _yum_transactions()
sed -ne 's/^[[:space:]]*\([0-9]\{1,\}\).*/\1/p' )" -- "$cur" ) )
}
@@ -2335,7 +2354,7 @@ index f1e06e8..c0e9c6b 100644
# arguments:
# 1 = current word to be completed
# 2 = previous word
-@@ -184,8 +195,8 @@ _yum()
+@@ -184,8 +194,8 @@ _yum()
# Commands offered as completions
local cmds=( check check-update clean deplist distro-sync downgrade
groupinfo groupinstall grouplist groupremove help history info install
@@ -2346,7 +2365,7 @@ index f1e06e8..c0e9c6b 100644
local i c cmd subcmd
for (( i=1; i < ${#words[@]}-1; i++ )) ; do
-@@ -211,7 +222,7 @@ _yum()
+@@ -211,7 +221,7 @@ _yum()
;;
clean)
@@ -2355,7 +2374,7 @@ index f1e06e8..c0e9c6b 100644
COMPREPLY=( $( compgen -W 'expire-cache packages headers
metadata cache dbcache all' -- "$cur" ) )
return 0
-@@ -224,20 +235,22 @@ _yum()
+@@ -224,20 +234,22 @@ _yum()
;;
distro-sync|distribution-synchronization)
@@ -2382,7 +2401,7 @@ index f1e06e8..c0e9c6b 100644
return 0
;;
-@@ -247,36 +260,53 @@ _yum()
+@@ -247,36 +259,53 @@ _yum()
;;
help)
@@ -2447,7 +2466,7 @@ index f1e06e8..c0e9c6b 100644
;;
esac
return 0
-@@ -288,13 +318,15 @@ _yum()
+@@ -288,13 +317,15 @@ _yum()
;;
install)
@@ -2466,7 +2485,7 @@ index f1e06e8..c0e9c6b 100644
COMPREPLY=( $( compgen -W 'all available updates installed
extras obsoletes recent' -- "$cur" ) )
return 0
-@@ -306,24 +338,26 @@ _yum()
+@@ -306,24 +337,26 @@ _yum()
;;
repolist)
@@ -2498,7 +2517,7 @@ index f1e06e8..c0e9c6b 100644
COMPREPLY=( $( compgen -W 'all installed available nogroups
grouplist groupinfo' -- "$cur" ) )
return 0
-@@ -337,7 +371,11 @@ _yum()
+@@ -337,7 +370,11 @@ _yum()
$split && return 0
@@ -2512,7 +2531,7 @@ index f1e06e8..c0e9c6b 100644
complete -F _yum -o filenames yum yummain.py
diff --git a/output.py b/output.py
-index b6aa277..9b2060b 100755
+index b6aa277..01f0c40 100755
--- a/output.py
+++ b/output.py
@@ -1,6 +1,6 @@
@@ -3677,7 +3696,7 @@ index b6aa277..9b2060b 100755
needname, needflags, needversion = reqTup
yb = self.ayum
-@@ -2225,46 +2803,105 @@ class DepSolveProgressCallBack:
+@@ -2225,46 +2803,106 @@ class DepSolveProgressCallBack:
return msg
def procConflict(self, name, confname):
@@ -3771,24 +3790,25 @@ index b6aa277..9b2060b 100755
+ """
+ # We can easily have 10k+ packages in a repo. and we don't want to
+ # output 80 * 10k lines to the screen, esp. when the user probably
-+ # doesn't care about < 1% jumps ... some serial consoles may also get
-+ # really unhappy.
++ # doesn't care about 10k updates ... some serial consoles also get
++ # really unhappy, as they can't deal with the IO fast enough.
++ num_outputs = 200
+ output = False
-+ opc = total / 100
++ opc = total / num_outputs
+ if opc <= 1:
+ output = True
-+ elif current < opc:
-+ output = True # output all the begining
-+ elif (total - current) < opc:
-+ output = True # output all the end
-+ elif not (current % opc): # output every 1%
++ elif current <= 1:
++ output = True # output the begining
++ elif current == total:
++ output = True # output the end
++ elif not (current % opc):
+ output = True
+ if output:
+ progressbar(current, total, name)
def _pkgname_ui(ayum, pkgname, ts_states=None):
""" Get more information on a simple pkgname, if we can. We need to search
-@@ -2316,10 +2953,7 @@ def _pkgname_ui(ayum, pkgname, ts_states=None):
+@@ -2316,10 +2954,7 @@ def _pkgname_ui(ayum, pkgname, ts_states=None):
return pkgname
class YumCliRPMCallBack(RPMBaseCallback):
@@ -3800,7 +3820,7 @@ index b6aa277..9b2060b 100755
width = property(lambda x: _term_width())
-@@ -2337,21 +2971,34 @@ class YumCliRPMCallBack(RPMBaseCallback):
+@@ -2337,21 +2972,34 @@ class YumCliRPMCallBack(RPMBaseCallback):
# Installing things have pkg objects passed to the events, so only need to
# lookup for erased/obsoleted.
def pkgname_ui(self, pkgname, ts_states=('e', 'od', 'ud', None)):
@@ -3845,7 +3865,7 @@ index b6aa277..9b2060b 100755
if type(package) not in types.StringTypes:
pkgname = str(package)
-@@ -2363,9 +3010,25 @@ class YumCliRPMCallBack(RPMBaseCallback):
+@@ -2363,9 +3011,25 @@ class YumCliRPMCallBack(RPMBaseCallback):
percent = 0
else:
percent = (te_current*100L)/te_total
@@ -3872,7 +3892,7 @@ index b6aa277..9b2060b 100755
pkgname=pkgname, wid1=wid1)
msg = fmt % (utf8_width_fill(process, wid1, wid1),
utf8_width_fill(pkgname, wid2, wid2))
-@@ -2377,6 +3040,11 @@ class YumCliRPMCallBack(RPMBaseCallback):
+@@ -2377,6 +3041,11 @@ class YumCliRPMCallBack(RPMBaseCallback):
print " "
def scriptout(self, package, msgs):
@@ -3884,7 +3904,7 @@ index b6aa277..9b2060b 100755
if msgs:
sys.stdout.write(to_unicode(msgs))
sys.stdout.flush()
-@@ -2429,8 +3097,30 @@ class YumCliRPMCallBack(RPMBaseCallback):
+@@ -2429,8 +3098,30 @@ class YumCliRPMCallBack(RPMBaseCallback):
wid2 = pnl
return fmt, wid1, wid2
@@ -146588,7 +146608,7 @@ index abd203f..b78a9f6 100644
- 3.4.1
- umask bug fix.
diff --git a/yum/__init__.py b/yum/__init__.py
-index 99039e0..5c7e511 100644
+index 99039e0..9163ad0 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -82,7 +82,7 @@ from packages import YumAvailablePackage, YumLocalPackage, YumInstalledPackage
@@ -147433,7 +147453,7 @@ index 99039e0..5c7e511 100644
filelist = []
for txmbr in self.tsInfo:
if txmbr.po.state not in TS_INSTALL_STATES:
-@@ -2218,27 +2407,40 @@ class YumBase(depsolve.Depsolve):
+@@ -2218,27 +2407,42 @@ class YumBase(depsolve.Depsolve):
_('%s removed'), fn)
def cleanHeaders(self):
@@ -147449,15 +147469,19 @@ index 99039e0..5c7e511 100644
return self._cleanFiles(exts, 'pkgdir', 'package')
def cleanSqlite(self):
+- exts = ['sqlite', 'sqlite.bz2', 'sqlite-journal']
+ """Delete the sqlite files from the yum cache."""
+
- exts = ['sqlite', 'sqlite.bz2', 'sqlite-journal']
++ exts = ['sqlite', 'sqlite.bz2', 'sqlite.gz', 'sqlite.xz',
++ 'sqlite-journal']
return self._cleanFiles(exts, 'cachedir', 'sqlite')
def cleanMetadata(self):
+- exts = ['xml.gz', 'xml', 'cachecookie', 'mirrorlist.txt', 'asc']
+ """Delete the metadata files from the yum cache."""
+
- exts = ['xml.gz', 'xml', 'cachecookie', 'mirrorlist.txt', 'asc']
++ exts = ['xml.gz', 'xml', 'cachecookie', 'mirrorlist.txt', 'asc',
++ 'xml.bz2', 'xml.xz']
# Metalink is also here, but is a *.xml file
return self._cleanFiles(exts, 'cachedir', 'metadata')
@@ -147474,7 +147498,7 @@ index 99039e0..5c7e511 100644
cachedir = self.conf.persistdir + "/rpmdb-indexes/"
if not os.path.exists(cachedir):
filelist = []
-@@ -2272,8 +2474,29 @@ class YumBase(depsolve.Depsolve):
+@@ -2272,8 +2476,29 @@ class YumBase(depsolve.Depsolve):
def doPackageLists(self, pkgnarrow='all', patterns=None, showdups=None,
ignore_case=False):
@@ -147506,7 +147530,7 @@ index 99039e0..5c7e511 100644
if showdups is None:
showdups = self.conf.showdupesfromrepos
ygh = misc.GenericHolder(iter=pkgnarrow)
-@@ -2461,14 +2684,13 @@ class YumBase(depsolve.Depsolve):
+@@ -2461,14 +2686,13 @@ class YumBase(depsolve.Depsolve):
def findDeps(self, pkgs):
@@ -147526,7 +147550,7 @@ index 99039e0..5c7e511 100644
results = {}
for pkg in pkgs:
-@@ -2495,10 +2717,22 @@ class YumBase(depsolve.Depsolve):
+@@ -2495,10 +2719,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):
@@ -147553,7 +147577,7 @@ index 99039e0..5c7e511 100644
sql_fields = []
for f in fields:
sql_fields.append(RPM_TO_SQLITE.get(f, f))
-@@ -2661,6 +2895,14 @@ class YumBase(depsolve.Depsolve):
+@@ -2661,6 +2897,14 @@ class YumBase(depsolve.Depsolve):
yield (po, vs)
def searchPackageTags(self, criteria):
@@ -147568,7 +147592,7 @@ index 99039e0..5c7e511 100644
results = {} # name = [(criteria, taglist)]
for c in criteria:
c = c.lower()
-@@ -2677,11 +2919,16 @@ class YumBase(depsolve.Depsolve):
+@@ -2677,11 +2921,16 @@ class YumBase(depsolve.Depsolve):
return results
def searchPackages(self, fields, criteria, callback=None):
@@ -147590,7 +147614,7 @@ index 99039e0..5c7e511 100644
warnings.warn(_('searchPackages() will go away in a future version of Yum.\
Use searchGenerator() instead. \n'),
Errors.YumFutureDeprecationWarning, stacklevel=2)
-@@ -2700,6 +2947,19 @@ class YumBase(depsolve.Depsolve):
+@@ -2700,6 +2949,19 @@ class YumBase(depsolve.Depsolve):
def searchPackageProvides(self, args, callback=None,
callback_has_matchfor=False):
@@ -147610,7 +147634,7 @@ index 99039e0..5c7e511 100644
def _arg_data(arg):
if not misc.re_glob(arg):
isglob = False
-@@ -2818,11 +3078,17 @@ class YumBase(depsolve.Depsolve):
+@@ -2818,11 +3080,17 @@ class YumBase(depsolve.Depsolve):
return matches
def doGroupLists(self, uservisible=0, patterns=None, ignore_case=True):
@@ -147633,7 +147657,7 @@ index 99039e0..5c7e511 100644
installed = []
available = []
-@@ -2852,8 +3118,13 @@ class YumBase(depsolve.Depsolve):
+@@ -2852,8 +3120,13 @@ class YumBase(depsolve.Depsolve):
def groupRemove(self, grpid):
@@ -147649,7 +147673,7 @@ index 99039e0..5c7e511 100644
txmbrs_used = []
thesegroups = self.comps.return_groups(grpid)
-@@ -2872,9 +3143,10 @@ class YumBase(depsolve.Depsolve):
+@@ -2872,9 +3145,10 @@ class YumBase(depsolve.Depsolve):
return txmbrs_used
def groupUnremove(self, grpid):
@@ -147662,7 +147686,7 @@ index 99039e0..5c7e511 100644
thesegroups = self.comps.return_groups(grpid)
if not thesegroups:
raise Errors.GroupsError, _("No Group named %s exists") % to_unicode(grpid)
-@@ -2899,12 +3171,16 @@ class YumBase(depsolve.Depsolve):
+@@ -2899,12 +3173,16 @@ class YumBase(depsolve.Depsolve):
def selectGroup(self, grpid, group_package_types=[], enable_group_conditionals=None):
@@ -147685,7 +147709,7 @@ index 99039e0..5c7e511 100644
"""
if not self.comps.has_group(grpid):
-@@ -2939,7 +3215,7 @@ class YumBase(depsolve.Depsolve):
+@@ -2939,7 +3217,7 @@ class YumBase(depsolve.Depsolve):
self.verbose_logger.log(logginglevels.DEBUG_2,
_('Adding package %s from group %s'), pkg, thisgroup.groupid)
try:
@@ -147694,7 +147718,7 @@ index 99039e0..5c7e511 100644
except Errors.InstallError, e:
self.verbose_logger.debug(_('No package named %s available to be installed'),
pkg)
-@@ -2997,10 +3273,14 @@ class YumBase(depsolve.Depsolve):
+@@ -2997,10 +3275,14 @@ class YumBase(depsolve.Depsolve):
return txmbrs_used
def deselectGroup(self, grpid, force=False):
@@ -147713,7 +147737,7 @@ index 99039e0..5c7e511 100644
if not self.comps.has_group(grpid):
raise Errors.GroupsError, _("No Group named %s exists") % to_unicode(grpid)
-@@ -3035,12 +3315,21 @@ class YumBase(depsolve.Depsolve):
+@@ -3035,12 +3317,21 @@ class YumBase(depsolve.Depsolve):
self.tsInfo.remove(pkg.pkgtup)
def getPackageObject(self, pkgtup, allow_missing=False):
@@ -147741,7 +147765,7 @@ index 99039e0..5c7e511 100644
# look it up in the self.localPackages first:
for po in self.localPackages:
if po.pkgtup == pkgtup:
-@@ -3049,7 +3338,7 @@ class YumBase(depsolve.Depsolve):
+@@ -3049,7 +3340,7 @@ class YumBase(depsolve.Depsolve):
pkgs = self.pkgSack.searchPkgTuple(pkgtup)
if len(pkgs) == 0:
@@ -147750,7 +147774,7 @@ index 99039e0..5c7e511 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 +3354,21 @@ class YumBase(depsolve.Depsolve):
+@@ -3065,13 +3356,21 @@ class YumBase(depsolve.Depsolve):
return result
def getInstalledPackageObject(self, pkgtup):
@@ -147777,7 +147801,7 @@ index 99039e0..5c7e511 100644
raise Errors.RpmDBError, _('Package tuple %s could not be found in rpmdb') % str(pkgtup)
# Dito. FIXME from getPackageObject() for len() > 1 ... :)
-@@ -3079,9 +3376,11 @@ class YumBase(depsolve.Depsolve):
+@@ -3079,9 +3378,11 @@ class YumBase(depsolve.Depsolve):
return po
def gpgKeyCheck(self):
@@ -147791,7 +147815,7 @@ index 99039e0..5c7e511 100644
gpgkeyschecked = self.conf.cachedir + '/.gpgkeyschecked.yum'
if os.path.exists(gpgkeyschecked):
return 1
-@@ -3106,9 +3405,13 @@ class YumBase(depsolve.Depsolve):
+@@ -3106,9 +3407,13 @@ class YumBase(depsolve.Depsolve):
return 1
def returnPackagesByDep(self, depstring):
@@ -147807,7 +147831,7 @@ index 99039e0..5c7e511 100644
if not depstring:
return []
-@@ -3135,9 +3438,16 @@ class YumBase(depsolve.Depsolve):
+@@ -3135,9 +3440,16 @@ class YumBase(depsolve.Depsolve):
return self.pkgSack.getProvides(depname, depflags, depver).keys()
def returnPackageByDep(self, depstring):
@@ -147827,7 +147851,7 @@ index 99039e0..5c7e511 100644
# we get all sorts of randomness here
errstring = depstring
if type(depstring) not in types.StringTypes:
-@@ -3156,9 +3466,14 @@ class YumBase(depsolve.Depsolve):
+@@ -3156,9 +3468,14 @@ class YumBase(depsolve.Depsolve):
return result
def returnInstalledPackagesByDep(self, depstring):
@@ -147845,7 +147869,7 @@ index 99039e0..5c7e511 100644
if not depstring:
return []
-@@ -3184,6 +3499,34 @@ class YumBase(depsolve.Depsolve):
+@@ -3184,6 +3501,34 @@ class YumBase(depsolve.Depsolve):
return self.rpmdb.getProvides(depname, depflags, depver).keys()
@@ -147880,7 +147904,7 @@ index 99039e0..5c7e511 100644
def _bestPackageFromList(self, pkglist):
"""take list of package objects and return the best package object.
If the list is empty, return None.
-@@ -3202,10 +3545,17 @@ class YumBase(depsolve.Depsolve):
+@@ -3202,10 +3547,17 @@ class YumBase(depsolve.Depsolve):
return bestlist[0][0]
def bestPackagesFromList(self, pkglist, arch=None, single_name=False):
@@ -147902,7 +147926,7 @@ index 99039e0..5c7e511 100644
returnlist = []
compatArchList = self.arch.get_arch_list(arch)
multiLib = []
-@@ -3438,13 +3788,35 @@ class YumBase(depsolve.Depsolve):
+@@ -3438,13 +3790,35 @@ class YumBase(depsolve.Depsolve):
self.tsInfo.probFilterFlags.append(flag)
def install(self, po=None, **kwargs):
@@ -147944,7 +147968,7 @@ index 99039e0..5c7e511 100644
pkgs = []
was_pattern = False
if po:
-@@ -3600,23 +3972,23 @@ class YumBase(depsolve.Depsolve):
+@@ -3600,23 +3974,23 @@ class YumBase(depsolve.Depsolve):
already_obs = pkgs[0]
if already_obs:
@@ -147975,7 +147999,7 @@ index 99039e0..5c7e511 100644
continue
# make sure we don't have a name.arch of this already installed
-@@ -3630,7 +4002,7 @@ class YumBase(depsolve.Depsolve):
+@@ -3630,7 +4004,7 @@ class YumBase(depsolve.Depsolve):
found = True
break
if not found:
@@ -147984,7 +148008,7 @@ index 99039e0..5c7e511 100644
txmbrs = self.update(po=po)
tx_return.extend(txmbrs)
continue
-@@ -3719,14 +4091,33 @@ class YumBase(depsolve.Depsolve):
+@@ -3719,14 +4093,33 @@ class YumBase(depsolve.Depsolve):
return txmbr
def update(self, po=None, requiringPo=None, update_to=False, **kwargs):
@@ -148025,7 +148049,7 @@ index 99039e0..5c7e511 100644
# check for args - if no po nor kwargs, do them all
# if po, do it, ignore all else
# if no po do kwargs
-@@ -3985,11 +4376,18 @@ class YumBase(depsolve.Depsolve):
+@@ -3985,11 +4378,18 @@ class YumBase(depsolve.Depsolve):
return tx_return
def remove(self, po=None, **kwargs):
@@ -148049,7 +148073,7 @@ index 99039e0..5c7e511 100644
if not po and not kwargs:
raise Errors.RemoveError, 'Nothing specified to remove'
-@@ -4055,17 +4453,19 @@ class YumBase(depsolve.Depsolve):
+@@ -4055,17 +4455,19 @@ class YumBase(depsolve.Depsolve):
return tx_return
def installLocal(self, pkg, po=None, updateonly=False):
@@ -148079,7 +148103,7 @@ index 99039e0..5c7e511 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 +4583,15 @@ class YumBase(depsolve.Depsolve):
+@@ -4183,16 +4585,15 @@ class YumBase(depsolve.Depsolve):
return tx_return
def reinstallLocal(self, pkg, po=None):
@@ -148104,7 +148128,7 @@ index 99039e0..5c7e511 100644
if not po:
try:
po = YumUrlPackage(self, ts=self.rpmdb.readOnlyTS(), url=pkg,
-@@ -4215,9 +4614,19 @@ class YumBase(depsolve.Depsolve):
+@@ -4215,9 +4616,19 @@ class YumBase(depsolve.Depsolve):
return self.reinstall(po=po)
def reinstall(self, po=None, **kwargs):
@@ -148127,7 +148151,7 @@ index 99039e0..5c7e511 100644
self._add_prob_flags(rpm.RPMPROB_FILTER_REPLACEPKG,
rpm.RPMPROB_FILTER_REPLACENEWFILES,
rpm.RPMPROB_FILTER_REPLACEOLDFILES)
-@@ -4259,16 +4668,15 @@ class YumBase(depsolve.Depsolve):
+@@ -4259,16 +4670,15 @@ class YumBase(depsolve.Depsolve):
return tx_mbrs
def downgradeLocal(self, pkg, po=None):
@@ -148152,7 +148176,7 @@ index 99039e0..5c7e511 100644
if not po:
try:
po = YumUrlPackage(self, ts=self.rpmdb.readOnlyTS(), url=pkg,
-@@ -4309,13 +4717,19 @@ class YumBase(depsolve.Depsolve):
+@@ -4309,13 +4719,19 @@ class YumBase(depsolve.Depsolve):
return False
def downgrade(self, po=None, **kwargs):
@@ -148179,7 +148203,7 @@ index 99039e0..5c7e511 100644
if not po and not kwargs:
raise Errors.DowngradeError, 'Nothing specified to downgrade'
-@@ -4457,7 +4871,7 @@ class YumBase(depsolve.Depsolve):
+@@ -4457,7 +4873,7 @@ class YumBase(depsolve.Depsolve):
if e and v and r:
evr = '%s:%s-%s' % (e, v, r)
elif v and r:
@@ -148188,7 +148212,7 @@ index 99039e0..5c7e511 100644
elif e and v:
evr = '%s:%s' % (e, v)
elif v: # e and r etc. is just too weird to print
-@@ -4500,12 +4914,24 @@ class YumBase(depsolve.Depsolve):
+@@ -4500,12 +4916,24 @@ class YumBase(depsolve.Depsolve):
return returndict
@@ -148216,7 +148240,7 @@ index 99039e0..5c7e511 100644
old_conf_obs = self.conf.obsoletes
self.conf.obsoletes = False
done = False
-@@ -4515,19 +4941,46 @@ class YumBase(depsolve.Depsolve):
+@@ -4515,19 +4943,46 @@ class YumBase(depsolve.Depsolve):
done = True
for pkg in transaction.trans_data:
if pkg.state == 'Downgrade':
@@ -148263,7 +148287,7 @@ index 99039e0..5c7e511 100644
if self.install(pkgtup=pkg.pkgtup):
done = True
for pkg in transaction.trans_data:
-@@ -4538,8 +4991,14 @@ class YumBase(depsolve.Depsolve):
+@@ -4538,8 +4993,14 @@ class YumBase(depsolve.Depsolve):
return done
def history_undo(self, transaction):
@@ -148280,7 +148304,7 @@ index 99039e0..5c7e511 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 :).
-@@ -4674,34 +5133,37 @@ class YumBase(depsolve.Depsolve):
+@@ -4674,39 +5135,49 @@ class YumBase(depsolve.Depsolve):
if pkgs:
pkgs = sorted(pkgs)[-1]
msg = (_('Importing %s key 0x%s:\n'
@@ -148336,7 +148360,19 @@ index 99039e0..5c7e511 100644
"""
repo = self.repos.getRepo(po.repoid)
keyurls = repo.gpgkey
-@@ -4725,7 +5187,9 @@ class YumBase(depsolve.Depsolve):
+ key_installed = False
+
++ def _prov_key_data(msg):
++ msg += _('\n\n\n'
++ ' Failing package is: %s\n'
++ ' GPG Keys are configured as: %s\n'
++ ) % (po, ", ".join(repo.gpgkey))
++ return msg
++
+ user_cb_fail = False
+ for keyurl in keyurls:
+ keys = self._retrievePublicKey(keyurl, repo)
+@@ -4725,7 +5196,9 @@ class YumBase(depsolve.Depsolve):
# Try installing/updating GPG key
self._getKeyImportMessage(info, keyurl)
rc = False
@@ -148347,7 +148383,63 @@ index 99039e0..5c7e511 100644
rc = True
# grab the .sig/.asc for the keyurl, if it exists
-@@ -4819,8 +5283,11 @@ class YumBase(depsolve.Depsolve):
+@@ -4751,8 +5224,8 @@ class YumBase(depsolve.Depsolve):
+ ts = self.rpmdb.readOnlyTS()
+ result = ts.pgpImportPubkey(misc.procgpgkey(info['raw_key']))
+ if result != 0:
+- raise Errors.YumBaseError, \
+- _('Key import failed (code %d)') % result
++ msg = _('Key import failed (code %d)') % result
++ raise Errors.YumBaseError, _prov_key_data(msg)
+ self.logger.info(_('Key imported successfully'))
+ key_installed = True
+
+@@ -4760,18 +5233,20 @@ class YumBase(depsolve.Depsolve):
+ raise Errors.YumBaseError, _("Didn't install any keys")
+
+ if not key_installed:
+- raise Errors.YumBaseError, \
+- _('The GPG keys listed for the "%s" repository are ' \
++ msg = _('The GPG keys listed for the "%s" repository are ' \
+ 'already installed but they are not correct for this ' \
+ 'package.\n' \
+ 'Check that the correct key URLs are configured for ' \
+- 'this repository.') % (repo.name)
++ 'this repository.') % repo.name
++ raise Errors.YumBaseError, _prov_key_data(msg)
+
+ # Check if the newly installed keys helped
+ result, errmsg = self.sigCheckPkg(po)
+ if result != 0:
+- self.logger.info(_("Import of key(s) didn't help, wrong key(s)?"))
+- raise Errors.YumBaseError, errmsg
++ msg = _("Import of key(s) didn't help, wrong key(s)?")
++ self.logger.info(msg)
++ errmsg = to_unicode(errmsg)
++ raise Errors.YumBaseError, _prov_key_data(errmsg)
+
+ def _getAnyKeyForRepo(self, repo, destdir, keyurl_list, is_cakey=False, callback=None):
+ """
+@@ -4788,6 +5263,18 @@ class YumBase(depsolve.Depsolve):
+ """
+
+ key_installed = False
++
++ def _prov_key_data(msg):
++ cakeytxt = _("No")
++ if is_cakey:
++ cakeytxt = _("Yes")
++ msg += _('\n\n\n'
++ ' CA Key: %s\n'
++ ' Failing repo is: %s\n'
++ ' GPG Keys are configured as: %s\n'
++ ) % (cakeytxt, repo, ", ".join(keyurl_list))
++ return msg
++
+ user_cb_fail = False
+ for keyurl in keyurl_list:
+ keys = self._retrievePublicKey(keyurl, repo, getSig=not is_cakey)
+@@ -4819,8 +5306,11 @@ class YumBase(depsolve.Depsolve):
if not key_installed:
self._getKeyImportMessage(info, keyurl, keytype)
rc = False
@@ -148360,8 +148452,32 @@ index 99039e0..5c7e511 100644
elif callback:
rc = callback({"repo": repo, "userid": info['userid'],
"hexkeyid": info['hexkeyid'], "keyurl": keyurl,
-@@ -4861,26 +5328,23 @@ class YumBase(depsolve.Depsolve):
+@@ -4835,7 +5325,8 @@ class YumBase(depsolve.Depsolve):
+ # Import the key
+ result = misc.import_key_to_pubring(info['raw_key'], info['hexkeyid'], gpgdir=destdir)
+ if not result:
+- raise Errors.YumBaseError, _('Key import failed')
++ msg = _('Key %s import failed') % info['hexkeyid']
++ raise Errors.YumBaseError, _prov_key_data(msg)
+ self.logger.info(_('Key imported successfully'))
+ key_installed = True
+ # write out the key id to imported_cakeys in the repos basedir
+@@ -4851,36 +5342,35 @@ class YumBase(depsolve.Depsolve):
+ pass
+
+ if not key_installed and user_cb_fail:
+- raise Errors.YumBaseError, _("Didn't install any keys for repo %s") % repo
++ msg = _("Didn't install any keys for repo %s") % repo
++ raise Errors.YumBaseError, _prov_key_data(msg)
+
+ if not key_installed:
+- raise Errors.YumBaseError, \
++ msg = \
+ _('The GPG keys listed for the "%s" repository are ' \
+ 'already installed but they are not correct.\n' \
+ 'Check that the correct key URLs are configured for ' \
'this repository.') % (repo.name)
++ raise Errors.YumBaseError, _prov_key_data(msg)
def getKeyForRepo(self, repo, callback=None):
- """
@@ -148399,7 +148515,7 @@ index 99039e0..5c7e511 100644
self._getAnyKeyForRepo(repo, repo.gpgcadir, repo.gpgcakey, is_cakey=True, callback=callback)
def _limit_installonly_pkgs(self):
-@@ -4959,19 +5423,22 @@ class YumBase(depsolve.Depsolve):
+@@ -4959,19 +5449,22 @@ class YumBase(depsolve.Depsolve):
txmbr.depends_on.append(rel)
def processTransaction(self, callback=None,rpmTestDisplay=None, rpmDisplay=None):
@@ -148435,7 +148551,7 @@ index 99039e0..5c7e511 100644
if not callback:
callback = callbacks.ProcessTransNoOutputCallback()
-@@ -5114,13 +5581,19 @@ class YumBase(depsolve.Depsolve):
+@@ -5114,13 +5607,19 @@ class YumBase(depsolve.Depsolve):
return results
def add_enable_repo(self, repoid, baseurls=[], mirrorlist=None, **kwargs):
@@ -148462,7 +148578,7 @@ index 99039e0..5c7e511 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 +5640,15 @@ class YumBase(depsolve.Depsolve):
+@@ -5167,9 +5666,15 @@ class YumBase(depsolve.Depsolve):
def setCacheDir(self, force=False, tmpdir=None, reuse=True,
suffix='/$basearch/$releasever'):
@@ -148481,7 +148597,7 @@ index 99039e0..5c7e511 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:
-@@ -5220,13 +5699,24 @@ class YumBase(depsolve.Depsolve):
+@@ -5220,13 +5725,24 @@ class YumBase(depsolve.Depsolve):
self.history.write_addon_data('config-repos', myrepos)
def verify_plugins_cb(self, verify_package):
@@ -148509,7 +148625,7 @@ index 99039e0..5c7e511 100644
if self.tsInfo._unresolvedMembers:
if auto:
self.logger.critical(_("Dependencies not solved. Will not save unresolved transaction."))
-@@ -5234,7 +5724,7 @@ class YumBase(depsolve.Depsolve):
+@@ -5234,7 +5750,7 @@ class YumBase(depsolve.Depsolve):
raise Errors.YumBaseError(_("Dependencies not solved. Will not save unresolved transaction."))
if not filename:
@@ -148518,7 +148634,7 @@ index 99039e0..5c7e511 100644
fd,filename = tempfile.mkstemp(suffix='.yumtx', prefix=prefix)
f = os.fdopen(fd, 'w')
else:
-@@ -5266,7 +5756,17 @@ class YumBase(depsolve.Depsolve):
+@@ -5266,7 +5782,17 @@ class YumBase(depsolve.Depsolve):
def load_ts(self, filename, ignorerpm=None, ignoremissing=None):
@@ -148537,7 +148653,7 @@ index 99039e0..5c7e511 100644
# check rpmversion - if not match throw a fit
# check repoversions (and repos)- if not match throw a fit
# load each txmbr - if pkgs being updated don't exist, bail w/error
-@@ -5292,6 +5792,16 @@ class YumBase(depsolve.Depsolve):
+@@ -5292,6 +5818,16 @@ class YumBase(depsolve.Depsolve):
# 3+numrepos = num pkgs
# 3+numrepos+1 -> EOF= txmembers
@@ -148554,7 +148670,7 @@ index 99039e0..5c7e511 100644
# rpm db ver
rpmv = data[0].strip()
if rpmv != str(self.rpmdb.simpleVersion(main_only=True)[0]):
-@@ -5329,6 +5839,7 @@ class YumBase(depsolve.Depsolve):
+@@ -5329,6 +5865,7 @@ class YumBase(depsolve.Depsolve):
pkgcount = 0
pkgprob = False
curpkg = None
@@ -150911,6 +151027,18 @@ index ee825c6..dae60c9 100644
- for pgp_cert in decode_msg(open(sys.argv[1]).read()) :
+ for pgp_cert in decode_multiple_keys(open(sys.argv[1]).read()) :
print pgp_cert
+diff --git a/yum/pkgtag_db.py b/yum/pkgtag_db.py
+index afcc28d..934f246 100644
+--- a/yum/pkgtag_db.py
++++ b/yum/pkgtag_db.py
+@@ -46,6 +46,7 @@ def catchSqliteException(func):
+
+
+ class PackageTagDB(object):
++ @catchSqliteException
+ def __init__(self, repoid, sqlite_file):
+ self.sqlite_file = sqlite_file
+ self.repoid = repoid
diff --git a/yum/plugins.py b/yum/plugins.py
index bfc49b7..9ddcae6 100644
--- a/yum/plugins.py
@@ -151654,10 +151782,10 @@ index e5e9ece..f645a1a 100644
return None
raise
diff --git a/yumcommands.py b/yumcommands.py
-index 4dcbea7..2ff9562 100644
+index 4dcbea7..36b19b3 100644
--- a/yumcommands.py
+++ b/yumcommands.py
-@@ -43,16 +43,22 @@ def _err_mini_usage(base, basecmd):
+@@ -43,16 +43,24 @@ def _err_mini_usage(base, basecmd):
base.logger.critical(txt)
def checkRootUID(base):
@@ -151680,10 +151808,12 @@ index 4dcbea7..2ff9562 100644
+ :param base: a :class:`yum.Yumbase` object.
+ :raises: :class:`cli.CliError`
+ """
++ if base._override_sigchecks:
++ return
if not base.gpgKeyCheck():
for repo in base.repos.listEnabled():
if (repo.gpgcheck or repo.repo_gpgcheck) and not repo.gpgkey:
-@@ -75,6 +81,14 @@ For more information contact your distribution or package provider.
+@@ -75,6 +83,14 @@ For more information contact your distribution or package provider.
raise cli.CliError
def checkPackageArg(base, basecmd, extcmds):
@@ -151698,7 +151828,7 @@ index 4dcbea7..2ff9562 100644
if len(extcmds) == 0:
base.logger.critical(
_('Error: Need to pass a list of pkgs to %s') % basecmd)
-@@ -82,18 +96,44 @@ def checkPackageArg(base, basecmd, extcmds):
+@@ -82,18 +98,44 @@ def checkPackageArg(base, basecmd, extcmds):
raise cli.CliError
def checkItemArg(base, basecmd, extcmds):
@@ -151743,7 +151873,7 @@ index 4dcbea7..2ff9562 100644
VALID_ARGS = ('headers', 'packages', 'metadata', 'dbcache', 'plugins',
'expire-cache', 'rpmdb', 'all')
-@@ -108,12 +148,14 @@ def checkCleanArg(base, basecmd, extcmds):
+@@ -108,12 +150,14 @@ def checkCleanArg(base, basecmd, extcmds):
raise cli.CliError
def checkShellArg(base, basecmd, extcmds):
@@ -151764,7 +151894,7 @@ index 4dcbea7..2ff9562 100644
"""
if len(extcmds) == 0:
base.verbose_logger.debug(_("No argument to shell"))
-@@ -133,10 +175,12 @@ def checkShellArg(base, basecmd, extcmds):
+@@ -133,10 +177,12 @@ def checkShellArg(base, basecmd, extcmds):
raise cli.CliError
def checkEnabledRepo(base, possible_local_files=[]):
@@ -151780,7 +151910,7 @@ index 4dcbea7..2ff9562 100644
"""
if base.repos.listEnabled():
return
-@@ -152,63 +196,145 @@ def checkEnabledRepo(base, possible_local_files=[]):
+@@ -152,63 +198,145 @@ def checkEnabledRepo(base, possible_local_files=[]):
raise cli.CliError
class YumCommand:
@@ -151936,7 +152066,7 @@ index 4dcbea7..2ff9562 100644
self.doneCommand(base, _("Setting up Install Process"))
try:
return base.installPkgs(extcmds)
-@@ -216,21 +342,60 @@ class InstallCommand(YumCommand):
+@@ -216,21 +344,60 @@ class InstallCommand(YumCommand):
return 1, [str(e)]
class UpdateCommand(YumCommand):
@@ -151997,7 +152127,7 @@ index 4dcbea7..2ff9562 100644
self.doneCommand(base, _("Setting up Update Process"))
try:
return base.updatePkgs(extcmds, update_to=(basecmd == 'update-to'))
-@@ -238,21 +403,59 @@ class UpdateCommand(YumCommand):
+@@ -238,21 +405,59 @@ class UpdateCommand(YumCommand):
return 1, [str(e)]
class DistroSyncCommand(YumCommand):
@@ -152057,7 +152187,7 @@ index 4dcbea7..2ff9562 100644
self.doneCommand(base, _("Setting up Distribution Synchronization Process"))
try:
base.conf.obsoletes = 1
-@@ -289,16 +492,46 @@ def _list_cmd_calc_columns(base, ypl):
+@@ -289,16 +494,46 @@ def _list_cmd_calc_columns(base, ypl):
return (-columns[0], -columns[1], -columns[2])
class InfoCommand(YumCommand):
@@ -152104,7 +152234,7 @@ index 4dcbea7..2ff9562 100644
try:
highlight = base.term.MODE['bold']
ypl = base.returnPkgLists(extcmds, installed_available=highlight)
-@@ -389,35 +622,95 @@ class InfoCommand(YumCommand):
+@@ -389,35 +624,95 @@ class InfoCommand(YumCommand):
return 0, []
def needTs(self, base, basecmd, extcmds):
@@ -152200,7 +152330,7 @@ index 4dcbea7..2ff9562 100644
self.doneCommand(base, _("Setting up Remove Process"))
try:
return base.erasePkgs(extcmds)
-@@ -425,9 +718,25 @@ class EraseCommand(YumCommand):
+@@ -425,9 +720,25 @@ class EraseCommand(YumCommand):
return 1, [str(e)]
def needTs(self, base, basecmd, extcmds):
@@ -152226,7 +152356,7 @@ index 4dcbea7..2ff9562 100644
return True
-@@ -442,12 +751,25 @@ class GroupsCommand(YumCommand):
+@@ -442,12 +753,25 @@ class GroupsCommand(YumCommand):
'groupinfo' : 'info'}
def getNames(self):
@@ -152252,7 +152382,7 @@ index 4dcbea7..2ff9562 100644
return _("Display, or use, the groups information")
def _grp_setup_doCommand(self, base):
-@@ -479,6 +801,14 @@ class GroupsCommand(YumCommand):
+@@ -479,6 +803,14 @@ class GroupsCommand(YumCommand):
return cmd, extcmds
def doCheck(self, base, basecmd, extcmds):
@@ -152267,7 +152397,7 @@ index 4dcbea7..2ff9562 100644
cmd, extcmds = self._grp_cmd(basecmd, extcmds)
checkEnabledRepo(base)
-@@ -505,6 +835,19 @@ class GroupsCommand(YumCommand):
+@@ -505,6 +837,19 @@ class GroupsCommand(YumCommand):
raise cli.CliError
def doCommand(self, base, basecmd, extcmds):
@@ -152287,7 +152417,7 @@ index 4dcbea7..2ff9562 100644
cmd, extcmds = self._grp_cmd(basecmd, extcmds)
self._grp_setup_doCommand(base)
-@@ -529,6 +872,14 @@ class GroupsCommand(YumCommand):
+@@ -529,6 +874,14 @@ class GroupsCommand(YumCommand):
def needTs(self, base, basecmd, extcmds):
@@ -152302,7 +152432,7 @@ index 4dcbea7..2ff9562 100644
cmd, extcmds = self._grp_cmd(basecmd, extcmds)
if cmd in ('list', 'info', 'remove', 'summary'):
-@@ -536,27 +887,71 @@ class GroupsCommand(YumCommand):
+@@ -536,27 +889,71 @@ class GroupsCommand(YumCommand):
return True
def needTsRemove(self, base, basecmd, extcmds):
@@ -152375,7 +152505,7 @@ index 4dcbea7..2ff9562 100644
base.logger.debug(_("Making cache files for all metadata files."))
base.logger.debug(_("This may take a while depending on the speed of this computer"))
try:
-@@ -582,44 +977,134 @@ class MakeCacheCommand(YumCommand):
+@@ -582,44 +979,134 @@ class MakeCacheCommand(YumCommand):
return 0, [_('Metadata Cache Created')]
def needTs(self, base, basecmd, extcmds):
@@ -152510,7 +152640,7 @@ index 4dcbea7..2ff9562 100644
base.logger.debug("Searching Packages: ")
try:
return base.provides(extcmds)
-@@ -627,19 +1112,56 @@ class ProvidesCommand(YumCommand):
+@@ -627,19 +1114,56 @@ class ProvidesCommand(YumCommand):
return 1, [str(e)]
class CheckUpdateCommand(YumCommand):
@@ -152567,7 +152697,7 @@ index 4dcbea7..2ff9562 100644
obscmds = ['obsoletes'] + extcmds
base.extcmds.insert(0, 'updates')
result = 0
-@@ -681,19 +1203,56 @@ class CheckUpdateCommand(YumCommand):
+@@ -681,19 +1205,56 @@ class CheckUpdateCommand(YumCommand):
return result, []
class SearchCommand(YumCommand):
@@ -152624,7 +152754,7 @@ index 4dcbea7..2ff9562 100644
base.logger.debug(_("Searching Packages: "))
try:
return base.search(extcmds)
-@@ -701,24 +1260,70 @@ class SearchCommand(YumCommand):
+@@ -701,24 +1262,70 @@ class SearchCommand(YumCommand):
return 1, [str(e)]
def needTs(self, base, basecmd, extcmds):
@@ -152695,7 +152825,7 @@ index 4dcbea7..2ff9562 100644
base.conf.obsoletes = 1
self.doneCommand(base, _("Setting up Upgrade Process"))
try:
-@@ -727,25 +1332,64 @@ class UpgradeCommand(YumCommand):
+@@ -727,25 +1334,64 @@ class UpgradeCommand(YumCommand):
return 1, [str(e)]
class LocalInstallCommand(YumCommand):
@@ -152760,7 +152890,7 @@ index 4dcbea7..2ff9562 100644
self.doneCommand(base, _("Setting up Local Package Process"))
updateonly = basecmd == 'localupdate'
-@@ -755,19 +1399,61 @@ class LocalInstallCommand(YumCommand):
+@@ -755,19 +1401,61 @@ class LocalInstallCommand(YumCommand):
return 1, [str(e)]
def needTs(self, base, basecmd, extcmds):
@@ -152823,7 +152953,7 @@ index 4dcbea7..2ff9562 100644
base.logger.debug(_("Searching Packages for Dependency:"))
try:
return base.resolveDepCli(extcmds)
-@@ -775,19 +1461,56 @@ class ResolveDepCommand(YumCommand):
+@@ -775,19 +1463,56 @@ class ResolveDepCommand(YumCommand):
return 1, [str(e)]
class ShellCommand(YumCommand):
@@ -152880,7 +153010,7 @@ index 4dcbea7..2ff9562 100644
self.doneCommand(base, _('Setting up Yum Shell'))
try:
return base.doShell()
-@@ -795,23 +1518,69 @@ class ShellCommand(YumCommand):
+@@ -795,23 +1520,69 @@ class ShellCommand(YumCommand):
return 1, [str(e)]
def needTs(self, base, basecmd, extcmds):
@@ -152950,7 +153080,7 @@ index 4dcbea7..2ff9562 100644
self.doneCommand(base, _("Finding dependencies: "))
try:
return base.deplist(extcmds)
-@@ -820,17 +1589,46 @@ class DepListCommand(YumCommand):
+@@ -820,17 +1591,46 @@ class DepListCommand(YumCommand):
class RepoListCommand(YumCommand):
@@ -152997,7 +153127,7 @@ index 4dcbea7..2ff9562 100644
def _repo_size(repo):
ret = 0
for pkg in repo.sack.returnPackages():
-@@ -866,6 +1664,13 @@ class RepoListCommand(YumCommand):
+@@ -866,6 +1666,13 @@ class RepoListCommand(YumCommand):
except yum.Errors.RepoError:
if verbose:
raise
@@ -153011,7 +153141,7 @@ index 4dcbea7..2ff9562 100644
repos = base.repos.repos.values()
repos.sort()
-@@ -1088,21 +1893,54 @@ class RepoListCommand(YumCommand):
+@@ -1088,21 +1895,54 @@ class RepoListCommand(YumCommand):
return 0, ['repolist: ' +to_unicode(locale.format("%d", tot_num, True))]
def needTs(self, base, basecmd, extcmds):
@@ -153066,7 +153196,7 @@ index 4dcbea7..2ff9562 100644
if len(extcmds) == 0:
base.usage()
raise cli.CliError
-@@ -1147,28 +1985,85 @@ class HelpCommand(YumCommand):
+@@ -1147,28 +1987,85 @@ class HelpCommand(YumCommand):
return help_output
def doCommand(self, base, basecmd, extcmds):
@@ -153152,7 +153282,7 @@ index 4dcbea7..2ff9562 100644
self.doneCommand(base, _("Setting up Reinstall Process"))
try:
return base.reinstallPkgs(extcmds)
-@@ -1177,25 +2072,73 @@ class ReInstallCommand(YumCommand):
+@@ -1177,25 +2074,73 @@ class ReInstallCommand(YumCommand):
return 1, [to_unicode(e)]
def getSummary(self):
@@ -153226,7 +153356,7 @@ index 4dcbea7..2ff9562 100644
self.doneCommand(base, _("Setting up Downgrade Process"))
try:
return base.downgradePkgs(extcmds)
-@@ -1203,23 +2146,65 @@ class DowngradeCommand(YumCommand):
+@@ -1203,23 +2148,65 @@ class DowngradeCommand(YumCommand):
return 1, [str(e)]
def getSummary(self):
@@ -153292,7 +153422,7 @@ index 4dcbea7..2ff9562 100644
vcmd = 'installed'
if extcmds:
vcmd = extcmds[0]
-@@ -1344,6 +2329,14 @@ class VersionCommand(YumCommand):
+@@ -1344,6 +2331,14 @@ class VersionCommand(YumCommand):
return 0, ['version']
def needTs(self, base, basecmd, extcmds):
@@ -153307,7 +153437,7 @@ index 4dcbea7..2ff9562 100644
vcmd = 'installed'
if extcmds:
vcmd = extcmds[0]
-@@ -1354,23 +2347,62 @@ class VersionCommand(YumCommand):
+@@ -1354,23 +2349,62 @@ class VersionCommand(YumCommand):
class HistoryCommand(YumCommand):
@@ -153371,7 +153501,7 @@ index 4dcbea7..2ff9562 100644
return 2, ["Repeating transaction %u" % (old.tid,)]
def _hcmd_undo(self, base, extcmds):
-@@ -1426,12 +2458,54 @@ class HistoryCommand(YumCommand):
+@@ -1426,12 +2460,54 @@ class HistoryCommand(YumCommand):
def _hcmd_new(self, base, extcmds):
base.history._create_db_file()
@@ -153427,7 +153557,7 @@ index 4dcbea7..2ff9562 100644
if extcmds and extcmds[0] not in cmds:
base.logger.critical(_('Invalid history sub-command, use: %s.'),
", ".join(cmds))
-@@ -1444,6 +2518,19 @@ class HistoryCommand(YumCommand):
+@@ -1444,6 +2520,19 @@ class HistoryCommand(YumCommand):
raise cli.CliError
def doCommand(self, base, basecmd, extcmds):
@@ -153447,7 +153577,7 @@ index 4dcbea7..2ff9562 100644
vcmd = 'list'
if extcmds:
vcmd = extcmds[0]
-@@ -1468,12 +2555,26 @@ class HistoryCommand(YumCommand):
+@@ -1468,12 +2557,26 @@ class HistoryCommand(YumCommand):
ret = self._hcmd_rollback(base, extcmds)
elif vcmd == 'new':
ret = self._hcmd_new(base, extcmds)
@@ -153474,7 +153604,7 @@ index 4dcbea7..2ff9562 100644
vcmd = 'list'
if extcmds:
vcmd = extcmds[0]
-@@ -1481,16 +2582,46 @@ class HistoryCommand(YumCommand):
+@@ -1481,16 +2584,46 @@ class HistoryCommand(YumCommand):
class CheckRpmdbCommand(YumCommand):
@@ -153521,7 +153651,7 @@ index 4dcbea7..2ff9562 100644
chkcmd = 'all'
if extcmds:
chkcmd = extcmds
-@@ -1505,19 +2636,57 @@ class CheckRpmdbCommand(YumCommand):
+@@ -1505,19 +2638,57 @@ class CheckRpmdbCommand(YumCommand):
return rc, ['%s %s' % (basecmd, chkcmd)]
def needTs(self, base, basecmd, extcmds):
@@ -153579,7 +153709,7 @@ index 4dcbea7..2ff9562 100644
if not extcmds:
base.logger.critical(_("No saved transaction file specified."))
raise cli.CliError
-@@ -1533,5 +2702,13 @@ class LoadTransactionCommand(YumCommand):
+@@ -1533,5 +2704,13 @@ class LoadTransactionCommand(YumCommand):
def needTs(self, base, basecmd, extcmds):
diff --git a/yum.spec b/yum.spec
index 73f927d..abc7153 100644
--- a/yum.spec
+++ b/yum.spec
@@ -18,7 +18,7 @@
Summary: RPM package installer/updater/manager
Name: yum
Version: 3.4.3
-Release: 15%{?dist}
+Release: 16%{?dist}
License: GPLv2+
Group: System Environment/Base
Source0: http://yum.baseurl.org/download/3.4/%{name}-%{version}.tar.gz
@@ -311,6 +311,11 @@ exit 0
%endif
%changelog
+* Tue Dec 13 2011 James Antill <james at fedoraproject.org> - 3.4.3-16
+- update to latest HEAD
+- Have users always use their own dirs.
+- Minor updates.
+
* Fri Dec 2 2011 James Antill <james at fedoraproject.org> - 3.4.3-15
- update to latest HEAD
- Init "found" variable for distro-sync full. BZ 752407.
More information about the scm-commits
mailing list