@@ -62,8 +62,9 @@ K := $(foreach exec,$(EXECUTABLES),\
62
62
63
63
GOSHIM_DEPS = $(shell ./scripts/goListFiles.sh $(PKGNAME ) /core/chaincode/shim | sort | uniq)
64
64
JAVASHIM_DEPS = $(shell git ls-files core/chaincode/shim/java)
65
+ PROTOS = $(shell git ls-files * .proto | grep -v vendor)
65
66
PROJECT_FILES = $(shell git ls-files)
66
- IMAGES = src ccenv peer javaenv orderer
67
+ IMAGES = peer orderer ccenv javaenv
67
68
68
69
pkgmap.peer := $(PKGNAME ) /peer
69
70
pkgmap.orderer := $(PKGNAME ) /orderer
@@ -132,22 +133,18 @@ build/bin/chaintool: Makefile
132
133
@mkdir -p $(@D )
133
134
@cp $^ $@
134
135
135
- # JIRA FAB-243 - Mark build/docker/bin artifacts explicitly as secondary
136
- # since they are never referred to directly. This prevents
137
- # the makefile from deleting them inadvertently.
138
- .SECONDARY : build/docker/bin/peer build/docker/bin/orderer
139
-
140
136
# We (re)build a package within a docker context but persist the $GOPATH/pkg
141
137
# directory so that subsequent builds are faster
142
- build/docker/bin/% : build/image/src/.dummy $(PROJECT_FILES )
138
+ build/docker/bin/% : $(PROJECT_FILES )
143
139
$(eval TARGET = ${patsubst build/docker/bin/% ,% ,${@}})
144
140
@echo " Building $@ "
145
141
@mkdir -p build/docker/bin build/docker/pkg
146
142
@docker run -i \
147
143
--user=$(UID ) \
148
144
-v $(abspath build/docker/bin) :/opt/gopath/bin \
149
145
-v $(abspath build/docker/pkg) :/opt/gopath/pkg \
150
- hyperledger/fabric-src:$(DOCKER_TAG ) \
146
+ -v $(abspath .) :/opt/gopath/src/$(PKGNAME ) \
147
+ hyperledger/fabric-baseimage:$(BASE_DOCKER_TAG ) \
151
148
go install -ldflags " $( GO_LDFLAGS) " $(pkgmap.$(@F ) )
152
149
@touch $@
153
150
@@ -165,76 +162,49 @@ build/bin/%: $(PROJECT_FILES)
165
162
@echo " Binary available as $@ "
166
163
@touch $@
167
164
168
- # Special override for src-image
169
- build/image/src/.dummy : $(PROJECT_FILES )
170
- @echo " Building docker src-image"
171
- @mkdir -p $(@D )
172
- @cat images/src/Dockerfile.in \
173
- | sed -e ' s/_BASE_TAG_/$(BASE_DOCKER_TAG)/g' \
174
- | sed -e ' s/_TAG_/$(DOCKER_TAG)/g' \
175
- > $(@D ) /Dockerfile
176
- @git ls-files | tar -jcT - > $(@D ) /gopath.tar.bz2
177
- docker build -t $(PROJECT_NAME ) -src $(@D )
178
- docker tag $(PROJECT_NAME ) -src $(PROJECT_NAME ) -src:$(DOCKER_TAG )
179
- @touch $@
180
-
181
- # Special override for ccenv-image (chaincode-environment)
182
- build/image/ccenv/.dummy : build/image/ccenv/bin/protoc-gen-go build/image/ccenv/bin/chaintool build/image/ccenv/goshim.tar.bz2 Makefile
183
- @echo " Building docker ccenv-image"
184
- @cat images/ccenv/Dockerfile.in \
185
- | sed -e ' s/_BASE_TAG_/$(BASE_DOCKER_TAG)/g' \
186
- | sed -e ' s/_TAG_/$(DOCKER_TAG)/g' \
187
- > $(@D ) /Dockerfile
188
- docker build -t $(PROJECT_NAME ) -ccenv $(@D )
189
- docker tag $(PROJECT_NAME ) -ccenv $(PROJECT_NAME ) -ccenv:$(DOCKER_TAG )
190
- @touch $@
191
-
192
- # Special override for java-image
193
- # Following items are packed and sent to docker context while building image
194
- # 1. Java shim layer source code
195
- # 2. Proto files used to generate java classes
196
- # 3. Gradle settings file
197
- build/image/javaenv/.dummy : Makefile $(JAVASHIM_DEPS )
198
- @echo " Building docker javaenv-image"
199
- @mkdir -p $(@D )
200
- @cat images/javaenv/Dockerfile.in \
201
- | sed -e ' s/_BASE_TAG_/$(BASE_DOCKER_TAG)/g' \
202
- | sed -e ' s/_TAG_/$(DOCKER_TAG)/g' \
203
- > $(@D ) /Dockerfile
204
- # Following items are packed and sent to docker context while building image
205
- # 1. Java shim layer source code
206
- # 2. Proto files used to generate java classes
207
- # 3. Gradle settings file
208
- @git ls-files core/chaincode/shim/java | tar -jcT - > $(@D ) /javashimsrc.tar.bz2
209
- @git ls-files protos core/chaincode/shim/table.proto settings.gradle | tar -jcT - > $(@D ) /protos.tar.bz2
210
- docker build -t $(PROJECT_NAME ) -javaenv $(@D )
211
- docker tag $(PROJECT_NAME ) -javaenv $(PROJECT_NAME ) -javaenv:$(DOCKER_TAG )
212
- @touch $@
165
+ # payload definitions'
166
+ build/image/ccenv/payload : build/docker/bin/protoc-gen-go \
167
+ build/bin/chaintool \
168
+ build/goshim.tar.bz2
169
+ build/image/javaenv/payload : build/javashim.tar.bz2 \
170
+ build/protos.tar.bz2 \
171
+ settings.gradle
172
+ build/image/peer/payload : build/docker/bin/peer \
173
+ peer/core.yaml \
174
+ msp/peer-config.json
175
+ build/image/orderer/payload : build/docker/bin/orderer \
176
+ orderer/orderer.yaml
177
+
178
+ build/image/% /payload :
179
+ mkdir -p $@
180
+ cp $^ $@
213
181
214
- # Default rule for image creation
215
- build/image/% /.dummy : build/image/src/.dummy build/docker/bin/%
182
+ build/image/% /.dummy : Makefile build/image/% /payload
216
183
$(eval TARGET = ${patsubst build/image/% /.dummy,% ,${@}})
217
184
@echo " Building docker $( TARGET) -image"
218
- @mkdir -p $(@D ) /bin
219
- @cat images/app/Dockerfile.in \
185
+ @cat images/$(TARGET ) /Dockerfile.in \
220
186
| sed -e ' s/_BASE_TAG_/$(BASE_DOCKER_TAG)/g' \
221
187
| sed -e ' s/_TAG_/$(DOCKER_TAG)/g' \
222
188
> $(@D ) /Dockerfile
223
- cp build/docker/bin/$(TARGET ) $(@D ) /bin
224
189
docker build -t $(PROJECT_NAME ) -$(TARGET ) $(@D )
225
190
docker tag $(PROJECT_NAME ) -$(TARGET ) $(PROJECT_NAME ) -$(TARGET ) :$(DOCKER_TAG )
226
191
@touch $@
227
192
228
- % /goshim.tar.bz2 : $(GOSHIM_DEPS ) Makefile
193
+ build /goshim.tar.bz2 : $(GOSHIM_DEPS )
229
194
@echo " Creating $@ "
230
195
@tar -jhc -C $(GOPATH ) /src $(patsubst $(GOPATH ) /src/% ,% ,$(GOSHIM_DEPS ) ) > $@
231
196
197
+ build/javashim.tar.bz2 : $(JAVASHIM_DEPS )
198
+ build/protos.tar.bz2 : $(PROTOS )
199
+
200
+ build/% .tar.bz2 :
201
+ @echo " Creating $@ "
202
+ @tar -jc $^ > $@
203
+
232
204
.PHONY : protos
233
205
protos : gotools
234
206
./scripts/compile_protos.sh
235
207
236
- src-image-clean : ccenv-image-clean peer-image-clean orderer-image-clean
237
-
238
208
% -image-clean :
239
209
$(eval TARGET = ${patsubst % -image-clean,% ,${@}})
240
210
-docker images -q $(PROJECT_NAME ) -$(TARGET ) | xargs docker rmi -f
0 commit comments