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>
This commit is contained in:
2026-07-25 00:44:02 -04:00
co-authored by Claude Opus 4.8
parent 5db4c6931a
commit ee2f3b6de3
6 changed files with 82 additions and 8 deletions
@@ -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"]
@@ -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.
@@ -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"]
+2 -3
View File
@@ -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"]
@@ -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.
@@ -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"]