diff options
| -rw-r--r-- | mesonbuild/utils/universal.py | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/mesonbuild/utils/universal.py b/mesonbuild/utils/universal.py index eede9fd2d..e2634b925 100644 --- a/mesonbuild/utils/universal.py +++ b/mesonbuild/utils/universal.py @@ -828,21 +828,18 @@ def current_vs_supports_modules() -> bool: return True return vsver.startswith('16.9.0') and '-pre.' in vsver +_VERSION_TOK_RE = re.compile(r'(\d+)|([a-zA-Z]+)') + # a helper class which implements the same version ordering as RPM class Version: def __init__(self, s: str) -> None: self._s = s - # split into numeric, alphabetic and non-alphanumeric sequences - sequences1 = re.finditer(r'(\d+|[a-zA-Z]+|[^a-zA-Z\d]+)', s) - - # non-alphanumeric separators are discarded - sequences2 = [m for m in sequences1 if not re.match(r'[^a-zA-Z\d]+', m.group(1))] - + # extract numeric and alphabetic sequences # numeric sequences are converted from strings to ints - sequences3 = [int(m.group(1)) if m.group(1).isdigit() else m.group(1) for m in sequences2] - - self._v = sequences3 + self._v = [ + int(m.group(1)) if m.group(1) else m.group(2) + for m in _VERSION_TOK_RE.finditer(s)] def __str__(self) -> str: return '{} (V={})'.format(self._s, str(self._v)) |
