-
Notifications
You must be signed in to change notification settings - Fork 893
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
toolchain install fails in the nightly Docker image #2542
Comments
I have encountered odd errors in CI jobs where the underlying docker container has a rust toolchain in which is being upgraded. I'm not sure why the error message would be that odd, but certainly it's likely to not be the underlying error. Try adding |
Was trying that earlier, but I forgot that argument is position specific so it doesn't work if appended to the end of the command but needs to be before the subcommand instead! (A slight annoyance of mine concerning clap.) https://gist.github.com/Rantanen/c226dc744ba8af62e837610a3c50cd9a Interestingly rustup manages to download Just tried with the official The temp file creation seems weird in the nightly version though. This is the relevant lines from the 1.47 log:
And now that I noted the whole info: installing component 'rustfmt' doesn't appear at all. I ended up trying this without the
Might be a duplicate of #2472 |
Does |
Doesn't seem to be a permission issue. Docker runs rustup as root and looking at the directories, the permissions seem to be in order (root:root, This seems to be a problem with the
Trying to do a similar move with
So I'm guessing this is a Rust/Docker issue now, not a rustup one. |
https://doc.rust-lang.org/std/fs/fn.rename.html
This must somehow conflict with files on the Docker image (ie. on the overlay?) and renaming them into new directories (different overlay?). |
I believe it's a known issue that docker doesn't support this kind of thing, so it's not entirely unexpected. I'm not sure if there's a way to configure docker such that this doesn't happen, but I've seen this plenty of times when people put preinstalled |
Yeah, at this point I'm not sure what to do with this. The underlying root cause is an exotic configuration where So while "rustup fails to install/update/etc. if rustup/toolchains and rustup/tmp are on different mountpoints" would technically be a rustup issue, I'd guess it's rare enough to just declare it as "unsupported" and leave it. I'll leave that decision to you though. Feel free to close this or leave it open depending on how you feel about the issue. |
The problem is that you have two different filesystems in ~/.rustup: this isn't supported. See #2232 If you uninstall rustup entirely and reinstall it in one command in docker it will work fine; our current transactional system depends on single filesystem semantics and won't work with dockers default stacked filesystem behaviour; you can either tune docker, so that rename() works, or uninstall and reinstall rustup entirely. See also #2417 for a related discussion |
Yes, this is an absolute duplicate of #2232, sorry. Tried searching for a similar issue, but I guess Github's issue search failed me. Closing. |
no probs - sorry that this doesn't work easily, and we will get a fix at some point. |
@Rantanen @kinnison You may be able to fix this with |
Is that in a release yet, I don't think it is. |
No, you're right it hasn't been released yet. |
Noted in CircleCI builds and reproduced with local docker:
I was expecting this to go back to 2020-10-24 build, which should have a working rustfmt. It seems like rustup is attempting to do that, but still fails with an error indicating rustfmt is missing.
A similar test outside of Docker worked just fine:
Rustup status in the nightly Docker image:
The text was updated successfully, but these errors were encountered: