[yum-cvs] yum/comps.py yum/__init__.py

Seth Vidal skvidal at linux.duke.edu
Fri Aug 24 16:19:08 UTC 2007


 yum/__init__.py |    5 +++--
 yum/comps.py    |   42 +++++++++++++++++++++++-------------------
 2 files changed, 26 insertions(+), 21 deletions(-)

New commits:
commit d82a60a103a9f6a42c80fbf8db9a986e3282b2fb
Author: Seth Vidal <skvidal at fedoraproject.org>
Date:   Fri Aug 24 12:17:27 2007 -0400

    if group file is empty or damaged in a repository, treat it like
    a missing groups file and skip it. Push out an error about it, though.

diff --git a/yum/__init__.py b/yum/__init__.py
index 9447e79..f4c3fe0 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -490,8 +490,9 @@ class YumBase(depsolve.Depsolve):
             groupfile = repo.getGroups()
             try:
                 self._comps.add(groupfile)
-            except Errors.GroupsError, e:
-                self.logger.critical('Failed to add groups file for repository: %s' % repo)
+            except (Errors.GroupsError,Errors.CompsException), e:
+                msg = 'Failed to add groups file for repository: %s - %s' % (repo, str(e))
+                self.logger.critical(msg)
             else:
                 repo.groups_added = True
 
diff --git a/yum/comps.py b/yum/comps.py
index 2cc6cc5..054c733 100755
--- a/yum/comps.py
+++ b/yum/comps.py
@@ -21,7 +21,8 @@ except ImportError:
     import cElementTree
 iterparse = cElementTree.iterparse
 from Errors import CompsException
-
+#FIXME - compsexception isn't caught ANYWHERE so it's pointless to raise it
+# switch all compsexceptions to grouperrors after api break
 
 lang_attr = '{http://www.w3.org/XML/1998/namespace}lang'
 
@@ -346,24 +347,27 @@ class Comps(object):
         self.compiled = False
         
         parser = iterparse(infile)
-
-        for event, elem in parser:
-            if elem.tag == "group":
-                group = Group(elem)
-                if self._groups.has_key(group.groupid):
-                    thatgroup = self._groups[group.groupid]
-                    thatgroup.add(group)
-                else:
-                    self._groups[group.groupid] = group
-
-            if elem.tag == "category":
-                category = Category(elem)
-                if self._categories.has_key(category.categoryid):
-                    thatcat = self._categories[category.categoryid]
-                    thatcat.add(category)
-                else:
-                    self._categories[category.categoryid] = category
-        
+        try:
+            for event, elem in parser:
+                if elem.tag == "group":
+                    group = Group(elem)
+                    if self._groups.has_key(group.groupid):
+                        thatgroup = self._groups[group.groupid]
+                        thatgroup.add(group)
+                    else:
+                        self._groups[group.groupid] = group
+
+                if elem.tag == "category":
+                    category = Category(elem)
+                    if self._categories.has_key(category.categoryid):
+                        thatcat = self._categories[category.categoryid]
+                        thatcat.add(category)
+                    else:
+                        self._categories[category.categoryid] = category
+        except SyntaxError, e:
+            raise CompsException, "comps file is empty/damaged"
+            del parser
+            
         del parser
         
     def compile(self, pkgtuplist):



More information about the Yum-cvs-commits mailing list