diff --git a/recipes/bluez.toml b/recipes/bluez.toml new file mode 100644 index 00000000..21c78752 --- /dev/null +++ b/recipes/bluez.toml @@ -0,0 +1,56 @@ +# BlueZ 5.87 — la pila Bluetooth de Linux (`bluetoothd` + `bluetoothctl`). El otro pendiente del +# punto 8 de PUBLICABLE, junto con `cups`. +# +# ── QUÉ ENTRA Y QUÉ NO, Y POR QUÉ ───────────────────────────────────────────────────────────── +# Todas las perillas salen del `configure --help` del tarball PINEADO, no de un APKBUILD ajeno: +# +# --disable-obex obexd (transferencia de ficheros) pide `libical`, y libical existe SÓLO en +# `incoming-gnome`. Una receta del corpus resuelve sibling-first y después el +# catálogo PADRE, **nunca una cola hermana** ⇒ desde acá no se alcanza. +# Encenderlo exigiría promover libical al corpus, que es otra unidad de +# trabajo. Se apaga por declaración para que el configure no la busque y la +# tome del sysroot del lab (el lab NO entra en `hash_inputs`). +# --disable-manpages las man pages se generan con `rst2man` (docutils, Python). No es receta. +# --disable-systemd el init es arje. +# --disable-udev sólo afecta a `hid2hci` y a las reglas; `bluetoothd` no lo necesita. +# --disable-cups el backend de impresión por Bluetooth. `cups` YA es receta del corpus, así +# que esto se puede encender — pero acopla las dos recetas y la primera +# versión de cada una conviene tenerla sellada por separado. Queda anotado +# como lo próximo, no como olvido. +# --disable-shared el lab exporta LDFLAGS=-static: un .so no cierra el enlace. +# +# ⚠ ESTO NO ENCIENDE EL BLUETOOTH DE NADIE. `bluetoothd` necesita el bus de sistema (dbus) vivo y +# el perfil que lo habilite (SDD 30), y el kernel con BT compilado. La receta es la pieza, no la +# capacidad — la distinción que este repo ya pagó con `foot` y con las fuentes. +name = "bluez" +version = "5.87" +license = "GPL-2.0-or-later AND LGPL-2.1-or-later" + +[source] +tarball = "https://www.kernel.org/pub/linux/bluetooth/bluez-5.87.tar.xz" +sha256 = "26bdcf2cebd7310c6f598850606b037ef0c515fe6608ebc54d22c50c4c32b35f" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" + +[build.phases] +configure = './configure --build=$CBUILD --host=$CHOST --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/lib --disable-shared --enable-static --enable-library --enable-threads --disable-systemd --disable-obex --disable-manpages --disable-cups --disable-udev --with-dbusconfdir=/usr/share' +compile = 'make' +install = 'make DESTDIR=/out install' + +[[service]] +label = "bluetoothd" +id = "01HQAR53D4M2NBV8KZTYXFQA2A" +exec = "/usr/lib/bluetooth/bluetoothd --nodetach" +scope = "system" +restart = { initial_ms = 500, max_ms = 20000 } + +# ⚠ `pcre2`/`libffi`/`zlib` NO son caprichos ni deps de bluez: son lo que pide el `.pc` de glib. +# Con `glib` a secas el configure corta con «Package 'libpcre2-8', required by 'glib-2.0', not +# found» — un enlace estático resuelve la cadena ENTERA en el punto de enlace, así que las +# transitivas de pkg-config hay que materializarlas igual. Es el mismo juego de cuatro que declaran +# cairo, appstream y adwaita-hello. `expat` entra por el `.pc` de dbus. +[deps] +build = ["glib", "dbus", "readline", "ncurses", "pkgconf", "pcre2", "libffi", "zlib", "expat"]