From ee2f3b6de3bd263bc7340846fc92c96e329a087a Mon Sep 17 00:00:00 2001 From: sergio Date: Sat, 25 Jul 2026 00:44:02 -0400 Subject: [PATCH] =?UTF-8?q?gnome=20onda-1:=20py3-setuptools=20+=20destraba?= =?UTF-8?q?r=20los=202=20fallos=20de=20la=201=C2=AA=20molienda?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El worker molió la onda 1: gsettings-desktop-schemas SELLÓ (hash 4777231b reproducido exacto). Los otros 2 fallaron con causas limpias: - gobject-introspection: meson.build:29 exige `python3 (setuptools)` importable (instala giscanner como paquete python); el python3 del rootfs no lo trae. Fix: receta py3-setuptools (puro-python, copia a site-packages, sin pip ni red — espejo de meson.toml) + declararla en [deps].build. - gnome-desktop: sub-declaré gsettings-desktop-schemas (schemas_dep en meson:62); ya sellada ⇒ añadida a [deps].build. Avanza el diagnóstico al siguiente muro real (iso-codes / xkeyboard-config / libseccomp, frontera genuina de la receta). Co-Authored-By: Claude Opus 4.8 --- .../incoming-gnome-onda1/gnome-desktop.toml | 5 ++- .../gobject-introspection.toml | 4 ++- .../incoming-gnome-onda1/py3-setuptools.toml | 36 +++++++++++++++++++ recipes/incoming-gnome/gnome-desktop.toml | 5 ++- .../incoming-gnome/gobject-introspection.toml | 4 ++- recipes/incoming-gnome/py3-setuptools.toml | 36 +++++++++++++++++++ 6 files changed, 82 insertions(+), 8 deletions(-) create mode 100644 recipes/incoming-gnome-onda1/py3-setuptools.toml create mode 100644 recipes/incoming-gnome/py3-setuptools.toml diff --git a/recipes/incoming-gnome-onda1/gnome-desktop.toml b/recipes/incoming-gnome-onda1/gnome-desktop.toml index bde74a4e..e3b4fa81 100644 --- a/recipes/incoming-gnome-onda1/gnome-desktop.toml +++ b/recipes/incoming-gnome-onda1/gnome-desktop.toml @@ -31,8 +31,7 @@ install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson ins # deps = tools meson + gtk4 y su cierre .pc transitivo completo (static ⇒ pkg-config resuelve # Requires.private). libxkbcommon aporta xkbregistry (dep opcional, required:false en meson.build). # -# FRONTERA: gsettings-desktop-schemas sin receta — REQUERIDA (schemas_dep, sin opción que la apague). -# La autoran otros agentes hacia recipes/incoming-gnome/; añadir a [deps].build cuando aterrice. +# gsettings-desktop-schemas: REQUERIDA (schemas_dep) — YA sellada (b3:4777231b), en [deps].build. # FRONTERA: iso-codes sin receta — REQUERIDA (GnomeLanguage lee su prefix vía pkg-config). # FRONTERA: xkeyboard-config sin receta alcanzable — REQUERIDA (xkb_config_dep, lee xkb_base). Existe en # recipes/incoming-kde/ pero el resolver sólo mira incoming-gnome/ + recipes/ (no incoming-kde/): @@ -40,4 +39,4 @@ install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson ins # FRONTERA: libseccomp sin receta — REQUERIDA INCONDICIONAL en linux (sandbox bwrap+seccomp del # thumbnailer; no hay opción meson para desactivarla). [deps] -build = ["meson", "samurai", "python3", "pkgconf", "gtk4", "glib", "gdk-pixbuf", "fontconfig", "libxkbcommon", "cairo", "pango", "graphene", "libepoxy", "wayland", "wayland-protocols", "libdrm", "harfbuzz", "fribidi", "libpng", "pixman", "freetype", "expat", "libffi", "pcre2", "zlib", "libjpeg-turbo", "libtiff", "mesa"] +build = ["meson", "samurai", "python3", "pkgconf", "gsettings-desktop-schemas", "gtk4", "glib", "gdk-pixbuf", "fontconfig", "libxkbcommon", "cairo", "pango", "graphene", "libepoxy", "wayland", "wayland-protocols", "libdrm", "harfbuzz", "fribidi", "libpng", "pixman", "freetype", "expat", "libffi", "pcre2", "zlib", "libjpeg-turbo", "libtiff", "mesa"] diff --git a/recipes/incoming-gnome-onda1/gobject-introspection.toml b/recipes/incoming-gnome-onda1/gobject-introspection.toml index 17314f23..737d667c 100644 --- a/recipes/incoming-gnome-onda1/gobject-introspection.toml +++ b/recipes/incoming-gnome-onda1/gobject-introspection.toml @@ -32,5 +32,7 @@ install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson ins [deps] # glib + su cierre .pc estático (pkgconf resuelve Requires.private: pcre2, zlib, libffi). # flex/bison: el parser de anotaciones del scanner. libffi: además lo enlaza el dumper. -build = ["meson", "samurai", "python3", "pkgconf", "flex", "bison", "glib", "libffi", "pcre2", "zlib"] +# py3-setuptools: meson.build:29 exige `python3 (setuptools)` importable (instala giscanner como +# paquete python) — el python3 del rootfs NO trae setuptools; se lo damos como módulo sellado. +build = ["meson", "samurai", "python3", "py3-setuptools", "pkgconf", "flex", "bison", "glib", "libffi", "pcre2", "zlib"] # FRONTERA: cairo omitida a propósito (-Dcairo=disabled) — feature-minimal, evita el typelib Cairo-1.0. diff --git a/recipes/incoming-gnome-onda1/py3-setuptools.toml b/recipes/incoming-gnome-onda1/py3-setuptools.toml new file mode 100644 index 00000000..f556f544 --- /dev/null +++ b/recipes/incoming-gnome-onda1/py3-setuptools.toml @@ -0,0 +1,36 @@ +# py3-setuptools 75.8.2 — setuptools como MÓDULO importable de python3, para las recetas cuyo +# meson.build exige `python3 (setuptools)` (gobject-introspection:29, y todo el stack GUI-python +# que instala giscanner/entry-points). Python PURO: no se compila, se COPIA a site-packages. +# +# Mismo patrón que meson.toml: hammer evita el camino wheel/pip/gpep517 de Alpine (recetas que no +# tiene); la fuente ES el árbol Python sellado y se instala copiando los paquetes tal cual. Hermético +# (sin pip ni red). El `.pth` de precedencia de distutils replica lo que hace `pip install setuptools` +# para que `_distutils_hack` se active y setuptools gane sobre el distutils del stdlib. +name = "py3-setuptools" +version = "75.8.2" + +[source] +tarball = "https://files.pythonhosted.org/packages/source/s/setuptools/setuptools-75.8.2.tar.gz" +sha256 = "4880473a969e5f23f2a2be3646b2dfd84af9028716d398e46192f84bc36900d2" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" + +[build.phases] +# Python puro: nada que compilar. +compile = "true" +install = ''' +set -e +SP=/out/usr/lib/python3.12/site-packages +mkdir -p "$SP" +cp -r setuptools pkg_resources _distutils_hack "$SP/" +# Replica el distutils-precedence.pth de pip: activa el shim que da precedencia a setuptools. +printf '%s\n' "import os; var = 'SETUPTOOLS_USE_DISTUTILS'; enabled = os.environ.get(var, 'local') == 'local'; enabled and __import__('_distutils_hack').add_shim();" \ + > "$SP/distutils-precedence.pth" +''' + +# python3 es dep de RUNTIME (lo importa quien use setuptools como build-dep). +[deps] +runtime = ["python3"] diff --git a/recipes/incoming-gnome/gnome-desktop.toml b/recipes/incoming-gnome/gnome-desktop.toml index bde74a4e..e3b4fa81 100644 --- a/recipes/incoming-gnome/gnome-desktop.toml +++ b/recipes/incoming-gnome/gnome-desktop.toml @@ -31,8 +31,7 @@ install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson ins # deps = tools meson + gtk4 y su cierre .pc transitivo completo (static ⇒ pkg-config resuelve # Requires.private). libxkbcommon aporta xkbregistry (dep opcional, required:false en meson.build). # -# FRONTERA: gsettings-desktop-schemas sin receta — REQUERIDA (schemas_dep, sin opción que la apague). -# La autoran otros agentes hacia recipes/incoming-gnome/; añadir a [deps].build cuando aterrice. +# gsettings-desktop-schemas: REQUERIDA (schemas_dep) — YA sellada (b3:4777231b), en [deps].build. # FRONTERA: iso-codes sin receta — REQUERIDA (GnomeLanguage lee su prefix vía pkg-config). # FRONTERA: xkeyboard-config sin receta alcanzable — REQUERIDA (xkb_config_dep, lee xkb_base). Existe en # recipes/incoming-kde/ pero el resolver sólo mira incoming-gnome/ + recipes/ (no incoming-kde/): @@ -40,4 +39,4 @@ install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson ins # FRONTERA: libseccomp sin receta — REQUERIDA INCONDICIONAL en linux (sandbox bwrap+seccomp del # thumbnailer; no hay opción meson para desactivarla). [deps] -build = ["meson", "samurai", "python3", "pkgconf", "gtk4", "glib", "gdk-pixbuf", "fontconfig", "libxkbcommon", "cairo", "pango", "graphene", "libepoxy", "wayland", "wayland-protocols", "libdrm", "harfbuzz", "fribidi", "libpng", "pixman", "freetype", "expat", "libffi", "pcre2", "zlib", "libjpeg-turbo", "libtiff", "mesa"] +build = ["meson", "samurai", "python3", "pkgconf", "gsettings-desktop-schemas", "gtk4", "glib", "gdk-pixbuf", "fontconfig", "libxkbcommon", "cairo", "pango", "graphene", "libepoxy", "wayland", "wayland-protocols", "libdrm", "harfbuzz", "fribidi", "libpng", "pixman", "freetype", "expat", "libffi", "pcre2", "zlib", "libjpeg-turbo", "libtiff", "mesa"] diff --git a/recipes/incoming-gnome/gobject-introspection.toml b/recipes/incoming-gnome/gobject-introspection.toml index 17314f23..737d667c 100644 --- a/recipes/incoming-gnome/gobject-introspection.toml +++ b/recipes/incoming-gnome/gobject-introspection.toml @@ -32,5 +32,7 @@ install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson ins [deps] # glib + su cierre .pc estático (pkgconf resuelve Requires.private: pcre2, zlib, libffi). # flex/bison: el parser de anotaciones del scanner. libffi: además lo enlaza el dumper. -build = ["meson", "samurai", "python3", "pkgconf", "flex", "bison", "glib", "libffi", "pcre2", "zlib"] +# py3-setuptools: meson.build:29 exige `python3 (setuptools)` importable (instala giscanner como +# paquete python) — el python3 del rootfs NO trae setuptools; se lo damos como módulo sellado. +build = ["meson", "samurai", "python3", "py3-setuptools", "pkgconf", "flex", "bison", "glib", "libffi", "pcre2", "zlib"] # FRONTERA: cairo omitida a propósito (-Dcairo=disabled) — feature-minimal, evita el typelib Cairo-1.0. diff --git a/recipes/incoming-gnome/py3-setuptools.toml b/recipes/incoming-gnome/py3-setuptools.toml new file mode 100644 index 00000000..f556f544 --- /dev/null +++ b/recipes/incoming-gnome/py3-setuptools.toml @@ -0,0 +1,36 @@ +# py3-setuptools 75.8.2 — setuptools como MÓDULO importable de python3, para las recetas cuyo +# meson.build exige `python3 (setuptools)` (gobject-introspection:29, y todo el stack GUI-python +# que instala giscanner/entry-points). Python PURO: no se compila, se COPIA a site-packages. +# +# Mismo patrón que meson.toml: hammer evita el camino wheel/pip/gpep517 de Alpine (recetas que no +# tiene); la fuente ES el árbol Python sellado y se instala copiando los paquetes tal cual. Hermético +# (sin pip ni red). El `.pth` de precedencia de distutils replica lo que hace `pip install setuptools` +# para que `_distutils_hack` se active y setuptools gane sobre el distutils del stdlib. +name = "py3-setuptools" +version = "75.8.2" + +[source] +tarball = "https://files.pythonhosted.org/packages/source/s/setuptools/setuptools-75.8.2.tar.gz" +sha256 = "4880473a969e5f23f2a2be3646b2dfd84af9028716d398e46192f84bc36900d2" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" + +[build.phases] +# Python puro: nada que compilar. +compile = "true" +install = ''' +set -e +SP=/out/usr/lib/python3.12/site-packages +mkdir -p "$SP" +cp -r setuptools pkg_resources _distutils_hack "$SP/" +# Replica el distutils-precedence.pth de pip: activa el shim que da precedencia a setuptools. +printf '%s\n' "import os; var = 'SETUPTOOLS_USE_DISTUTILS'; enabled = os.environ.get(var, 'local') == 'local'; enabled and __import__('_distutils_hack').add_shim();" \ + > "$SP/distutils-precedence.pth" +''' + +# python3 es dep de RUNTIME (lo importa quien use setuptools como build-dep). +[deps] +runtime = ["python3"]