[gnome-build-meta/jjardon/gnome_3_36_2] Fix GTK+3 build



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]