1111# express or implied. See the License for the specific language governing
1212# permissions and limitations under the License.
1313
14- SUBDIRS: =agent runtime examples firecracker-control/cmd/containerd snapshotter
14+ SUBDIRS: =agent runtime examples firecracker-control/cmd/containerd snapshotter docker-credential-mmds
1515TEST_SUBDIRS: =$(addprefix test-,$(SUBDIRS ) )
1616INTEG_TEST_SUBDIRS: =$(addprefix integ-test-,$(SUBDIRS ) )
1717
@@ -66,6 +66,10 @@ RUNC_DIR=$(SUBMODULES)/runc
6666RUNC_BIN =$(RUNC_DIR ) /runc
6767RUNC_BUILDER_NAME? =runc-builder
6868
69+ STARGZ_DIR =$(SUBMODULES ) /stargz-snapshotter
70+ STARGZ_BIN =$(STARGZ_DIR ) /out/containerd-stargz-grpc
71+ STARGZ_BUILDER_NAME? =stargz-builder
72+
6973PROTO_BUILDER_NAME? =proto-builder
7074
7175# Set this to pass additional commandline flags to the go compiler, e.g. "make test EXTRAGOARGS=-v"
@@ -112,6 +116,7 @@ distclean: clean
112116 $(MAKE ) -C tools/image-builder distclean
113117 $(call rmi-if-exists,localhost/$(RUNC_BUILDER_NAME ) :$(DOCKER_IMAGE_TAG ) )
114118 $(call rmi-if-exists,localhost/$(FIRECRACKER_BUILDER_NAME ) :$(DOCKER_IMAGE_TAG ) )
119+ $(call rmi-if-exists,localhost/$(STARGZ_BUILDER_NAME ) :$(DOCKER_IMAGE_TAG ) )
115120 docker volume rm -f $(CARGO_CACHE_VOLUME_NAME )
116121 docker volume rm -f $(GO_CACHE_VOLUME_NAME )
117122 $(call rmi-if-exists,$(FIRECRACKER_CONTAINERD_TEST_IMAGE ) :$(DOCKER_IMAGE_TAG ) )
@@ -134,15 +139,25 @@ deps:
134139install :
135140 for d in $( SUBDIRS) ; do $( MAKE) -C $$ d install; done
136141
137- image : $(RUNC_BIN ) agent-in-docker
142+ files_ephemeral : $(RUNC_BIN ) agent-in-docker
138143 mkdir -p tools/image-builder/files_ephemeral/usr/local/bin
139144 mkdir -p tools/image-builder/files_ephemeral/var/firecracker-containerd-test/scripts
140145 for f in tools/docker/scripts/* ; do test -f $$ f && install -m 755 $$ f tools/image-builder/files_ephemeral/var/firecracker-containerd-test/scripts; done
141146 cp $(RUNC_BIN ) tools/image-builder/files_ephemeral/usr/local/bin
142147 cp agent/agent tools/image-builder/files_ephemeral/usr/local/bin
143148 touch tools/image-builder/files_ephemeral
149+
150+ files_ephemeral_stargz : $(STARGZ_BIN ) docker-credential-mmds-in-docker
151+ mkdir -p tools/image-builder/files_ephemeral_stargz/usr/local/bin
152+ cp docker-credential-mmds/docker-credential-mmds tools/image-builder/files_ephemeral_stargz/usr/local/bin
153+ cp $(STARGZ_BIN ) tools/image-builder/files_ephemeral_stargz/usr/local/bin
154+
155+ image : files_ephemeral
144156 $(MAKE ) -C tools/image-builder all-in-docker
145157
158+ image-stargz : files_ephemeral files_ephemeral_stargz
159+ $(MAKE ) -C tools/image-builder stargz-in-docker
160+
146161test : $(TEST_SUBDIRS )
147162 go test ./... $(EXTRAGOARGS )
148163
@@ -223,6 +238,10 @@ ROOTFS_NO_AGENT_INSTALLPATH=$(FIRECRACKER_CONTAINERD_RUNTIME_DIR)/rootfs-no-agen
223238$(ROOTFS_NO_AGENT_INSTALLPATH ) : tools/image-builder/rootfs-no-agent.img $(FIRECRACKER_CONTAINERD_RUNTIME_DIR )
224239 install -D -o root -g root -m400 $< $@
225240
241+ ROOTFS_STARGZ_INSTALLPATH =$(FIRECRACKER_CONTAINERD_RUNTIME_DIR ) /rootfs-stargz.img
242+ $(ROOTFS_STARGZ_INSTALLPATH ) : tools/image-builder/rootfs-stargz.img $(FIRECRACKER_CONTAINERD_RUNTIME_DIR )
243+ install -D -o root -g root -m400 $< $@
244+
226245.PHONY : default-vmlinux
227246default-vmlinux : $(DEFAULT_VMLINUX_NAME )
228247
@@ -238,6 +257,9 @@ install-default-runc-jailer-config: $(DEFAULT_RUNC_JAILER_CONFIG_INSTALLPATH)
238257.PHONY : install-test-rootfs
239258install-test-rootfs : $(ROOTFS_SLOW_BOOT_INSTALLPATH ) $(ROOTFS_SLOW_REBOOT_INSTALLPATH ) $(ROOTFS_NO_AGENT_INSTALLPATH )
240259
260+ .PHONY : install-stargz-rootfs
261+ install-stargz-rootfs : $(ROOTFS_STARGZ_INSTALLPATH )
262+
241263# #########################
242264# CNI Network
243265# #########################
@@ -368,3 +390,31 @@ $(RUNC_BIN): $(RUNC_DIR)/VERSION tools/runc-builder-stamp
368390.PHONY : install-runc
369391install-runc : $(RUNC_BIN )
370392 install -D -o root -g root -m755 -t $(INSTALLROOT ) /bin $(RUNC_BIN )
393+
394+ # #########################
395+ # Stargz submodule
396+ # #########################
397+ .PHONY : stargz-snapshotter
398+ stargz-snapshotter : $(STARGZ_BIN )
399+
400+ $(STARGZ_DIR ) /go.mod :
401+ git submodule update --init --recursive $(STARGZ_DIR )
402+
403+ tools/stargz-builder-stamp : tools/docker/Dockerfile.stargz-builder
404+ docker build \
405+ -t localhost/$(STARGZ_BUILDER_NAME ) :$(DOCKER_IMAGE_TAG ) \
406+ -f tools/docker/Dockerfile.stargz-builder \
407+ tools/
408+ touch $@
409+
410+ $(STARGZ_BIN ) : $(STARGZ_DIR ) /go.mod tools/stargz-builder-stamp
411+ docker run --rm -it \
412+ --user $(UID ) :$(GID ) \
413+ --volume $(GO_CACHE_VOLUME_NAME ) :/go \
414+ --volume $(CURDIR ) :/src \
415+ -e HOME=/tmp \
416+ -e GOPATH=/go \
417+ -e GOPROXY=$(shell go env GOPROXY) \
418+ --workdir /src/$(STARGZ_DIR ) \
419+ localhost/$(STARGZ_BUILDER_NAME ) :$(DOCKER_IMAGE_TAG ) \
420+ make
0 commit comments