diff --git a/cmd/crossbuild.go b/cmd/crossbuild.go index 59ad0f7..5c2f2b8 100644 --- a/cmd/crossbuild.go +++ b/cmd/crossbuild.go @@ -22,11 +22,10 @@ import ( "sort" "strconv" "strings" - "sync" "time" kingpin "github.com/alecthomas/kingpin/v2" - "go.uber.org/atomic" + "golang.org/x/sync/errgroup" "github.com/prometheus/promu/util/sh" ) @@ -190,19 +189,13 @@ func (pg platformGroup) Build(repoPath string) error { if err != nil { return err } - var wg sync.WaitGroup - wg.Add(*parallelFlag) - atomicErr := atomic.NewError(nil) - for p := 0; p < *parallelFlag; p++ { - go func(p int) { - defer wg.Done() - if err := pg.buildThread(repoPath, p); err != nil { - atomicErr.Store(err) - } - }(p) + var g errgroup.Group + for p := range *parallelFlag { + g.Go(func() error { + return pg.buildThread(repoPath, p) + }) } - wg.Wait() - return atomicErr.Load() + return g.Wait() } func (pg platformGroup) buildThread(repoPath string, p int) error { diff --git a/go.mod b/go.mod index 5e0773f..3f60585 100644 --- a/go.mod +++ b/go.mod @@ -7,9 +7,9 @@ require ( github.com/alecthomas/kingpin/v2 v2.4.0 github.com/google/go-github/v25 v25.1.3 github.com/prometheus/common v0.67.5 - go.uber.org/atomic v1.11.0 go.yaml.in/yaml/v2 v2.4.4 golang.org/x/oauth2 v0.36.0 + golang.org/x/sync v0.20.0 ) require ( diff --git a/go.sum b/go.sum index 64db6af..0ed69f4 100644 --- a/go.sum +++ b/go.sum @@ -28,8 +28,6 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8Ydu2Bstc= github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= -go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= -go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -38,6 +36,8 @@ golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAG golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=