@@ -2,10 +2,13 @@ include ../common.mk
2
2
3
3
CLI_DIR = $(realpath $(CURDIR ) /../src/github.com/docker/cli)
4
4
ENGINE_DIR = $(realpath $(CURDIR ) /../src/github.com/docker/docker)
5
+ COMPOSE_DIR = $(realpath $(CURDIR ) /../src/github.com/docker/compose)
5
6
BUILDX_DIR = $(realpath $(CURDIR ) /../src/github.com/docker/buildx)
7
+ SCAN_DIR = $(realpath $(CURDIR ) /../src/github.com/docker/scan-cli-plugin)
6
8
7
9
CLI_VERSION = $(shell ./gen-static-ver $(CLI_DIR ) $(VERSION ) )
8
- GEN_STATIC_VER = $(shell ./gen-static-ver $(CLI_DIR ) $(VERSION ) )
10
+ ENGINE_VERSION = $(shell ./gen-static-ver $(ENGINE_DIR ) $(VERSION ) )
11
+ CONTAINERD_PKG_VER = $(shell ./gen-containerd-ver $(ENGINE_DIR ) $(CONTAINERD_VERSION ) )
9
12
10
13
HASH_CMD =docker run -v $(CURDIR ) :/sum -w /sum debian:jessie bash hash_files
11
14
DIR_TO_HASH: =build/linux
@@ -42,17 +45,28 @@ static: static-linux cross-mac cross-win cross-arm ## create all static packages
42
45
43
46
.PHONY : static-linux
44
47
static-linux : BUILD_DIR=build/linux
45
- static-linux : static-cli static-engine static-buildx-plugin # # create tgz
48
+ static-linux : static-cli static-engine static-buildx-plugin static-compose-plugin docker-scan-plugin # # create tgz
46
49
# docker cli binaries
47
- mkdir -p $(BUILD_DIR ) /docker
48
- cp $(CLI_DIR ) /build/docker $(BUILD_DIR ) /docker/
50
+ mkdir -p $(BUILD_DIR ) /docker-cli
51
+ cp $(CLI_DIR ) /build/docker $(BUILD_DIR ) /docker-cli/
52
+ tar -C $(BUILD_DIR ) -c -z -f $(BUILD_DIR ) /docker-cli-$(CLI_VERSION ) .tgz docker-cli
53
+ $(RM ) -r $(BUILD_DIR ) /docker-cli
49
54
50
55
# docker engine binaries
51
- for f in dockerd containerd ctr containerd-shim containerd-shim-runc-v2 docker-init docker-proxy runc; do \
52
- cp -L $(ENGINE_DIR)/bundles/binary-daemon/$$f $(BUILD_DIR)/docker/$$f; \
56
+ mkdir -p $(BUILD_DIR)/docker-engine
57
+ for f in dockerd docker-init docker-proxy; do \
58
+ cp -L $(ENGINE_DIR)/bundles/binary-daemon/$$f $(BUILD_DIR)/docker-engine/$$f; \
53
59
done
54
- tar -C $(BUILD_DIR) -c -z -f $(BUILD_DIR)/docker-$(GEN_STATIC_VER).tgz docker
55
- $(RM) -r $(BUILD_DIR)/docker
60
+ tar -C $(BUILD_DIR) -c -z -f $(BUILD_DIR)/docker-engine-$(ENGINE_VERSION).tgz docker-engine
61
+ $(RM) -r $(BUILD_DIR)/docker-engine
62
+
63
+ # containerd binaries
64
+ mkdir -p $(BUILD_DIR)/containerd
65
+ for f in containerd ctr containerd-shim-runc-v2 runc; do \
66
+ cp -L $(ENGINE_DIR)/bundles/binary-daemon/$$f $(BUILD_DIR)/containerd/$$f; \
67
+ done
68
+ tar -C $(BUILD_DIR) -c -z -f $(BUILD_DIR)/containerd-$(CONTAINERD_PKG_VER).tgz containerd
69
+ $(RM) -r $(BUILD_DIR)/containerd
56
70
57
71
# extra binaries for running rootless
58
72
mkdir -p $(BUILD_DIR)/docker-rootless-extras
@@ -61,12 +75,18 @@ static-linux: static-cli static-engine static-buildx-plugin ## create tgz
61
75
cp -L $(ENGINE_DIR)/bundles/binary-daemon/$$f $(BUILD_DIR)/docker-rootless-extras/$$f; \
62
76
fi \
63
77
done
64
- tar -C $(BUILD_DIR) -c -z -f $(BUILD_DIR)/docker-rootless-extras-$(GEN_STATIC_VER ).tgz docker-rootless-extras
78
+ tar -C $(BUILD_DIR) -c -z -f $(BUILD_DIR)/docker-rootless-extras-$(ENGINE_VERSION ).tgz docker-rootless-extras
65
79
$(RM) -r $(BUILD_DIR)/docker-rootless-extras
66
80
81
+ # docker compose
82
+ tar -C $(COMPOSE_DIR)/bin -c -z -f $(BUILD_DIR)/docker-compose-plugin-$(DOCKER_COMPOSE_REF:v%=%).tgz docker-compose
83
+
67
84
# docker buildx
68
85
tar -C $(BUILDX_DIR)/bin -c -z -f $(BUILD_DIR)/docker-buildx-plugin-$(DOCKER_BUILDX_REF:v%=%).tgz docker-buildx
69
86
87
+ # docker scan
88
+ tar -C $(SCAN_DIR)/bin -c -z -f $(BUILD_DIR)/docker-scan-plugin-$(DOCKER_SCAN_REF:v%=%).tgz docker-scan
89
+
70
90
.PHONY : hash_files
71
91
hash_files :
72
92
@echo " Hashing directory $( DIR_TO_HASH) "
@@ -77,41 +97,97 @@ buildx:
77
97
docker buildx inspect | grep -q ' Driver: docker-container' || docker buildx create --use
78
98
79
99
.PHONY : cross-mac
80
- cross-mac : buildx
100
+ cross-mac : cross-mac-amd64 cross-mac-arm64
101
+ @echo " Cross-compiling mac binaries"
102
+
103
+ .PHONY : cross-mac-amd64
104
+ cross-mac-amd64 : TARGETPLATFORM=darwin/amd64
105
+ cross-mac-amd64 : BUILD_DIR=build/mac/amd64
106
+ cross-mac-amd64 : buildx static-cli static-buildx-plugin static-compose-plugin cross-scan-plugin
81
107
# docker cli binaries
82
- cd $(CLI_DIR ) && VERSION=$(CLI_VERSION ) docker buildx bake --set binary.platform=darwin/amd64,darwin/arm64 binary
83
- dest=$$ PWD/build/mac; cd $(CLI_DIR ) /build && for platform in * ; do \
84
- arch=$$(echo $$platform | cut -d_ -f2 ) ; \
85
- mkdir -p $$ dest/$$ arch/docker; \
86
- cp $$ platform/docker-darwin-* $$ dest/$$ arch/docker/docker && \
87
- tar -C $$ dest/$$ arch -c -z -f $$ dest/$$ arch/docker-$(CLI_VERSION ) .tgz docker; \
88
- $(RM ) -r $$ dest/$$ arch/docker
89
- done
108
+ mkdir -p $(BUILD_DIR ) /docker-cli
109
+ cp -L $(CLI_DIR ) /build/docker $(BUILD_DIR ) /docker-cli/docker
110
+ tar -C $(BUILD_DIR ) / -c -z -f $(BUILD_DIR ) /docker-cli-$(CLI_VERSION ) .tgz docker-cli
111
+ $(RM ) -r $(BUILD_DIR ) /docker-cli
112
+
113
+ # docker compose
114
+ tar -C $(COMPOSE_DIR)/bin -c -z -f $(BUILD_DIR)/docker-compose-plugin-$(DOCKER_COMPOSE_REF:v%=%).tgz docker-compose
115
+
116
+ # docker buildx
117
+ tar -C $(BUILDX_DIR)/bin -c -z -f $(BUILD_DIR)/docker-buildx-plugin-$(DOCKER_BUILDX_REF:v%=%).tgz docker-buildx
118
+
119
+ # docker scan
120
+ mkdir -p $(BUILD_DIR)/docker-scan
121
+ cp -L $(SCAN_DIR)/dist/docker-scan_darwin_amd64 $(BUILD_DIR)/docker-scan/docker-scan
122
+ tar -C $(BUILD_DIR)/ -c -z -f $(BUILD_DIR)/docker-scan-plugin-$(DOCKER_SCAN_REF:v%=%).tgz docker-scan
123
+ $(RM) -r $(BUILD_DIR)/docker-scan
124
+
125
+ .PHONY : cross-mac-arm64
126
+ cross-mac-arm64 : TARGETPLATFORM=darwin/arm64
127
+ cross-mac-arm64 : BUILD_DIR=build/mac/arm64
128
+ cross-mac-arm64 : buildx static-cli static-buildx-plugin static-compose-plugin cross-scan-plugin
129
+ # docker cli binaries
130
+ mkdir -p $(BUILD_DIR ) /docker-cli
131
+ cp -L $(CLI_DIR ) /build/docker $(BUILD_DIR ) /docker-cli/docker
132
+ tar -C $(BUILD_DIR ) / -c -z -f $(BUILD_DIR ) /docker-cli-$(CLI_VERSION ) .tgz docker-cli
133
+ $(RM ) -r $(BUILD_DIR ) /docker-cli
134
+
135
+ # docker compose
136
+ tar -C $(COMPOSE_DIR)/bin -c -z -f $(BUILD_DIR)/docker-compose-plugin-$(DOCKER_COMPOSE_REF:v%=%).tgz docker-compose
137
+
138
+ # docker buildx
139
+ tar -C $(BUILDX_DIR)/bin -c -z -f $(BUILD_DIR)/docker-buildx-plugin-$(DOCKER_BUILDX_REF:v%=%).tgz docker-buildx
140
+
141
+ # docker scan
142
+ mkdir -p $(BUILD_DIR)/docker-scan
143
+ cp -L $(SCAN_DIR)/dist/docker-scan_darwin_arm64 $(BUILD_DIR)/docker-scan/docker-scan
144
+ tar -C $(BUILD_DIR)/ -c -z -f $(BUILD_DIR)/docker-scan-plugin-$(DOCKER_SCAN_REF:v%=%).tgz docker-scan
145
+ $(RM) -r $(BUILD_DIR)/docker-scan
90
146
91
147
.PHONY : cross-win
148
+ cross-win : TARGETPLATFORM=windows/amd64
149
+ cross-win : EXT=.exe
92
150
cross-win : BUILD_DIR=build/win/amd64
93
- cross-win : cross-win-engine
151
+ cross-win : cross-win-engine static-cli static-buildx-plugin static-compose-plugin cross-scan-plugin
94
152
# docker cli binaries
95
- mkdir -p $(BUILD_DIR ) /docker
96
- cd $(CLI_DIR ) && VERSION=$(CLI_VERSION ) docker buildx bake --set binary.platform=windows/amd64 binary
97
- cp $(CLI_DIR ) /build/docker-windows-amd64.exe $(BUILD_DIR ) /docker/docker.exe
153
+ mkdir -p $(BUILD_DIR ) /docker-cli
154
+ cp -L $(CLI_DIR ) /build/docker $(BUILD_DIR ) /docker-cli/docker.exe
98
155
99
156
# docker engine binaries
100
- cp $(ENGINE_DIR)/bundles/cross/windows/amd64-daemon/dockerd.exe $(BUILD_DIR)/docker/dockerd.exe
101
- cp $(ENGINE_DIR)/bundles/cross/windows/amd64-daemon/docker-proxy.exe $(BUILD_DIR)/docker/docker-proxy.exe
102
- docker run --rm -v $(CURDIR)/$(BUILD_DIR):/v -w /v alpine sh -c 'apk update&&apk add zip&&zip -r docker-$(GEN_STATIC_VER).zip docker'
157
+ mkdir -p $(BUILD_DIR)/docker-engine
158
+ for f in dockerd.exe docker-proxy.exe; do \
159
+ cp -L $(ENGINE_DIR)/bundles/cross/windows/amd64-daemon/$$f $(BUILD_DIR)/docker-engine/$$f; \
160
+ done
161
+
162
+ # docker compose, docker buildx
163
+ mkdir -p $(BUILD_DIR)/docker-compose
164
+ cp $(COMPOSE_DIR)/bin/docker-compose/docker-compose.exe $(BUILD_DIR)/docker-compose/docker-compose.exe
165
+
166
+ # docker buildx
167
+ mkdir -p $(BUILD_DIR)/docker-buildx
168
+ cp $(BUILDX_DIR)/bin/docker-buildx/docker-buildx.exe $(BUILD_DIR)/docker-buildx/docker-buildx.exe
169
+
170
+ # docker scan
171
+ mkdir -p $(BUILD_DIR)/docker-scan
172
+ cp $(SCAN_DIR)/dist/docker-scan_windows_amd64.exe $(BUILD_DIR)/docker-scan/docker-scan.exe
173
+
174
+ docker run --rm -v $(CURDIR)/$(BUILD_DIR):/v -w /v alpine sh -c 'apk add --no-cache zip \
175
+ && zip -r docker-cli-$(CLI_VERSION).zip docker-cli \
176
+ && zip -r docker-engine-$(ENGINE_VERSION).zip docker-engine \
177
+ && zip -r docker-compose-plugin-$(DOCKER_COMPOSE_REF:v%=%).zip docker-compose \
178
+ && zip -r docker-buildx-plugin-$(DOCKER_BUILDX_REF:v%=%).zip docker-buildx '
103
179
$(CHOWN) -R $(shell id -u):$(shell id -g) build
104
180
105
181
# clean up temporary directories
106
- $(RM) -r $(BUILD_DIR)/docker
182
+ $(RM) -r $(BUILD_DIR)/docker-cli $(BUILD_DIR)/docker-engine $(BUILD_DIR)/docker-compose $(BUILD_DIR)/docker-buildx $(BUILD_DIR)/docker-scan
107
183
108
184
.PHONY : cross-arm
109
185
cross-arm : BUILD_DIR=build/arm
110
186
cross-arm : cross-all-cli # # create tgz with linux armhf client only
111
- mkdir -p $(BUILD_DIR ) /docker
112
- cp $(CLI_DIR ) /build/docker-linux-arm $(BUILD_DIR ) /docker/docker
113
- tar -C $(BUILD_DIR ) -c -z -f $(BUILD_DIR ) /docker-$(CLI_VERSION ) .tgz docker
114
- $(RM ) -r $(BUILD_DIR ) /docker
187
+ mkdir -p $(BUILD_DIR ) /docker-cli
188
+ cp $(CLI_DIR ) /build/docker-linux-arm $(BUILD_DIR ) /docker-cli /docker
189
+ tar -C $(BUILD_DIR ) -c -z -f $(BUILD_DIR ) /docker-$(CLI_VERSION ) .tgz docker-cli
190
+ $(RM ) -r $(BUILD_DIR ) /docker-cli
115
191
116
192
.PHONY : static-cli
117
193
static-cli :
@@ -120,16 +196,45 @@ static-cli:
120
196
121
197
.PHONY : static-engine
122
198
static-engine :
123
- $(MAKE ) -C $(ENGINE_DIR ) VERSION=$(GEN_STATIC_VER ) DOCKER_BUILD_OPTS=" $( DOCKER_BUILD_OPTS) " binary
199
+ $(MAKE ) -C $(ENGINE_DIR ) VERSION=$(ENGINE_VERSION ) DOCKER_BUILD_OPTS=" $( DOCKER_BUILD_OPTS) " binary
124
200
125
201
.PHONY : static-buildx-plugin
126
202
static-buildx-plugin :
127
- cd $(BUILDX_DIR ) && docker buildx bake --set binaries.platform=$(TARGETPLATFORM ) binaries && mv ./bin/buildx ./bin/docker-buildx
203
+ cd $(BUILDX_DIR ) && docker buildx bake --set binaries.platform=$(TARGETPLATFORM ) binaries && mkdir -p ./bin/docker-buildx/ && mv ./bin/buildx$(EXT ) ./bin/docker-buildx/docker-buildx$(EXT )
204
+
205
+ .PHONY : static-compose-plugin
206
+ static-compose-plugin :
207
+ $(RM ) -r " $( COMPOSE_DIR) " /bin
208
+ docker buildx build " $( COMPOSE_DIR) " \
209
+ --target compose-plugin \
210
+ --platform " $( or $( TARGETPLATFORM) ,local) " \
211
+ --build-arg GIT_TAG=" $( DOCKER_COMPOSE_REF) " \
212
+ --output $(COMPOSE_DIR ) /bin/docker-compose/
213
+
214
+ .PHONY : docker-scan-plugin
215
+ docker-scan-plugin :
216
+ # Build the scan-plugin
217
+ # TODO this should be skipped on non-x86 because there's no image for non-x86?
218
+ # TODO change once we support scan-plugin on other architectures
219
+ $(MAKE ) -C $(SCAN_DIR ) GIT_TAG_NAME=" $( DOCKER_SCAN_REF) " build
220
+
221
+ # TODO(thaJeztah) upstream Makefile should pass PLATFORM_BINARY
222
+ # Binary is named (e.g.) docker-scan_linux_amd64. Rename it to have something consistent
223
+ mv $(SCAN_DIR)/bin/docker-scan_linux_* $(SCAN_DIR)/bin/docker-scan
224
+
225
+ ls -laR $(SCAN_DIR)/bin
226
+
227
+ .PHONY : cross-scan-plugin
228
+ cross-scan-plugin :
229
+ # TODO: Add TARGETPLATFORM support on scan-cli-plugin repo to build efficiently with --platform
230
+ $(MAKE ) -C $(SCAN_DIR ) GIT_TAG_NAME=" $( DOCKER_SCAN_REF) " cross
231
+
232
+ ls -laR $(SCAN_DIR)/dist
128
233
129
234
.PHONY : cross-all-cli
130
235
cross-all-cli :
131
236
$(MAKE ) -C $(CLI_DIR ) -f docker.Makefile VERSION=$(CLI_VERSION ) cross
132
237
133
238
.PHONY : cross-win-engine
134
239
cross-win-engine :
135
- $(MAKE ) -C $(ENGINE_DIR ) VERSION=$(GEN_STATIC_VER ) DOCKER_CROSSPLATFORMS=windows/amd64 DOCKER_BUILD_OPTS=" $( DOCKER_BUILD_OPTS) " cross
240
+ $(MAKE ) -C $(ENGINE_DIR ) VERSION=$(ENGINE_VERSION ) DOCKER_CROSSPLATFORMS=windows/amd64 DOCKER_BUILD_OPTS=" $( DOCKER_BUILD_OPTS) " cross
0 commit comments