From 248fa8e991fc0b3b70c4d65ccd4af6ba7bde82ed Mon Sep 17 00:00:00 2001 From: Sergio Date: Wed, 9 Sep 2026 13:40:46 +0000 Subject: [PATCH] =?UTF-8?q?desktop-file-utils:=20cerrar=20el=20=C2=ABabrir?= =?UTF-8?q?=20con=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit update-desktop-database construye la caché MIME→APLICACIÓN (mimeinfo.cache). Comprobado antes de escribir la receta: NINGÚN artefacto del store lo traía, así que esa caché no se construía nunca. Con shared-mime-info (cerrado ayer) el escritorio sabe QUÉ TIPO es un fichero; sin ésta seguía sin saber CON QUÉ abrirlo — el menú «abrir con» vacío y sin aplicación por defecto. Misma familia que aquel hueco: falla en RUNTIME, no en build. gnome-shell, libadwaita y mutter lo piden en nixpkgs y acá construyen tan contentos sin él, así que ninguna métrica de deuda puede verlo. Prueba del consumidor con 14 .desktop REALES de okular/dolphin/kate/konsole/spectacle: mimeinfo.cache de 2.368 bytes · 47 asociaciones application/pdf=okularApplication_pdf.desktop text/plain=okularApplication_txt.desktop;org.kde.kate.desktop;org.kde.kwrite.desktop Los 4 binarios estáticos con 0 NEEDED (--prefer-static desde el principio, no tras el error). REPRODUCE bit a bit · tarball en el mirror. Va como RAÍZ en los CUATRO escritorios y no en , y la razón importa: escritorio-kde y escritorio-gnome comparten CERO raíces con base y bash NO está en su clausura. escritorio-mirada documenta que no hereda «a propósito, es slim»; esos dos no dicen nada, y sway sí hereda cli. Declararla en los cuatro funciona con cualquiera de las dos lecturas. La asimetría en sí queda para decidir aparte: hoy «KDE 302/302» significa «la capa de escritorio está completa», no «la imagen está completa». Triaje: huecos 2 → 1 (queda ). Clausuras 303/182/160/205, todas selladas. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_014QPJteswQvP1L7zSBrQQe2 --- docs/state/build-state-cosmic.json | 62 ++++++++++++++++++++++-------- docs/state/build-state-gnome.json | 60 +++++++++++++++++++++-------- docs/state/build-state-kde.json | 62 ++++++++++++++++++++++-------- docs/state/build-state-wlr.json | 62 ++++++++++++++++++++++-------- docs/state/build-state.json | 53 ++++++++++++++++++------- docs/state/frontera-triaje.toml | 3 +- docs/state/repro-verificado.tsv | 1 + docs/state/targets.toml | 28 ++++++++++++++ recipes/desktop-file-utils.toml | 40 +++++++++++++++++++ 9 files changed, 293 insertions(+), 78 deletions(-) create mode 100644 recipes/desktop-file-utils.toml diff --git a/docs/state/build-state-cosmic.json b/docs/state/build-state-cosmic.json index 44eeffc1..ae383340 100644 --- a/docs/state/build-state-cosmic.json +++ b/docs/state/build-state-cosmic.json @@ -1,14 +1,14 @@ { "schema": "hammer-build-state/1", "totals": { - "recipes": 893, - "nodes": 895, - "sealed": 893, + "recipes": 894, + "nodes": 896, + "sealed": 894, "ajeno": 2 }, "by_class": { "ajeno": 2, - "c": 231, + "c": 232, "go": 362, "gui": 41, "kernel": 6, @@ -17,7 +17,7 @@ "debt_by_class": {}, "by_queue": { "corpus": { - "sealed": 865, + "sealed": 866, "ajeno": 2 }, "incoming-cosmic": { @@ -36,9 +36,9 @@ "sealed": 81 }, "escritorio-cosmic": { - "raices": 42, - "clausura": 159, - "sealed": 159 + "raices": 43, + "clausura": 160, + "sealed": 160 }, "escritorio-mirada": { "raices": 17, @@ -3698,6 +3698,36 @@ "perfiles": [], "dependientes_total": 0 }, + "desktop-file-utils": { + "iname": "desktop-file-utils", + "version": "0.28", + "link": "static", + "compiler": "zig-cc", + "deps": [ + "glib", + "libffi", + "meson", + "pcre2", + "pkgconf", + "python3", + "samurai", + "zlib" + ], + "cls": "c", + "queue": "corpus", + "foreign": false, + "hash": "b3:590be503bc92262cee563d97c675022979e6c98fd205f2344129102c5cae43ec", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-kde", + "escritorio-sway" + ], + "dependientes_total": 0 + }, "devspace": { "iname": "devspace", "version": "6.3.21", @@ -6044,7 +6074,7 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 32 + "dependientes_total": 33 }, "glib-shared": { "iname": "glib-shared", @@ -9753,7 +9783,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 108 + "dependientes_total": 109 }, "libffi-shared": { "iname": "libffi-shared", @@ -11369,7 +11399,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 123 + "dependientes_total": 124 }, "micro": { "iname": "micro", @@ -12965,7 +12995,7 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 80 + "dependientes_total": 81 }, "pcre2-shared": { "iname": "pcre2-shared", @@ -13227,7 +13257,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 394 + "dependientes_total": 395 }, "plow": { "iname": "plow", @@ -13696,7 +13726,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 313 + "dependientes_total": 314 }, "qrcp": { "iname": "qrcp", @@ -14311,7 +14341,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 265 + "dependientes_total": 266 }, "sassc": { "iname": "sassc", @@ -17899,7 +17929,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 112 + "dependientes_total": 113 }, "zlib-ng": { "iname": "zlib-ng", diff --git a/docs/state/build-state-gnome.json b/docs/state/build-state-gnome.json index f842cc2e..3dd98227 100644 --- a/docs/state/build-state-gnome.json +++ b/docs/state/build-state-gnome.json @@ -1,14 +1,14 @@ { "schema": "hammer-build-state/1", "totals": { - "recipes": 919, - "nodes": 921, - "sealed": 919, + "recipes": 920, + "nodes": 922, + "sealed": 920, "ajeno": 2 }, "by_class": { "ajeno": 2, - "c": 271, + "c": 272, "go": 362, "gui": 47, "kernel": 6, @@ -17,7 +17,7 @@ "debt_by_class": {}, "by_queue": { "corpus": { - "sealed": 856, + "sealed": 857, "ajeno": 2 }, "incoming-gnome": { @@ -36,9 +36,9 @@ "sealed": 80 }, "escritorio-gnome": { - "raices": 23, - "clausura": 181, - "sealed": 181 + "raices": 24, + "clausura": 182, + "sealed": 182 }, "escritorio-mirada": { "raices": 17, @@ -3363,6 +3363,36 @@ "perfiles": [], "dependientes_total": 0 }, + "desktop-file-utils": { + "iname": "desktop-file-utils", + "version": "0.28", + "link": "static", + "compiler": "zig-cc", + "deps": [ + "glib", + "libffi", + "meson", + "pcre2", + "pkgconf", + "python3", + "samurai", + "zlib" + ], + "cls": "c", + "queue": "corpus", + "foreign": false, + "hash": "b3:590be503bc92262cee563d97c675022979e6c98fd205f2344129102c5cae43ec", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-kde", + "escritorio-sway" + ], + "dependientes_total": 0 + }, "devspace": { "iname": "devspace", "version": "6.3.21", @@ -10035,7 +10065,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 108 + "dependientes_total": 109 }, "libffi-shared": { "iname": "libffi-shared", @@ -12029,7 +12059,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 123 + "dependientes_total": 124 }, "micro": { "iname": "micro", @@ -13794,7 +13824,7 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 80 + "dependientes_total": 81 }, "pcre2-shared": { "iname": "pcre2-shared", @@ -14056,7 +14086,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 394 + "dependientes_total": 395 }, "plow": { "iname": "plow", @@ -14600,7 +14630,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 313 + "dependientes_total": 314 }, "qrcp": { "iname": "qrcp", @@ -15215,7 +15245,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 265 + "dependientes_total": 266 }, "sassc": { "iname": "sassc", @@ -18937,7 +18967,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 112 + "dependientes_total": 113 }, "zlib-ng": { "iname": "zlib-ng", diff --git a/docs/state/build-state-kde.json b/docs/state/build-state-kde.json index c914f151..3c6f4afa 100644 --- a/docs/state/build-state-kde.json +++ b/docs/state/build-state-kde.json @@ -1,14 +1,14 @@ { "schema": "hammer-build-state/1", "totals": { - "recipes": 1044, - "nodes": 1045, - "sealed": 1044, + "recipes": 1045, + "nodes": 1046, + "sealed": 1045, "ajeno": 1 }, "by_class": { "ajeno": 1, - "c": 398, + "c": 399, "go": 362, "gui": 45, "kernel": 6, @@ -17,7 +17,7 @@ "debt_by_class": {}, "by_queue": { "corpus": { - "sealed": 851, + "sealed": 852, "ajeno": 1 }, "incoming-kde": { @@ -36,9 +36,9 @@ "sealed": 76 }, "escritorio-kde": { - "raices": 47, - "clausura": 302, - "sealed": 302 + "raices": 48, + "clausura": 303, + "sealed": 303 }, "escritorio-mirada": { "raices": 17, @@ -3479,6 +3479,36 @@ "perfiles": [], "dependientes_total": 0 }, + "desktop-file-utils": { + "iname": "desktop-file-utils", + "version": "0.28", + "link": "static", + "compiler": "zig-cc", + "deps": [ + "glib", + "libffi", + "meson", + "pcre2", + "pkgconf", + "python3", + "samurai", + "zlib" + ], + "cls": "c", + "queue": "corpus", + "foreign": false, + "hash": "b3:590be503bc92262cee563d97c675022979e6c98fd205f2344129102c5cae43ec", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-kde", + "escritorio-sway" + ], + "dependientes_total": 0 + }, "devspace": { "iname": "devspace", "version": "6.3.21", @@ -6097,7 +6127,7 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 32 + "dependientes_total": 33 }, "glib-shared": { "iname": "glib-shared", @@ -13690,7 +13720,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 108 + "dependientes_total": 109 }, "libffi-shared": { "iname": "libffi-shared", @@ -15820,7 +15850,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 123 + "dependientes_total": 124 }, "micro": { "iname": "micro", @@ -17731,7 +17761,7 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 80 + "dependientes_total": 81 }, "pcre2-shared": { "iname": "pcre2-shared", @@ -18061,7 +18091,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 394 + "dependientes_total": 395 }, "plasma-activities": { "iname": "plasma-activities", @@ -19542,7 +19572,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 313 + "dependientes_total": 314 }, "qcoro": { "iname": "qcoro", @@ -20767,7 +20797,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 265 + "dependientes_total": 266 }, "sassc": { "iname": "sassc", @@ -24971,7 +25001,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 112 + "dependientes_total": 113 }, "zlib-ng": { "iname": "zlib-ng", diff --git a/docs/state/build-state-wlr.json b/docs/state/build-state-wlr.json index faf9c48e..bfc5b7fe 100644 --- a/docs/state/build-state-wlr.json +++ b/docs/state/build-state-wlr.json @@ -1,14 +1,14 @@ { "schema": "hammer-build-state/1", "totals": { - "recipes": 878, - "nodes": 880, - "sealed": 878, + "recipes": 879, + "nodes": 881, + "sealed": 879, "ajeno": 2 }, "by_class": { "ajeno": 2, - "c": 236, + "c": 237, "go": 362, "gui": 41, "kernel": 6, @@ -17,7 +17,7 @@ "debt_by_class": {}, "by_queue": { "corpus": { - "sealed": 866, + "sealed": 867, "ajeno": 2 }, "incoming-wlr": { @@ -41,9 +41,9 @@ "sealed": 41 }, "escritorio-sway": { - "raices": 75, - "clausura": 204, - "sealed": 204 + "raices": 76, + "clausura": 205, + "sealed": 205 } }, "sin_perfil": 648, @@ -3235,6 +3235,36 @@ "perfiles": [], "dependientes_total": 0 }, + "desktop-file-utils": { + "iname": "desktop-file-utils", + "version": "0.28", + "link": "static", + "compiler": "zig-cc", + "deps": [ + "glib", + "libffi", + "meson", + "pcre2", + "pkgconf", + "python3", + "samurai", + "zlib" + ], + "cls": "c", + "queue": "corpus", + "foreign": false, + "hash": "b3:590be503bc92262cee563d97c675022979e6c98fd205f2344129102c5cae43ec", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [ + "escritorio-cosmic", + "escritorio-gnome", + "escritorio-kde", + "escritorio-sway" + ], + "dependientes_total": 0 + }, "devspace": { "iname": "devspace", "version": "6.3.21", @@ -5659,7 +5689,7 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 32 + "dependientes_total": 33 }, "glib-shared": { "iname": "glib-shared", @@ -9402,7 +9432,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 108 + "dependientes_total": 109 }, "libffi-shared": { "iname": "libffi-shared", @@ -10992,7 +11022,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 123 + "dependientes_total": 124 }, "micro": { "iname": "micro", @@ -12591,7 +12621,7 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 80 + "dependientes_total": 81 }, "pcre2-shared": { "iname": "pcre2-shared", @@ -12853,7 +12883,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 394 + "dependientes_total": 395 }, "plow": { "iname": "plow", @@ -13278,7 +13308,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 313 + "dependientes_total": 314 }, "qrcp": { "iname": "qrcp", @@ -13893,7 +13923,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 265 + "dependientes_total": 266 }, "sassc": { "iname": "sassc", @@ -17698,7 +17728,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 112 + "dependientes_total": 113 }, "zlib-ng": { "iname": "zlib-ng", diff --git a/docs/state/build-state.json b/docs/state/build-state.json index 6f3f5042..aeee0c98 100644 --- a/docs/state/build-state.json +++ b/docs/state/build-state.json @@ -1,14 +1,14 @@ { "schema": "hammer-build-state/1", "totals": { - "recipes": 867, - "nodes": 869, - "sealed": 867, + "recipes": 868, + "nodes": 870, + "sealed": 868, "ajeno": 2 }, "by_class": { "ajeno": 2, - "c": 225, + "c": 226, "go": 362, "gui": 41, "kernel": 6, @@ -17,7 +17,7 @@ "debt_by_class": {}, "by_queue": { "corpus": { - "sealed": 867, + "sealed": 868, "ajeno": 2 } }, @@ -38,7 +38,7 @@ "sealed": 41 } }, - "sin_perfil": 648, + "sin_perfil": 649, "orphan_deps": [], "topo_ok": true, "nodes": { @@ -3227,6 +3227,31 @@ "perfiles": [], "dependientes_total": 0 }, + "desktop-file-utils": { + "iname": "desktop-file-utils", + "version": "0.28", + "link": "static", + "compiler": "zig-cc", + "deps": [ + "glib", + "libffi", + "meson", + "pcre2", + "pkgconf", + "python3", + "samurai", + "zlib" + ], + "cls": "c", + "queue": "corpus", + "foreign": false, + "hash": "b3:590be503bc92262cee563d97c675022979e6c98fd205f2344129102c5cae43ec", + "state": "sealed", + "blocked_by": [], + "unblocks": 0, + "perfiles": [], + "dependientes_total": 0 + }, "devspace": { "iname": "devspace", "version": "6.3.21", @@ -5573,7 +5598,7 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 32 + "dependientes_total": 33 }, "glib-shared": { "iname": "glib-shared", @@ -9285,7 +9310,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 108 + "dependientes_total": 109 }, "libffi-shared": { "iname": "libffi-shared", @@ -10875,7 +10900,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 123 + "dependientes_total": 124 }, "micro": { "iname": "micro", @@ -12474,7 +12499,7 @@ "escritorio-kde", "escritorio-sway" ], - "dependientes_total": 80 + "dependientes_total": 81 }, "pcre2-shared": { "iname": "pcre2-shared", @@ -12736,7 +12761,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 394 + "dependientes_total": 395 }, "plow": { "iname": "plow", @@ -13161,7 +13186,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 313 + "dependientes_total": 314 }, "qrcp": { "iname": "qrcp", @@ -13776,7 +13801,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 265 + "dependientes_total": 266 }, "sassc": { "iname": "sassc", @@ -17267,7 +17292,7 @@ "escritorio-mirada", "escritorio-sway" ], - "dependientes_total": 112 + "dependientes_total": 113 }, "zlib-ng": { "iname": "zlib-ng", diff --git a/docs/state/frontera-triaje.toml b/docs/state/frontera-triaje.toml index 29f0c3b9..958c9554 100644 --- a/docs/state/frontera-triaje.toml +++ b/docs/state/frontera-triaje.toml @@ -289,7 +289,8 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor piden = ["libffi"] [candidato."desktop-file-utils"] -veredicto = "hueco" +veredicto = "provisto" +provee = "desktop-file-utils" porque = "lo piden 3 recetas" perfiles = ["escritorio-gnome"] piden = ["gnome-shell", "libadwaita", "mutter"] diff --git a/docs/state/repro-verificado.tsv b/docs/state/repro-verificado.tsv index ef646c09..8da33220 100644 --- a/docs/state/repro-verificado.tsv +++ b/docs/state/repro-verificado.tsv @@ -68,3 +68,4 @@ libXfont2 297f66a9b864360a53e1495199c3f53c04c78db2616df8da6e37c5dbef87eb32 2026- xkbcomp ae4a27e7b8b6672ba0ffd2ddba8127f4b5f84b50358b0c3337d0bf0281873225 2026-09-08 reproduce xwayland d43f7ba02a1f9f4b2cf01e1d03610020779991fb13adbd804f5dd3007244bf3d 2026-09-08 reproduce bash-completion 86e9716873c35d1e8a4bc1b6317d3f37d5bc7b3d7c12132ae3a3ee7a24bcebaf 2026-09-09 reproduce +desktop-file-utils 590be503bc92262cee563d97c675022979e6c98fd205f2344129102c5cae43ec 2026-09-09 reproduce diff --git a/docs/state/targets.toml b/docs/state/targets.toml index 700d730d..0aebd8e5 100644 --- a/docs/state/targets.toml +++ b/docs/state/targets.toml @@ -77,6 +77,13 @@ cola = "incoming-kde" # Raíces del rootfs de metal (docs/HANDOFF-noche-kde-2026-07-14.md:135). El resto del escritorio # —137 artefactos hidratados— es CLAUSURA de estas 7, no lista a mano. paquetes = [ + # `desktop-file-utils` (2026-09-09): `update-desktop-database` construye la caché + # MIME→APLICACIÓN. Con `shared-mime-info` el escritorio ya sabe QUÉ TIPO es un fichero; sin + # ésta sigue sin saber CON QUÉ abrirlo — el menú «abrir con» sale vacío y no hay aplicación + # por defecto para ningún tipo. Va como RAÍZ en los CUATRO escritorios y no en `base`, + # porque kde/gnome/cosmic NO heredan base: declararla acá funciona con cualquiera de las dos + # lecturas del modelo de composición. + "desktop-file-utils", "plasma-workspace", "kwin", "kscreenlocker", "breeze", "frameworkintegration", "qqc2-desktop-style", "plasma-integration", # Huecos de RUNTIME confirmados por el triaje de la frontera (2026-07-22). Ninguno bloquea un @@ -269,6 +276,13 @@ cola = "incoming-gnome" # Dos documentos del repo diciendo cosas opuestas, y el que se mira primero es el grafo. # Si algún día se autora GTK3, se vuelven a añadir acá y el objetivo reaparece solo. paquetes = [ + # `desktop-file-utils` (2026-09-09): `update-desktop-database` construye la caché + # MIME→APLICACIÓN. Con `shared-mime-info` el escritorio ya sabe QUÉ TIPO es un fichero; sin + # ésta sigue sin saber CON QUÉ abrirlo — el menú «abrir con» sale vacío y no hay aplicación + # por defecto para ningún tipo. Va como RAÍZ en los CUATRO escritorios y no en `base`, + # porque kde/gnome/cosmic NO heredan base: declararla acá funciona con cualquiera de las dos + # lecturas del modelo de composición. + "desktop-file-utils", "mutter", "gnome-shell", "gjs", "gsettings-desktop-schemas", "gnome-desktop", "xdg-desktop-portal-gnome", # ── LA PRIMERA APP DE USUARIO FINAL QUE COMPARTEN LOS CUATRO ESCRITORIOS ────────────────────── @@ -433,6 +447,13 @@ cola = "incoming-cosmic" # el binario `cosmic-workspaces`, y el AppID tampoco lleva el sufijo. Se lista por el nombre de la # RECETA, que es el del repo. paquetes = [ + # `desktop-file-utils` (2026-09-09): `update-desktop-database` construye la caché + # MIME→APLICACIÓN. Con `shared-mime-info` el escritorio ya sabe QUÉ TIPO es un fichero; sin + # ésta sigue sin saber CON QUÉ abrirlo — el menú «abrir con» sale vacío y no hay aplicación + # por defecto para ningún tipo. Va como RAÍZ en los CUATRO escritorios y no en `base`, + # porque kde/gnome/cosmic NO heredan base: declararla acá funciona con cualquiera de las dos + # lecturas del modelo de composición. + "desktop-file-utils", "cosmic-comp", "cosmic-session", "cosmic-settings-daemon", "cosmic-panel", "cosmic-launcher", "cosmic-app-library", "cosmic-workspaces-epoch", "cosmic-notifications", "cosmic-osd", "cosmic-bg", "cosmic-idle", @@ -596,6 +617,13 @@ hereda = ["cli"] # el grafo siguiendo las aristas de deps. Escribirla a mano sería justo lo que targets.toml existe # para no hacer. paquetes = [ + # `desktop-file-utils` (2026-09-09): `update-desktop-database` construye la caché + # MIME→APLICACIÓN. Con `shared-mime-info` el escritorio ya sabe QUÉ TIPO es un fichero; sin + # ésta sigue sin saber CON QUÉ abrirlo — el menú «abrir con» sale vacío y no hay aplicación + # por defecto para ningún tipo. Va como RAÍZ en los CUATRO escritorios y no en `base`, + # porque kde/gnome/cosmic NO heredan base: declararla acá funciona con cualquiera de las dos + # lecturas del modelo de composición. + "desktop-file-utils", # el compositor y sus utilidades propias "sway", # lo que hace que se USE y no sólo arranque diff --git a/recipes/desktop-file-utils.toml b/recipes/desktop-file-utils.toml new file mode 100644 index 00000000..6c8d7917 --- /dev/null +++ b/recipes/desktop-file-utils.toml @@ -0,0 +1,40 @@ +# desktop-file-utils 0.28 — las tres herramientas de freedesktop sobre ficheros `.desktop`: +# update-desktop-database construye `mimeinfo.cache`, la caché MIME→APLICACIÓN +# desktop-file-validate valida un .desktop contra la especificación +# desktop-file-install instala uno, normalizándolo +# +# POR QUÉ ERA UN HUECO, y por qué es el compañero de `shared-mime-info`. Aquella receta (cerrada el +# 2026-09-08) le dio al escritorio la base de datos que dice QUÉ TIPO es un fichero. Ésta le da la +# que dice CON QUÉ ABRIRLO: sin `mimeinfo.cache` el menú «abrir con» sale vacío y no hay aplicación +# por defecto para ningún tipo. Comprobado antes de escribir la receta: NINGÚN artefacto del store +# traía `update-desktop-database`, así que esa caché no se construía nunca. +# +# Como el otro, falla en RUNTIME y no en build — gnome-shell, libadwaita y mutter lo piden en nixpkgs +# y acá construyen tan contentos sin él. Ninguna métrica de deuda puede ver un hueco así; salió del +# triaje de la frontera (2026-09-09). +# +# Va al CORPUS porque lo necesitan las cuatro imágenes de escritorio, no una cola. +name = "desktop-file-utils" +version = "0.28" +license = "GPL-2.0-or-later" + +[source] +tarball = "https://www.freedesktop.org/software/desktop-file-utils/releases/desktop-file-utils-0.28.tar.xz" +sha256 = "4401d4e231d842c2de8242395a74a395ca468cd96f5f610d822df33594898a70" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" + +[build.phases] +# `--prefer-static` además de link=static: gobierna con qué se enlazan los EJECUTABLES, que acá son +# todo el paquete. Es la lección de json-glib, aplicada antes del error y no después. +configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload --prefer-static" +compile = "ninja -C output" +install = "DESTDIR=/out meson install -C output --no-rebuild" + +[deps] +# `libffi`/`pcre2`/`zlib` son la clausura de pkg-config que declara el `.pc` de glib en +# Requires.private; las deps de hammer NO son transitivas. +build = ["meson", "samurai", "python3", "pkgconf", "glib", "libffi", "pcre2", "zlib"]