diff --git a/.github/actions/go-check-setup/action.yml b/.github/actions/go-check-setup/action.yml index e674678db5..19c89f599f 100644 --- a/.github/actions/go-check-setup/action.yml +++ b/.github/actions/go-check-setup/action.yml @@ -1,11 +1,12 @@ +name: go check setup +description: prepares environment for go-check workflow + runs: using: "composite" steps: - - name: Install Protoc - uses: trail-of-forks/setup-protoc@a97892a429d98fae78d26f40334ab7eb616d08b9 # include https://github.com/arduino/setup-protoc/pull/58 - with: - version: '21.12' - repo-token: ${{ github.token }} - - name: Install Protobuf compiler + - name: Install tools shell: bash - run: go install google.golang.org/protobuf/cmd/protoc-gen-go + run: cd tools; make install + - name: Set env + shell: bash + run: echo "PATH=$PWD/tools/bin:$PATH" >> $GITHUB_ENV diff --git a/.gitignore b/.gitignore index 64c6d853dd..516dfe5129 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +tools/bin/ + *.swp .idea *.qlog diff --git a/core/crypto/pb/crypto.pb.go b/core/crypto/pb/crypto.pb.go index 0b4067941b..7cb09bc923 100644 --- a/core/crypto/pb/crypto.pb.go +++ b/core/crypto/pb/crypto.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.0 +// protoc v5.26.0 // source: pb/crypto.proto package pb diff --git a/core/network/mocks/network.go b/core/network/mocks/network.go index 73025bd288..64c30092c9 100644 --- a/core/network/mocks/network.go +++ b/core/network/mocks/network.go @@ -1,8 +1,8 @@ package mocknetwork -//go:generate sh -c "go run go.uber.org/mock/mockgen -package mocknetwork -destination mock_resource_manager.go github.com/libp2p/go-libp2p/core/network ResourceManager" -//go:generate sh -c "go run go.uber.org/mock/mockgen -package mocknetwork -destination mock_conn_management_scope.go github.com/libp2p/go-libp2p/core/network ConnManagementScope" -//go:generate sh -c "go run go.uber.org/mock/mockgen -package mocknetwork -destination mock_stream_management_scope.go github.com/libp2p/go-libp2p/core/network StreamManagementScope" -//go:generate sh -c "go run go.uber.org/mock/mockgen -package mocknetwork -destination mock_peer_scope.go github.com/libp2p/go-libp2p/core/network PeerScope" -//go:generate sh -c "go run go.uber.org/mock/mockgen -package mocknetwork -destination mock_protocol_scope.go github.com/libp2p/go-libp2p/core/network ProtocolScope" -//go:generate sh -c "go run go.uber.org/mock/mockgen -package mocknetwork -destination mock_resource_scope_span.go github.com/libp2p/go-libp2p/core/network ResourceScopeSpan" +//go:generate mockgen -package mocknetwork -destination mock_resource_manager.go github.com/libp2p/go-libp2p/core/network ResourceManager +//go:generate mockgen -package mocknetwork -destination mock_conn_management_scope.go github.com/libp2p/go-libp2p/core/network ConnManagementScope +//go:generate mockgen -package mocknetwork -destination mock_stream_management_scope.go github.com/libp2p/go-libp2p/core/network StreamManagementScope +//go:generate mockgen -package mocknetwork -destination mock_peer_scope.go github.com/libp2p/go-libp2p/core/network PeerScope +//go:generate mockgen -package mocknetwork -destination mock_protocol_scope.go github.com/libp2p/go-libp2p/core/network ProtocolScope +//go:generate mockgen -package mocknetwork -destination mock_resource_scope_span.go github.com/libp2p/go-libp2p/core/network ResourceScopeSpan diff --git a/core/peer/pb/peer_record.pb.go b/core/peer/pb/peer_record.pb.go index 2aa8a07aaa..8cce00b81e 100644 --- a/core/peer/pb/peer_record.pb.go +++ b/core/peer/pb/peer_record.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.0 +// protoc v5.26.0 // source: pb/peer_record.proto package pb diff --git a/core/record/pb/envelope.pb.go b/core/record/pb/envelope.pb.go index 1d3c7f25bc..2fc3bb7119 100644 --- a/core/record/pb/envelope.pb.go +++ b/core/record/pb/envelope.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.0 +// protoc v5.26.0 // source: pb/envelope.proto package pb diff --git a/core/sec/insecure/pb/plaintext.pb.go b/core/sec/insecure/pb/plaintext.pb.go index 16b910b4d0..b8c1a18271 100644 --- a/core/sec/insecure/pb/plaintext.pb.go +++ b/core/sec/insecure/pb/plaintext.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.0 +// protoc v5.26.0 // source: pb/plaintext.proto package pb diff --git a/go.mod b/go.mod index bff7698536..71da89c187 100644 --- a/go.mod +++ b/go.mod @@ -62,7 +62,6 @@ require ( golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 golang.org/x/sync v0.7.0 golang.org/x/sys v0.20.0 - golang.org/x/tools v0.21.0 google.golang.org/protobuf v1.34.1 ) @@ -123,6 +122,7 @@ require ( golang.org/x/mod v0.17.0 // indirect golang.org/x/net v0.25.0 // indirect golang.org/x/text v0.15.0 // indirect + golang.org/x/tools v0.21.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/blake3 v1.2.1 // indirect ) diff --git a/p2p/host/autonat/pb/autonat.pb.go b/p2p/host/autonat/pb/autonat.pb.go index 2764883f44..49fcd5f9d8 100644 --- a/p2p/host/autonat/pb/autonat.pb.go +++ b/p2p/host/autonat/pb/autonat.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.0 +// protoc v5.26.0 // source: pb/autonat.proto package pb diff --git a/p2p/host/basic/mock_nat_test.go b/p2p/host/basic/mock_nat_test.go index e601e7109d..25c62654d6 100644 --- a/p2p/host/basic/mock_nat_test.go +++ b/p2p/host/basic/mock_nat_test.go @@ -3,7 +3,7 @@ // // Generated by this command: // -// mockgen -build_flags=-tags=gomock -package basichost -destination mock_nat_test.go github.com/libp2p/go-libp2p/p2p/host/basic NAT +// mockgen -package basichost -destination mock_nat_test.go github.com/libp2p/go-libp2p/p2p/host/basic NAT // // Package basichost is a generated GoMock package. diff --git a/p2p/host/basic/mocks.go b/p2p/host/basic/mocks.go index a29a0c5ef7..8fbad28c1f 100644 --- a/p2p/host/basic/mocks.go +++ b/p2p/host/basic/mocks.go @@ -1,6 +1,4 @@ -//go:build gomock || generate - package basichost -//go:generate sh -c "go run go.uber.org/mock/mockgen -build_flags=\"-tags=gomock\" -package basichost -destination mock_nat_test.go github.com/libp2p/go-libp2p/p2p/host/basic NAT" +//go:generate mockgen -package basichost -destination mock_nat_test.go github.com/libp2p/go-libp2p/p2p/host/basic NAT type NAT nat diff --git a/p2p/host/peerstore/pstoreds/pb/pstore.pb.go b/p2p/host/peerstore/pstoreds/pb/pstore.pb.go index 43c620c0b3..04d0913dcb 100644 --- a/p2p/host/peerstore/pstoreds/pb/pstore.pb.go +++ b/p2p/host/peerstore/pstoreds/pb/pstore.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.0 +// protoc v5.26.0 // source: pb/pstore.proto package pb diff --git a/p2p/host/pstoremanager/pstoremanager_test.go b/p2p/host/pstoremanager/pstoremanager_test.go index 9321031c5a..6f2e2ab4b2 100644 --- a/p2p/host/pstoremanager/pstoremanager_test.go +++ b/p2p/host/pstoremanager/pstoremanager_test.go @@ -15,7 +15,7 @@ import ( "go.uber.org/mock/gomock" ) -//go:generate sh -c "go run go.uber.org/mock/mockgen -package pstoremanager_test -destination mock_peerstore_test.go github.com/libp2p/go-libp2p/core/peerstore Peerstore" +//go:generate mockgen -package pstoremanager_test -destination mock_peerstore_test.go github.com/libp2p/go-libp2p/core/peerstore Peerstore func TestGracePeriod(t *testing.T) { t.Parallel() diff --git a/p2p/net/nat/nat_test.go b/p2p/net/nat/nat_test.go index 50e1eb3a23..6487748944 100644 --- a/p2p/net/nat/nat_test.go +++ b/p2p/net/nat/nat_test.go @@ -13,7 +13,7 @@ import ( "go.uber.org/mock/gomock" ) -//go:generate sh -c "go run go.uber.org/mock/mockgen -package nat -destination mock_nat_test.go github.com/libp2p/go-nat NAT" +//go:generate mockgen -package nat -destination mock_nat_test.go github.com/libp2p/go-nat NAT func setupMockNAT(t *testing.T) (mockNAT *MockNAT, reset func()) { t.Helper() diff --git a/p2p/protocol/circuitv2/pb/circuit.pb.go b/p2p/protocol/circuitv2/pb/circuit.pb.go index d4d285a300..5747c7ca08 100644 --- a/p2p/protocol/circuitv2/pb/circuit.pb.go +++ b/p2p/protocol/circuitv2/pb/circuit.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.0 +// protoc v5.26.0 // source: pb/circuit.proto package pb diff --git a/p2p/protocol/circuitv2/pb/voucher.pb.go b/p2p/protocol/circuitv2/pb/voucher.pb.go index 917b537022..bcc6e80121 100644 --- a/p2p/protocol/circuitv2/pb/voucher.pb.go +++ b/p2p/protocol/circuitv2/pb/voucher.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.0 +// protoc v5.26.0 // source: pb/voucher.proto package pb diff --git a/p2p/protocol/holepunch/pb/holepunch.pb.go b/p2p/protocol/holepunch/pb/holepunch.pb.go index ca568580c8..3aa9f90cda 100644 --- a/p2p/protocol/holepunch/pb/holepunch.pb.go +++ b/p2p/protocol/holepunch/pb/holepunch.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.0 +// protoc v5.26.0 // source: pb/holepunch.proto package pb diff --git a/p2p/protocol/identify/pb/identify.pb.go b/p2p/protocol/identify/pb/identify.pb.go index 1c93815d45..1147050c58 100644 --- a/p2p/protocol/identify/pb/identify.pb.go +++ b/p2p/protocol/identify/pb/identify.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.0 +// protoc v5.26.0 // source: pb/identify.proto package pb diff --git a/p2p/security/noise/pb/payload.pb.go b/p2p/security/noise/pb/payload.pb.go index 8e3a805a58..5eac26540e 100644 --- a/p2p/security/noise/pb/payload.pb.go +++ b/p2p/security/noise/pb/payload.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.0 +// protoc v5.26.0 // source: pb/payload.proto package pb diff --git a/p2p/test/transport/gating_test.go b/p2p/test/transport/gating_test.go index df53da6eeb..aafd70e003 100644 --- a/p2p/test/transport/gating_test.go +++ b/p2p/test/transport/gating_test.go @@ -18,7 +18,7 @@ import ( "go.uber.org/mock/gomock" ) -//go:generate go run go.uber.org/mock/mockgen -package transport_integration -destination mock_connection_gater_test.go github.com/libp2p/go-libp2p/core/connmgr ConnectionGater +//go:generate mockgen -package transport_integration -destination mock_connection_gater_test.go github.com/libp2p/go-libp2p/core/connmgr ConnectionGater func stripCertHash(addr ma.Multiaddr) ma.Multiaddr { for { diff --git a/p2p/test/transport/transport_test.go b/p2p/test/transport/transport_test.go index e39b72a71a..7464555946 100644 --- a/p2p/test/transport/transport_test.go +++ b/p2p/test/transport/transport_test.go @@ -455,7 +455,7 @@ func TestMoreStreamsThanOurLimits(t *testing.T) { var err error // maxRetries is an arbitrary retry amount if there's any error. maxRetries := streamCount * 4 - shouldRetry := func(err error) bool { + shouldRetry := func(error) bool { didErr = true sawFirstErr.Store(true) maxRetries-- diff --git a/p2p/transport/quic/conn_test.go b/p2p/transport/quic/conn_test.go index d3e27a7e16..f28743c4cf 100644 --- a/p2p/transport/quic/conn_test.go +++ b/p2p/transport/quic/conn_test.go @@ -27,7 +27,7 @@ import ( "go.uber.org/mock/gomock" ) -//go:generate sh -c "go run go.uber.org/mock/mockgen -package libp2pquic -destination mock_connection_gater_test.go github.com/libp2p/go-libp2p/core/connmgr ConnectionGater && go run golang.org/x/tools/cmd/goimports -w mock_connection_gater_test.go" +//go:generate mockgen -package libp2pquic -destination mock_connection_gater_test.go github.com/libp2p/go-libp2p/core/connmgr ConnectionGater type connTestCase struct { Name string diff --git a/p2p/transport/webrtc/pb/message.pb.go b/p2p/transport/webrtc/pb/message.pb.go index 384bddd289..159675c604 100644 --- a/p2p/transport/webrtc/pb/message.pb.go +++ b/p2p/transport/webrtc/pb/message.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.0 +// protoc v5.26.0 // source: message.proto package pb diff --git a/p2p/transport/webtransport/transport_test.go b/p2p/transport/webtransport/transport_test.go index f6c850a2b9..a22bae49d6 100644 --- a/p2p/transport/webtransport/transport_test.go +++ b/p2p/transport/webtransport/transport_test.go @@ -360,7 +360,7 @@ func TestResourceManagerListening(t *testing.T) { } // TODO: unify somehow. We do the same in libp2pquic. -//go:generate sh -c "go run go.uber.org/mock/mockgen -package libp2pwebtransport_test -destination mock_connection_gater_test.go github.com/libp2p/go-libp2p/core/connmgr ConnectionGater && go run golang.org/x/tools/cmd/goimports -w mock_connection_gater_test.go" +//go:generate mockgen -package libp2pwebtransport_test -destination mock_connection_gater_test.go github.com/libp2p/go-libp2p/core/connmgr ConnectionGater func TestConnectionGaterDialing(t *testing.T) { ctrl := gomock.NewController(t) diff --git a/tools.go b/tools.go deleted file mode 100644 index 7a650d9c19..0000000000 --- a/tools.go +++ /dev/null @@ -1,9 +0,0 @@ -//go:build tools - -package libp2p - -import ( - _ "go.uber.org/mock/mockgen" - _ "golang.org/x/tools/cmd/goimports" - _ "google.golang.org/protobuf/cmd/protoc-gen-go" -) diff --git a/tools/Makefile b/tools/Makefile new file mode 100644 index 0000000000..b1042e3680 --- /dev/null +++ b/tools/Makefile @@ -0,0 +1,47 @@ +export GOBIN := $(abspath .)/bin +export PATH := $(GOBIN):$(PATH) + +ifeq ($(OS),Windows_NT) + UNAME_OS := windows + ifeq ($(PROCESSOR_ARCHITECTURE),AMD64) + UNAME_ARCH := x86_64 + endif + ifeq ($(PROCESSOR_ARCHITECTURE),ARM64) + UNAME_ARCH := aarch64 + endif + PROTOC_BUILD := win64 + + BIN_DIR := $(abspath .)/bin + export PATH := $(BIN_DIR);$(PATH) + TMP_PROTOC := $(TEMP)/protoc-$(RANDOM) +else + UNAME_OS := $(shell uname -s) + UNAME_ARCH := $(shell uname -m) + PROTOC_BUILD := $(shell echo ${UNAME_OS}-${UNAME_ARCH} | tr '[:upper:]' '[:lower:]' | sed 's/darwin/osx/' | sed 's/arm64/aarch_64/' | sed 's/aarch64/aarch_64/') + + BIN_DIR := $(abspath .)/bin + export PATH := $(BIN_DIR):$(PATH) + TMP_PROTOC := $(shell mktemp -d) +endif + +.PHONY: install-protoc +install-protoc: protoc-plugins + @mkdir -p $(BIN_DIR) +ifeq ($(OS),Windows_NT) + @mkdir -p $(TMP_PROTOC) +endif + curl -sSL https://github.com/protocolbuffers/protobuf/releases/download/v26.0/protoc-26.0-${PROTOC_BUILD}.zip -o $(TMP_PROTOC)/protoc.zip + @unzip $(TMP_PROTOC)/protoc.zip -d $(TMP_PROTOC) + @cp -f $(TMP_PROTOC)/bin/protoc $(BIN_DIR)/protoc + @chmod +x $(BIN_DIR)/protoc + +protoc-plugins: + go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.34.0 + +.PHONY: install +install: install-protoc + go install go.uber.org/mock/mockgen@v0.4.0 + +.PHONY: generate +generate: + cd .. && go generate ./...