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 Sutichaykuna

⎇ 7c794568a963b18b68d747959e6bbd07cf2ebff7 recipes/cups.toml TOML · 65 siq'ikuna · 4.3 KB Ñawpa willay ch'uya

receta: cups — el servidor de impresión, sellado (punto 8 de PUBLICABLE) 63eab86ef · Sergio ·

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