@@ -21,7 +21,7 @@ export GOPATH
21
21
22
22
# Only set PROTOC_VER if it has an empty value.
23
23
ifeq (,$(strip $(PROTOC_VER ) ) )
24
- PROTOC_VER := 3.9.1
24
+ PROTOC_VER := 24.3
25
25
endif
26
26
27
27
PROTOC_OS := $(shell uname -s)
@@ -32,75 +32,46 @@ endif
32
32
PROTOC_ARCH := $(shell uname -m)
33
33
ifeq (i386,$(PROTOC_ARCH ) )
34
34
PROTOC_ARCH := x86_32
35
+ else ifeq (arm64,$(PROTOC_ARCH))
36
+ PROTOC_ARCH := aarch_64
35
37
endif
36
38
37
39
PROTOC := ./protoc
38
40
PROTOC_ZIP := protoc-$(PROTOC_VER ) -$(PROTOC_OS ) -$(PROTOC_ARCH ) .zip
39
- PROTOC_URL := https://github.com/google /protobuf/releases/download/v$(PROTOC_VER ) /$(PROTOC_ZIP )
41
+ PROTOC_URL := https://github.com/protocolbuffers /protobuf/releases/download/v$(PROTOC_VER ) /$(PROTOC_ZIP )
40
42
PROTOC_TMP_DIR := .protoc
41
43
PROTOC_TMP_BIN := $(PROTOC_TMP_DIR ) /bin/protoc
42
44
43
45
$(PROTOC ) :
44
- -mkdir -p " $( PROTOC_TMP_DIR) " && \
46
+ -go install google.golang.org/protobuf/cmd/
[email protected] && \
47
+ go install google.golang.org/grpc/cmd/
[email protected] && \
48
+ mkdir -p " $( PROTOC_TMP_DIR) " && \
45
49
curl -L $(PROTOC_URL ) -o " $( PROTOC_TMP_DIR) /$( PROTOC_ZIP) " && \
46
50
unzip " $( PROTOC_TMP_DIR) /$( PROTOC_ZIP) " -d " $( PROTOC_TMP_DIR) " && \
47
51
chmod 0755 " $( PROTOC_TMP_BIN) " && \
48
52
cp -f " $( PROTOC_TMP_BIN) " " $@ "
49
53
stat " $@ " > /dev/null 2>&1
50
54
51
-
52
- # #######################################################################
53
- # # PROTOC-GEN-GO ##
54
- # #######################################################################
55
-
56
- # This is the recipe for getting and installing the go plug-in
57
- # for protoc
58
- PROTOC_GEN_GO_PKG := github.com/golang/protobuf/protoc-gen-go
59
- PROTOC_GEN_GO := protoc-gen-go
60
- $(PROTOC_GEN_GO ) : PROTOBUF_PKG := $(dir $(PROTOC_GEN_GO_PKG ) )
61
- $(PROTOC_GEN_GO ) : PROTOBUF_VERSION := v1.3.2
62
- $(PROTOC_GEN_GO ) :
63
- mkdir -p $(dir $(GOPATH ) /src/$(PROTOBUF_PKG ) )
64
- test -d $(GOPATH ) /src/$(PROTOBUF_PKG ) /.git || git clone https://$(PROTOBUF_PKG ) $(GOPATH ) /src/$(PROTOBUF_PKG )
65
- (cd $( GOPATH) /src/$( PROTOBUF_PKG) && \
66
- (test " $$ (git describe --tags | head -1)" = " $( PROTOBUF_VERSION) " || \
67
- (git fetch && git checkout tags/$( PROTOBUF_VERSION) )))
68
- (cd $( GOPATH) /src/$( PROTOBUF_PKG) && go get -v -d $$ (go list -f ' {{ .ImportPath }}' ./...)) && \
69
- go build -o " $@ " $(PROTOC_GEN_GO_PKG )
70
-
71
-
72
- # #######################################################################
73
- # # PATH ##
74
- # #######################################################################
75
-
76
- # Update PATH with the current directory. This enables the protoc
77
- # binary to discover the protoc-gen-go binary, built inside this
78
- # directory.
79
- export PATH := $(shell pwd) :$(PATH )
80
-
81
-
82
55
# #######################################################################
83
56
# # BUILD ##
84
57
# #######################################################################
85
58
CSI_PROTO := ../../csi.proto
86
59
CSI_PKG_ROOT := github.com/container-storage-interface/spec
87
- CSI_PKG_SUB := $(shell cat $(CSI_PROTO ) | sed -n -e 's/^package.\ ([^;]* \ ) .v[0-9]\ +;$$/\1/p'|tr '.' '/')
60
+ CSI_PKG_SUB := $(shell cat $(CSI_PROTO ) | sed -nE -e 's/^package.([^;]* ) .v[0-9]+;$$/\1/p'|tr '.' '/')
88
61
CSI_BUILD := $(CSI_PKG_SUB ) /.build
89
62
CSI_GO := $(CSI_PKG_SUB ) /csi.pb.go
90
- CSI_GO_TMP := $(CSI_BUILD ) /$(CSI_PKG_ROOT ) /csi.pb.go
63
+ CSI_GRPC := $(CSI_PKG_SUB ) /csi_grpc.pb.go
64
+ CSI_GRPC_TMP := $(CSI_BUILD ) /$(CSI_PKG_ROOT ) /$(CSI_PKG_SUB ) /csi_grpc.pb.go
65
+ CSI_GO_TMP := $(CSI_BUILD ) /$(CSI_PKG_ROOT ) /$(CSI_PKG_SUB ) /csi.pb.go
91
66
92
67
# This recipe generates the go language bindings to a temp area.
93
- $(CSI_GO_TMP ) : HERE := $(shell pwd)
94
- $(CSI_GO_TMP ) : PTYPES_PKG := github.com/golang/protobuf/ptypes
95
- $(CSI_GO_TMP ) : GO_OUT := plugins=grpc
96
- $(CSI_GO_TMP ) : GO_OUT := $(GO_OUT ) ,Mgoogle/protobuf/descriptor.proto=github.com/golang/protobuf/protoc-gen-go/descriptor
97
- $(CSI_GO_TMP ) : GO_OUT := $(GO_OUT ) ,Mgoogle/protobuf/wrappers.proto=$(PTYPES_PKG ) /wrappers
98
- $(CSI_GO_TMP ) : GO_OUT := $(GO_OUT ) :"$(HERE ) /$(CSI_BUILD ) "
99
- $(CSI_GO_TMP ) : INCLUDE := -I$(GOPATH ) /src -I$(HERE ) /$(PROTOC_TMP_DIR ) /include
100
- $(CSI_GO_TMP ) : $(CSI_PROTO ) | $(PROTOC ) $(PROTOC_GEN_GO )
68
+ $(CSI_GO_TMP ) $(CSI_GRPC_TMP ) : INCLUDE := -I$(GOPATH ) /src -I$(PROTOC_TMP_DIR ) /include
69
+ $(CSI_GO_TMP ) $(CSI_GRPC_TMP ) : $(CSI_PROTO ) | $(PROTOC )
101
70
@mkdir -p " $( @D) "
102
- (cd " $( GOPATH) /src" && \
103
- $(HERE ) /$(PROTOC ) $(INCLUDE ) --go_out=$(GO_OUT ) " $( CSI_PKG_ROOT) /$( < F) " )
71
+ $(PROTOC ) $(INCLUDE ) --go-grpc_out=$(CSI_BUILD ) --go_out=$(CSI_BUILD ) \
72
+ --go_opt=Mgoogle/protobuf/descriptor.proto=github.com/golang/protobuf/protoc-gen-go/descriptor \
73
+ --go_opt=Mgoogle/protobuf/wrappers.proto=github.com/golang/protobuf/ptypes/wrappers \
74
+ " $( CSI_PKG_ROOT) /$( < F) "
104
75
105
76
# The temp language bindings are compared to the ones that are
106
77
# versioned. If they are different then it means the language
@@ -112,15 +83,22 @@ else
112
83
@mkdir -p "$(@D)"
113
84
diff "$@" "$?" > /dev/null 2>&1 || cp -f "$?" "$@"
114
85
endif
86
+ $(CSI_GRPC ) : $(CSI_GRPC_TMP )
87
+ ifeq (true,$(GITHUB_ACTIONS ) )
88
+ diff "$@" "$?"
89
+ else
90
+ @mkdir -p "$(@D)"
91
+ diff "$@" "$?" > /dev/null 2>&1 || cp -f "$?" "$@"
92
+ endif
115
93
116
94
117
- build : $(CSI_GO )
95
+ build : $(CSI_GO ) $( CSI_GRPC )
118
96
119
97
clean :
120
98
go clean -i ./...
121
- rm -rf " $( CSI_GO) " " $( CSI_BUILD) "
99
+ rm -rf " $( CSI_GO) " " $( CSI_GRPC ) " " $( CSI_BUILD) "
122
100
123
101
clobber : clean
124
- rm -fr " $( PROTOC) " " $( PROTOC_GEN_GO ) " " $( CSI_PKG_SUB) "
102
+ rm -fr " $( PROTOC) " " $( CSI_PKG_SUB) "
125
103
126
104
.PHONY : clean clobber
0 commit comments