# CUPS 2.4.19 — el servidor de impresión. Es uno de los NUEVE pendientes de PUBLICABLE # (`docs/20-catalogo-publicable-y-completa.md`, punto 8: «cups y bluez»), no una app más. # # ── POR QUÉ ESTABA EN LA LISTA DE LANZAMIENTO Y NO EN LA DE APPS ────────────────────────────── # Una distro de escritorio que no imprime no es una distro de escritorio. No es un hueco de # catálogo (que se ve contando recetas) sino de CAPACIDAD (que sólo se ve usándola), que es la # familia de la que salieron `foot` y las fuentes: el perfil cerraba N/N y era inusable. # # ⚠ Y HAY UN SEGUNDO TRAMO QUE ESTA RECETA NO PAGA. `gtk3` del corpus está sellada con # `-Dprint_backends=file`: con cups instalado, una app GTK3 seguirá viendo un solo destino —«a # fichero»— hasta que gtk3 se re-selle con el backend de cups. Queda escrito acá porque es # exactamente el modo de fallo de esta distro: la pieza está, el sistema la ignora, y ninguna # métrica lo dice. Re-sellar gtk3 es su propia unidad de trabajo (arrastra firefox). # # ── TARBALL DE RELEASE, NO GIT ──────────────────────────────────────────────────────────────── # `cups-2.4.19-source.tar.gz` es un asset publicado por OpenPrinting y trae `configure`; el árbol # de git sólo tiene `configure.ac`. Y al no ser un `/archive/` generado al vuelo por la forge, su # sha256 no se mueve cuando GitHub actualice git/gzip (la trampa que documenta `foot`). # # ── LAS PERILLAS, TODAS LEÍDAS DEL `configure --help` DEL TARBALL PINEADO ───────────────────── # --with-dnssd=no no hay `avahi` en el catálogo. Sin esto el configure lo busca y lo toma del # sysroot del lab si lo encuentra — la fuga de siempre (el lab NO entra en # hash_inputs). Se apaga por declaración, no por ausencia. # --with-ondemand=no ni launchd ni systemd: el init es arje. # --disable-shared el lab exporta LDFLAGS=-static; construir un .so con eso no cierra. # --disable-acl `acl` está en el lab pero NO es receta del corpus. Misma razón que dnssd. # --with-tls=openssl la receta `openssl` del corpus; gnutls no está. # --enable-libusb impresoras USB. `libusb` SÍ es receta del corpus. name = "cups" version = "2.4.19" license = "Apache-2.0" [source] tarball = "https://github.com/OpenPrinting/cups/releases/download/v2.4.19/cups-2.4.19-source.tar.gz" sha256 = "820984b12a67f98705785aae2dd1347fe0ac097828001d4583ff64574aed6389" [build] compiler = "zig-cc" target = "x86_64-linux-musl" link = "static" [build.phases] # ⚠ EL `sed` NO ES UN REMIENDO, ES LA CONSECUENCIA DE `link = "static"`. El configure de cups # detecta que el compilador acepta `-fPIE` y mete `-fPIE -pie` en `ALL_LDFLAGS` —y SÓLO ahí: los # objetos de `libcups.a` se compilan sin PIC—, así que lld corta con # `relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC`. No se puede # apagar por flag (`@PIEFLAGS@` se sustituye dentro de Makedefs, no es una variable de make que # `make PIEFLAGS=` pueda pisar). Y un ejecutable PIE + `-static` exigiría `-static-pie`, que no es # lo que esta distro construye: o sea que quitarlo es lo CORRECTO acá, no un atajo. configure = './configure --build=$CBUILD --host=$CHOST --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with-rundir=/run/cups --with-tls=openssl --with-dnssd=no --with-ondemand=no --disable-shared --enable-static --disable-acl --enable-libusb --enable-pam --with-cups-user=lp --with-cups-group=lp && sed -i "s/-fPIE -pie//" Makedefs' compile = 'make' install = 'make BUILDROOT=/out install' # `cupsd` es un demonio de sistema: se declara como servicio (SDD 30) para que el PERFIL pueda # habilitarlo. Ojo con la lección del frente de servicios: que la receta lo declare NO lo enciende # — sin que el perfil lo habilite, el producto sale con cups instalado y sin nadie escuchando. [[service]] label = "cupsd" id = "01HQAR53D4M2NBV8KZTYXFQA29" exec = "/usr/sbin/cupsd -f" scope = "system" restart = { initial_ms = 500, max_ms = 20000 } [deps] build = ["zlib", "openssl", "linux-pam", "libusb", "pkgconf"]