--- rpm-5.4.15.org/scripts/pythoneggs.py 2012-05-08 00:39:11.000000000 +0200 +++ rpm-5.4.15/scripts/pythoneggs.py 2018-09-27 10:32:34.661059061 +0200 @@ -16,7 +16,8 @@ from pkg_resources import Distribution, from distutils.sysconfig import get_python_lib from subprocess import Popen, PIPE, STDOUT import os - +import platform +import re opts, args = getopt(argv[1:], 'hPRSCOEb:', ['help', 'provides', 'requires', 'suggests', 'conflicts', 'obsoletes', 'extras','buildroot=']) @@ -29,6 +30,13 @@ Obsoletes = False Extras = False buildroot = None +def make_pldver(raw): + if re.match(r'^[0-9\.]+$', raw) == None: + pldver = re.sub(r'([\d\.]+)(.+)', r'\1-0.\2', raw) + else: + pldver = raw + return pldver + for o, a in opts: if o in ('-h', '--help'): print '-h, --help\tPrint help' @@ -125,11 +133,14 @@ for f in files: if not name in py_deps: py_deps[name] = [] py_deps[name].append(('==', dist.py_version)) - name = 'pythonegg(%s)' % dist.key + if dist.py_version .split(".")[0] == '3': + name = 'python3egg(%s)' % dist.key + else: + name = 'pythonegg(%s)' % dist.key if not name in py_deps: py_deps[name] = [] if dist.version: - spec = ('==', dist.version) + spec = ('==', make_pldver(dist.version)) if not spec in py_deps[name]: py_deps[name].append(spec) if Requires or (Suggests and dist.extras): @@ -145,6 +156,14 @@ for f in files: spec = ('==', dist.py_version) if not spec in py_deps[name]: py_deps[name].append(spec) + # fake python version for dist.requires(), so deps like + # [:python_version < '3'] + # enum34 + # will be handled correctly + old_python_version = platform.python_version + def new_python_version(): + return dist.py_version + platform.python_version = new_python_version deps = dist.requires() if Suggests: depsextras = dist.requires(extras=dist.extras) @@ -153,15 +172,20 @@ for f in files: if dep in deps: depsextras.remove(dep) deps = depsextras + platform.python_version = old_python_version # add requires/suggests based on egg metadata for dep in deps: - name = 'pythonegg(%s)' % dep.key + if dist.py_version .split(".")[0] == '3': + name = 'python3egg(%s)' % dep.key + else: + name = 'pythonegg(%s)' % dep.key for spec in dep.specs: if spec[0] != '!=': if not name in py_deps: py_deps[name] = [] - if not spec in py_deps[name]: - py_deps[name].append(spec) + plddep = (spec[0], make_pldver(spec[1])) + if not plddep in py_deps[name]: + py_deps[name].append(plddep) if not dep.specs: py_deps[name] = [] # Unused, for automatic sub-package generation based on 'extras' from egg metadata