[Yum-devel] [PATCH] Don't write when in cache mode, for comps/tags, and catch IOError for comps.

James Antill james at and.org
Fri Dec 10 19:17:55 UTC 2010


---
 yum/__init__.py |    7 +++++--
 yum/comps.py    |    5 ++++-
 yum/misc.py     |    4 ++--
 3 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/yum/__init__.py b/yum/__init__.py
index 45123a3..1b36994 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -780,7 +780,9 @@ class YumBase(depsolve.Depsolve):
             groupfile = repo.getGroups()
             # open it up as a file object so iterparse can cope with our compressed file
             if groupfile:
-                groupfile = misc.repo_gen_decompress(groupfile, 'groups.xml')
+                groupfile = misc.repo_gen_decompress(groupfile, 'groups.xml',
+                                                     cached=repo.cache)
+                # Do we want a RepoError here?
                 
             try:
                 self._comps.add(groupfile)
@@ -819,7 +821,8 @@ class YumBase(depsolve.Depsolve):
                 try:
                     tag_md = repo.retrieveMD('pkgtags')
                     tag_sqlite  = misc.repo_gen_decompress(tag_md,
-                                                           'pkgtags.sqlite')
+                                                           'pkgtags.sqlite',
+                                                           cached=repo.cache)
                     # feed it into _tags.add()
                     self._tags.add(repo.id, tag_sqlite)
                 except (Errors.RepoError, Errors.PkgTagsError), e:
diff --git a/yum/comps.py b/yum/comps.py
index 408bb1c..65f6d5e 100755
--- a/yum/comps.py
+++ b/yum/comps.py
@@ -503,7 +503,10 @@ class Comps(object):
             
         if type(srcfile) in types.StringTypes:
             # srcfile is a filename string
-            infile = open(srcfile, 'rt')
+            try:
+                infile = open(srcfile, 'rt')
+            except IOError, e:
+                raise CompsException, 'open(%s): #%u %s' % (srcfile, e.errno, e.strerror)
         else:
             # srcfile is a file object
             infile = srcfile
diff --git a/yum/misc.py b/yum/misc.py
index 4fa5ed9..4a1ede2 100644
--- a/yum/misc.py
+++ b/yum/misc.py
@@ -1077,7 +1077,7 @@ def decompress(filename, dest=None, fn_only=False, check_timestamps=False):
         
     return out
     
-def repo_gen_decompress(filename, generated_name):
+def repo_gen_decompress(filename, generated_name, cached=False):
     """ This is a wrapper around decompress, where we work out a cached
         generated name, and use check_timestamps. filename _must_ be from
         a repo. and generated_name is the type of the file. """
@@ -1086,7 +1086,7 @@ def repo_gen_decompress(filename, generated_name):
     if not os.path.exists(dest):
         os.makedirs(dest, mode=0755)
     dest += '/' + generated_name
-    return decompress(filename, dest=dest, check_timestamps=True)
+    return decompress(filename, dest=dest, check_timestamps=True,fn_only=cached)
     
 def read_in_items_from_dot_dir(thisglob, line_as_list=True):
     """takes a glob of a dir (like /etc/foo.d/*.foo)
-- 
1.7.2.3



More information about the Yum-devel mailing list