diff mbox series

glib-2.0: backport a switch from distutils to packaging in codegen

Message ID 20240225093726.1113403-1-martin.jansa@gmail.com
State Accepted, archived
Commit 258cb46f93af3249fb554a679af6222174bd2e95
Headers show
Series glib-2.0: backport a switch from distutils to packaging in codegen | expand

Commit Message

Martin Jansa Feb. 25, 2024, 9:37 a.m. UTC
* to fix build on hosts with python-3.12, now it fails with:

Traceback (most recent call last):
  File "recipe-sysroot-native/usr/bin/gdbus-codegen", line 53, in <module>
    from codegen import codegen_main
  File "recipe-sysroot-native/usr/share/glib-2.0/codegen/codegen_main.py", line 29, in <module>
    from . import dbustypes
  File "recipe-sysroot-native/usr/share/glib-2.0/codegen/dbustypes.py", line 22, in <module>
    from . import utils
  File "recipe-sysroot-native/usr/share/glib-2.0/codegen/utils.py", line 22, in <module>
    import distutils.version
ModuleNotFoundError: No module named 'distutils'
CMake Error at CMakeLists.txt:90 (message):
  Error in generating code for connman interface using gdbus-codegen

Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
---
 ...deprecated-distutils-module-to-the-p.patch | 34 +++++++++++++++++++
 meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb |  1 +
 meta/recipes-core/glib-2.0/glib.inc           |  4 +--
 3 files changed, 36 insertions(+), 3 deletions(-)
 create mode 100644 meta/recipes-core/glib-2.0/glib-2.0/0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch

Comments

Khem Raj Feb. 26, 2024, 11:16 p.m. UTC | #1
I am seeing some build failures which seems to be related to this patch

https://autobuilder.yoctoproject.org/typhoon/#/builders/88/builds/3657/steps/15/logs/stdio

 |   File "/home/pokybuild/yocto-worker/meta-oe/build/build/tmp/work/core2-64-poky-linux/gattlib/0.2+git/recipe-sysroot-native/usr/share/glib-2.0/codegen/utils.py",
line 22, in <module>
    |     import packaging.version
    | ModuleNotFoundError: No module named 'packaging'



  |   File "/home/pokybuild/yocto-worker/meta-oe/build/build/tmp/work/core2-64-poky-linux/networkmanager-fortisslvpn/1.4.0/recipe-sysroot-native/usr/share/glib-2.0/codegen/utils.py",
line 22, in <module>
    |     import packaging.version
    | ModuleNotFoundError: No module named 'packaging'
    | make: *** [Makefile:2081: src/nm-fortisslvpn-pppd-service-dbus.h] Error 1


On Sun, Feb 25, 2024 at 1:37 AM Martin Jansa <martin.jansa@gmail.com> wrote:
>
> * to fix build on hosts with python-3.12, now it fails with:
>
> Traceback (most recent call last):
>   File "recipe-sysroot-native/usr/bin/gdbus-codegen", line 53, in <module>
>     from codegen import codegen_main
>   File "recipe-sysroot-native/usr/share/glib-2.0/codegen/codegen_main.py", line 29, in <module>
>     from . import dbustypes
>   File "recipe-sysroot-native/usr/share/glib-2.0/codegen/dbustypes.py", line 22, in <module>
>     from . import utils
>   File "recipe-sysroot-native/usr/share/glib-2.0/codegen/utils.py", line 22, in <module>
>     import distutils.version
> ModuleNotFoundError: No module named 'distutils'
> CMake Error at CMakeLists.txt:90 (message):
>   Error in generating code for connman interface using gdbus-codegen
>
> Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
> ---
>  ...deprecated-distutils-module-to-the-p.patch | 34 +++++++++++++++++++
>  meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb |  1 +
>  meta/recipes-core/glib-2.0/glib.inc           |  4 +--
>  3 files changed, 36 insertions(+), 3 deletions(-)
>  create mode 100644 meta/recipes-core/glib-2.0/glib-2.0/0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch
>
> diff --git a/meta/recipes-core/glib-2.0/glib-2.0/0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch b/meta/recipes-core/glib-2.0/glib-2.0/0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch
> new file mode 100644
> index 0000000000..50368ed22c
> --- /dev/null
> +++ b/meta/recipes-core/glib-2.0/glib-2.0/0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch
> @@ -0,0 +1,34 @@
> +From 05f0674c93d94fe6b29c1b707980aac469ddcd72 Mon Sep 17 00:00:00 2001
> +From: Jordan Williams <jordan@jwillikers.com>
> +Date: Fri, 1 Dec 2023 09:53:50 -0600
> +Subject: [PATCH] Switch from the deprecated distutils module to the packaging
> + module
> +
> +The distutils module was removed in Python 3.12.
> +
> +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/6ef967a0f930ce37a8c9b5aff969693b34714291]
> +
> +Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
> +---
> + gio/gdbus-2.0/codegen/utils.py | 4 ++--
> + 1 file changed, 2 insertions(+), 2 deletions(-)
> +
> +diff --git a/gio/gdbus-2.0/codegen/utils.py b/gio/gdbus-2.0/codegen/utils.py
> +index 0204610..08f1ba9 100644
> +--- a/gio/gdbus-2.0/codegen/utils.py
> ++++ b/gio/gdbus-2.0/codegen/utils.py
> +@@ -19,7 +19,7 @@
> + #
> + # Author: David Zeuthen <davidz@redhat.com>
> +
> +-import distutils.version
> ++import packaging.version
> + import os
> + import sys
> +
> +@@ -166,4 +166,4 @@ def version_cmp_key(key):
> +         v = str(key[0])
> +     else:
> +         v = "0"
> +-    return (distutils.version.LooseVersion(v), key[1])
> ++    return (packaging.version.Version(v), key[1])
> diff --git a/meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb b/meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb
> index 42814ba544..6c3e99c641 100644
> --- a/meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb
> +++ b/meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb
> @@ -14,6 +14,7 @@ SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \
>             file://0001-Do-not-write-bindir-into-pkg-config-files.patch \
>             file://0001-meson-Run-atomics-test-on-clang-as-well.patch \
>             file://0001-gio-tests-resources.c-comment-out-a-build-host-only-.patch \
> +           file://0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch \
>             file://memory-monitor.patch \
>             file://native-gtkdoc.patch \
>             "
> diff --git a/meta/recipes-core/glib-2.0/glib.inc b/meta/recipes-core/glib-2.0/glib.inc
> index 5a57549d85..fac8875d84 100644
> --- a/meta/recipes-core/glib-2.0/glib.inc
> +++ b/meta/recipes-core/glib-2.0/glib.inc
> @@ -144,9 +144,7 @@ do_install:append:mingw32() {
>          rm -f ${D}${bindir}/gtester-report
>  }
>
> -# remove setuptools dependency when usage of distutils is dropped in
> -# https://gitlab.gnome.org/GNOME/glib/-/blob/main/gio/gdbus-2.0/codegen/utils.py
> -CODEGEN_PYTHON_RDEPENDS = "python3 python3-setuptools python3-xml"
> +CODEGEN_PYTHON_RDEPENDS = "python3 python3-packaging python3-xml"
>  CODEGEN_PYTHON_RDEPENDS:mingw32 = ""
>
>  RDEPENDS:${PN}-codegen += "${CODEGEN_PYTHON_RDEPENDS}"
> --
> 2.43.2
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#196136): https://lists.openembedded.org/g/openembedded-core/message/196136
> Mute This Topic: https://lists.openembedded.org/mt/104560766/1997914
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Martin Jansa Feb. 26, 2024, 11:57 p.m. UTC | #2
Thanks Khem, will try to reproduce tomorrow. Maybe these don't use
CODEGEN_PYTHON_RDEPENDS.

With this patch backported to kirkstone I've seen glib-2.0-native
failing with the same issue as python3native there doesn't include
python3-packaging.

Maybe these recipes aren't using python3native and were depending on
packaging from host, will debug tomorrow.

On Tue, Feb 27, 2024 at 12:16 AM Khem Raj <raj.khem@gmail.com> wrote:
>
> I am seeing some build failures which seems to be related to this patch
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/88/builds/3657/steps/15/logs/stdio
>
>  |   File "/home/pokybuild/yocto-worker/meta-oe/build/build/tmp/work/core2-64-poky-linux/gattlib/0.2+git/recipe-sysroot-native/usr/share/glib-2.0/codegen/utils.py",
> line 22, in <module>
>     |     import packaging.version
>     | ModuleNotFoundError: No module named 'packaging'
>
>
>
>   |   File "/home/pokybuild/yocto-worker/meta-oe/build/build/tmp/work/core2-64-poky-linux/networkmanager-fortisslvpn/1.4.0/recipe-sysroot-native/usr/share/glib-2.0/codegen/utils.py",
> line 22, in <module>
>     |     import packaging.version
>     | ModuleNotFoundError: No module named 'packaging'
>     | make: *** [Makefile:2081: src/nm-fortisslvpn-pppd-service-dbus.h] Error 1
>
>
> On Sun, Feb 25, 2024 at 1:37 AM Martin Jansa <martin.jansa@gmail.com> wrote:
> >
> > * to fix build on hosts with python-3.12, now it fails with:
> >
> > Traceback (most recent call last):
> >   File "recipe-sysroot-native/usr/bin/gdbus-codegen", line 53, in <module>
> >     from codegen import codegen_main
> >   File "recipe-sysroot-native/usr/share/glib-2.0/codegen/codegen_main.py", line 29, in <module>
> >     from . import dbustypes
> >   File "recipe-sysroot-native/usr/share/glib-2.0/codegen/dbustypes.py", line 22, in <module>
> >     from . import utils
> >   File "recipe-sysroot-native/usr/share/glib-2.0/codegen/utils.py", line 22, in <module>
> >     import distutils.version
> > ModuleNotFoundError: No module named 'distutils'
> > CMake Error at CMakeLists.txt:90 (message):
> >   Error in generating code for connman interface using gdbus-codegen
> >
> > Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
> > ---
> >  ...deprecated-distutils-module-to-the-p.patch | 34 +++++++++++++++++++
> >  meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb |  1 +
> >  meta/recipes-core/glib-2.0/glib.inc           |  4 +--
> >  3 files changed, 36 insertions(+), 3 deletions(-)
> >  create mode 100644 meta/recipes-core/glib-2.0/glib-2.0/0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch
> >
> > diff --git a/meta/recipes-core/glib-2.0/glib-2.0/0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch b/meta/recipes-core/glib-2.0/glib-2.0/0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch
> > new file mode 100644
> > index 0000000000..50368ed22c
> > --- /dev/null
> > +++ b/meta/recipes-core/glib-2.0/glib-2.0/0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch
> > @@ -0,0 +1,34 @@
> > +From 05f0674c93d94fe6b29c1b707980aac469ddcd72 Mon Sep 17 00:00:00 2001
> > +From: Jordan Williams <jordan@jwillikers.com>
> > +Date: Fri, 1 Dec 2023 09:53:50 -0600
> > +Subject: [PATCH] Switch from the deprecated distutils module to the packaging
> > + module
> > +
> > +The distutils module was removed in Python 3.12.
> > +
> > +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/6ef967a0f930ce37a8c9b5aff969693b34714291]
> > +
> > +Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
> > +---
> > + gio/gdbus-2.0/codegen/utils.py | 4 ++--
> > + 1 file changed, 2 insertions(+), 2 deletions(-)
> > +
> > +diff --git a/gio/gdbus-2.0/codegen/utils.py b/gio/gdbus-2.0/codegen/utils.py
> > +index 0204610..08f1ba9 100644
> > +--- a/gio/gdbus-2.0/codegen/utils.py
> > ++++ b/gio/gdbus-2.0/codegen/utils.py
> > +@@ -19,7 +19,7 @@
> > + #
> > + # Author: David Zeuthen <davidz@redhat.com>
> > +
> > +-import distutils.version
> > ++import packaging.version
> > + import os
> > + import sys
> > +
> > +@@ -166,4 +166,4 @@ def version_cmp_key(key):
> > +         v = str(key[0])
> > +     else:
> > +         v = "0"
> > +-    return (distutils.version.LooseVersion(v), key[1])
> > ++    return (packaging.version.Version(v), key[1])
> > diff --git a/meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb b/meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb
> > index 42814ba544..6c3e99c641 100644
> > --- a/meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb
> > +++ b/meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb
> > @@ -14,6 +14,7 @@ SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \
> >             file://0001-Do-not-write-bindir-into-pkg-config-files.patch \
> >             file://0001-meson-Run-atomics-test-on-clang-as-well.patch \
> >             file://0001-gio-tests-resources.c-comment-out-a-build-host-only-.patch \
> > +           file://0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch \
> >             file://memory-monitor.patch \
> >             file://native-gtkdoc.patch \
> >             "
> > diff --git a/meta/recipes-core/glib-2.0/glib.inc b/meta/recipes-core/glib-2.0/glib.inc
> > index 5a57549d85..fac8875d84 100644
> > --- a/meta/recipes-core/glib-2.0/glib.inc
> > +++ b/meta/recipes-core/glib-2.0/glib.inc
> > @@ -144,9 +144,7 @@ do_install:append:mingw32() {
> >          rm -f ${D}${bindir}/gtester-report
> >  }
> >
> > -# remove setuptools dependency when usage of distutils is dropped in
> > -# https://gitlab.gnome.org/GNOME/glib/-/blob/main/gio/gdbus-2.0/codegen/utils.py
> > -CODEGEN_PYTHON_RDEPENDS = "python3 python3-setuptools python3-xml"
> > +CODEGEN_PYTHON_RDEPENDS = "python3 python3-packaging python3-xml"
> >  CODEGEN_PYTHON_RDEPENDS:mingw32 = ""
> >
> >  RDEPENDS:${PN}-codegen += "${CODEGEN_PYTHON_RDEPENDS}"
> > --
> > 2.43.2
> >
> >
> > -=-=-=-=-=-=-=-=-=-=-=-
> > Links: You receive all messages sent to this group.
> > View/Reply Online (#196136): https://lists.openembedded.org/g/openembedded-core/message/196136
> > Mute This Topic: https://lists.openembedded.org/mt/104560766/1997914
> > Group Owner: openembedded-core+owner@lists.openembedded.org
> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com]
> > -=-=-=-=-=-=-=-=-=-=-=-
> >
Martin Jansa Feb. 27, 2024, 11:39 a.m. UTC | #3
Yes, it was reproducible on my host gentoo after removing distutils
with dev-python/setuptools (and for updated glib-2.0-native after
removing dev-python/packaging)

Fixes sent:
https://patchwork.yoctoproject.org/project/oe/patch/20240227113711.834767-1-martin.jansa@gmail.com/
https://patchwork.yoctoproject.org/project/oe/patch/20240227113711.834767-2-martin.jansa@gmail.com/

Cheers,

On Tue, Feb 27, 2024 at 12:58 AM Martin Jansa via
lists.openembedded.org <martin.jansa=gmail.com@lists.openembedded.org>
wrote:
>
> Thanks Khem, will try to reproduce tomorrow. Maybe these don't use
> CODEGEN_PYTHON_RDEPENDS.
>
> With this patch backported to kirkstone I've seen glib-2.0-native
> failing with the same issue as python3native there doesn't include
> python3-packaging.
>
> Maybe these recipes aren't using python3native and were depending on
> packaging from host, will debug tomorrow.
>
> On Tue, Feb 27, 2024 at 12:16 AM Khem Raj <raj.khem@gmail.com> wrote:
> >
> > I am seeing some build failures which seems to be related to this patch
> >
> > https://autobuilder.yoctoproject.org/typhoon/#/builders/88/builds/3657/steps/15/logs/stdio
> >
> >  |   File "/home/pokybuild/yocto-worker/meta-oe/build/build/tmp/work/core2-64-poky-linux/gattlib/0.2+git/recipe-sysroot-native/usr/share/glib-2.0/codegen/utils.py",
> > line 22, in <module>
> >     |     import packaging.version
> >     | ModuleNotFoundError: No module named 'packaging'
> >
> >
> >
> >   |   File "/home/pokybuild/yocto-worker/meta-oe/build/build/tmp/work/core2-64-poky-linux/networkmanager-fortisslvpn/1.4.0/recipe-sysroot-native/usr/share/glib-2.0/codegen/utils.py",
> > line 22, in <module>
> >     |     import packaging.version
> >     | ModuleNotFoundError: No module named 'packaging'
> >     | make: *** [Makefile:2081: src/nm-fortisslvpn-pppd-service-dbus.h] Error 1
> >
> >
> > On Sun, Feb 25, 2024 at 1:37 AM Martin Jansa <martin.jansa@gmail.com> wrote:
> > >
> > > * to fix build on hosts with python-3.12, now it fails with:
> > >
> > > Traceback (most recent call last):
> > >   File "recipe-sysroot-native/usr/bin/gdbus-codegen", line 53, in <module>
> > >     from codegen import codegen_main
> > >   File "recipe-sysroot-native/usr/share/glib-2.0/codegen/codegen_main.py", line 29, in <module>
> > >     from . import dbustypes
> > >   File "recipe-sysroot-native/usr/share/glib-2.0/codegen/dbustypes.py", line 22, in <module>
> > >     from . import utils
> > >   File "recipe-sysroot-native/usr/share/glib-2.0/codegen/utils.py", line 22, in <module>
> > >     import distutils.version
> > > ModuleNotFoundError: No module named 'distutils'
> > > CMake Error at CMakeLists.txt:90 (message):
> > >   Error in generating code for connman interface using gdbus-codegen
> > >
> > > Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
> > > ---
> > >  ...deprecated-distutils-module-to-the-p.patch | 34 +++++++++++++++++++
> > >  meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb |  1 +
> > >  meta/recipes-core/glib-2.0/glib.inc           |  4 +--
> > >  3 files changed, 36 insertions(+), 3 deletions(-)
> > >  create mode 100644 meta/recipes-core/glib-2.0/glib-2.0/0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch
> > >
> > > diff --git a/meta/recipes-core/glib-2.0/glib-2.0/0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch b/meta/recipes-core/glib-2.0/glib-2.0/0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch
> > > new file mode 100644
> > > index 0000000000..50368ed22c
> > > --- /dev/null
> > > +++ b/meta/recipes-core/glib-2.0/glib-2.0/0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch
> > > @@ -0,0 +1,34 @@
> > > +From 05f0674c93d94fe6b29c1b707980aac469ddcd72 Mon Sep 17 00:00:00 2001
> > > +From: Jordan Williams <jordan@jwillikers.com>
> > > +Date: Fri, 1 Dec 2023 09:53:50 -0600
> > > +Subject: [PATCH] Switch from the deprecated distutils module to the packaging
> > > + module
> > > +
> > > +The distutils module was removed in Python 3.12.
> > > +
> > > +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/6ef967a0f930ce37a8c9b5aff969693b34714291]
> > > +
> > > +Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
> > > +---
> > > + gio/gdbus-2.0/codegen/utils.py | 4 ++--
> > > + 1 file changed, 2 insertions(+), 2 deletions(-)
> > > +
> > > +diff --git a/gio/gdbus-2.0/codegen/utils.py b/gio/gdbus-2.0/codegen/utils.py
> > > +index 0204610..08f1ba9 100644
> > > +--- a/gio/gdbus-2.0/codegen/utils.py
> > > ++++ b/gio/gdbus-2.0/codegen/utils.py
> > > +@@ -19,7 +19,7 @@
> > > + #
> > > + # Author: David Zeuthen <davidz@redhat.com>
> > > +
> > > +-import distutils.version
> > > ++import packaging.version
> > > + import os
> > > + import sys
> > > +
> > > +@@ -166,4 +166,4 @@ def version_cmp_key(key):
> > > +         v = str(key[0])
> > > +     else:
> > > +         v = "0"
> > > +-    return (distutils.version.LooseVersion(v), key[1])
> > > ++    return (packaging.version.Version(v), key[1])
> > > diff --git a/meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb b/meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb
> > > index 42814ba544..6c3e99c641 100644
> > > --- a/meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb
> > > +++ b/meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb
> > > @@ -14,6 +14,7 @@ SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \
> > >             file://0001-Do-not-write-bindir-into-pkg-config-files.patch \
> > >             file://0001-meson-Run-atomics-test-on-clang-as-well.patch \
> > >             file://0001-gio-tests-resources.c-comment-out-a-build-host-only-.patch \
> > > +           file://0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch \
> > >             file://memory-monitor.patch \
> > >             file://native-gtkdoc.patch \
> > >             "
> > > diff --git a/meta/recipes-core/glib-2.0/glib.inc b/meta/recipes-core/glib-2.0/glib.inc
> > > index 5a57549d85..fac8875d84 100644
> > > --- a/meta/recipes-core/glib-2.0/glib.inc
> > > +++ b/meta/recipes-core/glib-2.0/glib.inc
> > > @@ -144,9 +144,7 @@ do_install:append:mingw32() {
> > >          rm -f ${D}${bindir}/gtester-report
> > >  }
> > >
> > > -# remove setuptools dependency when usage of distutils is dropped in
> > > -# https://gitlab.gnome.org/GNOME/glib/-/blob/main/gio/gdbus-2.0/codegen/utils.py
> > > -CODEGEN_PYTHON_RDEPENDS = "python3 python3-setuptools python3-xml"
> > > +CODEGEN_PYTHON_RDEPENDS = "python3 python3-packaging python3-xml"
> > >  CODEGEN_PYTHON_RDEPENDS:mingw32 = ""
> > >
> > >  RDEPENDS:${PN}-codegen += "${CODEGEN_PYTHON_RDEPENDS}"
> > > --
> > > 2.43.2
> > >
> > >
> > >
> > >
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#196235): https://lists.openembedded.org/g/openembedded-core/message/196235
> Mute This Topic: https://lists.openembedded.org/mt/104560766/3617156
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [martin.jansa@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Khem Raj Feb. 28, 2024, 6:30 p.m. UTC | #4
some more failures in meta-openembedded layers ( meta-xfce)

https://errors.yoctoproject.org/Errors/Details/754995/
https://errors.yoctoproject.org/Errors/Details/754996/

On Tue, Feb 27, 2024 at 3:39 AM Martin Jansa <martin.jansa@gmail.com> wrote:
>
> Yes, it was reproducible on my host gentoo after removing distutils
> with dev-python/setuptools (and for updated glib-2.0-native after
> removing dev-python/packaging)
>
> Fixes sent:
> https://patchwork.yoctoproject.org/project/oe/patch/20240227113711.834767-1-martin.jansa@gmail.com/
> https://patchwork.yoctoproject.org/project/oe/patch/20240227113711.834767-2-martin.jansa@gmail.com/
>
> Cheers,
>
> On Tue, Feb 27, 2024 at 12:58 AM Martin Jansa via
> lists.openembedded.org <martin.jansa=gmail.com@lists.openembedded.org>
> wrote:
> >
> > Thanks Khem, will try to reproduce tomorrow. Maybe these don't use
> > CODEGEN_PYTHON_RDEPENDS.
> >
> > With this patch backported to kirkstone I've seen glib-2.0-native
> > failing with the same issue as python3native there doesn't include
> > python3-packaging.
> >
> > Maybe these recipes aren't using python3native and were depending on
> > packaging from host, will debug tomorrow.
> >
> > On Tue, Feb 27, 2024 at 12:16 AM Khem Raj <raj.khem@gmail.com> wrote:
> > >
> > > I am seeing some build failures which seems to be related to this patch
> > >
> > > https://autobuilder.yoctoproject.org/typhoon/#/builders/88/builds/3657/steps/15/logs/stdio
> > >
> > >  |   File "/home/pokybuild/yocto-worker/meta-oe/build/build/tmp/work/core2-64-poky-linux/gattlib/0.2+git/recipe-sysroot-native/usr/share/glib-2.0/codegen/utils.py",
> > > line 22, in <module>
> > >     |     import packaging.version
> > >     | ModuleNotFoundError: No module named 'packaging'
> > >
> > >
> > >
> > >   |   File "/home/pokybuild/yocto-worker/meta-oe/build/build/tmp/work/core2-64-poky-linux/networkmanager-fortisslvpn/1.4.0/recipe-sysroot-native/usr/share/glib-2.0/codegen/utils.py",
> > > line 22, in <module>
> > >     |     import packaging.version
> > >     | ModuleNotFoundError: No module named 'packaging'
> > >     | make: *** [Makefile:2081: src/nm-fortisslvpn-pppd-service-dbus.h] Error 1
> > >
> > >
> > > On Sun, Feb 25, 2024 at 1:37 AM Martin Jansa <martin.jansa@gmail.com> wrote:
> > > >
> > > > * to fix build on hosts with python-3.12, now it fails with:
> > > >
> > > > Traceback (most recent call last):
> > > >   File "recipe-sysroot-native/usr/bin/gdbus-codegen", line 53, in <module>
> > > >     from codegen import codegen_main
> > > >   File "recipe-sysroot-native/usr/share/glib-2.0/codegen/codegen_main.py", line 29, in <module>
> > > >     from . import dbustypes
> > > >   File "recipe-sysroot-native/usr/share/glib-2.0/codegen/dbustypes.py", line 22, in <module>
> > > >     from . import utils
> > > >   File "recipe-sysroot-native/usr/share/glib-2.0/codegen/utils.py", line 22, in <module>
> > > >     import distutils.version
> > > > ModuleNotFoundError: No module named 'distutils'
> > > > CMake Error at CMakeLists.txt:90 (message):
> > > >   Error in generating code for connman interface using gdbus-codegen
> > > >
> > > > Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
> > > > ---
> > > >  ...deprecated-distutils-module-to-the-p.patch | 34 +++++++++++++++++++
> > > >  meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb |  1 +
> > > >  meta/recipes-core/glib-2.0/glib.inc           |  4 +--
> > > >  3 files changed, 36 insertions(+), 3 deletions(-)
> > > >  create mode 100644 meta/recipes-core/glib-2.0/glib-2.0/0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch
> > > >
> > > > diff --git a/meta/recipes-core/glib-2.0/glib-2.0/0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch b/meta/recipes-core/glib-2.0/glib-2.0/0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch
> > > > new file mode 100644
> > > > index 0000000000..50368ed22c
> > > > --- /dev/null
> > > > +++ b/meta/recipes-core/glib-2.0/glib-2.0/0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch
> > > > @@ -0,0 +1,34 @@
> > > > +From 05f0674c93d94fe6b29c1b707980aac469ddcd72 Mon Sep 17 00:00:00 2001
> > > > +From: Jordan Williams <jordan@jwillikers.com>
> > > > +Date: Fri, 1 Dec 2023 09:53:50 -0600
> > > > +Subject: [PATCH] Switch from the deprecated distutils module to the packaging
> > > > + module
> > > > +
> > > > +The distutils module was removed in Python 3.12.
> > > > +
> > > > +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/6ef967a0f930ce37a8c9b5aff969693b34714291]
> > > > +
> > > > +Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
> > > > +---
> > > > + gio/gdbus-2.0/codegen/utils.py | 4 ++--
> > > > + 1 file changed, 2 insertions(+), 2 deletions(-)
> > > > +
> > > > +diff --git a/gio/gdbus-2.0/codegen/utils.py b/gio/gdbus-2.0/codegen/utils.py
> > > > +index 0204610..08f1ba9 100644
> > > > +--- a/gio/gdbus-2.0/codegen/utils.py
> > > > ++++ b/gio/gdbus-2.0/codegen/utils.py
> > > > +@@ -19,7 +19,7 @@
> > > > + #
> > > > + # Author: David Zeuthen <davidz@redhat.com>
> > > > +
> > > > +-import distutils.version
> > > > ++import packaging.version
> > > > + import os
> > > > + import sys
> > > > +
> > > > +@@ -166,4 +166,4 @@ def version_cmp_key(key):
> > > > +         v = str(key[0])
> > > > +     else:
> > > > +         v = "0"
> > > > +-    return (distutils.version.LooseVersion(v), key[1])
> > > > ++    return (packaging.version.Version(v), key[1])
> > > > diff --git a/meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb b/meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb
> > > > index 42814ba544..6c3e99c641 100644
> > > > --- a/meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb
> > > > +++ b/meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb
> > > > @@ -14,6 +14,7 @@ SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \
> > > >             file://0001-Do-not-write-bindir-into-pkg-config-files.patch \
> > > >             file://0001-meson-Run-atomics-test-on-clang-as-well.patch \
> > > >             file://0001-gio-tests-resources.c-comment-out-a-build-host-only-.patch \
> > > > +           file://0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch \
> > > >             file://memory-monitor.patch \
> > > >             file://native-gtkdoc.patch \
> > > >             "
> > > > diff --git a/meta/recipes-core/glib-2.0/glib.inc b/meta/recipes-core/glib-2.0/glib.inc
> > > > index 5a57549d85..fac8875d84 100644
> > > > --- a/meta/recipes-core/glib-2.0/glib.inc
> > > > +++ b/meta/recipes-core/glib-2.0/glib.inc
> > > > @@ -144,9 +144,7 @@ do_install:append:mingw32() {
> > > >          rm -f ${D}${bindir}/gtester-report
> > > >  }
> > > >
> > > > -# remove setuptools dependency when usage of distutils is dropped in
> > > > -# https://gitlab.gnome.org/GNOME/glib/-/blob/main/gio/gdbus-2.0/codegen/utils.py
> > > > -CODEGEN_PYTHON_RDEPENDS = "python3 python3-setuptools python3-xml"
> > > > +CODEGEN_PYTHON_RDEPENDS = "python3 python3-packaging python3-xml"
> > > >  CODEGEN_PYTHON_RDEPENDS:mingw32 = ""
> > > >
> > > >  RDEPENDS:${PN}-codegen += "${CODEGEN_PYTHON_RDEPENDS}"
> > > > --
> > > > 2.43.2
> > > >
> > > >
> > > >
> > > >
> >
> > -=-=-=-=-=-=-=-=-=-=-=-
> > Links: You receive all messages sent to this group.
> > View/Reply Online (#196235): https://lists.openembedded.org/g/openembedded-core/message/196235
> > Mute This Topic: https://lists.openembedded.org/mt/104560766/3617156
> > Group Owner: openembedded-core+owner@lists.openembedded.org
> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [martin.jansa@gmail.com]
> > -=-=-=-=-=-=-=-=-=-=-=-
> >
Peter Kjellerstedt March 7, 2024, 3:48 p.m. UTC | #5
> -----Original Message-----
> From: openembedded-core@lists.openembedded.org <openembedded-
> core@lists.openembedded.org> On Behalf Of Khem Raj
> Sent: den 28 februari 2024 19:30
> To: Martin Jansa <martin.jansa@gmail.com>
> Cc: openembedded-core@lists.openembedded.org
> Subject: Re: [OE-core] [PATCH] glib-2.0: backport a switch from distutils
> to packaging in codegen
> 
> some more failures in meta-openembedded layers ( meta-xfce)
> 
> https://errors.yoctoproject.org/Errors/Details/754995/
> https://errors.yoctoproject.org/Errors/Details/754996/
> 
> On Tue, Feb 27, 2024 at 3:39 AM Martin Jansa <martin.jansa@gmail.com>
> wrote:
> >
> > Yes, it was reproducible on my host gentoo after removing distutils
> > with dev-python/setuptools (and for updated glib-2.0-native after
> > removing dev-python/packaging)
> >
> > Fixes sent:
> > https://patchwork.yoctoproject.org/project/oe/patch/20240227113711.834767-1-martin.jansa@gmail.com/
> > https://patchwork.yoctoproject.org/project/oe/patch/20240227113711.834767-2-martin.jansa@gmail.com/
> >
> > Cheers,
> >
> > On Tue, Feb 27, 2024 at 12:58 AM Martin Jansa via
> > lists.openembedded.org <martin.jansa=gmail.com@lists.openembedded.org>
> > wrote:
> > >
> > > Thanks Khem, will try to reproduce tomorrow. Maybe these don't use
> > > CODEGEN_PYTHON_RDEPENDS.
> > >
> > > With this patch backported to kirkstone I've seen glib-2.0-native
> > > failing with the same issue as python3native there doesn't include
> > > python3-packaging.
> > >
> > > Maybe these recipes aren't using python3native and were depending on
> > > packaging from host, will debug tomorrow.
> > >
> > > On Tue, Feb 27, 2024 at 12:16 AM Khem Raj <raj.khem@gmail.com> wrote:
> > > >
> > > > I am seeing some build failures which seems to be related to this
> > > > patch
> > > >
> > > > https://autobuilder.yoctoproject.org/typhoon/#/builders/88/builds/3657/steps/15/logs/stdio
> > > >
> > > >  |   File "/home/pokybuild/yocto-worker/meta-oe/build/build/tmp/work/core2-64-poky-linux/gattlib/0.2+git/recipe-sysroot-native/usr/share/glib-2.0/codegen/utils.py", line 22, in <module>
> > > >     |     import packaging.version
> > > >     | ModuleNotFoundError: No module named 'packaging'
> > > >
> > > >
> > > >
> > > >   |   File "/home/pokybuild/yocto-worker/meta-oe/build/build/tmp/work/core2-64-poky-linux/networkmanager-fortisslvpn/1.4.0/recipe-sysroot-native/usr/share/glib-2.0/codegen/utils.py", line 22, in <module>
> > > >     |     import packaging.version
> > > >     | ModuleNotFoundError: No module named 'packaging'
> > > >     | make: *** [Makefile:2081: src/nm-fortisslvpn-pppd-service-dbus.h] Error 1

We have a lot of recipes that use gdbus-codegen and are now facing this 
problem. To solve it, I have added a gdbus-codegen.bbclass that does:

DEPENDS:append = " glib-2.0-native python3-packaging-native"

inherit python3native

This adds the dependencies needed to use gdbus-codegen, and is similar 
in spirit to pkgconfig.bbclass, which adds the dependencies needed to use 
pkg-config.

I can send a patch to add it to either meta or meta-oe if it sounds 
like this is something that would be useful to others.

//Peter
Alexander Kanavin March 7, 2024, 4:10 p.m. UTC | #6
On Thu, 7 Mar 2024 at 16:49, Peter Kjellerstedt
<peter.kjellerstedt@axis.com> wrote:

> We have a lot of recipes that use gdbus-codegen and are now facing this
> problem. To solve it, I have added a gdbus-codegen.bbclass that does:
>
> DEPENDS:append = " glib-2.0-native python3-packaging-native"
>
> inherit python3native
>
> This adds the dependencies needed to use gdbus-codegen, and is similar
> in spirit to pkgconfig.bbclass, which adds the dependencies needed to use
> pkg-config.
>
> I can send a patch to add it to either meta or meta-oe if it sounds
> like this is something that would be useful to others.

I wonder if instead of a class, this can be solved by tweaking
RDEPENDS of glib recipe (perhaps with a class-native override), so
that python3-packaging is pulled in through that, and no special
dependencies are needed, other than glib-2.0-native.

Alex
Peter Kjellerstedt March 7, 2024, 4:48 p.m. UTC | #7
> -----Original Message-----
> From: openembedded-core@lists.openembedded.org <openembedded-
> core@lists.openembedded.org> On Behalf Of Alexander Kanavin
> Sent: den 7 mars 2024 17:11
> To: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
> Cc: Khem Raj <raj.khem@gmail.com>; Martin Jansa <martin.jansa@gmail.com>;
> openembedded-core@lists.openembedded.org
> Subject: Re: [OE-core] [PATCH] glib-2.0: backport a switch from distutils
> to packaging in codegen
> 
> On Thu, 7 Mar 2024 at 16:49, Peter Kjellerstedt
> <peter.kjellerstedt@axis.com> wrote:
> 
> > We have a lot of recipes that use gdbus-codegen and are now facing this
> > problem. To solve it, I have added a gdbus-codegen.bbclass that does:
> >
> > DEPENDS:append = " glib-2.0-native python3-packaging-native"
> >
> > inherit python3native
> >
> > This adds the dependencies needed to use gdbus-codegen, and is similar
> > in spirit to pkgconfig.bbclass, which adds the dependencies needed to use
> > pkg-config.
> >
> > I can send a patch to add it to either meta or meta-oe if it sounds
> > like this is something that would be useful to others.
> 
> I wonder if instead of a class, this can be solved by tweaking
> RDEPENDS of glib recipe (perhaps with a class-native override), so
> that python3-packaging is pulled in through that, and no special
> dependencies are needed, other than glib-2.0-native.
> 
> Alex

The problem is the need to inherit python3native. Without it, the host 
packages are used...

//Peter
Martin Jansa March 7, 2024, 4:51 p.m. UTC | #8
On Thu, Mar 7, 2024 at 4:48 PM Peter Kjellerstedt
<peter.kjellerstedt@axis.com> wrote:
>
> We have a lot of recipes that use gdbus-codegen and are now facing this
> problem. To solve it, I have added a gdbus-codegen.bbclass that does:
>
> DEPENDS:append = " glib-2.0-native python3-packaging-native"
>
> inherit python3native
>
> This adds the dependencies needed to use gdbus-codegen, and is similar
> in spirit to pkgconfig.bbclass, which adds the dependencies needed to use
> pkg-config.
>
> I can send a patch to add it to either meta or meta-oe if it sounds
> like this is something that would be useful to others.

I was wondering about the same while changing this, there is already
CODEGEN_PYTHON_RDEPENDS = "python3 python3-packaging python3-xml"
CODEGEN_PYTHON_RDEPENDS:mingw32 = ""

RDEPENDS:${PN}-codegen += "${CODEGEN_PYTHON_RDEPENDS}"

but that won't apply the python3native inherit, unless moving this to
some gdbus-codegen.bbclass as you suggested.

I've already fixed all recipes in meta-oe and our internal layers so I
don't need this anymore, but agree it would be useful.

Regards,
diff mbox series

Patch

diff --git a/meta/recipes-core/glib-2.0/glib-2.0/0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch b/meta/recipes-core/glib-2.0/glib-2.0/0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch
new file mode 100644
index 0000000000..50368ed22c
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch
@@ -0,0 +1,34 @@ 
+From 05f0674c93d94fe6b29c1b707980aac469ddcd72 Mon Sep 17 00:00:00 2001
+From: Jordan Williams <jordan@jwillikers.com>
+Date: Fri, 1 Dec 2023 09:53:50 -0600
+Subject: [PATCH] Switch from the deprecated distutils module to the packaging
+ module
+
+The distutils module was removed in Python 3.12.
+
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/6ef967a0f930ce37a8c9b5aff969693b34714291]
+
+Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
+---
+ gio/gdbus-2.0/codegen/utils.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/gio/gdbus-2.0/codegen/utils.py b/gio/gdbus-2.0/codegen/utils.py
+index 0204610..08f1ba9 100644
+--- a/gio/gdbus-2.0/codegen/utils.py
++++ b/gio/gdbus-2.0/codegen/utils.py
+@@ -19,7 +19,7 @@
+ #
+ # Author: David Zeuthen <davidz@redhat.com>
+ 
+-import distutils.version
++import packaging.version
+ import os
+ import sys
+ 
+@@ -166,4 +166,4 @@ def version_cmp_key(key):
+         v = str(key[0])
+     else:
+         v = "0"
+-    return (distutils.version.LooseVersion(v), key[1])
++    return (packaging.version.Version(v), key[1])
diff --git a/meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb b/meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb
index 42814ba544..6c3e99c641 100644
--- a/meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb
+++ b/meta/recipes-core/glib-2.0/glib-2.0_2.78.3.bb
@@ -14,6 +14,7 @@  SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \
            file://0001-Do-not-write-bindir-into-pkg-config-files.patch \
            file://0001-meson-Run-atomics-test-on-clang-as-well.patch \
            file://0001-gio-tests-resources.c-comment-out-a-build-host-only-.patch \
+           file://0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch \
            file://memory-monitor.patch \
            file://native-gtkdoc.patch \
            "
diff --git a/meta/recipes-core/glib-2.0/glib.inc b/meta/recipes-core/glib-2.0/glib.inc
index 5a57549d85..fac8875d84 100644
--- a/meta/recipes-core/glib-2.0/glib.inc
+++ b/meta/recipes-core/glib-2.0/glib.inc
@@ -144,9 +144,7 @@  do_install:append:mingw32() {
         rm -f ${D}${bindir}/gtester-report
 }
 
-# remove setuptools dependency when usage of distutils is dropped in
-# https://gitlab.gnome.org/GNOME/glib/-/blob/main/gio/gdbus-2.0/codegen/utils.py
-CODEGEN_PYTHON_RDEPENDS = "python3 python3-setuptools python3-xml"
+CODEGEN_PYTHON_RDEPENDS = "python3 python3-packaging python3-xml"
 CODEGEN_PYTHON_RDEPENDS:mingw32 = ""
 
 RDEPENDS:${PN}-codegen += "${CODEGEN_PYTHON_RDEPENDS}"