gnome onda-1: py3-setuptools + destrabar los 2 fallos de la 1ª molienda
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 <noreply@anthropic.com>
Delta semántico
Ninguna definición cambió: el cambio es de texto, documentación o datos.
6 archivos · +82 −8
- recipes/incoming-gnome-onda1/gnome-desktop.toml +2 −3
- recipes/incoming-gnome-onda1/gobject-introspection.toml +3 −1
- recipes/incoming-gnome-onda1/py3-setuptools.toml +36 −0
- recipes/incoming-gnome/gnome-desktop.toml +2 −3
- recipes/incoming-gnome/gobject-introspection.toml +3 −1
- recipes/incoming-gnome/py3-setuptools.toml +36 −0
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"]