[gnome-build-meta/jjardon/gnome_3_36_2] Fix GTK+3 build
- From: Javier Jardón Cabezas <jjardon src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-build-meta/jjardon/gnome_3_36_2] Fix GTK+3 build
- Date: Fri, 1 May 2020 23:37:47 +0000 (UTC)
commit d675b67b398abb4fef88d42da9ca311bd8393c86
Author: Javier Jardón <jjardon gnome org>
Date: Sat May 2 00:36:35 2020 +0100
Fix GTK+3 build
elements/sdk/gtk+-3.bst | 2 +
files/gtk+-3/check-version.py | 200 ++++++++++++++++++++++++++++++++++++++++++
2 files changed, 202 insertions(+)
---
diff --git a/elements/sdk/gtk+-3.bst b/elements/sdk/gtk+-3.bst
index 54c2ac87..01964901 100644
--- a/elements/sdk/gtk+-3.bst
+++ b/elements/sdk/gtk+-3.bst
@@ -3,6 +3,8 @@ sources:
- kind: tar
url: gnome_downloads:gtk+/3.24/gtk+-3.24.20.tar.xz
ref: 2dac69f716e8d04ba7a95091589e2baaec95dcace932cb15839163db479b1df3
+- kind: local
+ path: files/gtk+-3/check-version.py
build-depends:
- sdk/gtk-doc.bst
- freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
diff --git a/files/gtk+-3/check-version.py b/files/gtk+-3/check-version.py
new file mode 100755
index 00000000..46bcc3ac
--- /dev/null
+++ b/files/gtk+-3/check-version.py
@@ -0,0 +1,200 @@
+#!/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)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]