summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/utils/universal.py15
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))