rust-lang / rustup

The Rust toolchain installer
https://rust-lang.github.io/rustup/
Apache License 2.0
6.03k stars 877 forks source link

Rustup cannot download hash file for toolchains channel information under Wine #3689

Open llde opened 4 months ago

llde commented 4 months ago

Problem

Hi, When trying to install a MSVC toolchain using Rustup under wine (x64 and x86 rustup versions for windows affected) it fails with this error: error: could not download file from 'https://static.rust-lang.org/dist/channel-rust-stable.toml.sha256' to 'C:\users\lorenzo.rustup\tmp\scoucda6ta418hod_file': failed to make network request: error sending request for url (https://static.rust-lang.org/dist/channel-rust-stable.toml.sha256): operation timed out: operation timed out

I did see this error seems to happen also on different platforms, but it's consistent on Wine. It's possible that it's not a specific wine deficiency, but worse performance under wine (socket performances are not on par with windows, expecially asyncronous and non blocking ones) are making the problem manifest. I can download toolchains from the native linux rustup, however it's easier to be able to manage the msvc rust toolchain inside the Wine Prefix where Visual Studio 2019 and the C++ Build tools are installed

RUSTUP_USE_CURL=1 is a workaround, and allow rustup to properly download

Thanks for the attention

Steps

1) export WINEPREFIX="(PAth for VS wine prefix)" 2) wine rustup-init.exe 3) Press enter and wait

Possible Solution(s)

RUSTUP_USE_CURL=1 is a workaround

Notes

Wine, Wine-Staging and Wine-TKG affected. Problem existed in wine 7.x

Rustup version

1.26.0  (but this problem existed in all previous version for some years)

Installed toolchains

None
djc commented 4 months ago

Reported this as a reqwest issue: https://github.com/seanmonstar/reqwest/issues/2158.

llde commented 2 months ago

RUSTUP_USE_RUSTLS=1 seems to be another workaround with last rustup version. Without any envvars setted problems still persist @djc

rami3l commented 2 months ago

RUSTUP_USE_RUSTLS=1 seems to be another workaround with last rustup version. Without any envvars setted problems still persist

@llde That kinda makes sense since the current default is to use Windows' own TLS stack, and I have no idea if that works well under Wine or not...