tawasuyu

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1572Shell 203Rust 109Markdown 993728 Definiciones

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>

ee2f3b6de3bd263bc7340846fc92c96e329a087a · por sergio · (hace 2 meses) · padre 5db4c6931 · ver el árbol en este commit

Delta semántico

Ninguna definición cambió: el cambio es de texto, documentación o datos.

6 archivos · +82 −8

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"]