Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
Please login to access the resource
openSUSE:Leap:15.1
createrepo
createrepo-0.9.9-sort-packages-before-writing-r...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File createrepo-0.9.9-sort-packages-before-writing-repodata.patch of Package createrepo
Index: createrepo-0.10.3/createrepo/__init__.py =================================================================== --- createrepo-0.10.3.orig/createrepo/__init__.py +++ createrepo-0.10.3/createrepo/__init__.py @@ -24,6 +24,7 @@ from bz2 import BZ2File from urlgrabber import grabber import tempfile import stat +import re import fcntl import subprocess from select import select @@ -540,6 +541,38 @@ class MetaDataGenerator: " add it" % po return po + + def sortPackages(self, pkglist): + class PackageKey: + def __init__(self, package): + self.n, self.vr, self.a = self._nvra(package) + + def _nvra(self, package): + # package might be a filename or a + # yum.sqlitesack.YumAvailablePackageSqlite object + try: + return (package.name, + package.version + '-' + package.release, + package.arch) + except AttributeError: + return self._parse_filename(package) + + def _parse_filename(self, filename): + m = re.search(r"([^/]+)-([^/-]+-[^/-]+)\.([^/.]+)\.rpm$", + filename) + if m: + return m.groups() + # give up on sorting + return filename, 0, 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): @@ -551,6 +584,8 @@ class MetaDataGenerator: else: directory = pkgpath + pkglist = self.sortPackages(pkglist) + # for worker/forked model # iterate the pkglist - see which ones are handled by --update and let them # go on their merry way
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor