diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2019-12-02 13:09:17 +0300 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2019-12-02 13:09:17 +0300 |
commit | 38fde63f74091af1f6a0d485474769bb6b4f17ce (patch) | |
tree | 1317a1fa2ef61c710ff5c653f43c0af8bb164ca6 /debian/scripts/gen-backend-versions.py | |
download | pypy-debian.tar.gz |
Import pypy (7.2.0+dfsg-1)debian/7.2.0+dfsg-1debian
Diffstat (limited to 'debian/scripts/gen-backend-versions.py')
-rwxr-xr-x | debian/scripts/gen-backend-versions.py | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/debian/scripts/gen-backend-versions.py b/debian/scripts/gen-backend-versions.py new file mode 100755 index 0000000..9dd5fa8 --- /dev/null +++ b/debian/scripts/gen-backend-versions.py @@ -0,0 +1,74 @@ +#!/usr/bin/python + +import codecs +import os +import re +import subprocess + + +def cffi_version(): + with codecs.open('lib_pypy/cffi/__init__.py', encoding='UTF-8') as f: + for line in f: + m = re.match(r'^__version__ = "([0-9.]+)"$', line) + if m: + return m.group(1) + raise Exception('Version not found') + + +def target_version(): + with codecs.open('lib_pypy/cffi/recompiler.py', encoding='UTF-8') as f: + for line in f: + m = re.match(r'^VERSION_CHAR16CHAR32 = (0x[0-9A-F]+)$', line) + if m: + return int(m.group(1), 16) + raise Exception('Version not found') + + +def backend_supported_versions(): + versions = {} + with codecs.open('pypy/module/_cffi_backend/cffi1_module.py', + encoding='UTF-8') as f: + for line in f: + m = re.match(r'^VERSION_(MIN|MAX) *= (0x[0-9A-F]+)$', + line) + if m: + versions[m.group(1)] = int(m.group(2), 16) + if len(versions) == 2: + return versions['MIN'], versions['MAX'] + raise Exception('Versions not found') + + +def pypy_abi(): + if 'pypy' not in subprocess.check_output(('dh_listpackages',)).split(): + return '' + soabi = subprocess.check_output(( + 'pypy/goal/pypy-c', '-c', + 'import sysconfig; print sysconfig.get_config_var("SOABI")')) + return soabi.strip().replace('-', '-abi-') + + +cffi = cffi_version() +versions = backend_supported_versions() +target = target_version() + +subst = { + 'cffi': cffi, + 'min': versions[0], + 'max': versions[1], + 'target': target, +} +with codecs.open('debian/pypy-lib.substvars', 'a', encoding='UTF-8') as f: + f.write('cffi:Provides=pypy-cffi (= {cffi}), ' + 'pypy-cffi-backend-api-min (= {min}), ' + 'pypy-cffi-backend-api-max (= {max}), ' + 'pypy-cffi-backend-api-{target}\n'.format(**subst)) + +with codecs.open('debian/pypy.substvars', 'a', encoding='UTF-8') as f: + f.write('pypy-abi={}\n'.format(pypy_abi())) + +path = 'debian/pypy-lib/usr/share/pypy/dist' +os.makedirs(path) +with codecs.open(os.path.join(path, 'pypy-cffi'), 'w', encoding='UTF-8') as f: + f.write('cffi pypy-cffi-backend-api-min (<= {target}), ' + 'pypy-cffi-backend-api-max (>= {target})\n' + .format(**subst)) |