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