summaryrefslogtreecommitdiffstats
path: root/src/runner/runc/run.rs
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2021-09-11 11:41:58 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2021-09-11 11:41:58 +0200
commit00c656c3acc1d6b961f9a75b98b660a8b94a2072 (patch)
tree4a37e6a44ad8e3ad9accf2d437706b8faba28740 /src/runner/runc/run.rs
parentd3a9396742f30c2edaa852dde1f601236de81db1 (diff)
downloadrebel-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.rs26
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]),
)?;
}
}