Skip to content

Commit

Permalink
glib2: Fix code generator with Python 3.13
Browse files Browse the repository at this point in the history
This was broken by aa0ed80 and breaks
the build of gtk3.

Backport the upstream patches to remove the dependency completely.

Closes: https://trac.macports.org/ticket/71745
  • Loading branch information
neverpanic authored and mascguy committed Jan 9, 2025
1 parent 4f98d16 commit 1bd311e
Show file tree
Hide file tree
Showing 2 changed files with 238 additions and 8 deletions.
2 changes: 1 addition & 1 deletion devel/glib2/Portfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ name glib2
conflicts glib2-devel
set my_name glib
version 2.78.4
revision 1
revision 2
epoch 1

checksums rmd160 7941be85af18c428d86f4a00e52f41542b061aa9 \
Expand Down
244 changes: 237 additions & 7 deletions devel/glib2/files/no-distutils.patch
Original file line number Diff line number Diff line change
@@ -1,17 +1,88 @@
From 6ef967a0f930ce37a8c9b5aff969693b34714291 Mon Sep 17 00:00:00 2001
From a828672e2dcff0bb621aa30e9f370b09fd15b8b0 Mon Sep 17 00:00:00 2001
From: Jordan Williams <[email protected]>
Date: Fri, 1 Dec 2023 09:53:50 -0600
Subject: [PATCH] Switch from the deprecated distutils module to the packaging
module
Subject: [PATCH 1/3] Switch from the deprecated distutils module to the
packaging module

The distutils module was removed in Python 3.12.

(cherry picked from commit 6ef967a0f930ce37a8c9b5aff969693b34714291)

Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/6ef967a0f930ce37a8c9b5aff969693b34714291]
---
.gitlab-ci.yml | 7 ++++---
.gitlab-ci/debian-stable.Dockerfile | 1 +
.gitlab-ci/fedora.Dockerfile | 1 +
.gitlab-ci/mingw.Dockerfile | 4 +++-
gio/gdbus-2.0/codegen/utils.py | 4 ++--
5 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index bd10823a2..b812e6b7d 100644
--- ./.gitlab-ci.yml
+++ ./.gitlab-ci.yml
@@ -11,10 +11,10 @@ cache:
- _ccache/

variables:
- FEDORA_IMAGE: "registry.gitlab.gnome.org/gnome/glib/fedora:v20"
+ FEDORA_IMAGE: "registry.gitlab.gnome.org/gnome/glib/fedora:v24"
COVERITY_IMAGE: "registry.gitlab.gnome.org/gnome/glib/coverity:v7"
- DEBIAN_IMAGE: "registry.gitlab.gnome.org/gnome/glib/debian-stable:v14"
- MINGW_IMAGE: "registry.gitlab.gnome.org/gnome/glib/mingw:v10"
+ DEBIAN_IMAGE: "registry.gitlab.gnome.org/gnome/glib/debian-stable:v18"
+ MINGW_IMAGE: "registry.gitlab.gnome.org/gnome/glib/mingw:v14"
MESON_TEST_TIMEOUT_MULTIPLIER: 4
G_MESSAGES_DEBUG: all
MESON_COMMON_OPTIONS: "--buildtype debug --wrap-mode=nodownload --fatal-meson-warnings"
@@ -551,6 +551,7 @@ macos-x86_64:
- source .venv/bin/activate
- pip3 install meson==1.2.0
- pip3 install ninja==1.11.1
+ - pip3 install packaging==23.2
script:
# FIXME: Use --wrap-mode=default so we download dependencies each time,
# until the macOS runner is a VM where we can use a pre-made image which
diff --git a/.gitlab-ci/debian-stable.Dockerfile b/.gitlab-ci/debian-stable.Dockerfile
index b2559cad6..6f07e2ec1 100644
--- ./.gitlab-ci/debian-stable.Dockerfile
+++ ./.gitlab-ci/debian-stable.Dockerfile
@@ -34,6 +34,7 @@ RUN apt-get update -qq && apt-get install --no-install-recommends -qq -y \
locales \
ninja-build \
python3 \
+ python3-packaging \
python3-pip \
python3-setuptools \
python3-wheel \
diff --git a/.gitlab-ci/fedora.Dockerfile b/.gitlab-ci/fedora.Dockerfile
index 85f910cb9..1b477d56e 100644
--- ./.gitlab-ci/fedora.Dockerfile
+++ ./.gitlab-ci/fedora.Dockerfile
@@ -45,6 +45,7 @@ RUN dnf -y update \
ninja-build \
pcre2-devel \
"python3-dbusmock >= 0.18.3-2" \
+ python3-packaging \
python3-pip \
python3-pygments \
python3-wheel \
diff --git a/.gitlab-ci/mingw.Dockerfile b/.gitlab-ci/mingw.Dockerfile
index b109122fc..ac6e3ed77 100644
--- ./.gitlab-ci/mingw.Dockerfile
+++ ./.gitlab-ci/mingw.Dockerfile
@@ -1,4 +1,6 @@
-FROM fedora:34
+FROM registry.gitlab.gnome.org/gnome/glib/fedora:v24
+
+USER root

RUN dnf -y install \
bindfs \
diff --git a/gio/gdbus-2.0/codegen/utils.py b/gio/gdbus-2.0/codegen/utils.py
index 02046108da..08f1ba9731 100644
--- gio/gdbus-2.0/codegen/utils.py
+++ gio/gdbus-2.0/codegen/utils.py
index 02046108d..08f1ba973 100644
--- ./gio/gdbus-2.0/codegen/utils.py
+++ ./gio/gdbus-2.0/codegen/utils.py
@@ -19,7 +19,7 @@
#
# Author: David Zeuthen <[email protected]>
Expand All @@ -28,5 +99,164 @@ index 02046108da..08f1ba9731 100644
- return (distutils.version.LooseVersion(v), key[1])
+ return (packaging.version.Version(v), key[1])
--
GitLab
2.47.1

From b855c4ebd117fbc1ff64f501ea0e5ed76690ca69 Mon Sep 17 00:00:00 2001
From: Ernesto de Gracia Herranz <[email protected]>
Date: Thu, 4 Jul 2024 11:04:38 +0000
Subject: [PATCH 2/3] replace package.version.Version by internal code

This drops the dependency on the Python `packaging` module.

Signed-off-by: Ernesto de Gracia Herranz <[email protected]>
(cherry picked from commit 38faeca62ebd5be89b1ec3e6c530e499ce2d7240)

Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/38faeca62ebd5be89b1ec3e6c530e499ce2d7240]
---
.gitlab-ci.yml | 1 -
.gitlab-ci/debian-stable.Dockerfile | 1 -
.gitlab-ci/fedora.Dockerfile | 2 +-
.gitlab-ci/test-msvc.bat | 2 +-
gio/gdbus-2.0/codegen/utils.py | 29 +++++++++++++++++++++++++++--
5 files changed, 29 insertions(+), 8 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b812e6b7d..68f66db4e 100644
--- ./.gitlab-ci.yml
+++ ./.gitlab-ci.yml
@@ -551,7 +551,6 @@ macos-x86_64:
- source .venv/bin/activate
- pip3 install meson==1.2.0
- pip3 install ninja==1.11.1
- - pip3 install packaging==23.2
script:
# FIXME: Use --wrap-mode=default so we download dependencies each time,
# until the macOS runner is a VM where we can use a pre-made image which
diff --git a/.gitlab-ci/debian-stable.Dockerfile b/.gitlab-ci/debian-stable.Dockerfile
index 6f07e2ec1..b2559cad6 100644
--- ./.gitlab-ci/debian-stable.Dockerfile
+++ ./.gitlab-ci/debian-stable.Dockerfile
@@ -34,7 +34,6 @@ RUN apt-get update -qq && apt-get install --no-install-recommends -qq -y \
locales \
ninja-build \
python3 \
- python3-packaging \
python3-pip \
python3-setuptools \
python3-wheel \
diff --git a/.gitlab-ci/fedora.Dockerfile b/.gitlab-ci/fedora.Dockerfile
index 1b477d56e..d827516b9 100644
--- ./.gitlab-ci/fedora.Dockerfile
+++ ./.gitlab-ci/fedora.Dockerfile
@@ -45,7 +45,7 @@ RUN dnf -y update \
ninja-build \
pcre2-devel \
"python3-dbusmock >= 0.18.3-2" \
- python3-packaging \
+ python3-docutils \
python3-pip \
python3-pygments \
python3-wheel \
diff --git a/.gitlab-ci/test-msvc.bat b/.gitlab-ci/test-msvc.bat
index aee77d33d..23906920b 100644
--- ./.gitlab-ci/test-msvc.bat
+++ ./.gitlab-ci/test-msvc.bat
@@ -12,7 +12,7 @@ for %%x in (%*) do (
set args=%args:~1%

:: FIXME: make warnings fatal
-pip3 install --upgrade --user meson==1.0.0 || goto :error
+pip3 install --upgrade --user meson==1.2.3 || goto :error
meson setup %args% _build || goto :error
python .gitlab-ci/check-missing-install-tag.py _build || goto :error
meson compile -C _build || goto :error
diff --git a/gio/gdbus-2.0/codegen/utils.py b/gio/gdbus-2.0/codegen/utils.py
index 08f1ba973..753756923 100644
--- ./gio/gdbus-2.0/codegen/utils.py
+++ ./gio/gdbus-2.0/codegen/utils.py
@@ -22,6 +22,7 @@
import packaging.version
import os
import sys
+import re


# pylint: disable=too-few-public-methods
@@ -159,11 +160,35 @@ def lookup_brief_docs(annotations):
def version_cmp_key(key):
# If the 'since' version is 'UNRELEASED', compare higher than anything else
# If it is empty put a 0 in its place as this will
- # allow LooseVersion to work and will always compare lower.
+ # allow _parse_version() to work and will always compare lower.
if key[0] == "UNRELEASED":
v = "9999"
elif key[0]:
v = str(key[0])
else:
v = "0"
- return (packaging.version.Version(v), key[1])
+ return (_parse_version(v), key[1])
+
+
+def _parse_version(version):
+ """
+ Parse a version string into a list of integers and strings.
+
+ This function takes a version string and breaks it down into its component parts.
+ It separates numeric and non-numeric segments, converting numeric segments to integers.
+
+ Args:
+ version (str): The version string to parse.
+
+ Returns:
+ list: A list where each element is either an integer (for numeric parts)
+ or a string (for non-numeric parts).
+
+ Example:
+ >>> parseversion("1.2.3a")
+ [1, 2, 3, 'a']
+ >>> parseversion("2.0.0-rc1")
+ [2, 0, 0, 'rc1']
+ """
+ blocks = re.findall(r"(\d+|\w+)", version)
+ return [int(b) if b.isdigit() else b for b in blocks]
--
2.47.1

From e024bc6a187f2b282ebe8e8e9e0983d12f9978c5 Mon Sep 17 00:00:00 2001
From: Philip Withnall <[email protected]>
Date: Sun, 7 Jul 2024 13:48:46 +0100
Subject: [PATCH 3/3] codegen: Drop unused import
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This should have been dropped in commit
38faeca62ebd5be89b1ec3e6c530e499ce2d7240 but somehow that didn’t happen
and somehow it wasn’t caught by the CI until afterwards.

Fixes: https://gitlab.gnome.org/GNOME/glib/-/jobs/4049254

Signed-off-by: Philip Withnall <[email protected]>
(cherry picked from commit 3993d8db52f1426920285543fbcd8d7ee9327825)

Upstream-Stauts: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/3993d8db52f1426920285543fbcd8d7ee9327825]
---
gio/gdbus-2.0/codegen/utils.py | 1 -
1 file changed, 1 deletion(-)

diff --git a/gio/gdbus-2.0/codegen/utils.py b/gio/gdbus-2.0/codegen/utils.py
index 753756923..649ed5b67 100644
--- ./gio/gdbus-2.0/codegen/utils.py
+++ ./gio/gdbus-2.0/codegen/utils.py
@@ -19,7 +19,6 @@
#
# Author: David Zeuthen <[email protected]>

-import packaging.version
import os
import sys
import re
--
2.47.1

0 comments on commit 1bd311e

Please sign in to comment.