mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2025-12-20 04:40:07 +01:00
build: Turn version.py into idiomatic Python
While it's possible to write C code in Python, it's better to actually write Python code in Python. Use regular expressions, instead of counting characters, to allow a little bit more leeway when editing the cairo-version.h header file. Use a context manager to handle the lifetime of a file object. Use f-strings instead of the obsolete format() method.
This commit is contained in:
parent
365bec1f7d
commit
2be68fb4e0
1 changed files with 39 additions and 17 deletions
56
version.py
56
version.py
|
|
@ -5,27 +5,49 @@
|
|||
# Extracts the version from cairo-version.h for the meson build files.
|
||||
#
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
|
||||
if __name__ == '__main__':
|
||||
srcroot = os.path.dirname(__file__)
|
||||
|
||||
version_major = None
|
||||
version_minor = None
|
||||
version_micro = None
|
||||
MAJOR_RE = re.compile(
|
||||
r'^\s*#\s*define\s+CAIRO_VERSION_MAJOR\s+(?P<number>[0-9]+)\s*$',
|
||||
re.UNICODE)
|
||||
|
||||
f = open(os.path.join(srcroot, 'src', 'cairo-version.h'), 'r', encoding='utf-8')
|
||||
MINOR_RE = re.compile(
|
||||
r'^\s*#\s*define\s+CAIRO_VERSION_MINOR\s+(?P<number>[0-9]+)\s*$',
|
||||
re.UNICODE)
|
||||
|
||||
MICRO_RE = re.compile(
|
||||
r'^\s*#\s*define\s+CAIRO_VERSION_MICRO\s+(?P<number>[0-9]+)\s*$',
|
||||
re.UNICODE)
|
||||
|
||||
version_major = None
|
||||
version_minor = None
|
||||
version_micro = None
|
||||
|
||||
srcroot = os.path.dirname(__file__)
|
||||
version_h = os.path.join(srcroot, "src", "cairo-version.h")
|
||||
|
||||
with open(version_h, "r", encoding="utf-8") as f:
|
||||
for line in f:
|
||||
if line.startswith('#define CAIRO_VERSION_MAJOR '):
|
||||
version_major = line[28:].strip()
|
||||
if line.startswith('#define CAIRO_VERSION_MINOR '):
|
||||
version_minor = line[28:].strip()
|
||||
if line.startswith('#define CAIRO_VERSION_MICRO '):
|
||||
version_micro = line[28:].strip()
|
||||
f.close()
|
||||
res = MAJOR_RE.match(line)
|
||||
if res:
|
||||
assert version_major is None
|
||||
version_major = res.group('number')
|
||||
continue
|
||||
res = MINOR_RE.match(line)
|
||||
if res:
|
||||
assert version_minor is None
|
||||
version_minor = res.group('number')
|
||||
continue
|
||||
res = MICRO_RE.match(line)
|
||||
if res:
|
||||
assert version_micro is None
|
||||
version_micro = res.group('number')
|
||||
continue
|
||||
|
||||
if not (version_major and version_minor and version_micro):
|
||||
print('ERROR: Could not extract cairo version from cairo-version.h in', srcroot, file=sys.stderr)
|
||||
sys.exit(-1)
|
||||
if not (version_major and version_minor and version_micro):
|
||||
print(f"ERROR: Could not extract version from cairo-version.h in {srcroot}", file=sys.stderr) # noqa
|
||||
sys.exit(-1)
|
||||
|
||||
print('{0}.{1}.{2}'.format(version_major, version_minor, version_micro))
|
||||
print(f"{version_major}.{version_minor}.{version_micro}")
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue