From eb052bdbaff92147e8012985f5d6fe0d78390f3c Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sun, 26 Sep 2021 10:29:33 +0200 Subject: runc: do not create a separate mount for the sysroot --- src/paths.rs | 6 ++---- src/runner/runc/run.rs | 23 +++++++++-------------- src/runner/runc/spec.rs | 9 --------- 3 files changed, 11 insertions(+), 27 deletions(-) diff --git a/src/paths.rs b/src/paths.rs index 193bdea..29cbcbd 100644 --- a/src/paths.rs +++ b/src/paths.rs @@ -30,8 +30,7 @@ //! │ │ ├── sysroot/ # sysroot mountpoint //! │ │ └── work/ # build overlay mountpoint //! │ ├── rootfs/ # rootfs overlay mountpoint -//! │ ├── build_depends/ # overlayed on rootfs in container -//! │ └── host_depends/ # bound to /build/sysroot in container +//! │ └── depends/ # overlayed on rootfs in container //!    └── runc/ # runc container state //! ``` @@ -51,8 +50,7 @@ pub const TASK_TMP_DOWNLOADS_SUBDIR: &str = "build/downloads"; pub const TASK_TMP_WORK_SUBDIR: &str = "build/work"; pub const TASK_TMP_ROOTFS_SUBDIR: &str = "rootfs"; -pub const TASK_TMP_BUILD_DEPENDS_SUBDIR: &str = "build_depends"; -pub const TASK_TMP_HOST_DEPENDS_SUBDIR: &str = "host_depends"; +pub const TASK_TMP_DEPENDS_SUBDIR: &str = "depends"; pub const TASK_TMP_RUNC_ROOT_SUBDIR: &str = "../../runc"; diff --git a/src/runner/runc/run.rs b/src/runner/runc/run.rs index eed3ce2..f93070b 100644 --- a/src/runner/runc/run.rs +++ b/src/runner/runc/run.rs @@ -30,11 +30,7 @@ fn init_task(task: &runner::Task) -> Result<()> { fs::mkdir(&mount_target)?; fs::mkdir(paths::join(&[ &task_tmp_dir, - paths::TASK_TMP_BUILD_DEPENDS_SUBDIR, - ]))?; - fs::mkdir(paths::join(&[ - &task_tmp_dir, - paths::TASK_TMP_HOST_DEPENDS_SUBDIR, + paths::TASK_TMP_DEPENDS_SUBDIR, ]))?; fs::mkdir(paths::join(&[&task_tmp_dir, paths::TASK_TMP_ROOTFS_SUBDIR]))?; @@ -82,10 +78,10 @@ fn init_task(task: &runner::Task) -> Result<()> { fn init_task_rootfs(task: &runner::Task) -> Result<()> { let task_tmp_dir = paths::task_tmp_dir(&task.input_hash); - let build_depends_dir = paths::join(&[&task_tmp_dir, paths::TASK_TMP_BUILD_DEPENDS_SUBDIR]); + let depends_dir = paths::join(&[&task_tmp_dir, paths::TASK_TMP_DEPENDS_SUBDIR]); let mount_target = paths::join(&[&task_tmp_dir, paths::TASK_TMP_ROOTFS_SUBDIR]); - let lower = [&build_depends_dir, paths::ROOTFS_DIR].join(":"); + let lower = [&depends_dir, paths::ROOTFS_DIR].join(":"); let options = format!( "xino=off,index=off,metacopy=off,lowerdir={lower}", lower = lower, @@ -138,11 +134,6 @@ fn unpack_dependencies(task: &runner::Task) -> Result<()> { let downloads_dir = paths::join(&[&task_tmp_dir, paths::TASK_TMP_DOWNLOADS_SUBDIR]); fs::mkdir(&downloads_dir)?; - fs::mkdir(paths::join(&[ - &task_tmp_dir, - paths::TASK_TMP_BUILD_DEPENDS_SUBDIR, - paths::SYSROOT_PREFIX, - ]))?; for dep in task.input.depends.values() { match dep { @@ -155,13 +146,17 @@ fn unpack_dependencies(task: &runner::Task) -> Result<()> { Dependency::BuildTask { output } => { unpack_dependency( paths::archive_filename(output), - paths::join(&[&task_tmp_dir, paths::TASK_TMP_BUILD_DEPENDS_SUBDIR]), + paths::join(&[&task_tmp_dir, paths::TASK_TMP_DEPENDS_SUBDIR]), )?; } Dependency::HostTask { output } => { unpack_dependency( paths::archive_filename(output), - paths::join(&[&task_tmp_dir, paths::TASK_TMP_HOST_DEPENDS_SUBDIR]), + paths::join(&[ + &task_tmp_dir, + paths::TASK_TMP_DEPENDS_SUBDIR, + paths::SYSROOT_PREFIX, + ]), )?; } } diff --git a/src/runner/runc/spec.rs b/src/runner/runc/spec.rs index 8afeaeb..886799e 100644 --- a/src/runner/runc/spec.rs +++ b/src/runner/runc/spec.rs @@ -38,15 +38,6 @@ pub fn generate_spec(command: &str) -> runtime::Spec { "rbind" ] }, - { - "destination": paths::abs(paths::SYSROOT_PREFIX), - "type": "none", - "source": paths::TASK_TMP_HOST_DEPENDS_SUBDIR, - "options": [ - "bind", - "ro" - ] - }, { "destination": "/tmp", "type": "tmpfs", -- cgit v1.2.3