Package not found: home:mcalabkova:branches:devel:languages:python:django:leap/gramofile

File createrepo-0.9.8-sort-packages-before-writing-repodata.patch of Package createrepo

--- a/createrepo/__init__.py
+++ b/createrepo/__init__.py
@@ -25,6 +25,7 @@ from  bz2 import BZ2File
 from urlgrabber import grabber
 import tempfile
 import stat
+import re
 
 from yum import misc, Errors, to_unicode
 from yum.sqlutils import executeSQL
@@ -478,6 +479,30 @@ class MetaDataGenerator:
 
         return po
 
+    def sortPackages(self, pkglist):
+        class PackageKey:
+            def __init__(self, package):
+                m = re.search(r"([^/]+)-([^/-]+-[^/-]+)\.([^/.]+)\.rpm$",
+                        package)
+                if m:
+                    self.n = m.group(1)
+                    self.vr = m.group(2)
+                    self.a = m.group(3)
+                else:
+                    # give up on sorting
+                    self.n = package
+                    self.vr = 0
+                    self.a = 0
+            def __lt__(self, other):
+                if self.n != other.n:
+                    return self.n < other.n
+                if self.a != other.a:
+                    return self.a < other.a
+                return self.vr < other.vr
+
+        return sorted(pkglist, key=PackageKey)
+
+
     def writeMetadataDocs(self, pkglist=[], pkgpath=None):
 
         if not pkglist:
@@ -488,6 +513,7 @@ class MetaDataGenerator:
         else:
             directory = pkgpath
 
+        pkglist = self.sortPackages(pkglist)
         for pkg in pkglist:
             self.current_pkg += 1
             recycled = False

openSUSE Build Service is sponsored by