gioser

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

⎇ main recipes/kmod.toml TOML · 58 líneas · 3.5 KB Historia crudo

la cadena de udisks: un --version-script que lld no acepta y dos paquetes que publican el mismo fichero a809cb3b1 · Sergio ·

1# kmod 34 — la librería de módulos del kernel. Entra al catálogo por UNA razón concreta:
2# `libblockdev` la pide SIN perilla (`configure.ac:201`, `libkmod >= 19`), y sin libblockdev no hay
3# `udisks`, o sea que no hay «enchufo un USB y aparece» en ninguno de los cuatro escritorios.
4#
5# ── ⚠ ESTA RECETA PUBLICA LA LIBRERÍA Y NADA MÁS (`-Dtools=false`) ────────────────────────────
6# Y no es una poda de tamaño: **el kernel de esta distro se construye SIN módulos**. Medido en la
7# receta, no supuesto:
8#
9#     recipes/linux-generic.toml:69   scripts/config … -d MODULES
10#     recipes/linux-generic.toml:10   «Monolítico (MODULES off): arje-zero PID1 sin udev/modprobe»
11#
12# ⇒ `modprobe`, `insmod`, `rmmod` y `lsmod` no tendrían nada que cargar ni que listar. El censo de
13# busybox ya había llegado a la misma conclusión por su lado («kmod a BORRAR», paso 3 del plan). Lo
14# que sí hace falta es `libkmod.so`, porque libblockdev enlaza contra ella aunque en esta distro
15# nunca vaya a encontrar un módulo.
16#
17# Por la misma razón se apagan los cuatro descompresores y openssl: `-Dzstd/-Dxz/-Dzlib` descomprimen
18# módulos (`.ko.zst`, `.ko.xz`) y `-Dopenssl` verifica su firma. Sin módulos, los cinco son código
19# que no se ejecuta jamás. Las cinco librerías ESTÁN selladas en el corpus, así que encender
20# cualquiera el día que el kernel lleve módulos es una línea — y ese día habrá que encender también
21# `-Dtools=true`.
22#
23# `-Dmanpages=false`: las genera con `scdoc`, que no está en el catálogo.
24#
25# ── EL `sed` DEL `--version-script`: DOS ARGUMENTOS QUE GCC UNE Y LLD NO ──────────────────────
26#     [26/33] Linking target libkmod.so.2.5.1
27#     error: expected parameter after --version-script
28#
29# `meson.build:424` pasa el script de versiones de símbolos en DOS elementos separados:
30#
31#     link_args : ['-Wl,--version-script', meson.current_source_dir() / 'libkmod/libkmod.sym']
32#
33# Con gcc + GNU ld eso funciona por una costumbre vieja: el driver le pasa `--version-script` al
34# enlazador y la ruta se cuela detrás como fichero de entrada, y ld las asocia. **El lld de zig no
35# juega a eso**: ve la opción, no encuentra su parámetro pegado, y aborta.
36# El sed las une en la forma canónica `-Wl,--version-script,<ruta>`, que es un solo argumento y no
37# depende de en qué orden acabe la línea de enlace. No cambia lo que el script hace: `libkmod.sym`
38# se sigue aplicando, que es lo que mantiene ocultos los símbolos internos de la librería.
39name    = "kmod"
40version = "34"
41license = "LGPL-2.1-or-later"
42
43[source]
44tarball = "https://mirrors.edge.kernel.org/pub/linux/utils/kernel/kmod/kmod-34.tar.xz"
45sha256  = "12e7884484151fbd432b6a520170ea185c159f4393c7a2c2a886ab820313149a"
46
47[build]
48compiler = "zig-cc"
49target   = "x86_64-linux-musl"
50link     = "dynamic"
51
52[build.phases]
53configure = "sed -i \"s|'-Wl,--version-script', meson|'-Wl,--version-script,' + meson|\" meson.build && PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload -Ddefault_library=shared -Dtools=false -Dmanpages=false -Ddocs=false -Dbuild-tests=false -Dzstd=disabled -Dxz=disabled -Dzlib=disabled -Dopenssl=disabled -Dc_args=-Wno-error=date-time"
54compile   = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
55install   = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild"
56
57[deps]
58build = ["meson", "samurai", "python3", "pkgconf"]