@@ -23,9 +23,18 @@ export DOCKER_IMAGE_TAG?=latest
23
23
GOPATH: =$(shell go env GOPATH)
24
24
BINPATH: =$(abspath ./bin)
25
25
SUBMODULES =_submodules
26
+ UID: =$(shell id -u)
27
+
28
+ FIRECRACKER_DIR =$(SUBMODULES ) /firecracker
29
+ FIRECRACKER_TARGET? =x86_64-unknown-linux-musl
30
+ FIRECRACKER_BIN =$(FIRECRACKER_DIR ) /target/$(FIRECRACKER_TARGET ) /release/firecracker
31
+ JAILER_BIN =$(FIRECRACKER_DIR ) /target/$(FIRECRACKER_TARGET ) /release/jailer
32
+ FIRECRACKER_BUILDER_NAME? =firecracker-builder
33
+ CARGO_CACHE_VOLUME_NAME? =cargocache
34
+
26
35
RUNC_DIR =$(SUBMODULES ) /runc
27
36
RUNC_BIN =$(RUNC_DIR ) /runc
28
- UID: = $( shell id -u)
37
+ RUNC_BUILDER_NAME? =runc-builder
29
38
30
39
# Set this to pass additional commandline flags to the go compiler, e.g. "make test EXTRAGOARGS=-v"
31
40
export EXTRAGOARGS? =
@@ -42,11 +51,15 @@ clean:
42
51
for d in $( SUBDIRS) ; do $( MAKE) -C $$ d clean; done
43
52
- rm -rf $(BINPATH ) /
44
53
$(MAKE ) -C $(RUNC_DIR ) clean
45
- rm -f * stamp
54
+ $(MAKE ) firecracker-clean
55
+ rm -f tools/* stamp
46
56
$(MAKE ) -C tools/image-builder clean-in-docker
47
57
58
+ rmi-if-exists = $(if $(shell docker images -q $(1 ) ) ,docker rmi $(1 ) ,true)
48
59
distclean : clean
49
- docker rmi localhost/runc-builder:latest
60
+ $(call rmi-if-exists,localhost/$(RUNC_BUILDER_NAME ) :$(DOCKER_IMAGE_TAG ) )
61
+ $(call rmi-if-exists,localhost/$(FIRECRACKER_BUILDER_NAME ) :$(DOCKER_IMAGE_TAG ) )
62
+ docker volume rm -f $(CARGO_CACHE_VOLUME_NAME )
50
63
$(MAKE ) -C tools/image-builder distclean
51
64
52
65
lint :
62
75
GOBIN=$(BINPATH ) GO111MODULE=off go get -u github.com/containerd/ttrpc/cmd/protoc-gen-gogottrpc
63
76
GOBIN=$(BINPATH ) GO111MODULE=off go get -u github.com/gogo/protobuf/protoc-gen-gogo
64
77
78
+ install :
79
+ for d in $( SUBDIRS) ; do $( MAKE) -C $$ d install; done
80
+
65
81
test : $(TEST_SUBDIRS )
66
82
67
83
test-in-docker : firecracker-containerd-test-image
@@ -81,51 +97,89 @@ integ-test: $(INTEG_TEST_SUBDIRS)
81
97
$(INTEG_TEST_SUBDIRS ) : test-images
82
98
$(MAKE ) -C $(patsubst integ-test-% ,% ,$@ ) integ-test
83
99
84
- runc-builder : runc-builder-stamp
85
-
86
- runc-builder-stamp : tools/docker/Dockerfile.runc-builder
87
- cd tools/docker && docker build -t localhost/runc-builder:latest -f Dockerfile.runc-builder .
88
- touch $@
89
-
90
- $(RUNC_DIR ) /VERSION :
91
- git submodule update --init --recursive $(RUNC_DIR )
92
-
93
- runc : $(RUNC_BIN )
94
-
95
- $(RUNC_BIN ) : $(RUNC_DIR ) /VERSION runc-builder-stamp
96
- docker run --rm -it --user $(UID ) \
97
- --volume $(PWD ) /$(RUNC_DIR ) :/gopath/src/github.com/opencontainers/runc \
98
- --volume $(PWD ) /deps:/target \
99
- -e HOME=/tmp \
100
- -e GOPATH=/gopath \
101
- --workdir /gopath/src/github.com/opencontainers/runc \
102
- localhost/runc-builder:latest \
103
- make static
104
-
105
100
image : $(RUNC_BIN ) agent
106
101
mkdir -p tools/image-builder/files_ephemeral/usr/local/bin
107
102
cp $(RUNC_BIN ) tools/image-builder/files_ephemeral/usr/local/bin
108
103
cp agent/agent tools/image-builder/files_ephemeral/usr/local/bin
109
104
touch tools/image-builder/files_ephemeral
110
105
$(MAKE ) -C tools/image-builder all-in-docker
111
106
112
- install :
113
- for d in $( SUBDIRS) ; do $( MAKE) -C $$ d install; done
114
-
115
107
test-images : | firecracker-containerd-naive-integ-test-image firecracker-containerd-test-image
116
108
117
- firecracker-containerd-test-image : $( RUNC_BIN )
109
+ firecracker-containerd-test-image :
118
110
DOCKER_BUILDKIT=1 docker build \
119
111
--progress=plain \
120
112
--file tools/docker/Dockerfile \
121
113
--target firecracker-containerd-test \
122
114
--tag localhost/firecracker-containerd-test:${DOCKER_IMAGE_TAG} .
123
115
124
- firecracker-containerd-naive-integ-test-image : $(RUNC_BIN )
116
+ firecracker-containerd-naive-integ-test-image : $(RUNC_BIN ) $( FIRECRACKER_BIN ) $( JAILER_BIN )
125
117
DOCKER_BUILDKIT=1 docker build \
126
118
--progress=plain \
127
119
--file tools/docker/Dockerfile \
128
120
--target firecracker-containerd-naive-integ-test \
121
+ --build-arg FIRECRACKER_TARGET=$(FIRECRACKER_TARGET ) \
129
122
--tag localhost/firecracker-containerd-naive-integ-test:${DOCKER_IMAGE_TAG} .
130
123
131
- .PHONY : all $(SUBDIRS ) clean proto deps lint install test-images firecracker-container-test-image firecracker-containerd-naive-integ-test-image runc-builder runc test test-in-docker $(TEST_SUBDIRS ) integ-test $(INTEG_TEST_SUBDIRS )
124
+ .PHONY : all $(SUBDIRS ) clean proto deps lint install test-images firecracker-container-test-image firecracker-containerd-naive-integ-test-image test test-in-docker $(TEST_SUBDIRS ) integ-test $(INTEG_TEST_SUBDIRS )
125
+
126
+ # #########################
127
+ # Firecracker submodule
128
+ # #########################
129
+ .PHONY : firecracker
130
+ firecracker : $(FIRECRACKER_BIN ) $(JAILER_BIN )
131
+
132
+ $(FIRECRACKER_DIR ) /Cargo.toml :
133
+ git submodule update --init --recursive $(FIRECRACKER_DIR )
134
+
135
+ tools/firecracker-builder-stamp : tools/docker/Dockerfile.firecracker-builder
136
+ docker build \
137
+ -t localhost/$(FIRECRACKER_BUILDER_NAME ) :$(DOCKER_IMAGE_TAG ) \
138
+ -f tools/docker/Dockerfile.firecracker-builder \
139
+ tools/docker
140
+ touch $@
141
+
142
+ $(FIRECRACKER_BIN ) $(JAILER_BIN ) : $(FIRECRACKER_DIR ) /Cargo.toml tools/firecracker-builder-stamp
143
+ docker run --rm -it --user $(UID ) \
144
+ --volume $(PWD ) /$(FIRECRACKER_DIR ) :/src \
145
+ --volume $(CARGO_CACHE_VOLUME_NAME ) :/usr/local/cargo/registry \
146
+ -e HOME=/tmp \
147
+ --workdir /src \
148
+ localhost/$(FIRECRACKER_BUILDER_NAME ) :$(DOCKER_IMAGE_TAG ) \
149
+ cargo build --release --features vsock --target $(FIRECRACKER_TARGET )
150
+
151
+ .PHONY : firecracker-clean
152
+ firecracker-clean :
153
+ rm -f $(FIRECRACKER_BIN ) $(JAILER_BIN )
154
+ - docker run --rm -it --user $(UID ) \
155
+ --volume $(PWD ) /$(FIRECRACKER_DIR ) :/src \
156
+ -e HOME=/tmp \
157
+ --workdir /src \
158
+ localhost/$(FIRECRACKER_BUILDER_NAME ) :$(DOCKER_IMAGE_TAG ) \
159
+ cargo clean
160
+
161
+ # #########################
162
+ # RunC submodule
163
+ # #########################
164
+ .PHONY : runc
165
+ runc : $(RUNC_BIN )
166
+
167
+ $(RUNC_DIR ) /VERSION :
168
+ git submodule update --init --recursive $(RUNC_DIR )
169
+
170
+ tools/runc-builder-stamp : tools/docker/Dockerfile.runc-builder
171
+ docker build \
172
+ -t localhost/$(RUNC_BUILDER_NAME ) :$(DOCKER_IMAGE_TAG ) \
173
+ -f tools/docker/Dockerfile.runc-builder \
174
+ tools/
175
+ touch $@
176
+
177
+ $(RUNC_BIN ) : $(RUNC_DIR ) /VERSION tools/runc-builder-stamp
178
+ docker run --rm -it --user $(UID ) \
179
+ --volume $(PWD ) /$(RUNC_DIR ) :/gopath/src/github.com/opencontainers/runc \
180
+ --volume $(PWD ) /deps:/target \
181
+ -e HOME=/tmp \
182
+ -e GOPATH=/gopath \
183
+ --workdir /gopath/src/github.com/opencontainers/runc \
184
+ localhost/$(RUNC_BUILDER_NAME ) :$(DOCKER_IMAGE_TAG ) \
185
+ make static
0 commit comments