From 866f7853d935e3fac3ef79cafbbb09f9dcecd763 Mon Sep 17 00:00:00 2001 From: "Masih H. Derkani" Date: Tue, 8 Oct 2024 18:27:49 +0100 Subject: [PATCH] Run cbor gen in parallel (#710) Run cbor gen in parallel for faster generation. --- gen/main.go | 71 +++++++++++++++++++++++++---------------------------- 1 file changed, 34 insertions(+), 37 deletions(-) diff --git a/gen/main.go b/gen/main.go index 4135e730..734f5ffd 100644 --- a/gen/main.go +++ b/gen/main.go @@ -9,48 +9,45 @@ import ( "github.com/filecoin-project/go-f3/cmd/f3/msgdump" "github.com/filecoin-project/go-f3/gpbft" gen "github.com/whyrusleeping/cbor-gen" + "golang.org/x/sync/errgroup" ) //go:generate go run . func main() { - err := gen.WriteTupleEncodersToFile("../gpbft/cbor_gen.go", "gpbft", - gpbft.TipSet{}, - gpbft.GMessage{}, - gpbft.SupplementalData{}, - gpbft.Payload{}, - gpbft.Justification{}, - gpbft.PowerEntry{}, - gpbft.PowerEntries{}, - ) - if err != nil { - fmt.Println(err) - os.Exit(1) - } - - err = gen.WriteTupleEncodersToFile("../certs/cbor_gen.go", "certs", - certs.PowerTableDelta{}, - certs.PowerTableDiff{}, - certs.FinalityCertificate{}, - ) - if err != nil { - fmt.Println(err) - os.Exit(1) - } - err = gen.WriteTupleEncodersToFile("../certexchange/cbor_gen.go", "certexchange", - certexchange.Request{}, - certexchange.ResponseHeader{}, - ) - if err != nil { - fmt.Println(err) - os.Exit(1) - } - err = gen.WriteTupleEncodersToFile("../cmd/f3/msgdump/cbor_gen.go", "msgdump", - msgdump.GMessageEnvelope{}, - msgdump.GMessageEnvelopeDeffered{}, - ) - if err != nil { - fmt.Println(err) + var eg errgroup.Group + eg.Go(func() error { + return gen.WriteTupleEncodersToFile("../gpbft/cbor_gen.go", "gpbft", + gpbft.TipSet{}, + gpbft.GMessage{}, + gpbft.SupplementalData{}, + gpbft.Payload{}, + gpbft.Justification{}, + gpbft.PowerEntry{}, + gpbft.PowerEntries{}, + ) + }) + eg.Go(func() error { + return gen.WriteTupleEncodersToFile("../certs/cbor_gen.go", "certs", + certs.PowerTableDelta{}, + certs.PowerTableDiff{}, + certs.FinalityCertificate{}, + ) + }) + eg.Go(func() error { + return gen.WriteTupleEncodersToFile("../certexchange/cbor_gen.go", "certexchange", + certexchange.Request{}, + certexchange.ResponseHeader{}, + ) + }) + eg.Go(func() error { + return gen.WriteTupleEncodersToFile("../cmd/f3/msgdump/cbor_gen.go", "msgdump", + msgdump.GMessageEnvelope{}, + msgdump.GMessageEnvelopeDeffered{}, + ) + }) + if err := eg.Wait(); err != nil { + fmt.Printf("Failed to complete cborg_gen: %v\n", err) os.Exit(1) } }