Skip to content

Commit 62ec9fb

Browse files
committed
Address code review.
1 parent 83f487e commit 62ec9fb

File tree

3 files changed

+88
-129
lines changed

3 files changed

+88
-129
lines changed

src/docker/local.rs

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ pub(crate) fn run(
2626
msg_info: &mut MessageInfo,
2727
) -> Result<ExitStatus> {
2828
let engine = &options.engine;
29-
let dirs = &paths.directories;
29+
let toolchain_dirs = paths.directories.toolchain_directories();
30+
let package_dirs = paths.directories.package_directories();
3031

3132
let mut cmd = cargo_safe_command(options.cargo_variant);
3233
cmd.args(args);
@@ -38,7 +39,7 @@ pub(crate) fn run(
3839
.image
3940
.platform
4041
.specify_platform(&options.engine, &mut docker);
41-
docker_envvars(&mut docker, &options, dirs, msg_info)?;
42+
docker_envvars(&mut docker, &options, toolchain_dirs, msg_info)?;
4243

4344
docker_mount(
4445
&mut docker,
@@ -57,33 +58,48 @@ pub(crate) fn run(
5758
docker
5859
.args([
5960
"-v",
60-
&format!("{}:{}:z", dirs.xargo_host_path()?, dirs.xargo_mount_path()),
61+
&format!(
62+
"{}:{}:z",
63+
toolchain_dirs.xargo_host_path()?,
64+
toolchain_dirs.xargo_mount_path()
65+
),
6166
])
6267
.args([
6368
"-v",
64-
&format!("{}:{}:z", dirs.cargo_host_path()?, dirs.cargo_mount_path()),
69+
&format!(
70+
"{}:{}:z",
71+
toolchain_dirs.cargo_host_path()?,
72+
toolchain_dirs.cargo_mount_path()
73+
),
6574
])
6675
// Prevent `bin` from being mounted inside the Docker container.
67-
.args(["-v", &format!("{}/bin", dirs.cargo_mount_path())]);
76+
.args(["-v", &format!("{}/bin", toolchain_dirs.cargo_mount_path())]);
6877
docker.args([
6978
"-v",
70-
&format!("{}:{}:z", dirs.host_root().to_utf8()?, dirs.mount_root()),
79+
&format!(
80+
"{}:{}:z",
81+
package_dirs.host_root().to_utf8()?,
82+
package_dirs.mount_root()
83+
),
7184
]);
7285
docker
7386
.args([
7487
"-v",
7588
&format!(
7689
"{}:{}:z,ro",
77-
dirs.get_sysroot().to_utf8()?,
78-
dirs.sysroot_mount_path()
90+
toolchain_dirs.get_sysroot().to_utf8()?,
91+
toolchain_dirs.sysroot_mount_path()
7992
),
8093
])
81-
.args(["-v", &format!("{}:/target:z", dirs.target().to_utf8()?)]);
94+
.args([
95+
"-v",
96+
&format!("{}:/target:z", package_dirs.target().to_utf8()?),
97+
]);
8298
docker_cwd(&mut docker, &paths)?;
8399

84100
// When running inside NixOS or using Nix packaging we need to add the Nix
85101
// Store to the running container so it can load the needed binaries.
86-
if let Some(nix_store) = dirs.nix_store() {
102+
if let Some(nix_store) = toolchain_dirs.nix_store() {
87103
docker.args([
88104
"-v",
89105
&format!(
@@ -106,7 +122,7 @@ pub(crate) fn run(
106122

107123
docker
108124
.arg(&image_name)
109-
.args(["sh", "-c", &build_command(dirs, &cmd)])
125+
.args(["sh", "-c", &build_command(toolchain_dirs, &cmd)])
110126
.run_and_get_status(msg_info, false)
111127
.map_err(Into::into)
112128
}

src/docker/remote.rs

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -853,7 +853,8 @@ pub(crate) fn run(
853853
) -> Result<ExitStatus> {
854854
let engine = &options.engine;
855855
let target = &options.target;
856-
let dirs = &paths.directories;
856+
let toolchain_dirs = paths.directories.toolchain_directories();
857+
let package_dirs = paths.directories.package_directories();
857858

858859
let mount_prefix = MOUNT_PREFIX;
859860

@@ -883,18 +884,18 @@ pub(crate) fn run(
883884
// this can happen if we didn't gracefully exit before
884885
// note that since we use `docker run --rm`, it's very
885886
// unlikely the container state existed before.
886-
let toolchain_id = dirs.unique_toolchain_identifier()?;
887-
let container = dirs.unique_container_identifier(target.target())?;
887+
let toolchain_id = toolchain_dirs.unique_toolchain_identifier()?;
888+
let container = toolchain_dirs.unique_container_identifier(target.target())?;
888889
let volume = {
889-
let existing = existing_volumes(engine, dirs.toolchain(), msg_info)?;
890+
let existing = existing_volumes(engine, toolchain_dirs.toolchain(), msg_info)?;
890891
if existing.iter().any(|v| v == &toolchain_id) {
891892
VolumeId::Keep(toolchain_id)
892893
} else {
893-
let partial = format!("{VOLUME_PREFIX}{}", dirs.toolchain());
894+
let partial = format!("{VOLUME_PREFIX}{}", toolchain_dirs.toolchain());
894895
if existing.iter().any(|v| v.starts_with(&partial)) {
895896
msg_info.warn(format_args!(
896897
"a persistent volume does not exists for `{0}`, but there is a volume for a different version.\n > Create a new volume with `cross-util volumes create --toolchain {0}`",
897-
dirs.toolchain()
898+
toolchain_dirs.toolchain()
898899
))?;
899900
}
900901
VolumeId::Discard
@@ -947,7 +948,7 @@ pub(crate) fn run(
947948

948949
// When running inside NixOS or using Nix packaging we need to add the Nix
949950
// Store to the running container so it can load the needed binaries.
950-
if let Some(nix_store) = dirs.nix_store() {
951+
if let Some(nix_store) = toolchain_dirs.nix_store() {
951952
let nix_string = nix_store.to_utf8()?;
952953
volumes.push((nix_string.to_owned(), nix_string.to_owned()));
953954
}
@@ -993,14 +994,19 @@ pub(crate) fn run(
993994
}
994995
};
995996
let mount_prefix_path = mount_prefix.as_ref();
996-
let rustdirs = dirs.toolchain_directories();
997997
if let VolumeId::Discard = volume {
998-
copy_volume_container_xargo(engine, &container, rustdirs, mount_prefix_path, msg_info)
999-
.wrap_err("when copying xargo")?;
998+
copy_volume_container_xargo(
999+
engine,
1000+
&container,
1001+
toolchain_dirs,
1002+
mount_prefix_path,
1003+
msg_info,
1004+
)
1005+
.wrap_err("when copying xargo")?;
10001006
copy_volume_container_cargo(
10011007
engine,
10021008
&container,
1003-
rustdirs,
1009+
toolchain_dirs,
10041010
mount_prefix_path,
10051011
false,
10061012
msg_info,
@@ -1009,7 +1015,7 @@ pub(crate) fn run(
10091015
copy_volume_container_rust(
10101016
engine,
10111017
&container,
1012-
rustdirs,
1018+
toolchain_dirs,
10131019
Some(target.target()),
10141020
mount_prefix_path,
10151021
msg_info,
@@ -1020,7 +1026,7 @@ pub(crate) fn run(
10201026
copy_volume_container_rust_triple(
10211027
engine,
10221028
&container,
1023-
rustdirs,
1029+
toolchain_dirs,
10241030
target.target(),
10251031
mount_prefix_path,
10261032
true,
@@ -1029,7 +1035,7 @@ pub(crate) fn run(
10291035
.wrap_err("when copying rust target files")?;
10301036
}
10311037
// cannot panic: absolute unix path, must have root
1032-
let rel_mount_root = dirs
1038+
let rel_mount_root = package_dirs
10331039
.mount_root()
10341040
.strip_prefix('/')
10351041
.expect("mount root should be absolute");
@@ -1048,44 +1054,44 @@ pub(crate) fn run(
10481054
copy_volume_container_project(
10491055
engine,
10501056
&container,
1051-
dirs.host_root(),
1057+
package_dirs.host_root(),
10521058
&mount_root,
10531059
&volume,
10541060
copy_cache,
10551061
msg_info,
10561062
)
10571063
.wrap_err("when copying project")?;
1058-
let sysroot = dirs.get_sysroot().to_owned();
1064+
let sysroot = toolchain_dirs.get_sysroot().to_owned();
10591065
let mut copied = vec![
10601066
(
1061-
dirs.xargo(),
1062-
mount_prefix_path.join(&dirs.xargo_mount_path_relative()?),
1067+
toolchain_dirs.xargo(),
1068+
mount_prefix_path.join(&toolchain_dirs.xargo_mount_path_relative()?),
10631069
),
10641070
(
1065-
dirs.cargo(),
1066-
mount_prefix_path.join(&dirs.cargo_mount_path_relative()?),
1071+
toolchain_dirs.cargo(),
1072+
mount_prefix_path.join(&toolchain_dirs.cargo_mount_path_relative()?),
10671073
),
10681074
(
10691075
&sysroot,
1070-
mount_prefix_path.join(&dirs.sysroot_mount_path_relative()?),
1076+
mount_prefix_path.join(&toolchain_dirs.sysroot_mount_path_relative()?),
10711077
),
1072-
(dirs.host_root(), mount_root.clone()),
1078+
(package_dirs.host_root(), mount_root.clone()),
10731079
];
10741080
let mut to_symlink = vec![];
1075-
let target_dir = file::canonicalize(dirs.target())?;
1076-
let target_dir = if let Ok(relpath) = target_dir.strip_prefix(dirs.host_root()) {
1081+
let target_dir = file::canonicalize(package_dirs.target())?;
1082+
let target_dir = if let Ok(relpath) = target_dir.strip_prefix(package_dirs.host_root()) {
10771083
mount_root.join(relpath)
10781084
} else {
10791085
// outside project, need to copy the target data over
10801086
// only do if we're copying over cached files.
10811087
let target_dir = mount_prefix_path.join("target");
10821088
if copy_cache {
1083-
copy(dirs.target(), &target_dir, msg_info)?;
1089+
copy(package_dirs.target(), &target_dir, msg_info)?;
10841090
} else {
10851091
create_volume_dir(engine, &container, &target_dir, msg_info)?;
10861092
}
10871093

1088-
copied.push((dirs.target(), target_dir.clone()));
1094+
copied.push((package_dirs.target(), target_dir.clone()));
10891095
target_dir
10901096
};
10911097
for (src, dst) in &volumes {
@@ -1192,10 +1198,10 @@ symlink_recurse \"${{prefix}}\"
11921198
// 6. execute our cargo command inside the container
11931199
let mut docker = subcommand(engine, "exec");
11941200
docker_user_id(&mut docker, engine.kind);
1195-
docker_envvars(&mut docker, &options, dirs, msg_info)?;
1201+
docker_envvars(&mut docker, &options, toolchain_dirs, msg_info)?;
11961202
docker_cwd(&mut docker, &paths)?;
11971203
docker.arg(&container);
1198-
docker.args(["sh", "-c", &build_command(dirs, &cmd)]);
1204+
docker.args(["sh", "-c", &build_command(toolchain_dirs, &cmd)]);
11991205
bail_container_exited!();
12001206
let status = docker
12011207
.run_and_get_status(msg_info, false)
@@ -1212,7 +1218,8 @@ symlink_recurse \"${{prefix}}\"
12121218
.arg("-a")
12131219
.arg(&format!("{container}:{}", target_dir.as_posix_absolute()?))
12141220
.arg(
1215-
dirs.target()
1221+
package_dirs
1222+
.target()
12161223
.parent()
12171224
.expect("target directory should have a parent"),
12181225
)

0 commit comments

Comments
 (0)