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