build: fix doCheckGenerate not print changed files

This commit is contained in:
wit 2025-11-27 15:39:04 +08:00
parent 6452b7ad05
commit 2dc1a6685c
2 changed files with 15 additions and 9 deletions

View file

@ -343,7 +343,7 @@ func buildFlags(env build.Environment, staticLinking bool, buildTags []string) (
} }
ld = append(ld, "-extldflags", "'"+strings.Join(extld, " ")+"'") ld = append(ld, "-extldflags", "'"+strings.Join(extld, " ")+"'")
} }
// TODO(gballet): revisit after the input api has been defined // TODO(gballet): revisit after the input api has been defined
if runtime.GOARCH == "wasm" { if runtime.GOARCH == "wasm" {
ld = append(ld, "-gcflags=all=-d=softfloat") ld = append(ld, "-gcflags=all=-d=softfloat")
} }
@ -462,9 +462,14 @@ func doCheckGenerate() {
) )
pathList := []string{filepath.Join(protocPath, "bin"), protocGenGoPath, os.Getenv("PATH")} pathList := []string{filepath.Join(protocPath, "bin"), protocGenGoPath, os.Getenv("PATH")}
excludes := []string{"tests/testdata", "build/cache", ".git"}
for i := range excludes {
excludes[i] = filepath.FromSlash(excludes[i])
}
for _, mod := range goModules { for _, mod := range goModules {
// Compute the origin hashes of all the files // Compute the origin hashes of all the files
hashes, err := build.HashFolder(mod, []string{"tests/testdata", "build/cache", ".git"}) hashes, err := build.HashFolder(mod, excludes)
if err != nil { if err != nil {
log.Fatal("Error computing hashes", "err", err) log.Fatal("Error computing hashes", "err", err)
} }
@ -474,7 +479,7 @@ func doCheckGenerate() {
c.Dir = mod c.Dir = mod
build.MustRun(c) build.MustRun(c)
// Check if generate file hashes have changed // Check if generate file hashes have changed
generated, err := build.HashFolder(mod, []string{"tests/testdata", "build/cache", ".git"}) generated, err := build.HashFolder(mod, excludes)
if err != nil { if err != nil {
log.Fatalf("Error re-computing hashes: %v", err) log.Fatalf("Error re-computing hashes: %v", err)
} }

View file

@ -21,20 +21,21 @@ import (
"io" "io"
"os" "os"
"path/filepath" "path/filepath"
"sort" "slices"
"strings"
) )
// HashFolder iterates all files under the given directory, computing the hash // HashFolder iterates all files under the given directory, computing the hash
// of each. // of each.
func HashFolder(folder string, exlude []string) (map[string][32]byte, error) { func HashFolder(folder string, excludes []string) (map[string][32]byte, error) {
res := make(map[string][32]byte) res := make(map[string][32]byte)
err := filepath.WalkDir(folder, func(path string, d os.DirEntry, _ error) error { err := filepath.WalkDir(folder, func(path string, d os.DirEntry, _ error) error {
// Skip anything that's exluded or not a regular file // Skip anything that's exluded or not a regular file
for _, skip := range exlude { // Skip anything that's excluded or not a regular file
if strings.HasPrefix(path, filepath.FromSlash(skip)) { if slices.Contains(excludes, path) {
if d.IsDir() {
return filepath.SkipDir return filepath.SkipDir
} }
return nil
} }
if !d.Type().IsRegular() { if !d.Type().IsRegular() {
return nil return nil
@ -71,6 +72,6 @@ func DiffHashes(a map[string][32]byte, b map[string][32]byte) []string {
updates = append(updates, file) updates = append(updates, file)
} }
} }
sort.Strings(updates) slices.Sort(updates)
return updates return updates
} }