--- Lib/distutils/command/bdist_rpm.py 2009-03-12 23:30:29.000000000 -0500 +++ Lib/distutils/command/bdist_rpm.py 2009-03-13 00:40:52.000000000 -0500 @@ -16,6 +16,44 @@ from distutils.file_util import write_file from distutils.errors import * from distutils import log +import re + + +# helper function to rewrite the version number into correct RPM lexicographical order +def rewrite_lexicographically(version, release): + + version = version.replace('-','_') + release = release.replace('-','_') + relsep = "." + + try: int(release) + except ValueError: return (version, release) + + expressions = [ + '^([0-9\.]+)(dev|svn)_r(.*)$', + '^([0-9\.]+)(dev|svn)($)', + '^([0-9\.]+)(alpha|beta|gamma)(.*)$', + '^([0-9\.]+)([abc])(.*)$', + '^([0-9\.]+)(rc)(.*)$', + ] + + matches = [ re.match(m,version) for m in expressions ] + matches = [ m for m in matches if m ] + if matches: + v,d,p = matches[0].groups() + if d == "dev" or d == "svn": + d,p = p,d + release = "0" + version = "%s" % v + release = "0%s%s%s%s%s" %(relsep, release, relsep, d, p) + + return (version , release) + +# this is so you can test me by running python bdist_rpm.py rewrite +if __name__ == "__main__" and "rewrite" in sys.argv: + v,r=rewrite_lexicographically(*sys.argv[2:4]) + print "%s-%s %s-%s"%(sys.argv[2],sys.argv[3],v,r) + class bdist_rpm (Command): @@ -391,6 +429,13 @@ 'Summary: ' + self.distribution.get_description(), ] + version = self.distribution.get_version() + release = self.release + + version, release = rewrite_lexicographically(version,release) + spec_file.insert(3,version) + spec_file.insert(4,release) + # put locale summaries into spec file # XXX not supported for now (hard to put a dictionary # in a config file -- arg!) @@ -411,8 +456,10 @@ else: spec_file.append('Source0: %{name}-%{version}.tar.gz') + license = self.distribution.get_license() + if len(license.splitlines()) > 1: license = "Other" spec_file.extend([ - 'License: ' + self.distribution.get_license(), + 'License: ' + license, 'Group: ' + self.group, 'BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot', 'Prefix: %{_prefix}', ])