diff --git a/recipes/libnl.toml b/recipes/libnl.toml new file mode 100644 index 00000000..36299adf --- /dev/null +++ b/recipes/libnl.toml @@ -0,0 +1,31 @@ +# libnl 3.11.0 — librería netlink (base del stack WiFi del kernel metal). +# +# wpa_supplicant habla con el kernel (cfg80211/nl80211) vía netlink genérico; el driver `nl80211` de +# wpa_supplicant enlaza libnl-3 + libnl-genl-3 (pkg-config libnl-3.0/libnl-genl-3.0). Es la única forma +# de manejar iwlwifi (el viejo wext está muerto en kernels modernos). Sólo se usa para el WiFi del medio +# live en hardware real — no toca el camino del selfhost/QEMU. +# +# Autotools con parsers pre-generados en el tarball (no necesita flex/bison). Estático (.a) como openssl: +# evita el lío de nombres .so musl y deja que wpa_supplicant enlace en duro. $CBUILD/$CHOST los exporta +# el lab (Etapa G Fase 3). + +name = "libnl" +version = "3.11.0" + +[source] +tarball = "https://github.com/thom311/libnl/releases/download/libnl3_11_0/libnl-3.11.0.tar.gz" +sha256 = "2a56e1edefa3e68a7c00879496736fdbf62fc94ed3232c0baba127ecfa76874d" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" + +[deps] +# libnl 3.11 regenera sus parsers netlink ⇒ flex (lexer) + bison (parser) + m4 (bison lo invoca). +build = ["flex", "bison", "m4"] + +[build.phases] +configure = "./configure --build=$CBUILD --host=$CHOST --prefix=/usr --libdir=/usr/lib --disable-shared --enable-static --disable-cli" +compile = "make -j\"$(nproc)\"" +install = "make DESTDIR=/out install" diff --git a/recipes/wpa_supplicant.toml b/recipes/wpa_supplicant.toml new file mode 100644 index 00000000..447dfdf2 --- /dev/null +++ b/recipes/wpa_supplicant.toml @@ -0,0 +1,44 @@ +# wpa_supplicant 2.11 — supplicant WPA2 para asociar el WiFi del medio live al AP (kernel metal). +# +# El handshake WPA2 de 4 vías lo hace un supplicant en userspace; busybox NO lo trae. Habla con iwlwifi +# vía el driver nl80211 (netlink), que enlaza libnl-3/libnl-genl-3 (recipes/libnl.toml). DHCP lo da +# udhcpc de busybox (ya en el producto) una vez asociada la interfaz. +# +# Crypto: CONFIG_TLS=internal ⇒ NO depende de openssl (suficiente para WPA2-PSK, el WiFi de casa). Para +# WPA-Enterprise/EAP-TLS habría que pasar a CONFIG_TLS=openssl + dep openssl. Sólo medio live en metal. +# +# wpa_supplicant usa un build propio: un `.config` con CONFIG_* en el subdir wpa_supplicant/, luego make. +# Los binarios (wpa_supplicant/wpa_cli/wpa_passphrase) se copian a /usr/sbin (no `make install`). + +name = "wpa_supplicant" +version = "2.11" + +[source] +tarball = "https://w1.fi/releases/wpa_supplicant-2.11.tar.gz" +sha256 = "912ea06f74e30a8e36fbb68064d6cdff218d8d591db0fc5d75dee6c81ac7fc0a" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" + +[deps] +build = ["libnl"] + +[build.phases] +configure = ''' +cat > wpa_supplicant/.config <<'EOF' +CONFIG_DRIVER_NL80211=y +CONFIG_LIBNL32=y +CONFIG_CTRL_IFACE=y +CONFIG_CTRL_IFACE_UNIX=y +CONFIG_BACKEND=file +CONFIG_TLS=internal +CONFIG_INTERNAL_LIBTOMMATH=y +CONFIG_INTERNAL_LIBTOMMATH_FAST=y +CONFIG_IEEE8021X_EAPOL=y +CONFIG_PEERKEY=y +EOF +''' +compile = "cd wpa_supplicant && make -j\"$(nproc)\" wpa_supplicant wpa_cli wpa_passphrase" +install = "mkdir -p /out/usr/sbin && cd wpa_supplicant && cp wpa_supplicant wpa_cli wpa_passphrase /out/usr/sbin/"