There are currently a few problems with enabling/disabling repos with
the move to the RepoStorage object being a property.  The biggest one is
if you have a repo with a buggy mirror list and do
  yum --disablerepo=broken-repo [...]
then we still try to fetch the mirror list and things blow up.  The
attached changes things so that the repo is a little bit more lazily set
up and fixes that problem.  It doesn't look like this will cause any
problems for any API users either, but wanted to get more eyes on it
before committing.

Jeremy
Index: yum/yumRepo.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/yumRepo.py,v
retrieving revision 1.44
diff -u -r1.44 yumRepo.py
--- yum/yumRepo.py	25 Apr 2007 18:28:31 -0000	1.44
+++ yum/yumRepo.py	25 Apr 2007 21:54:54 -0000
@@ -213,7 +213,7 @@
         self.groupsfilename = 'yumgroups.xml' # something some freaks might
                                               # eventually want
         self.repoMDFile = 'repodata/repomd.xml'
-        self.repoXML = None
+        self._repoXML = None
         self.cache = 0
         self.mirrorlistparsed = 0
         self.yumvar = {} # empty dict of yumvariables for $string replacement
@@ -629,18 +629,13 @@
         except Errors.RepoError, e:
             raise
 
-        try:
-            self._loadRepoXML(text=self)
-        except Errors.RepoError, e:
-            raise Errors.RepoError, ('Cannot open/read repomd.xml file for repository: %s' % self)
-
 
     def _loadRepoXML(self, text=None):
         """retrieve/check/read in repomd.xml from the repository"""
 
         remote = self.repoMDFile
         local = self.cachedir + '/repomd.xml'
-        if self.repoXML is not None:
+        if self._repoXML is not None:
             return
     
         if self.cache or self.metadataCurrent():
@@ -666,10 +661,22 @@
             self.setMetadataCookie()
 
         try:
-            self.repoXML = repoMDObject.RepoMD(self.id, result)
+            self._repoXML = repoMDObject.RepoMD(self.id, result)
         except Errors.RepoMDError, e:
             raise Errors.RepoError, 'Error importing repomd.xml from %s: %s' % (self, e)
 
+    def _getRepoXML(self):
+        if self._repoXML:
+            return self._repoXML
+        try:
+            self._loadRepoXML(text=self)
+        except Errors.RepoError, e:
+            raise Errors.RepoError, ('Cannot open/read repomd.xml file for repository: %s' % self)
+        return self._repoXML
+        
+
+    repoXML = property(lambda self: self._getRepoXML())
+
     def _checkRepoXML(self, fo):
         if type(fo) is types.InstanceType:
             filepath = fo.filename
_______________________________________________
Yum-devel mailing list
[email protected]
https://lists.dulug.duke.edu/mailman/listinfo/yum-devel

Reply via email to