forked from AuroraMiddleware/gtk
c348d78e37
We have a fourth component of the version tuple that can go out of sync, so we should check it.
201 lines
4.2 KiB
Python
Executable File
201 lines
4.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import re
|
|
import sys
|
|
|
|
try:
|
|
configure_ac = sys.argv[1]
|
|
except Exception:
|
|
configure_ac = 'configure.ac'
|
|
|
|
try:
|
|
meson_build = sys.argv[2]
|
|
except Exception:
|
|
meson_build = 'meson.build'
|
|
|
|
CONFIGURE_MAJOR_VERSION_RE = re.compile(
|
|
r'''
|
|
^
|
|
\s*
|
|
m4_define\(
|
|
\s*
|
|
\[gtk_major_version\]
|
|
\s*
|
|
,
|
|
\s*
|
|
\[
|
|
(?P<version>[0-9]+)
|
|
\]
|
|
\s*
|
|
\)
|
|
$
|
|
''',
|
|
re.UNICODE | re.VERBOSE
|
|
)
|
|
|
|
CONFIGURE_MINOR_VERSION_RE = re.compile(
|
|
r'''
|
|
^
|
|
\s*
|
|
m4_define\(
|
|
\s*
|
|
\[gtk_minor_version\]
|
|
\s*
|
|
,
|
|
\s*
|
|
\[
|
|
(?P<version>[0-9]+)
|
|
\]
|
|
\s*
|
|
\)
|
|
$
|
|
''',
|
|
re.UNICODE | re.VERBOSE
|
|
)
|
|
|
|
CONFIGURE_MICRO_VERSION_RE = re.compile(
|
|
r'''
|
|
^
|
|
\s*
|
|
m4_define\(
|
|
\s*
|
|
\[gtk_micro_version\]
|
|
\s*
|
|
,
|
|
\s*
|
|
\[
|
|
(?P<version>[0-9]+)
|
|
\]
|
|
\s*
|
|
\)
|
|
$
|
|
''',
|
|
re.UNICODE | re.VERBOSE
|
|
)
|
|
|
|
CONFIGURE_INTERFACE_AGE_RE = re.compile(
|
|
r'''
|
|
^
|
|
\s*
|
|
m4_define\(
|
|
\s*
|
|
\[gtk_interface_age\]
|
|
\s*
|
|
,
|
|
\s*
|
|
\[
|
|
(?P<age>[0-9]+)
|
|
\]
|
|
\s*
|
|
\)
|
|
$
|
|
''',
|
|
re.UNICODE | re.VERBOSE
|
|
)
|
|
|
|
MESON_VERSION_RE = re.compile(
|
|
r'''
|
|
^
|
|
\s*
|
|
version
|
|
\s*
|
|
:{1}
|
|
\s*
|
|
\'{1}
|
|
(?P<major>[0-9]+)
|
|
\.{1}
|
|
(?P<minor>[0-9]+)
|
|
\.{1}
|
|
(?P<micro>[0-9]+)
|
|
\'{1}
|
|
\s*
|
|
,?
|
|
$
|
|
''',
|
|
re.UNICODE | re.VERBOSE
|
|
)
|
|
|
|
MESON_INTERFACE_AGE_RE = re.compile(
|
|
r'''
|
|
^\s*gtk_interface_age\s*={1}\s*(?P<age>[0-9]+)\s*$
|
|
''',
|
|
re.UNICODE | re.VERBOSE
|
|
)
|
|
|
|
version = {}
|
|
|
|
with open(configure_ac, 'r') as f:
|
|
line = f.readline()
|
|
while line:
|
|
res = CONFIGURE_MAJOR_VERSION_RE.match(line)
|
|
if res:
|
|
if 'major' in version:
|
|
print(f'Redefinition of major version; version is already set to {version["major"]}')
|
|
sys.exit(1)
|
|
version['major'] = res.group('version')
|
|
line = f.readline()
|
|
continue
|
|
res = CONFIGURE_MINOR_VERSION_RE.match(line)
|
|
if res:
|
|
if 'minor' in version:
|
|
print(f'Redefinition of minor version; version is already set to {version["minor"]}')
|
|
sys.exit(1)
|
|
version['minor'] = res.group('version')
|
|
line = f.readline()
|
|
continue
|
|
res = CONFIGURE_MICRO_VERSION_RE.match(line)
|
|
if res:
|
|
if 'micro' in version:
|
|
print(f'Redefinition of micro version; version is already set to {version["micro"]}')
|
|
sys.exit(1)
|
|
version['micro'] = res.group('version')
|
|
line = f.readline()
|
|
continue
|
|
res = CONFIGURE_INTERFACE_AGE_RE.match(line)
|
|
if res:
|
|
if 'age' in version:
|
|
print(f'Redefinition of interface age; age is already set to {version["age"]}')
|
|
sys.exit(1)
|
|
version['age'] = res.group('age')
|
|
line = f.readline()
|
|
continue
|
|
if ('major', 'minor', 'micro', 'age') in version:
|
|
break
|
|
line = f.readline()
|
|
|
|
print(f'GTK version defined in {configure_ac}: {version["major"]}.{version["minor"]}.{version["micro"]} (age: {version["age"]})')
|
|
|
|
configure_version = version
|
|
version = {}
|
|
|
|
with open(meson_build, 'r') as f:
|
|
line = f.readline()
|
|
inside_project = False
|
|
while line:
|
|
if line.startswith('project('):
|
|
inside_project = True
|
|
if inside_project:
|
|
res = MESON_VERSION_RE.match(line)
|
|
if res:
|
|
version['major'] = res.group('major')
|
|
version['minor'] = res.group('minor')
|
|
version['micro'] = res.group('micro')
|
|
if inside_project and line.endswith(')'):
|
|
inside_project = False
|
|
res = MESON_INTERFACE_AGE_RE.match(line)
|
|
if res:
|
|
version['age'] = res.group('age')
|
|
if ('major', 'minor', 'micro', 'age') in version:
|
|
break
|
|
line = f.readline()
|
|
|
|
print(f'GTK version defined in {meson_build}: {version["major"]}.{version["minor"]}.{version["micro"]} (age: {version["age"]})')
|
|
|
|
meson_version = version
|
|
|
|
if configure_version != meson_version:
|
|
print('Version mismatch between Autotools and Meson builds')
|
|
sys.exit(1)
|
|
|
|
sys.exit(0)
|