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

Seth Vidal skvidal at linux.duke.edu
Fri Aug 3 05:03:43 UTC 2007


 yum/__init__.py |   21 +++++++++++++++++++--
 yum/yumRepo.py  |    5 ++++-
 2 files changed, 23 insertions(+), 3 deletions(-)

New commits:
commit fa218162007328421f19f18a54e627d13e270fc7
Author: Seth Vidal <skvidal at fedoraproject.org>
Date:   Fri Aug 3 01:03:15 2007 -0400

    - setup a way to reset all the package sacks
    - add _resetSack() method to YumRepository objects
    - all other external repo objects need to add them as well, or we'll emit a warning but carry on like we did before

diff --git a/yum/__init__.py b/yum/__init__.py
index 339da76..dbe4432 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -381,7 +381,24 @@ class YumBase(depsolve.Depsolve):
         self._pkgSack.buildIndexes()
 
         return self._pkgSack
-
+    
+    def _delSacks(self):
+        """reset the package sacks back to zero - making sure to nuke the ones
+           in the repo objects, too - where it matters"""
+           
+        # nuke the top layer
+        
+        self._pkgSack = None
+           
+        for repo in self.repos.repos.values():
+            if hasattr(repo, '_resetSack'):
+                repo._resetSack()
+            else:
+                warnings.warn('repo object for repo %s lacks a _resetSack method\n' +
+                        'therefore this repo cannot be reset.\n',
+                        Errors.YumFutureDeprecationWarning, stacklevel=2)
+            
+           
     def doUpdateSetup(self):
         warnings.warn('doUpdateSetup() will go away in a future version of Yum.\n',
                 Errors.YumFutureDeprecationWarning, stacklevel=2)
@@ -490,7 +507,7 @@ class YumBase(depsolve.Depsolve):
                      fdel=lambda self: setattr(self, "_repos", None))
     pkgSack = property(fget=lambda self: self._getSacks(),
                        fset=lambda self, value: setattr(self, "_pkgSack", value),
-                       fdel=lambda self: setattr(self, "_pkgSack", None))
+                       fdel=lambda self: self._delSacks())
     conf = property(fget=lambda self: self._getConfig(),
                     fset=lambda self, value: setattr(self, "_conf", value),
                     fdel=lambda self: setattr(self, "_conf", None))
diff --git a/yum/yumRepo.py b/yum/yumRepo.py
index c70a431..70dd73f 100644
--- a/yum/yumRepo.py
+++ b/yum/yumRepo.py
@@ -254,7 +254,10 @@ class YumRepository(Repository, config.RepoConf):
     def close(self):
         self.sack.close()
         Repository.close(self)
-
+    
+    def _resetSack(self):
+        self.sack = self.storage.GetPackageSack()
+        
     def __getProxyDict(self):
         self.doProxyDict()
         if self._proxy_dict:



More information about the Yum-cvs-commits mailing list