cosmic: la barra de más de cosmic-applets — no es un dedazo, es un truco, y hay que respetarlo

El manifiesto apunta a 'https://github.com/pop-os/cosmic-protocols//' con DOS
barras al final. Es como upstream hace que cargo trate esa fuente como DISTINTA
de la URL normal, para que el [patch] de al lado no se apunte a sí mismo. Pero
GitHub devuelve 404 a '/pop-os/cosmic-protocols//info/refs' y cargo vendor muere
en el fetch, antes de compilar una línea.

El primer intento fue cambiar '//' por '.git', y falló POR LA RAZÓN QUE HACE QUE
EL TRUCO EXISTA: cargo normaliza el .git, así que el patch pasaba a apuntar a la
misma fuente que reemplaza — 'patches must point to different sources'. La barra
de más no es reemplazable por cualquier variante cosmética: tiene que ser una que
cargo considere OTRA fuente y que el servidor sepa servir.

Sólo cumple las dos la barra en el MEDIO ('pop-os//cosmic-protocols'), que es
justo la forma que usa cosmic-comp — y por eso aquél construyó sin parche.

Se toca Cargo.toml y Cargo.lock juntos: cambiar uno solo rompe el --locked.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-03 13:54:09 -04:00
co-authored by Claude Opus 5
parent 516610b307
commit 0e8abb8059
2 changed files with 51 additions and 0 deletions
@@ -0,0 +1,33 @@
--- a/Cargo.toml 2026-08-03 13:50:40.173439625 -0400
+++ b/Cargo.toml 2026-08-03 13:52:23.790259375 -0400
@@ -82,8 +82,8 @@
sctk = { package = "smithay-client-toolkit", version = "0.20.0" }
[patch."https://github.com/pop-os/cosmic-protocols"]
-cosmic-protocols = { git = "https://github.com/pop-os/cosmic-protocols//", rev = "32283d7" }
-cosmic-client-toolkit = { git = "https://github.com/pop-os/cosmic-protocols//", rev = "32283d7" }
+cosmic-protocols = { git = "https://github.com/pop-os//cosmic-protocols", rev = "32283d7" }
+cosmic-client-toolkit = { git = "https://github.com/pop-os//cosmic-protocols", rev = "32283d7" }
# [patch.'https://github.com/pop-os/dbus-settings-bindings']
# cosmic-dbus-networkmanager = { path = "../dbus-settings-bindings/networkmanager" }
--- a/Cargo.lock 2026-08-03 13:50:40.173324764 -0400
+++ b/Cargo.lock 2026-08-03 13:52:23.791259375 -0400
@@ -1273,7 +1273,7 @@
[[package]]
name = "cosmic-client-toolkit"
version = "0.2.0"
-source = "git+https://github.com/pop-os/cosmic-protocols//?rev=32283d7#32283d76a8d0342da74c4cc022a533c52dcf378f"
+source = "git+https://github.com/pop-os//cosmic-protocols?rev=32283d7#32283d76a8d0342da74c4cc022a533c52dcf378f"
dependencies = [
"bitflags 2.13.0",
"cosmic-protocols",
@@ -1398,7 +1398,7 @@
[[package]]
name = "cosmic-protocols"
version = "0.2.0"
-source = "git+https://github.com/pop-os/cosmic-protocols//?rev=32283d7#32283d76a8d0342da74c4cc022a533c52dcf378f"
+source = "git+https://github.com/pop-os//cosmic-protocols?rev=32283d7#32283d76a8d0342da74c4cc022a533c52dcf378f"
dependencies = [
"bitflags 2.13.0",
"wayland-backend",
@@ -24,6 +24,24 @@ version = "1.5.0"
[source]
tarball = "https://github.com/pop-os/cosmic-applets/archive/epoch-1.5.0/cosmic-applets-epoch-1.5.0.tar.gz"
sha256 = "ac9328e58f5e9cb9c7561a2ce4af212d4916d97c820741f0959366c7e1a0e3ba"
# ⚠ EL PARCHE ARREGLA UNA URL, Y LA URL RARA ES INTENCIONAL RÍO ARRIBA.
# El manifiesto apunta a `https://github.com/pop-os/cosmic-protocols//` — con DOS barras al final. No
# es un dedazo: es el truco con el que upstream hace que cargo trate esa fuente como DISTINTA de la
# URL normal, para que el `[patch."…/cosmic-protocols"]` de al lado no se apunte a sí mismo (cargo
# rechaza un patch que reemplaza una fuente por ella misma). Pero GitHub **devuelve 404** a
# `/pop-os/cosmic-protocols//info/refs`, así que `cargo vendor` no puede clonar y el build muere en el
# fetch, antes de compilar una línea.
#
# La barra se MUEVE al medio: `https://github.com/pop-os//cosmic-protocols`. Es exactamente la forma
# que usa `cosmic-comp` —que por eso construyó sin parche—, y GitHub sí la tolera. Se toca
# `Cargo.toml` **y** `Cargo.lock` juntos: cambiar sólo uno rompe el `--locked` del build hermético.
#
# El primer intento fue `.git` en vez de `//`, y **falló por la razón que hace que el truco exista**:
# cargo NORMALIZA el `.git`, así que el patch pasaba a apuntar a la misma fuente que reemplaza y
# cortó con «patches must point to different sources». O sea que la barra de más no es reemplazable
# por cualquier variante cosmética: tiene que ser una que cargo considere OTRA fuente y que el
# servidor sepa servir. Sólo la del medio cumple las dos.
patches = ["cosmic-applets-protocols-url.patch"]
[build]
compiler = "zig-cc"