Skip to content

Commit e8cede7

Browse files
committed
containerd: add containerd-shims to image
1 parent 730ecf9 commit e8cede7

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
*-stamp
22
/files
33
/files.tar.gz
4+
/containerd-shim*

Makefile

+29-3
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,41 @@ ami-stamp: files.tar.gz packer.json
1111
packer build packer.json
1212
touch $@
1313

14-
files.tar.gz: firecracker-containerd fc-rootfs fc-config kernel ecr-resolver demo
14+
files.tar.gz: containerd-shims firecracker-containerd fc-rootfs fc-config kernel ecr-resolver demo
1515
tree files
1616
tar cvzf $@ -C files .
1717

18-
FC_BINS=containerd-shim-aws-firecracker firecracker firecracker-containerd firecracker-ctr
18+
# The containerd shims are used for running non-Firecracker, standard Linux
19+
# containers with runc.
20+
# This is a bit of a hack to get the shims built properly. Our build of
21+
# containerd has dependencies that are out of sync with upstream. Rather than
22+
# trying to put them in sync, we can leverage "go install" to build the shims in
23+
# the context of *our* dependencies.
24+
# The downside of this is that it mutates go.mod/go.sum in our submodule. We
25+
# can get around that by moving/copying it each time...
26+
CONTAINERD_BINS=containerd-shim containerd-shim-runc-v1 containerd-shim-runc-v2
27+
CONTAINERD_SOURCE_DIR=$(SUBMODULES)/containerd/src/github.com/containerd/containerd
28+
.PHONY: containerd-shims
29+
containerd-shims: $(patsubst %, files/usr/local/bin/%, $(CONTAINERD_BINS))
30+
$(patsubst %, files/usr/local/bin/%, $(CONTAINERD_BINS)): firecracker-containerd-stamp
31+
cp $(SUBMODULES)/firecracker-containerd/go.mod $(SUBMODULES)/firecracker-containerd/go.mod.backup
32+
cp $(SUBMODULES)/firecracker-containerd/go.sum $(SUBMODULES)/firecracker-containerd/go.sum.backup
33+
cd $(SUBMODULES)/firecracker-containerd; GOBIN=$(CURDIR) go install -tags=no_cri github.com/containerd/containerd/cmd/$(patsubst files/usr/local/bin/%,%, $@)
34+
mv $(SUBMODULES)/firecracker-containerd/go.mod.backup $(SUBMODULES)/firecracker-containerd/go.mod
35+
mv $(SUBMODULES)/firecracker-containerd/go.sum.backup $(SUBMODULES)/firecracker-containerd/go.sum
36+
$(INSTALL_EXE) -T $(patsubst files/usr/local/bin/%,%, $@) $@
37+
38+
.PHONY: clean-containerd-shims
39+
clean-containerd-shims:
40+
rm -f $(CONTAINERD_BINS) $(patsubst %, files/usr/local/bin/%, $(CONTAINERD_BINS))
41+
42+
FC_BINS=containerd-shim-aws-firecracker firecracker firecracker-containerd firecracker-ctr runc
1943
.PHONY: firecracker-containerd
2044
firecracker-containerd: $(patsubst %, files/usr/local/bin/%, $(FC_BINS)) firecracker-containerd-stamp
2145
$(patsubst %, files/usr/local/bin/%, $(FC_BINS)): firecracker-containerd-stamp
2246
INSTALLROOT=$(PWD)/files/usr/local fakeroot $(MAKE) -C $(SUBMODULES)/firecracker-containerd install install-firecracker
47+
fakeroot $(MAKE) -C $(SUBMODULES)/firecracker-containerd _submodules/runc/runc
48+
DESTDIR=$(PWD)/files fakeroot $(MAKE) -C $(SUBMODULES)/firecracker-containerd/_submodules/runc install
2349
# Get rid of unused binaries
2450
rm $(patsubst %, files/usr/local/bin/%, jailer devmapper_snapshotter naive_snapshotter)
2551

@@ -74,7 +100,7 @@ files/home/admin/.magic/demo-magic.sh: $(SUBMODULES)/demo-magic
74100
$(INSTALL) -t files/home/admin/.magic $(SUBMODULES)/demo-magic/demo-magic.sh $(SUBMODULES)/demo-magic/license.txt
75101

76102
.PHONY: clean
77-
clean:
103+
clean: clean-containerd-shims
78104
$(MAKE) -C $(SUBMODULES)/firecracker-containerd clean
79105
$(MAKE) -C $(SUBMODULES)/amazon-ecr-containerd-resolver clean
80106
rm -rf files files.tar.gz

0 commit comments

Comments
 (0)