Commit 9734024e authored by Miss Islington (bot)'s avatar Miss Islington (bot) Committed by Victor Stinner

bpo-26544: Get rid of dependence from distutils in platform. (GH-8356) (GH-8952)

(cherry picked from commit 7d81e8f5)
Co-authored-by: default avatarSerhiy Storchaka <storchaka@gmail.com>
parent 7056ca88
......@@ -132,6 +132,35 @@ except AttributeError:
# Standard Unix uses /dev/null
DEV_NULL = '/dev/null'
# Helper for comparing two version number strings.
# Based on the description of the PHP's version_compare():
# http://php.net/manual/en/function.version-compare.php
_ver_stages = {
# any string not found in this dict, will get 0 assigned
'dev': 10,
'alpha': 20, 'a': 20,
'beta': 30, 'b': 30,
'c': 40,
'RC': 50, 'rc': 50,
# number, will get 100 assigned
'pl': 200, 'p': 200,
}
_component_re = re.compile(r'([0-9]+|[._+-])')
def _comparable_version(version):
result = []
for v in _component_re.split(version):
if v not in '._+-':
try:
v = int(v, 10)
t = 100
except ValueError:
t = _ver_stages.get(v, 0)
result.extend((t, v))
return result
### Platform specific APIs
_libc_search = re.compile(r'(__libc_init)'
......@@ -155,7 +184,7 @@ def libc_ver(executable=sys.executable,lib='',version='', chunksize=2048):
The file is read and scanned in chunks of chunksize bytes.
"""
from distutils.version import LooseVersion as V
V = _comparable_version
if hasattr(os.path, 'realpath'):
# Python 2.2 introduced os.path.realpath(); it is used
# here to work around problems with Cygwin not being
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment