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

⎇ 1ca210a311ecd2a8f8cd6db07b68853b34b27e99 recipes/wireguard-tools.toml TOML · 45 líneas · 2.6 KB Historia crudo

recetas: mold y wireguard-tools — `link = "static"` era una etiqueta, no un hecho f0614f679 · Sergio ·

1# wireguard-tools 1.0.20260223 — `wg` y `wg-quick`, el userland de WireGuard. C, Makefile a secas.
2#
3# ── POR QUÉ ENTRA ──────────────────────────────────────────────────────────────────────────────
4# El VPN ya está en el kernel (`CONFIG_WIREGUARD`, ver SDD 22); lo que faltaba era con qué
5# configurarlo. Sin esto una caja takana puede hablar WireGuard y no hay forma de decirle con quién.
6# Pesa dos binarios y un puñado de scripts.
7#
8# ── NO DEPENDE DE libmnl: LA TRAE ADENTRO ────────────────────────────────────────────────────
9# La primera versión de esta receta iba `link = "dynamic"` con `[deps] build = ["libmnl"]`, y el
10# razonamiento era razonable y FALSO: «wg enlaza libmnl, la libmnl canónica es --disable-static, en
11# el store no hay libmnl.a ⇒ dinámico». Lo desmintió el artefacto: `readelf -d wg` da **un solo
12# NEEDED, `libc.so`**, y los símbolos `mnl_*` están DEFINIDOS adentro. El porqué está escrito en la
13# fuente, en `src/netlink.h:1`:
14#
15#     /* This is a minimized version of libmnl meant to be #include'd */
16#
17# Upstream embebe el subconjunto de libmnl que usa, justamente para no arrastrar la dependencia.
18# ⇒ `link = "static"` y sin `libmnl` en `[deps]`. Declarar una dep que no se usa no es inocuo: ata
19# esta receta al hash de otra y hace que un rebuild de libmnl re-selle wireguard-tools para nada.
20#
21# ⚠ `wg-quick` es un script bash y pide `bash`, `ip` (iproute2) y `resolvconf`/`openresolv` en
22# RUNTIME. `wg` a secas no necesita nada de eso. Se declara lo que existe en el corpus; el día que
23# `wg-quick` falle por `ip`, el que falta es iproute2, no esta receta.
24name    = "wireguard-tools"
25version = "1.0.20260223"
26license = "GPL-2.0-only"
27
28[source]
29repo   = "https://git.zx2c4.com/wireguard-tools"
30commit = "49ce333da02056ae7b22ee2aeb6afe8aaed79b19"
31
32[build]
33compiler = "zig-cc"
34target   = "x86_64-linux-musl"
35link     = "static"
36
37[build.phases]
38# WITH_SYSTEMDUNITS=no: esta distro no tiene systemd (arje). WITH_BASHCOMPLETION/WITH_WGQUICK van
39# explícitos para que el paquete no cambie de contenido si upstream mueve un default.
40compile = 'make -C src WITH_WGQUICK=yes WITH_BASHCOMPLETION=yes WITH_SYSTEMDUNITS=no'
41install = 'make -C src DESTDIR=/out PREFIX=/usr WITH_WGQUICK=yes WITH_BASHCOMPLETION=yes WITH_SYSTEMDUNITS=no install'
42
43[deps]
44build   = ["pkgconf"]
45runtime = ["bash"]