[yum-commits] Branch 'yum-3_2_X' - 4 commits - rpmUtils/miscutils.py yum/__init__.py yum/config.py yum/packages.py yum/plugins.py

James Antill james at osuosl.org
Fri Jun 26 18:38:21 UTC 2009


 rpmUtils/miscutils.py |    2 +-
 yum/__init__.py       |   22 +++++++++++++++++-----
 yum/config.py         |   17 ++++++++++++++---
 yum/packages.py       |    4 ++--
 yum/plugins.py        |    9 +++------
 5 files changed, 37 insertions(+), 17 deletions(-)

New commits:
commit 06e7d4492846f30d03e400d795bd353bdac6ab77
Author: James Antill <james at and.org>
Date:   Fri Jun 26 14:30:16 2009 -0400

    Add more clever to _pkgSack init, BZ 508139 and

diff --git a/yum/__init__.py b/yum/__init__.py
index be98aae..2f9723b 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -480,6 +480,19 @@ class YumBase(depsolve.Depsolve):
         """populates the package sacks for information from our repositories,
            takes optional archlist for archs to include"""
 
+        # FIXME: Fist of death ... normally we'd do either:
+        #
+        # 1. use self._pkgSack is not None, and only init. once.
+        # 2. auto. correctly re-init each time a repo is added/removed
+        #
+        # ...we should probably just smeg it and do #2, but it's hard and will
+        # probably break something (but it'll "fix" excludes).
+        #  #1 can't be done atm. because we did self._pkgSack and external
+        # tools now rely on being able to create an empty sack and then have it
+        # auto. re-init when they add some stuff. So we add a bit more "clever"
+        # and don't setup the pkgSack to not be None when it's empty. This means
+        # we skip excludes/includes/etc. ... but there's no packages, so
+        # hopefully that's ok.
         if self._pkgSack is not None and thisrepo is None:
             return self._pkgSack
         
@@ -499,6 +512,8 @@ class YumBase(depsolve.Depsolve):
         
         self.repos.getPackageSack().setCompatArchs(archdict)
         self.repos.populateSack(which=repos)
+        if not self.repos.getPackageSack():
+            return self.repos.getPackageSack() # ha ha, see above
         self._pkgSack = self.repos.getPackageSack()
         
         self.excludePackages()
commit e0f6975cf4b8bce2edc79b535bec29077e3262ce
Author: James Antill <james at and.org>
Date:   Wed Jun 24 17:56:14 2009 -0400

    Add the reason message for hdrFromPackage failing

diff --git a/rpmUtils/miscutils.py b/rpmUtils/miscutils.py
index 4ad72d9..f494fc3 100644
--- a/rpmUtils/miscutils.py
+++ b/rpmUtils/miscutils.py
@@ -410,7 +410,7 @@ def hdrFromPackage(ts, package):
         raise rpmUtils.RpmUtilsError, "RPM Error opening Package"
     if type(hdr) != rpm.hdr:
         os.close(fdno)
-        raise rpmUtils.RpmUtilsError, "RPM Error opening Package"
+        raise rpmUtils.RpmUtilsError, "RPM Error opening Package (type)"
     
     os.close(fdno)
     return hdr
diff --git a/yum/packages.py b/yum/packages.py
index 6cd34ef..d4838ee 100644
--- a/yum/packages.py
+++ b/yum/packages.py
@@ -1562,9 +1562,9 @@ class YumLocalPackage(YumHeaderPackage):
         
         try:
             hdr = rpmUtils.miscutils.hdrFromPackage(ts, self.localpath)
-        except RpmUtilsError:
+        except RpmUtilsError, e:
             raise Errors.MiscError, \
-                'Could not open local rpm file: %s' % self.localpath
+                'Could not open local rpm file: %s: %s' % (self.localpath, e)
         
         fakerepo = FakeRepository(filename)
         fakerepo.cost = 0
commit 815da46081f5bc753121eba3e33584d807ac2118
Author: James Antill <james at and.org>
Date:   Wed Jun 24 17:53:58 2009 -0400

    Do the module load fallback for iniparse, I believe Jesse needs this

diff --git a/yum/config.py b/yum/config.py
index 89fb94f..75f8581 100644
--- a/yum/config.py
+++ b/yum/config.py
@@ -18,6 +18,7 @@
 """
 Configuration parser and default values for yum.
 """
+_use_iniparse = True
 
 import os
 import warnings
@@ -26,9 +27,15 @@ import copy
 import urlparse
 import shlex
 from parser import ConfigPreProcessor, varReplace
-from iniparse import INIConfig
-from iniparse.compat import NoSectionError, NoOptionError, ParsingError
-from iniparse.compat import RawConfigParser as ConfigParser
+try:
+    from iniparse import INIConfig
+    from iniparse.compat import NoSectionError, NoOptionError, ParsingError
+    from iniparse.compat import RawConfigParser as ConfigParser
+except ImportError:
+    _use_iniparse = False
+if not _use_iniparse:
+    from ConfigParser import NoSectionError, NoOptionError, ParsingError
+    from ConfigParser import ConfigParser
 import rpmUtils.transaction
 import Errors
 
@@ -894,6 +901,10 @@ def writeRawRepoFile(repo,only=None):
     @param only: List of attributes to work on (None = All)
     It work by reading the repo file, changes the values there shall be changed and write it back to disk.
     """
+
+    if not _use_iniparse:
+        return
+
     ini = INIConfig(open(repo.repofile))
     # Updated the ConfigParser with the changed values    
     cfgOptions = repo.cfg.options(repo.id)
commit 5d1cb204ea9072e2a8a0d899fd3e05bbf50e4e8d
Author: James Antill <james at and.org>
Date:   Wed Jun 24 17:43:37 2009 -0400

    Move all of iniprase stuff into. config

diff --git a/yum/__init__.py b/yum/__init__.py
index a737eb1..be98aae 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -36,17 +36,14 @@ import yum.i18n
 _ = yum.i18n._
 P_ = yum.i18n.P_
 
-try:
-    from iniparse.compat import ParsingError, RawConfigParser as ConfigParser
-except ImportError:
-    from ConfigParser import ParsingError, ConfigParser
+import config
+from config import ParsingError, ConfigParser
 import Errors
 import rpmsack
 import rpmUtils.updates
 from rpmUtils.arch import canCoinstall, ArchStorage, isMultiLibArch
 import rpmUtils.transaction
 import comps
-import config
 from repos import RepoStorage
 import misc
 from parser import ConfigPreProcessor, varReplace
diff --git a/yum/config.py b/yum/config.py
index 1ed703d..89fb94f 100644
--- a/yum/config.py
+++ b/yum/config.py
@@ -27,8 +27,8 @@ import urlparse
 import shlex
 from parser import ConfigPreProcessor, varReplace
 from iniparse import INIConfig
-from iniparse.compat import NoSectionError, NoOptionError, ConfigParser
-from iniparse.compat import ParsingError
+from iniparse.compat import NoSectionError, NoOptionError, ParsingError
+from iniparse.compat import RawConfigParser as ConfigParser
 import rpmUtils.transaction
 import Errors
 
diff --git a/yum/plugins.py b/yum/plugins.py
index 68f70a4..27b1aa5 100644
--- a/yum/plugins.py
+++ b/yum/plugins.py
@@ -22,11 +22,8 @@ import gettext
 import logging
 import logginglevels
 from constants import *
-try:
-    import iniparse.compat as ConfigParser
-except ImportError:
-    import ConfigParser
 import config 
+from config import ParsingError, ConfigParser
 import Errors
 from parser import ConfigPreProcessor
 
@@ -342,11 +339,11 @@ class YumPlugins:
             self.verbose_logger.log(logginglevels.INFO_2, _("Unable to find configuration file for plugin %s")
                 % modname)
             return None
-        parser = ConfigParser.ConfigParser()
+        parser = ConfigParser()
         confpp_obj = ConfigPreProcessor(conffilename)
         try:
             parser.readfp(confpp_obj)
-        except ConfigParser.ParsingError, e:
+        except ParsingError, e:
             raise Errors.ConfigError("Couldn't parse %s: %s" % (conffilename,
                 str(e)))
         return parser


More information about the Yum-commits mailing list