Rsync for nightly builds


#1

After a few times downloading the rust nightly install tarball and extracting it only to find out that it’s the same as I already have, I think an rsync service would be super-helpful. To save traffic on unchanged files and small deltas it’d be better to synchronize an unpacked tree (there is in-protocol compression).


#2

The same may be useful in Travis with caching, though I’m not sure the transfer setup looking through all the files would not take longer than dumb downloading and extraction.


#3

There is a nice tool called multirust to manage multiple installs of rust which looks at manifests from the static-rust-lang-org.s3/…/dist/ directory do decide if it needs an update.

If you’re okay with the multirust way of doing things (it installs a proxy script that calls out to rustc, cargo for you) it’s totally transparent and quite nice. I recommend it. I often run multirust update nightly to be told I’m already on the latest version after a very quick manifest check. It has lots of other nice features too, but I’m basically using it as my rustup.sh replacement.


#4

Thanks, I didn’t know that!


#5

I am hoping to upstream a bunch of the multirust code back into rustup, to rebuild multirust on top of rustup. After that rustup should be able to do things multirust can like checking for updates without reinstalling, and verifying sigs.


#6

Just noting here, rustup.sh now has a similar functionality of saving things as multirust does.

If you run rustup.sh with ./rustup.sh --save, it will save the downloaded tar, and it just uses the existing tar instead of downloading a new one if you’re still on the same nightly. There isn’t really a need to use multirust for this unless you’re dealing with many different rust versions.


#7

@daboross thanks for the tip!