---
 yum/yumRepo.py | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/yum/yumRepo.py b/yum/yumRepo.py
index 3b49f56..9f32190 100644
--- a/yum/yumRepo.py
+++ b/yum/yumRepo.py
@@ -1659,6 +1659,35 @@ Insufficient space in download directory %s
         self._doneOldRepoXML()
         return True
 
+    def _retrieveDelta(self, full):
+        """ Return the unpacked file if good, optionally retrieve and apply
+            the delta file and verify result
+        """
+
+        # there already?
+        new = self.cachedir + '/gen/%s.xml' % full
+        if not os.path.exists(new):
+            return
+        if self._checkMD(new, full, openchecksum=True, check_can_fail=True):
+            return new
+
+        # can we have delta?
+        delta = self.repoXML.getDelta(full, os.path.getmtime(new))
+        if not delta:
+            return
+        local = self._retrieveMD(delta.type, retrieve_can_fail=True)
+        if not local:
+            return
+
+        # apply delta
+        old = new + '.old.tmp'
+        os.rename(new, old)
+        if not self._applyDelta(delta):
+            os.rename(old, new)
+            return
+        os.unlink(old)
+        return new
+
     def _groupLoadRepoXML(self, text=None, mdtypes=None):
         """ Retrieve the new repomd.xml from the repository, then check it
             and parse it. If it fails we revert to the old version and pretend
-- 
1.7.11.7

_______________________________________________
Yum-devel mailing list
Yum-devel@lists.baseurl.org
http://lists.baseurl.org/mailman/listinfo/yum-devel

Reply via email to