[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