Remove toolbox's dependency on Docker
This CL removes the Toolbox dependency on docker command, use ctr cmd from containerd instead.
BUG=b/183994493
TEST=Created a VM and launched a toolbox container
RELEASE_NOTE=Remove toolbox's dependency on docker command
Change-Id: I7a9596cc0c01ce088ec92ec8d040abdac11b4a66
Reviewed-on: https://cos-review.googlesource.com/c/cos/overlays/board-overlays/+/19610
Tested-by: Rayan Dasoriya <dasoriya@google.com>
Reviewed-by: Roy Yang <royyang@google.com>
diff --git a/project-lakitu/app-admin/toolbox/files/0.0.1-load-docker-image-from-tarball.patch b/project-lakitu/app-admin/toolbox/files/0.0.1-load-docker-image-from-tarball.patch
deleted file mode 100644
index 41d0099..0000000
--- a/project-lakitu/app-admin/toolbox/files/0.0.1-load-docker-image-from-tarball.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 3fc55496f97727ee760d2a7a657f3077d153eb06 Mon Sep 17 00:00:00 2001
-From: Aditya Kali <adityakali@google.com>
-Date: Thu, 3 Nov 2016 16:21:58 -0700
-Subject: [PATCH] load docker image from tarball
-
-Adds an option TOOLBOX_DOCKER_IMAGE_TARBALL that can be used to
-specify the path to locally saved docker image to load
-instead of doing a 'docker pull'.
-
-Signed-off-by: Aditya Kali <adityakali@google.com>
----
- toolbox | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/toolbox b/toolbox
-index f101cf1..c560dc1 100755
---- a/toolbox
-+++ b/toolbox
-@@ -10,6 +10,7 @@ TOOLBOX_DIRECTORY="/var/lib/toolbox"
- TOOLBOX_BIND="--bind=/:/media/root --bind=/usr:/media/root/usr --bind=/run:/media/root/run"
- # Ex: "--setenv=KEY=VALUE"
- TOOLBOX_ENV=""
-+TOOLBOX_DOCKER_IMAGE_TARBALL=""
-
- toolboxrc="${HOME}"/.toolboxrc
-
-@@ -30,7 +31,11 @@ if [ ! -f ${osrelease} ] || systemctl is-failed -q ${machinename} ; then
- sudo mkdir -p "${machinepath}"
- sudo chown ${USER}: "${machinepath}"
-
-- docker pull "${TOOLBOX_DOCKER_IMAGE}:${TOOLBOX_DOCKER_TAG}"
-+ if [ ! -z "${TOOLBOX_DOCKER_IMAGE_TARBALL}" ] ; then
-+ docker load -i "${TOOLBOX_DOCKER_IMAGE_TARBALL}"
-+ else
-+ docker pull "${TOOLBOX_DOCKER_IMAGE}:${TOOLBOX_DOCKER_TAG}"
-+ fi
- docker create --name=${machinename} "${TOOLBOX_DOCKER_IMAGE}:${TOOLBOX_DOCKER_TAG}" /bin/true
- docker export ${machinename} | sudo tar -x -C "${machinepath}" -f -
- docker rm ${machinename}
---
-2.8.0.rc3.226.g39d4020
-
diff --git a/project-lakitu/app-admin/toolbox/files/0001-Added-containerd-support.patch b/project-lakitu/app-admin/toolbox/files/0001-Added-containerd-support.patch
new file mode 100644
index 0000000..dd92d7c
--- /dev/null
+++ b/project-lakitu/app-admin/toolbox/files/0001-Added-containerd-support.patch
@@ -0,0 +1,50 @@
+From fc9fea5b5b47686f9e841d4b7d0105e06960c112 Mon Sep 17 00:00:00 2001
+From: Rayan Dasoriya <dasoriya@google.com>
+Date: Tue, 20 Jul 2021 02:32:45 +0000
+Subject: [PATCH] Added containerd support
+
+---
+ toolbox | 18 ++++++++++++++----
+ 1 file changed, 14 insertions(+), 4 deletions(-)
+
+diff --git a/toolbox b/toolbox
+index f101cf1..5cf01cd 100755
+--- a/toolbox
++++ b/toolbox
+@@ -10,6 +10,8 @@ TOOLBOX_DIRECTORY="/var/lib/toolbox"
+ TOOLBOX_BIND="--bind=/:/media/root --bind=/usr:/media/root/usr --bind=/run:/media/root/run"
+ # Ex: "--setenv=KEY=VALUE"
+ TOOLBOX_ENV=""
++TOOLBOX_DOCKER_IMAGE_TARBALL=""
++TOOLBOX_TEMP_DIR=$(mktemp -d)
+
+ toolboxrc="${HOME}"/.toolboxrc
+
+@@ -28,12 +30,20 @@ machinepath="${TOOLBOX_DIRECTORY}/${machinename}"
+ osrelease="${machinepath}/etc/os-release"
+ if [ ! -f ${osrelease} ] || systemctl is-failed -q ${machinename} ; then
+ sudo mkdir -p "${machinepath}"
++ sudo mkdir -p "${TOOLBOX_TEMP_DIR}"
+ sudo chown ${USER}: "${machinepath}"
+
+- docker pull "${TOOLBOX_DOCKER_IMAGE}:${TOOLBOX_DOCKER_TAG}"
+- docker create --name=${machinename} "${TOOLBOX_DOCKER_IMAGE}:${TOOLBOX_DOCKER_TAG}" /bin/true
+- docker export ${machinename} | sudo tar -x -C "${machinepath}" -f -
+- docker rm ${machinename}
++ if [ ! -z "${TOOLBOX_DOCKER_IMAGE_TARBALL}" ] ; then
++ ctr image import "${TOOLBOX_DOCKER_IMAGE_TARBALL}"
++ else
++ ctr image pull "${TOOLBOX_DOCKER_IMAGE}:${TOOLBOX_DOCKER_TAG}"
++ fi
++ ctr containers create "${TOOLBOX_DOCKER_IMAGE}:${TOOLBOX_DOCKER_TAG}" ${machinename} /bin/true
++ ctr snapshot mounts "${TOOLBOX_TEMP_DIR}" ${machinename} | xargs sudo
++ rsync -a "${TOOLBOX_TEMP_DIR}/" "${machinepath}"
++ sudo umount "${TOOLBOX_TEMP_DIR}"
++ ctr container rm ${machinename}
++ sudo rm -rf "${TOOLBOX_TEMP_DIR}"
+ sudo touch ${osrelease}
+ fi
+
+--
+2.32.0.402.g57bb445576-goog
+
diff --git a/project-lakitu/app-admin/toolbox/toolbox-0.0.1-r26.ebuild b/project-lakitu/app-admin/toolbox/toolbox-0.0.1-r27.ebuild
similarity index 100%
rename from project-lakitu/app-admin/toolbox/toolbox-0.0.1-r26.ebuild
rename to project-lakitu/app-admin/toolbox/toolbox-0.0.1-r27.ebuild
diff --git a/project-lakitu/app-admin/toolbox/toolbox-0.0.1.ebuild b/project-lakitu/app-admin/toolbox/toolbox-0.0.1.ebuild
index 3ba27aa..77c9471 100644
--- a/project-lakitu/app-admin/toolbox/toolbox-0.0.1.ebuild
+++ b/project-lakitu/app-admin/toolbox/toolbox-0.0.1.ebuild
@@ -21,7 +21,7 @@
RDEPEND="${DEPEND}"
src_prepare() {
- epatch "${FILESDIR}"/0.0.1-load-docker-image-from-tarball.patch
+ epatch "${FILESDIR}"/0001-Added-containerd-support.patch
}
src_install() {