Etapa G (go): cosecha 20 + syft/traefik promovidos a mano (pack fallaba: patches no viajaban a recipes/ — fix en harvest-go) + pre-check por name interno del TOML (exporters) + re-cola crossplane-cli/fabric-ai/oh-my-posh con fixes (alias crossplane, ./cmd/fabric, -o oh-my-posh) + logs por-cola en build-farm
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,11 @@
|
|||||||
|
--- a/cmd/syft/internal/options/update_check.go
|
||||||
|
+++ b/cmd/syft/internal/options/update_check.go
|
||||||
|
@@ -8,7 +8,7 @@ type UpdateCheck struct {
|
||||||
|
|
||||||
|
func DefaultUpdateCheck() UpdateCheck {
|
||||||
|
return UpdateCheck{
|
||||||
|
- CheckForAppUpdate: true,
|
||||||
|
+ CheckForAppUpdate: false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
-1
@@ -1,4 +1,3 @@
|
|||||||
# REVIEW 2026-07-05T09:27:46Z: binario instalado='crossplane' ≠ esperado='crank' (detect_go_main eligió otro main); fijar flags=["./cmd/crank"]
|
|
||||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||||
# compiler/link/phases y adaptá hasta que compile.
|
# compiler/link/phases y adaptá hasta que compile.
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
# REVIEW 2026-07-05T09:27:46Z: binario instalado='code2context' ≠ esperado='fabric' (detect_go_main eligió otro main); fijar flags=["./cmd/fabric"]
|
|
||||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||||
# compiler/link/phases y adaptá hasta que compile.
|
# compiler/link/phases y adaptá hasta que compile.
|
||||||
@@ -14,7 +13,7 @@ commit = "a420eaf63c532094eb12bc90c91a227401e96c31"
|
|||||||
compiler = "zig-cc"
|
compiler = "zig-cc"
|
||||||
target = "x86_64-linux-musl"
|
target = "x86_64-linux-musl"
|
||||||
link = "static"
|
link = "static"
|
||||||
flags = []
|
flags = ["./cmd/fabric"]
|
||||||
|
|
||||||
# buildInputs de nix (no usados con CGO off): go
|
# buildInputs de nix (no usados con CGO off): go
|
||||||
[deps]
|
[deps]
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
# REVIEW 2026-07-05T09:27:48Z: binario instalado='src' ≠ esperado='oh-my-posh' (detect_go_main eligió otro main); fijar flags=["./cmd/oh-my-posh"]
|
|
||||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||||
# compiler/link/phases y adaptá hasta que compile.
|
# compiler/link/phases y adaptá hasta que compile.
|
||||||
@@ -20,3 +19,14 @@ subdir = "src"
|
|||||||
# buildInputs de nix (no usados con CGO off): go
|
# buildInputs de nix (no usados con CGO off): go
|
||||||
[deps]
|
[deps]
|
||||||
build = ["go"]
|
build = ["go"]
|
||||||
|
|
||||||
|
[build.phases]
|
||||||
|
# = el compile Go generado por el lab, pero con `go build -o`: con el módulo en subdir
|
||||||
|
# src/, `go install .` nombra el binario por la base del import path ⇒ instalaba "src".
|
||||||
|
compile = '''
|
||||||
|
cd src
|
||||||
|
export GOCACHE=/src/.gocache GOTMPDIR=/src/.gotmp GOPATH=/tmp/gopath GOTOOLCHAIN=local CGO_ENABLED=0 GOFLAGS=-mod=vendor GOPROXY=off
|
||||||
|
mkdir -p /src/.gotmp /out/usr/bin
|
||||||
|
go build -trimpath -ldflags=-buildid= -o /out/usr/bin/oh-my-posh .
|
||||||
|
'''
|
||||||
|
install = "true"
|
||||||
@@ -0,0 +1,99 @@
|
|||||||
|
diff --git a/pkg/observability/logs/aws_test.go b/pkg/observability/logs/aws_test.go
|
||||||
|
index 36a970d..b315f8b 100644
|
||||||
|
--- a/pkg/observability/logs/aws_test.go
|
||||||
|
+++ b/pkg/observability/logs/aws_test.go
|
||||||
|
@@ -21,5 +21,5 @@ func TestNewAWSWrapper(t *testing.T) {
|
||||||
|
|
||||||
|
logger.Logf(logging.Debug, "%s", "foo")
|
||||||
|
|
||||||
|
- assert.Equal(t, "<nil> DBG aws_test.go:22 > foo\n", buf.String())
|
||||||
|
+ assert.Equal(t, "<nil> DBG github.com/traefik/traefik/v3/pkg/observability/logs/aws_test.go:22 > foo\n", buf.String())
|
||||||
|
}
|
||||||
|
diff --git a/pkg/observability/logs/datadog_test.go b/pkg/observability/logs/datadog_test.go
|
||||||
|
index 41c6df4..47eadad 100644
|
||||||
|
--- a/pkg/observability/logs/datadog_test.go
|
||||||
|
+++ b/pkg/observability/logs/datadog_test.go
|
||||||
|
@@ -20,5 +20,5 @@ func TestNewDatadogLogger(t *testing.T) {
|
||||||
|
|
||||||
|
logger.Log("foo")
|
||||||
|
|
||||||
|
- assert.Equal(t, "<nil> DBG datadog_test.go:21 > foo\n", buf.String())
|
||||||
|
+ assert.Equal(t, "<nil> DBG github.com/traefik/traefik/v3/pkg/observability/logs/datadog_test.go:21 > foo\n", buf.String())
|
||||||
|
}
|
||||||
|
diff --git a/pkg/observability/logs/elastic_test.go b/pkg/observability/logs/elastic_test.go
|
||||||
|
index e00604d..16e1304 100644
|
||||||
|
--- a/pkg/observability/logs/elastic_test.go
|
||||||
|
+++ b/pkg/observability/logs/elastic_test.go
|
||||||
|
@@ -20,5 +20,5 @@ func TestNewElasticLogger(t *testing.T) {
|
||||||
|
|
||||||
|
logger.Errorf("foo")
|
||||||
|
|
||||||
|
- assert.Equal(t, "<nil> ERR elastic_test.go:21 > foo\n", buf.String())
|
||||||
|
+ assert.Equal(t, "<nil> ERR github.com/traefik/traefik/v3/pkg/observability/logs/elastic_test.go:21 > foo\n", buf.String())
|
||||||
|
}
|
||||||
|
diff --git a/pkg/observability/logs/gokit_test.go b/pkg/observability/logs/gokit_test.go
|
||||||
|
index 791157b..7531651 100644
|
||||||
|
--- a/pkg/observability/logs/gokit_test.go
|
||||||
|
+++ b/pkg/observability/logs/gokit_test.go
|
||||||
|
@@ -20,5 +20,5 @@ func TestNewGoKitWrapper(t *testing.T) {
|
||||||
|
|
||||||
|
_ = logger.Log("foo")
|
||||||
|
|
||||||
|
- assert.Equal(t, "<nil> DBG gokit_test.go:21 > foo\n", buf.String())
|
||||||
|
+ assert.Equal(t, "<nil> DBG github.com/traefik/traefik/v3/pkg/observability/logs/gokit_test.go:21 > foo\n", buf.String())
|
||||||
|
}
|
||||||
|
diff --git a/pkg/observability/logs/hclog_test.go b/pkg/observability/logs/hclog_test.go
|
||||||
|
index 02681d7..50fe5e2 100644
|
||||||
|
--- a/pkg/observability/logs/hclog_test.go
|
||||||
|
+++ b/pkg/observability/logs/hclog_test.go
|
||||||
|
@@ -20,5 +20,5 @@ func TestNewRetryableHTTPLogger(t *testing.T) {
|
||||||
|
|
||||||
|
logger.Info("foo")
|
||||||
|
|
||||||
|
- assert.Equal(t, "<nil> INF hclog_test.go:21 > Foo\n", buf.String())
|
||||||
|
+ assert.Equal(t, "<nil> INF github.com/traefik/traefik/v3/pkg/observability/logs/hclog_test.go:21 > Foo\n", buf.String())
|
||||||
|
}
|
||||||
|
diff --git a/pkg/observability/logs/instana_test.go b/pkg/observability/logs/instana_test.go
|
||||||
|
index 38b53f2..dc758f0 100644
|
||||||
|
--- a/pkg/observability/logs/instana_test.go
|
||||||
|
+++ b/pkg/observability/logs/instana_test.go
|
||||||
|
@@ -20,5 +20,5 @@ func TestNewInstanaLogger(t *testing.T) {
|
||||||
|
|
||||||
|
logger.Info("foo")
|
||||||
|
|
||||||
|
- assert.Equal(t, "<nil> INF instana_test.go:21 > foo\n", buf.String())
|
||||||
|
+ assert.Equal(t, "<nil> INF github.com/traefik/traefik/v3/pkg/observability/logs/instana_test.go:21 > foo\n", buf.String())
|
||||||
|
}
|
||||||
|
diff --git a/pkg/observability/logs/log_test.go b/pkg/observability/logs/log_test.go
|
||||||
|
index 5c80e76..26fd44a 100644
|
||||||
|
--- a/pkg/observability/logs/log_test.go
|
||||||
|
+++ b/pkg/observability/logs/log_test.go
|
||||||
|
@@ -20,5 +20,5 @@ func TestNoLevel(t *testing.T) {
|
||||||
|
|
||||||
|
logger.Info().Msg("foo")
|
||||||
|
|
||||||
|
- assert.Equal(t, "<nil> INF log_test.go:21 > foo\n", buf.String())
|
||||||
|
+ assert.Equal(t, "<nil> INF github.com/traefik/traefik/v3/pkg/observability/logs/log_test.go:21 > foo\n", buf.String())
|
||||||
|
}
|
||||||
|
diff --git a/pkg/observability/logs/logrus_test.go b/pkg/observability/logs/logrus_test.go
|
||||||
|
index af3c085..d30889a 100644
|
||||||
|
--- a/pkg/observability/logs/logrus_test.go
|
||||||
|
+++ b/pkg/observability/logs/logrus_test.go
|
||||||
|
@@ -20,5 +20,5 @@ func TestNewLogrusStdWrapper(t *testing.T) {
|
||||||
|
|
||||||
|
logger.Println("foo")
|
||||||
|
|
||||||
|
- assert.Equal(t, "<nil> DBG logrus_test.go:21 > foo\n", buf.String())
|
||||||
|
+ assert.Equal(t, "<nil> DBG github.com/traefik/traefik/v3/pkg/observability/logs/logrus_test.go:21 > foo\n", buf.String())
|
||||||
|
}
|
||||||
|
diff --git a/pkg/observability/logs/oxy_test.go b/pkg/observability/logs/oxy_test.go
|
||||||
|
index 5645986..26f915c 100644
|
||||||
|
--- a/pkg/observability/logs/oxy_test.go
|
||||||
|
+++ b/pkg/observability/logs/oxy_test.go
|
||||||
|
@@ -20,5 +20,5 @@ func TestNewOxyWrapper(t *testing.T) {
|
||||||
|
|
||||||
|
logger.Info("foo")
|
||||||
|
|
||||||
|
- assert.Equal(t, "<nil> INF oxy_test.go:21 > foo\n", buf.String())
|
||||||
|
+ assert.Equal(t, "<nil> INF github.com/traefik/traefik/v3/pkg/observability/logs/oxy_test.go:21 > foo\n", buf.String())
|
||||||
|
}
|
||||||
@@ -27,7 +27,10 @@ HAMMER="${HAMMER:-$ROOT/target/release/hammer}"
|
|||||||
PROMOTE="${PROMOTE:-1}"
|
PROMOTE="${PROMOTE:-1}"
|
||||||
JOBS="${JOBS:-$(( $(nproc) - 2 ))}"; [ "$JOBS" -ge 1 ] || JOBS=1
|
JOBS="${JOBS:-$(( $(nproc) - 2 ))}"; [ "$JOBS" -ge 1 ] || JOBS=1
|
||||||
|
|
||||||
FARM="$ROOT/work/farm"
|
# Un subdir POR COLA: el worker-loop corre varias colas en serie por ciclo y con un dir compartido
|
||||||
|
# la cola siguiente PISA los logs/status de la anterior (imposible diagnosticar fallos de la fase go
|
||||||
|
# tras la fase clib). basename de $QUEUE ⇒ work/farm/incoming-go/{log,status}, etc.
|
||||||
|
FARM="$ROOT/work/farm/$(basename "$QUEUE")"
|
||||||
rm -rf "$FARM"; mkdir -p "$FARM/log" "$FARM/status"
|
rm -rf "$FARM"; mkdir -p "$FARM/log" "$FARM/status"
|
||||||
|
|
||||||
queue=$(ls "$QUEUE"/*.toml 2>/dev/null || true)
|
queue=$(ls "$QUEUE"/*.toml 2>/dev/null || true)
|
||||||
|
|||||||
@@ -78,10 +78,15 @@ for f in "$QUEUE"/*.toml; do
|
|||||||
[ -e "$f" ] || { echo "$(STAMP) cola vacía"; break; }
|
[ -e "$f" ] || { echo "$(STAMP) cola vacía"; break; }
|
||||||
n=$(basename "$f" .toml)
|
n=$(basename "$f" .toml)
|
||||||
|
|
||||||
|
# El artefacto del store se llama por el `name` INTERNO de la receta, que puede diferir del nombre
|
||||||
|
# del fichero (prometheus-blackbox-exporter.toml → name="blackbox_exporter"); sin esto el pre-check
|
||||||
|
# nunca los ve y quedan "no-sellados" para siempre.
|
||||||
|
rn=$(sed -n 's/^name *= *"\(.*\)".*/\1/p' "$f" | head -1); [ -n "$rn" ] || rn="$n"
|
||||||
|
|
||||||
# Pre-check BARATO: ¿el worker selló algo para este nombre? (tras el rsync el store local lo tiene).
|
# Pre-check BARATO: ¿el worker selló algo para este nombre? (tras el rsync el store local lo tiene).
|
||||||
# Sin esto, `hammer build` de una receta NO sellada ARRANCARÍA un build local (vendor+compile) y lo
|
# Sin esto, `hammer build` de una receta NO sellada ARRANCARÍA un build local (vendor+compile) y lo
|
||||||
# mataría el timeout ⇒ CPU del hub desperdiciada cada cosecha. Si no hay seal `*-<n>`, salto ya.
|
# mataría el timeout ⇒ CPU del hub desperdiciada cada cosecha. Si no hay seal `*-<rn>`, salto ya.
|
||||||
ls "$STORE"/*-"$n" >/dev/null 2>&1 || { skipped="$skipped $n"; continue; }
|
ls "$STORE"/*-"$rn" >/dev/null 2>&1 || { skipped="$skipped $n"; continue; }
|
||||||
|
|
||||||
# ¿sellada con el hash ACTUAL? cache-hit instantáneo imprime el hash; un build real (hash distinto,
|
# ¿sellada con el hash ACTUAL? cache-hit instantáneo imprime el hash; un build real (hash distinto,
|
||||||
# raro) se pasa del timeout ⇒ skip (no compilamos en el hub).
|
# raro) se pasa del timeout ⇒ skip (no compilamos en el hub).
|
||||||
@@ -100,14 +105,14 @@ for f in "$QUEUE"/*.toml; do
|
|||||||
argo-rollouts) want=kubectl-argo-rollouts ;; step-cli) want=step ;; soft-serve) want=soft ;; go-mockery) want=mockery ;;
|
argo-rollouts) want=kubectl-argo-rollouts ;; step-cli) want=step ;; soft-serve) want=soft ;; go-mockery) want=mockery ;;
|
||||||
temporal-cli) want=temporal ;;
|
temporal-cli) want=temporal ;;
|
||||||
seaweedfs) want=weed ;; go-migrate) want=migrate ;; jsonnet-bundler) want=jb ;; fabric-ai) want=fabric ;;
|
seaweedfs) want=weed ;; go-migrate) want=migrate ;; jsonnet-bundler) want=jb ;; fabric-ai) want=fabric ;;
|
||||||
crossplane-cli) want=crank ;;
|
crossplane-cli) want=crossplane ;;
|
||||||
*) want="$n" ;;
|
*) want="$rn" ;; # def: el name interno de la receta (== binario en la vía Go auto)
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# SMOKE-TEST: el seal debe instalar un binario cuyo nombre == $want. Si instaló otro (un helper:
|
# SMOKE-TEST: el seal debe instalar un binario cuyo nombre == $want. Si instaló otro (un helper:
|
||||||
# functional-test, protoc-gen-buf-lint, gosecutil…), detect_go_main eligió mal el main ⇒ NO es la
|
# functional-test, protoc-gen-buf-lint, gosecutil…), detect_go_main eligió mal el main ⇒ NO es la
|
||||||
# herramienta correcta aunque "corra" → a REVIEW (no firmamos un binario equivocado). Lección eksctl.
|
# herramienta correcta aunque "corra" → a REVIEW (no firmamos un binario equivocado). Lección eksctl.
|
||||||
d="$STORE/${H#b3:}-$n"
|
d="$STORE/${H#b3:}-$rn"
|
||||||
allbins=$(find "$d" -type f -path '*/bin/*' -perm -100 2>/dev/null)
|
allbins=$(find "$d" -type f -path '*/bin/*' -perm -100 2>/dev/null)
|
||||||
bin=$(printf '%s\n' "$allbins" | while read -r b; do [ "$(basename "$b")" = "$want" ] && { echo "$b"; break; }; done)
|
bin=$(printf '%s\n' "$allbins" | while read -r b; do [ "$(basename "$b")" = "$want" ] && { echo "$b"; break; }; done)
|
||||||
if [ -z "$bin" ]; then
|
if [ -z "$bin" ]; then
|
||||||
@@ -131,6 +136,10 @@ for f in "$QUEUE"/*.toml; do
|
|||||||
echo "$(STAMP) ✓ smoke $n (bin=$bn static=$isstatic): ${out%%
|
echo "$(STAMP) ✓ smoke $n (bin=$bn static=$isstatic): ${out%%
|
||||||
*}"
|
*}"
|
||||||
mv "$f" "recipes/$n.toml"
|
mv "$f" "recipes/$n.toml"
|
||||||
|
# los patches VIAJAN con la receta (lección 4517a98, faltaba acá): pack los lee de recipes/
|
||||||
|
for p in $(sed -n 's/^patches *= *\[\(.*\)\]/\1/p' "recipes/$n.toml" | tr -d '",' ); do
|
||||||
|
[ -f "$QUEUE/$p" ] && cp -n "$QUEUE/$p" "recipes/$p"
|
||||||
|
done
|
||||||
if "$HAMMER" --store "$STORE" pack "recipes/$n.toml" --repo "$REPO" --distro-version "$DISTRO" --build >/dev/null 2>&1; then
|
if "$HAMMER" --store "$STORE" pack "recipes/$n.toml" --repo "$REPO" --distro-version "$DISTRO" --build >/dev/null 2>&1; then
|
||||||
promoted="$promoted $n"
|
promoted="$promoted $n"
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user