diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2021-09-11 11:41:58 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2021-09-11 11:41:58 +0200 |
commit | 00c656c3acc1d6b961f9a75b98b660a8b94a2072 (patch) | |
tree | 4a37e6a44ad8e3ad9accf2d437706b8faba28740 /src/runner/runc/run.rs | |
parent | d3a9396742f30c2edaa852dde1f601236de81db1 (diff) | |
download | rebel-00c656c3acc1d6b961f9a75b98b660a8b94a2072.tar rebel-00c656c3acc1d6b961f9a75b98b660a8b94a2072.zip |
More build dir reorganization
- Rename work layer to "layer"
- Only preserve a work subdir of the build home
- Move downloads and destination dir out of work dir
Diffstat (limited to 'src/runner/runc/run.rs')
-rw-r--r-- | src/runner/runc/run.rs | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/src/runner/runc/run.rs b/src/runner/runc/run.rs index beb949d..2e4bfea 100644 --- a/src/runner/runc/run.rs +++ b/src/runner/runc/run.rs @@ -14,25 +14,25 @@ use super::spec; fn init_task(task: &runner::Task) -> Result<()> { let task_state_dir = paths::task_state_dir(&task.input_hash); - let task_build_dir = paths::join(&[&task_state_dir, paths::TASK_STATE_BUILD_SUBDIR]); + let task_layer_dir = paths::join(&[&task_state_dir, paths::TASK_STATE_LAYER_SUBDIR]); let task_work_dir = paths::join(&[&task_state_dir, paths::TASK_STATE_WORK_SUBDIR]); util::fs::mkdir(&task_work_dir)?; - util::fs::mkdir(&task_build_dir)?; + util::fs::mkdir(&task_layer_dir)?; let task_tmp_dir = paths::task_tmp_dir(&task.input_hash); - let mount_target = paths::join(&[&task_tmp_dir, paths::TASK_TMP_BUILD_SUBDIR]); + let mount_target = paths::join(&[&task_tmp_dir, paths::TASK_TMP_WORK_SUBDIR]); util::fs::mkdir(&mount_target)?; util::fs::mkdir(paths::join(&[ &task_tmp_dir, - paths::TASK_TMP_DEPENDS_SUBDIR, + paths::TASK_TMP_SYSROOT_SUBDIR, paths::SYSROOT_PREFIX, ]))?; if task.inherit.is_empty() { mount::mount::<_, _, _, str>( - Some(task_build_dir.as_str()), + Some(task_layer_dir.as_str()), mount_target.as_str(), Some("none"), MsFlags::MS_BIND, @@ -46,7 +46,7 @@ fn init_task(task: &runner::Task) -> Result<()> { .map(|hash| { paths::join(&[ &paths::task_state_dir(hash), - &paths::TASK_STATE_BUILD_SUBDIR, + &paths::TASK_STATE_LAYER_SUBDIR, ]) }) .collect::<Vec<_>>() @@ -54,7 +54,7 @@ fn init_task(task: &runner::Task) -> Result<()> { let options = format!( "lowerdir={lower},upperdir={upper},workdir={work}", lower = lower, - upper = task_build_dir, + upper = task_layer_dir, work = task_work_dir ); mount::mount::<_, _, _, str>( @@ -72,11 +72,13 @@ fn init_task(task: &runner::Task) -> Result<()> { fn cleanup_task(task: &runner::Task) -> Result<()> { let task_tmp_dir = paths::task_tmp_dir(&task.input_hash); - let mount_target = paths::join(&[&task_tmp_dir, paths::TASK_TMP_BUILD_SUBDIR]); + let mount_target = paths::join(&[&task_tmp_dir, paths::TASK_TMP_WORK_SUBDIR]); mount::umount(mount_target.as_str()) .with_context(|| format!("Failed to unmount {}", mount_target))?; + util::fs::ensure_removed(&task_tmp_dir).context("Failed to remove task tmp dir")?; + let task_state_dir = paths::task_state_dir(&task.input_hash); let task_work_dir = paths::join(&[&task_state_dir, paths::TASK_STATE_WORK_SUBDIR]); util::fs::ensure_removed(&task_work_dir).context("Failed to remove overlayfs workdir")?; @@ -104,18 +106,22 @@ fn unpack_dependency<P1: AsRef<Path>, P2: AsRef<Path>>(filename: P1, dest: P2) - fn unpack_dependencies(task: &runner::Task) -> Result<()> { let task_tmp_dir = paths::task_tmp_dir(&task.input_hash); + let downloads_dir = paths::join(&[&task_tmp_dir, paths::TASK_TMP_DOWNLOADS_SUBDIR]); + + util::fs::mkdir(&downloads_dir)?; + for dep in task.depends.values() { match dep { Output::Fetch { name, .. } => { util::fs::copy( paths::join(&[paths::DOWNLOADS_DIR, name]), - paths::join(&[&task_tmp_dir, paths::TASK_TMP_BUILD_SUBDIR, name]), + paths::join(&[&downloads_dir, name]), )?; } Output::Run(hash) => { unpack_dependency( paths::archive_filename(hash), - paths::join(&[&task_tmp_dir, paths::TASK_TMP_DEPENDS_SUBDIR]), + paths::join(&[&task_tmp_dir, paths::TASK_TMP_SYSROOT_SUBDIR]), )?; } } |