kubectl: el vigía nuevo señaló dos inertes y esto los enciende — 46 → 44
`kubectl-neat` y `kubectl-tree` llevaban meses sellados y **no se podían invocar**: los dos son subcomandos que despacha `kubectl`, y `kubectl` no estaba en el catálogo. Probado, no supuesto — `kubectl plugin list` con los dos artefactos en el PATH los lista a los dos. `kubectl version --client -o json` contesta con todos los campos poblados (gitVersion v1.37.0, gitCommit, gitTreeState clean, goVersion go1.26.4). REPRODUCE bit a bit. Los `-X` del ldflags no son adorno: sin ellos `kubectl version` dice `v0.0.0-master+$Format:%H$`, y un cliente de k8s NEGOCIA por versión — varios comandos avisan de desfase cliente/servidor comparando exactamente esos campos. Los nombres son los de `hack/lib/version.sh` de upstream, para no inventar un esquema paralelo. **Uno de esos campos era una trampa de reproducibilidad**: `buildDate`, que upstream llena con `date -u` ⇒ dos builds del mismo fuente darían binarios distintos (la familia del sello de nftables y del `BUILD_ID` de valkey). Se resuelve como lo resuelve upstream, leyendo `SOURCE_DATE_EPOCH`, que el lab exporta con valor FIJO. Sale `1970-01-01T00:00:01Z` — feo y CONSTANTE, que es lo que importa. `gitCommit` va pineado a mano porque el tarball no trae `.git`. ⚠ El tag `v1.37.0` es ANOTADO: el `git/ref` devuelve el sha del OBJETO TAG, no el del commit, y quedarse con ése habría horneado un sha que no es ningún commit. Hay que resolver tag → commit. ⚠ **Y un hallazgo lateral que dejo anotado en la receta porque no es de esta receta:** el árbol de k8s trae su propio `vendor/` curado, pero el lab corre `go mod vendor` en el FETCH siempre que haya `go.mod`, sin mirar si el proyecto ya traía uno (`vendor_go_deps`, incondicional — se ve en el log: `go: downloading …` ANTES de `configure`). O sea que se compila el vendor REGENERADO, no el de upstream. Acá salió bien y reproduce, pero es la misma figura que el clobber del `vendor/` de Cargo, que sí necesitó un campo de receta para resolverse.
This commit is contained in:
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"schema": "hammer-build-state/1",
|
||||
"totals": {
|
||||
"recipes": 884,
|
||||
"nodes": 886,
|
||||
"sealed": 884,
|
||||
"recipes": 885,
|
||||
"nodes": 887,
|
||||
"sealed": 885,
|
||||
"ajeno": 2
|
||||
},
|
||||
"by_class": {
|
||||
"ajeno": 2,
|
||||
"c": 241,
|
||||
"go": 362,
|
||||
"go": 363,
|
||||
"gui": 41,
|
||||
"kernel": 6,
|
||||
"rust": 234
|
||||
@@ -17,7 +17,7 @@
|
||||
"debt_by_class": {},
|
||||
"by_queue": {
|
||||
"corpus": {
|
||||
"sealed": 884,
|
||||
"sealed": 885,
|
||||
"ajeno": 2
|
||||
}
|
||||
},
|
||||
@@ -43,7 +43,7 @@
|
||||
"sealed": 101
|
||||
}
|
||||
},
|
||||
"sin_perfil": 646,
|
||||
"sin_perfil": 647,
|
||||
"orphan_deps": [],
|
||||
"topo_ok": true,
|
||||
"nodes": {
|
||||
@@ -5887,7 +5887,7 @@
|
||||
"escritorio-sway",
|
||||
"servidor"
|
||||
],
|
||||
"dependientes_total": 362
|
||||
"dependientes_total": 363
|
||||
},
|
||||
"go-callvis": {
|
||||
"iname": "go-callvis",
|
||||
@@ -8760,6 +8760,24 @@
|
||||
"perfiles": [],
|
||||
"dependientes_total": 0
|
||||
},
|
||||
"kubectl": {
|
||||
"iname": "kubectl",
|
||||
"version": "1.37.0",
|
||||
"link": "static",
|
||||
"compiler": "zig-cc",
|
||||
"deps": [
|
||||
"go"
|
||||
],
|
||||
"cls": "go",
|
||||
"queue": "corpus",
|
||||
"foreign": false,
|
||||
"hash": "b3:ca95c5292688c838715727f9b909a0722d9fc98a778edefb2a4864e01678056e",
|
||||
"state": "sealed",
|
||||
"blocked_by": [],
|
||||
"unblocks": 0,
|
||||
"perfiles": [],
|
||||
"dependientes_total": 0
|
||||
},
|
||||
"kubectl-neat": {
|
||||
"iname": "kubectl-neat",
|
||||
"version": "2.0.3",
|
||||
|
||||
Reference in New Issue
Block a user