Skip to content

Commit 95939fe

Browse files
feat: Override Runc Version (#1611)
Signed-off-by: Shubhranshu Mahapatra <[email protected]>
1 parent bcfd420 commit 95939fe

File tree

8 files changed

+63
-6
lines changed

8 files changed

+63
-6
lines changed

Makefile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,14 @@ CONTAINER_RUNTIME_ARCHIVE_AARCH64_DIGEST ?= "sha256:$(AARCH64_256_DIGEST)"
104104
CONTAINER_RUNTIME_ARCHIVE_X86_64_LOCATION ?= "$(ARTIFACT_BASE_URL)/$(X86_64_ARTIFACT)"
105105
CONTAINER_RUNTIME_ARCHIVE_X86_64_DIGEST ?= "sha256:$(X86_64_256_DIGEST)"
106106

107+
# For Finch on macOS and Windows, the runc override locations and digests are set
108+
# based on the values set in deps/finch-core/deps/runc-override.conf
109+
-include $(FINCH_CORE_DIR)/deps/runc-override.conf
110+
RUNC_OVERRIDE_AARCH64_LOCATION ?= "$(RUNC_ARTIFACT_BASE_URL)/$(RUNC_AARCH64_ARTIFACT)"
111+
RUNC_OVERRIDE_AARCH64_DIGEST ?= "sha256:$(RUNC_AARCH64_256_DIGEST)"
112+
RUNC_OVERRIDE_X86_64_LOCATION ?= "$(RUNC_ARTIFACT_BASE_URL)/$(RUNC_X86_64_ARTIFACT)"
113+
RUNC_OVERRIDE_X86_64_DIGEST ?= "sha256:$(RUNC_X86_64_256_DIGEST)"
114+
107115
.PHONY: finch.yaml
108116
finch.yaml: $(OS_OUTDIR)/finch.yaml
109117

Makefile.darwin

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,12 @@ $(OS_OUTDIR)/finch.yaml: $(OS_OUTDIR) finch.yaml.d/common.yaml finch.yaml.d/mac.
4646
sed -i.bak -e "s|<finch_daemon_root>|$(FINCH_DAEMON_LOCATION_ROOT)|g" finch.yaml.temp
4747
sed -i.bak -e "s|<finch_daemon_location>|$(FINCH_DAEMON_LOCATION)|g" finch.yaml.temp
4848
sed -i.bak -e "s|<finch_daemon_credhelper_location>|$(FINCH_DAEMON_CREDHELPER_LOCATION)|g" finch.yaml.temp
49+
sed -i.bak -e "s|<runc_override_aarch64_location>|$(RUNC_OVERRIDE_AARCH64_LOCATION)|g" finch.yaml.temp
50+
sed -i.bak -e "s/<runc_override_aarch64_digest>/$(RUNC_OVERRIDE_AARCH64_DIGEST)/g" finch.yaml.temp
51+
sed -i.bak -e "s|<runc_override_x86_64_location>|$(RUNC_OVERRIDE_X86_64_LOCATION)|g" finch.yaml.temp
52+
sed -i.bak -e "s/<runc_override_x86_64_digest>/$(RUNC_OVERRIDE_X86_64_DIGEST)/g" finch.yaml.temp
53+
54+
cat finch.yaml.temp
4955

5056
# Replacement was successful, so cleanup .bak
5157
@rm finch.yaml.temp.bak

Makefile.windows

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,11 @@ $(OS_OUTDIR)/finch.yaml: $(OS_OUTDIR) finch.yaml.d/common.yaml finch.yaml.d/wind
3232
sed -i.bak -e "s/<container_runtime_archive_aarch64_digest>/$(CONTAINER_RUNTIME_ARCHIVE_AARCH64_DIGEST)/g" finch.yaml.temp
3333
sed -i.bak -e "s|<container_runtime_archive_x86_64_location>|$(CONTAINER_RUNTIME_ARCHIVE_X86_64_LOCATION)|g" finch.yaml.temp
3434
sed -i.bak -e "s/<container_runtime_archive_x86_64_digest>/$(CONTAINER_RUNTIME_ARCHIVE_X86_64_DIGEST)/g" finch.yaml.temp
35-
35+
sed -i.bak -e "s|<runc_override_aarch64_location>|$(RUNC_OVERRIDE_AARCH64_LOCATION)|g" finch.yaml.temp
36+
sed -i.bak -e "s/<runc_override_aarch64_digest>/$(RUNC_OVERRIDE_AARCH64_DIGEST)/g" finch.yaml.temp
37+
sed -i.bak -e "s|<runc_override_x86_64_location>|$(RUNC_OVERRIDE_X86_64_LOCATION)|g" finch.yaml.temp
38+
sed -i.bak -e "s/<runc_override_x86_64_digest>/$(RUNC_OVERRIDE_X86_64_DIGEST)/g" finch.yaml.temp
39+
3640
# Replacement was successful, so cleanup .bak
3741
@rm finch.yaml.temp.bak
3842

e2e/vm/version_remote_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ const (
2222
nerdctlVersion = "v2.1.3"
2323
buildKitVersion = "v0.23.2"
2424
containerdVersion = "v2.1.3"
25-
runcVersion = "1.3.0"
25+
runcVersion = "1.3.2"
2626
)
2727

2828
type Versions struct {

finch.yaml.d/common.yaml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,44 @@ provision:
2929
- mode: user
3030
script: |
3131
#!/bin/bash
32+
33+
# Override runc with specified version after container runtime is installed
34+
ARCH=$(uname -m)
35+
if [ "$ARCH" = "x86_64" ]; then
36+
RUNC_URL="<runc_override_x86_64_location>"
37+
RUNC_DIGEST="<runc_override_x86_64_digest>"
38+
elif [ "$ARCH" = "aarch64" ]; then
39+
RUNC_URL="<runc_override_aarch64_location>"
40+
RUNC_DIGEST="<runc_override_aarch64_digest>"
41+
else
42+
echo "Unsupported architecture: $ARCH"
43+
exit 1
44+
fi
45+
46+
# Download and verify runc override
47+
curl -L --fail "$RUNC_URL" -o /tmp/runc-override
48+
echo "$RUNC_DIGEST /tmp/runc-override" | sha256sum -c -
49+
50+
# Replace the existing runc binary
51+
sudo chmod +x /tmp/runc-override
52+
sudo cp /tmp/runc-override /usr/local/bin/runc
53+
sudo cp /tmp/runc-override /usr/bin/runc
54+
sudo rm /tmp/runc-override
55+
56+
# Verify runc version is >= 1.3.2
57+
INSTALLED_VERSION=$(runc --version | head -n1 | awk '{print $3}')
58+
REQUIRED_VERSION="1.3.2"
59+
if ! printf '%s\n%s\n' "$REQUIRED_VERSION" "$INSTALLED_VERSION" | sort -V -C; then
60+
echo "ERROR: runc version $INSTALLED_VERSION is less than required $REQUIRED_VERSION"
61+
exit 1
62+
fi
63+
echo "SUCCESS: runc version $INSTALLED_VERSION meets requirement >= $REQUIRED_VERSION"
64+
65+
# Restart containerd
66+
sudo systemctl restart containerd.service
67+
- mode: user
68+
script: |
69+
#!/bin/bash
3270
3371
# Enable SSHing into the VM as root (e.g., in `nerdctlConfigApplier.Apply`).
3472
sudo cp ~/.ssh/authorized_keys /root/.ssh/
@@ -92,6 +130,7 @@ provision:
92130
sudo systemctl daemon-reload
93131
94132
sudo systemctl restart containerd.service
133+
95134
env:
96135
# Containerd namespace is used by the lima cidata script
97136
# 40-install-containerd.sh. Specifically this variable is defining the

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ require (
1515
github.com/onsi/gomega v1.38.2
1616
github.com/pelletier/go-toml v1.9.5
1717
github.com/pkg/sftp v1.13.9
18-
github.com/runfinch/common-tests v0.9.4
18+
github.com/runfinch/common-tests v0.10.1
1919
github.com/shirou/gopsutil/v3 v3.24.5
2020
github.com/sirupsen/logrus v1.9.4-0.20230606125235-dd1b4c2e81af
2121
github.com/spf13/afero v1.15.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -290,8 +290,8 @@ github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR
290290
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
291291
github.com/rootless-containers/rootlesskit/v2 v2.3.5 h1:WGY05oHE7xQpSkCGfYP9lMY5z19tCxA8PhWlvP1cKx8=
292292
github.com/rootless-containers/rootlesskit/v2 v2.3.5/go.mod h1:83EIYLeMX8UeNgLHkR1PefoSV76aKEC+OyI3vzrEfvw=
293-
github.com/runfinch/common-tests v0.9.4 h1:ctGR/jq4eP3KbdeSfL4ya7DNafwc9+sQgyRdkocfMh8=
294-
github.com/runfinch/common-tests v0.9.4/go.mod h1:25UdRwKrGWnIzKHvceDaMpV3rz+41aCXGB1AOX768po=
293+
github.com/runfinch/common-tests v0.10.1 h1:noZ9LbolXMLTZgXllAJtNkyO6JQrrnf1mpvN1zknU40=
294+
github.com/runfinch/common-tests v0.10.1/go.mod h1:PX9VBgtcOm+2Stjm4F6Y6KpovJ2emdSJ+y1X1URnAIU=
295295
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
296296
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
297297
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI=

0 commit comments

Comments
 (0)