Description
Problem you are trying to solve
This is a follow up to rust-lang/cargo#15099
In short, it used to be that setting the CARGO
environment variable to, e.g. $CARGO_HOME/bin/cargo
prior to invoking cargo
could result in mismatched toolchains when cargo
is managed by rustup, E.g. cargo +nightly
will run the nightly cargo but later use of the CARGO
environment variable would mean running the default toolchain instead (which may be different).
That issue is fixed for newer versions of Cargo but rustup obviously supports installing old versions. Should we make a best effort to ensure the CARGO
environment variable is correctly set to the right toolchain when running via a proxy?
Solution you'd like
If running cargo
via rustup and if the CARGO
environment variable is set to a rustup proxy (e.g. as in rustup managed $CARGO_HOME/bin/cargo
) then set CARGO
to the actual path for cargo
.
Notes
This mimics newer cargo behaviour. We shouldn't go out of our way to fix this in all cases but if a minimal change works around this issue in most cases then it would still be useful, I think.