# cosmic-edit — el editor de texto. **Cuarta aplicación con ventana** del catálogo, y la más barata # de las cuatro: su árbol de dependencias ya está compilado entero. Depende de `cosmic-files` como # CRATE (el selector de ficheros y el árbol de proyecto), igual que `cosmic-term`, y con la misma # línea: `default-features = false`. O sea que acá «ya se compiló» **sí** es cierto — al revés que # cuando `cosmic-files` pasó de librería a programa (ver su receta). # # ── EL `Cargo.lock` MIENTE POR EXCESO, Y ACÁ SE VE ────────────────────────────────────────────── # La regla de leer los crates `-sys` del lock antes de adivinar deps sigue siendo la buena, pero tiene # un borde: el lock lista lo que es POSIBLE, no lo que está ENCENDIDO. Acá aparecen `gio-sys`, # `glib-sys` y `gobject-sys` —que en cualquier otro paquete significarían «hay que declarar glib»— # y sin embargo esta receta no declara ninguna: entran sólo por la feature `gvfs`, que se apaga. # El lock dice el universo; las features dicen el recorte. # # ── FEATURES: `gvfs` y `wgpu` APAGADAS, por lo mismo que en cosmic-files ───────────────────────── # `default = ["dbus-config", "gvfs", "wgpu", "wayland"]`. # · `gvfs` → cosmic-files/gvfs → crates `gio`/`glib` por pkg-config sobre las glib **COMPARTIDAS**, # que el corpus sólo empaqueta estáticas. Se pierden los montajes remotos del diálogo de abrir, # no la edición local. # · `wgpu` → el árbol wgpu+naga+ash+glow+spirv a `codegen-units=1` desbordó el filesystem dos veces # construyendo cosmic-files. Sin él se pinta con tiny-skia, que es lo que hace el resto de los # clientes de la imagen (mesa es llvmpipe por software: el backend wgpu se caería a software # igual). # Quedan `dbus-config` (cosmic-config por zbus, Rust puro) y `wayland`. # # ── LO QUE NO PASÓ, Y VALE ANOTARLO ───────────────────────────────────────────────────────────── # La doble barra `pop-os//` que mordió en `cosmic-applets` y `cosmic-settings` acá está **comentada** # en el `Cargo.toml` (bloques `[patch.…]` de la rama `theme-v2`). Se verificó con `grep 'pop-os//'` # sobre `Cargo.toml` y `Cargo.lock` antes de construir: cuesta un segundo y evita un fetch fallido a # los cuarenta minutos. name = "cosmic-edit" version = "1.5.0" license = "GPL-3.0-only" [source] tarball = "https://github.com/pop-os/cosmic-edit/archive/epoch-1.5.0/cosmic-edit-epoch-1.5.0.tar.gz" sha256 = "d567902b1e04829eedd428cd37372137908947cfafccc14ba485b1ad58832cba" [build] compiler = "zig-cc" target = "x86_64-linux-musl" # Dinámico como todo cliente de la suite: `wayland-client` entra con la feature `dlopen` y un musl # estático no la honra — arranca y muere con «The wayland library could not be loaded» *teniendo* # el `.so`. link = "dynamic" [build.phases] # Fase compile CUSTOM porque hay que elegir features a mano (`--no-default-features`), que la fase # autogenerada del lab no permite. `INSTALL_DIR` y `APPID` los exporta el justfile de upstream y los # lee el `build.rs` (crate `xdgen`) para generar el `.desktop` y el `.metainfo.xml` en # `target/xdgen/`; sin ellos el `.desktop` sale con rutas equivocadas, y ese fichero es justo lo que # hace que la aplicación aparezca en la biblioteca. compile = ''' printf '%s\n' '#!/bin/sh' 'for a do' 'case "$a" in --target=*) a=--target=x86_64-linux-musl ;; esac' 'set -- "$@" "$a"' 'shift' 'done' 'exec zig cc -mcpu=baseline "$@"' > "$PWD/.hammer-zig-cc" chmod +x "$PWD/.hammer-zig-cc" RF="-C linker=$PWD/.hammer-zig-cc -C target-feature=-crt-static" rustc -vV | grep -q 'host: .*-alpine-' || RF="$RF -C link-self-contained=no" export INSTALL_DIR=/usr/share APPID=com.system76.CosmicEdit CC="$PWD/.hammer-zig-cc" RUSTFLAGS="$RF" cargo build --release --locked --offline \ --no-default-features --features dbus-config,wayland ''' install = ''' mkdir -p /out/usr/bin /out/usr/share/applications /out/usr/share/metainfo cp target/release/cosmic-edit /out/usr/bin/cosmic-edit chmod 755 /out/usr/bin/cosmic-edit cp target/xdgen/com.system76.CosmicEdit.desktop /out/usr/share/applications/ 2>/dev/null || true cp target/xdgen/com.system76.CosmicEdit.metainfo.xml /out/usr/share/metainfo/ 2>/dev/null || true for size in res/icons/hicolor/*; do [ -d "$size" ] || continue s=$(basename "$size") if [ -f "$size/apps/com.system76.CosmicEdit.svg" ]; then mkdir -p "/out/usr/share/icons/hicolor/$s/apps" cp "$size/apps/com.system76.CosmicEdit.svg" "/out/usr/share/icons/hicolor/$s/apps/" fi done ''' [deps] # El juego fijo de todo cliente de la suite, y nada más. `syntect`/`two-face` (resaltado), `grep`, # `ignore`, `notify` y `icu` son Rust puro; `dbus-config` habla por zbus. Sin `gvfs` no hay glib. build = ["libxkbcommon", "pkgconf", "libudev-zero", "libinput"]