# syncthing 2.1.5 — sincronización de ficheros entre máquinas, continua y sin servidor central. # Un binario Go estático: no arrastra sonames, así que corre en la imagen sin el sysroot del lab # debajo (misma forma que `caddy`, y por la misma razón). # # ── POR QUÉ ENTRA ────────────────────────────────────────────────────────────────────────────── # El corpus tiene `rclone` y `restic` —copiar a un remoto y respaldar— pero nada que mantenga dos # máquinas al día en ambos sentidos. Es el hueco entre «tengo una copia» y «trabajo en las dos». # # ⚠ EL `commit` ES EL TAG PELADO, NO EL OBJETO DE TAG. `v2.1.5` es un tag ANOTADO: su sha # (3a67fe3a…) nombra el objeto de tag, no el árbol. Éste es el `^{}`. Misma trampa que `foot`. # # ⚠ VERSIÓN EN EL BINARIO: upstream la inyecta con `-ldflags -X` desde su `build.go`. El driver Go # de takana hace `go install` genérico, así que `syncthing --version` dirá `unknown-dev`. Es # cosmético y NO afecta al protocolo, pero conviene saberlo antes de diagnosticar con él. name = "syncthing" version = "2.1.5" license = "MPL-2.0" [source] repo = "https://github.com/syncthing/syncthing" commit = "2ca95cf1498104113fdfde46df4107f2450a0f71" [build] compiler = "zig-cc" target = "x86_64-linux-musl" link = "static" # Sin `flags`: la fase de abajo nombra el paquete a mano, así que el autodetector de `main` no # interviene. El árbol trae cuatro (cmd/syncthing, cmd/stdiscosrv, cmd/strelaysrv, cmd/ursrv) y que # la elección dependa de una heurística es lo que no se quiere en una entrada de hash. # ⚠ `go install ./cmd/syncthing` A SECAS NO CONSTRUYE, y el error no dice por qué: # `lib/api/api_statics.go:45:25: undefined: auto.Assets`. La GUI web de syncthing se sirve desde un # fichero Go GENERADO (`lib/api/auto/gui.files.go`) que empaqueta el árbol `gui/`, y el repo NO lo # versiona: lo produce `go run build.go assets`. O sea que el paso que falta no es una dependencia # sino un CODEGEN, y sin él el paquete `auto` existe pero está vacío. Todo local: `gui/` viene en el # árbol, no hay red de por medio. [build.phases] compile = '''export GOCACHE=/src/.gocache GOTMPDIR=/src/.gotmp GOPATH=/tmp/gopath GOTOOLCHAIN=local CGO_ENABLED=0 GOFLAGS=-mod=vendor GOPROXY=off GOBIN=/out/usr/bin mkdir -p /src/.gotmp go run build.go assets go install -trimpath -ldflags=-buildid= ./cmd/syncthing''' # `go` es herramienta de BUILD: el binario sale autocontenido. [deps] build = ["go"]