@@ -6,35 +6,47 @@ ifeq ($(USER),vagrant)
6
6
BIN_ARCH := -$(OS)
7
7
endif
8
8
9
+ BASE_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST ) ) ) )
10
+
11
+ BIN ?= bin
12
+ IGNORE := $(shell mkdir -p $(BIN ) )
9
13
export GOPATH ?= $(shell echo $(CURDIR ) | sed -e 's,/src/.* ,,')
10
14
SWAGGER ?= $(GOPATH ) /bin/swagger$(BIN_ARCH )
11
15
GOVET ?= $(GOPATH ) /bin/vet$(BIN_ARCH )
12
16
GOIMPORTS ?= $(GOPATH ) /bin/goimports$(BIN_ARCH )
13
17
GOLINT ?= $(GOPATH ) /bin/golint$(BIN_ARCH )
14
18
GVT ?= $(GOPATH ) /bin/gvt$(BIN_ARCH )
15
19
16
-
17
20
.PHONY : all tools clean test check \
18
21
goversion govet goimports gvt gopath \
19
- bootstrap apiservers \
20
-
22
+ isos tethers apiservers
21
23
22
24
.DEFAULT_GOAL := all
23
25
24
26
25
27
# target aliases - environment variable definition
26
- docker-engine-api := binary/docker-engine-server
27
-
28
- portlayerapi := binary/port-layer-server
28
+ docker-engine-api := $(BIN ) /docker-engine-server
29
+ portlayerapi := $(BIN ) /port-layer-server
29
30
portlayerapi-client := apiservers/portlayer/client/port_layer_client.go
30
31
portlayerapi-server := apiservers/portlayer/restapi/server.go
31
32
32
- imagec := binary/imagec
33
- vicadmin := binary/vicadmin
34
- rpctool := binary/rpctool
33
+ imagec := $(BIN ) /imagec
34
+ vicadmin := $(BIN ) /vicadmin
35
+ rpctool := $(BIN ) /rpctool
36
+
37
+ tether-linux := $(BIN ) /tether-linux
38
+ tether-windows := $(BIN ) /tether-windows.exe
39
+
40
+ appliance := $(BIN ) /appliance.iso
41
+ appliance-staging := $(BIN ) /appliance-staging.tgz
42
+ bootstrap := $(BIN ) /bootstrap.iso
43
+ iso-base := $(BIN ) /iso-base.tgz
35
44
36
- tether-linux := binary/tether-linux
37
- tether-windows := binary/tether-windows.exe
45
+ install := $(BIN ) /install.sh
46
+
47
+ go-lint := $(BIN ) /.golint
48
+ go-vet := $(BIN ) /.govet
49
+ go-imports := $(BIN ) /.goimports
38
50
39
51
# target aliases - target mapping
40
52
docker-engine-api : $(docker-engine-api )
@@ -49,25 +61,41 @@ rpctool: $(rpctool)
49
61
tether-linux : $(tether-linux )
50
62
tether-windows : $(tether-windows )
51
63
64
+ appliance : $(appliance )
65
+ appliance-staging : $(appliance-staging )
66
+ bootstrap : $(bootstrap )
67
+ iso-base : $(iso-base )
68
+
69
+ install : $(install )
70
+
52
71
swagger : $(SWAGGER )
53
72
73
+ golint : $(go-lint )
74
+ govet : $(go-vet )
75
+ goimports : $(go-imports )
76
+
77
+
54
78
# convenience targets
55
- all : check bootstrap apiservers $( imagec ) $( vicadmin )
79
+ all : components isos install
56
80
tools : $(GOIMPORTS ) $(GOVET ) $(GVT ) $(GOLINT ) $(SWAGGER ) goversion
57
81
check : goversion goimports govet golint
58
82
apiservers : $(portlayerapi ) $(docker-engine-api )
59
83
bootstrap : $(tether-linux ) $(tether-windows ) $(rpctool )
84
+ components : check apiservers $(imagec ) $(vicadmin ) $(rpctool )
85
+ isos : $(appliance ) $(bootstrap )
86
+ tethers : $(tether-linux ) $(tether-windows )
60
87
61
88
89
+ # utility targets
62
90
goversion :
63
91
@echo checking go version...
64
92
@ ( $( GO) version | grep -q $( GOVERSION) ) || ( echo " Please install $( GOVERSION) (found: $$ ($( GO) version))" && exit 1 )
65
93
66
- $(GOIMPORTS ) :
94
+ $(GOIMPORTS ) : vendor/manifest
67
95
@echo building $(GOIMPORTS ) ...
68
96
$(GO ) build -o $(GOIMPORTS ) ./vendor/golang.org/x/tools/cmd/goimports
69
97
70
- $(GOVET ) :
98
+ $(GOVET ) : vendor/manifest
71
99
@echo building $(GOVET ) ...
72
100
$(GO ) build -o $(GOVET ) ./vendor/golang.org/x/tools/cmd/vet
73
101
@@ -79,16 +107,16 @@ $(GOLINT): vendor/manifest
79
107
@echo building $(GOLINT ) ...
80
108
$(GO ) build -o $(GOLINT ) ./vendor/github.com/golang/lint/golint
81
109
82
- $(SWAGGER ) :
110
+ $(SWAGGER ) : vendor/manifest
83
111
@echo building $(SWAGGER ) ...
84
112
@$(GO ) build -o $(SWAGGER ) ./vendor/github.com/go-swagger/go-swagger/cmd/swagger
85
113
86
114
# exit 1 if golint complains about anything other than comments
87
115
golintf = $(GOLINT ) $(1 ) | sh -c "! grep -v 'should have comment'"
88
116
89
- golint : $(GOLINT )
117
+ $( go-lint ) : $(GOLINT )
90
118
@echo checking go lint...
91
- @# $(call golintf,github.com/vmware/vic/bootstrap/...) # this is commented out due to number of warnings
119
+ @ # $(call golintf,github.com/vmware/vic/bootstrap/...) # this is commented out due to number of warnings
92
120
@$(call golintf,github.com/vmware/vic/imagec/...)
93
121
@$(call golintf,github.com/vmware/vic/vicadmin/...)
94
122
@$(call golintf,github.com/vmware/vic/pkg/...)
@@ -102,21 +130,24 @@ golint: $(GOLINT)
102
130
gopath :
103
131
@echo -n $(GOPATH )
104
132
105
- goimports : $(GOIMPORTS )
133
+ $( go-imports ) : $(GOIMPORTS ) $( find . -type f -name '*.go' -not -path "./vendor/*" )
106
134
@echo checking go imports...
107
135
@! $(GOIMPORTS ) -d $$(find . -type f -name '*.go' -not -path "./vendor/*" ) 2>&1 | egrep -v ' ^$$'
136
+ @touch $@
108
137
109
- govet : $(GOVET )
138
+ $( go-vet ) : $(GOVET ) $( find . -type f -name '*.go' -not -path "./vendor/*" )
110
139
@echo checking go vet...
111
140
@$(GOVET ) -all -shadow $$(find . -type f -name '*.go' -not -path "./vendor/*" )
141
+ @touch $@
112
142
113
143
vendor : $(GVT )
114
144
@echo restoring vendor
115
145
$(GOPATH ) /bin/gvt restore
116
146
117
- integration-tests :
118
- docker build -t imagec_tests -f Dockerfile.integration-tests .
119
- docker run --rm imagec_tests
147
+ integration-tests : Dockerfile.integration-tests tests/imagec.bats tests/helpers/helpers.bash components
148
+ @echo Running integration tests
149
+ @docker build -t imagec_tests -f Dockerfile.integration-tests .
150
+ docker run -e BIN=$(BIN ) --rm imagec_tests
120
151
121
152
TEST_DIRS =github.com/vmware/vic/bootstrap/...
122
153
TEST_DIRS+ =github.com/vmware/vic/imagec
@@ -159,6 +190,7 @@ $(imagec): imagec/*.go $(portlayerapi-client)
159
190
@echo building imagec...
160
191
@CGO_ENABLED=0 $(GO ) build -o ./$@ --ldflags ' -extldflags "-static"' ./$(dir $< )
161
192
193
+
162
194
$(docker-engine-api ) : $(portlayerapi-client ) apiservers/engine/server/* .go apiservers/engine/backends/* .go
163
195
ifeq ($(OS ) ,linux)
164
196
@echo Building docker-engine-api server...
@@ -167,26 +199,52 @@ else
167
199
@echo skipping docker-engine-api server, cannot build on non-linux
168
200
endif
169
201
202
+
203
+
170
204
# Common portlayer dependencies between client and server
171
205
PORTLAYER_DEPS ?= apiservers/portlayer/swagger.yml \
172
206
apiservers/portlayer/restapi/configure_port_layer.go \
173
207
apiservers/portlayer/restapi/options/*.go apiservers/portlayer/restapi/handlers/*.go
174
208
175
209
$(portlayerapi-client ) : $(PORTLAYER_DEPS ) $(SWAGGER )
176
210
@echo regenerating swagger models and operations for Portlayer API client...
177
- @$(SWAGGER ) generate client -A PortLayer -t $(dir $< ) -f $<
211
+ @$(SWAGGER ) generate client -A PortLayer -t $(realpath $( dir $< ) ) -f $<
178
212
179
213
180
214
$(portlayerapi-server ) : $(PORTLAYER_DEPS ) $(SWAGGER )
181
215
@echo regenerating swagger models and operations for Portlayer API server...
182
- @$(SWAGGER ) generate server -A PortLayer -t $(dir $< ) -f $<
216
+ @$(SWAGGER ) generate server -A PortLayer -t $(realpath $( dir $< ) ) -f $<
183
217
184
218
$(portlayerapi ) : $(portlayerapi-server ) $(shell find apiservers/engine/ -name '* .go')
185
219
@echo building Portlayer API server...
186
220
@$(GO ) build -o $@ ./apiservers/portlayer/cmd/port-layer-server
187
221
222
+
223
+ $(iso-base ) : isos/base.sh isos/base/* .repo isos/base/isolinux/**
224
+ @echo building iso-base docker image
225
+ @ # docker build -t $@ -f $< $(dir $<)
226
+ @$< -p $@
227
+
228
+ # appliance staging - allows for caching of package install
229
+ $(appliance-staging ) : isos/appliance-staging.sh $(iso-base )
230
+ @echo staging for VCH appliance
231
+ @$< -p $(iso-base ) -o $@
232
+
233
+ # main appliance target - depends on all top level component targets
234
+ $(appliance ) : isos/appliance.sh $(rpctool ) $(vicadmin ) $(imagec ) $(portlayerapi ) $(docker-engine-api ) $(appliance-staging )
235
+ @echo building VCH appliance ISO
236
+ @$< -p $(appliance-staging ) -b $(BIN )
237
+
238
+ # main bootstrap target
239
+ $(bootstrap ) : $(tether-linux ) $(rpctool ) $(iso-base )
240
+ @echo " Placeholder target for bootstrap"
241
+
242
+ $(install ) : install/install.sh
243
+ @echo Building installer
244
+ @cp $< $@
245
+
188
246
clean :
189
- rm -rf ./binary
247
+ rm -rf $( BIN )
190
248
191
249
@echo removing swagger generated files...
192
250
rm -f ./apiservers/portlayer/restapi/doc.go
@@ -196,3 +254,6 @@ clean:
196
254
rm -rf ./apiservers/portlayer/cmd/
197
255
rm -rf ./apiservers/portlayer/models/
198
256
rm -rf ./apiservers/portlayer/restapi/operations/
257
+ rm -fr ./tests/helpers/bats-assert/
258
+ rm -fr ./tests/helpers/bats-support/
259
+
0 commit comments