From a4e9f875cd9106e1fa1cae3c4ecdbb48a7af0eb6 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Tue, 10 Mar 2026 18:30:57 -0600 Subject: [PATCH] fix(go): pad versions to 3 parts, filter -arm6. oddity Node.js pads Go versions like "1.10" to "1.10.0". Match this behavior in the classifier and comparecache version normalizer. Also filter -arm6. malformed arch and .src. source tarballs from comparison noise. Match count: 73/106 --- cmd/comparecache/main.go | 14 ++++++++++++-- internal/classifypkg/classifypkg.go | 10 ++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/cmd/comparecache/main.go b/cmd/comparecache/main.go index 78d2383..5a17b78 100644 --- a/cmd/comparecache/main.go +++ b/cmd/comparecache/main.go @@ -495,8 +495,8 @@ func isLiveNoise(name string) bool { } } - // Source tarballs (e.g. gitea-src-1.25.4.tar.gz, caddy_2.10.0_src.tar.gz). - if strings.Contains(lower, "-src-") || strings.Contains(lower, "_src.") || strings.HasPrefix(lower, "src-") { + // Source tarballs (e.g. gitea-src-1.25.4.tar.gz, caddy_2.10.0_src.tar.gz, go1.26.1.src.tar.gz). + if strings.Contains(lower, "-src-") || strings.Contains(lower, "_src.") || strings.Contains(lower, ".src.") || strings.HasPrefix(lower, "src-") { return true } @@ -556,6 +556,16 @@ func normalizeVersionFunc(pkg string) func(string) string { } return v } + case "go": + return func(v string) string { + // Go: go1.10 → 1.10.0 (pad to 3 parts) + v = strings.TrimPrefix(v, "go") + parts := strings.SplitN(v, ".", 3) + for len(parts) < 3 { + parts = append(parts, "0") + } + return strings.Join(parts, ".") + } default: return func(v string) string { return v } } diff --git a/internal/classifypkg/classifypkg.go b/internal/classifypkg/classifypkg.go index 8f2daee..2fe25a6 100644 --- a/internal/classifypkg/classifypkg.go +++ b/internal/classifypkg/classifypkg.go @@ -687,8 +687,14 @@ func classifyGolang(d *rawcache.Dir) ([]storage.Asset, error) { continue } - // Strip "go" prefix from version: "go1.24.1" → "1.24.1" + // Strip "go" prefix and pad to 3-part version: "go1.10" → "1.10.0" version := strings.TrimPrefix(rel.Version, "go") + parts := strings.SplitN(version, ".", 3) + for len(parts) < 3 { + parts = append(parts, "0") + } + version = strings.Join(parts, ".") + channel := "stable" if !rel.Stable { channel = "beta" @@ -699,7 +705,7 @@ func classifyGolang(d *rawcache.Dir) ([]storage.Asset, error) { continue } // Skip bootstrap and odd builds. - if strings.Contains(f.Filename, "bootstrap") { + if strings.Contains(f.Filename, "bootstrap") || strings.Contains(f.Filename, "-arm6.") { continue }