Skip to content

Commit 20cd625

Browse files
committed
ci: allow overriding run-docker.sh CARGO_HOME.
The `ci/run-docker.sh` utility script adds a `--volume` argument to the `docker` command to mount the Cargo home directory of the host machine into the container at `/cargo`. Prior to this patch the host's Cargo home directory is assumed to be the `dirname` of the `dirname` of the `cargo` command's path. That works in most cases where the host machine installed rust with vanilla `rustup`. It may fail if the host machine used a different method. For example if the host machine used the Archlinux rustup package[0] then `cargo` is installed to `/usr/bin/cargo` and the `run-docker.sh` script incorrectly mounts `/usr/` to the `/cargo` directory of the test container. This patch allows specifying an explicit `CARGO_HOME` to the `ci/run-docker.sh` script so that users with a non-standard cargo dir can use the utility without modification. By default if no `CARGO_HOME` is set then the legacy behaviour is used and `CARGO_HOME` defaults to the `dirname` of the `dirname` of the `cargo` command is used. [0]: https://wiki.archlinux.org/index.php/rust#Arch_Linux_package
1 parent d2963c2 commit 20cd625

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

ci/run-docker.sh

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,13 @@
55

66
set -ex
77

8+
# Default to assuming the CARGO_HOME is one directory up (to account for a `bin`
9+
# subdir) from where the `cargo` binary in `$PATH` lives.
10+
DEFAULT_CARGO_HOME="$(dirname "$(dirname "$(command -v cargo)")")"
11+
# If the CARGO_HOME env var is already set, use that. If it isn't set use the
12+
# default.
13+
CARGO_HOME="${CARGO_HOME:-$DEFAULT_CARGO_HOME}"
14+
815
echo "${HOME}"
916
pwd
1017

@@ -26,7 +33,7 @@ run() {
2633
--env LIBC_CI \
2734
--env CARGO_HOME=/cargo \
2835
--env CARGO_TARGET_DIR=/checkout/target \
29-
--volume "$(dirname "$(dirname "$(command -v cargo)")")":/cargo \
36+
--volume "$CARGO_HOME":/cargo \
3037
--volume "$(rustc --print sysroot)":/rust:ro \
3138
--volume "$(pwd)":/checkout:ro \
3239
--volume "$(pwd)"/target:/checkout/target \

0 commit comments

Comments
 (0)