-
Notifications
You must be signed in to change notification settings - Fork 13k
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
Figure out combined Rust+Cargo installation #16456
Comments
to properly categorize this bug, we need to decide whether cargo is a 1.0-blocking feature. deferring for a later triage with @alexcrichton present (and hopefully then we can decide about categorizing cargo) |
Given that it's the foundation of the new Guide, I would argue that it is. (Or that the guide then needs changed) |
I don't see any reason not to consider it a blocker. Cargo largely works already, and the remaining work item, the registry, is well under way. |
P-high, 1.0 milestone. |
So... can we add it as a submodule? |
@vadimcn My inclination right now is to create an entirely new repository for the purposes of packaging Rust, moving out much of existing dist logic. @alexcrichton likes the idea of having both the Rust and Cargo repos just produce a simple tarball, then having another project that takes them and combines them into platform-specific installers. |
Here's my current plan: general setup
windows installer
unix installer
potential improvements
OS X package
automation
@alexcrichton What you think? |
Sounds great!
|
Let me clarify that at the end of this the current Rust dist builders will not exist and the combined dist builder will create and upload both the Rust and combined artifacts (and also Cargo - see first point).
|
It feels somewhat odd to me that the combined builder would build rust from source as opposed to downloading the artifact as produced by someone else. I thought we were going to handle the scheduling with #14431 (comment) and just run this script every hour or so, and 23/24 runs a day would do nothing. |
That being said, I'm also fine if it builds rust from source |
@alexcrichton my intention was to run a periodic cron job to promote the artifacts from the staging directory to the distribution directory on s3. My concern with doing the same thing with buildbot was that something has to trigger buildbot to do the build based on the status of the dist directory. We could have that cron job do multiple things, both promote from staging to dist, and kick off the combined build, though I kind of would prefer not to do that, keeping the bits of automation separate. If we do have that script start the combined build then we need some way to trigger buildbot, which i don't know how to do offhand, but is surely possible. If we really wanted to we could probably do this and #14431 (comment) not as a cron job but as part of the buildbot script, running in response to successful dist builds, though of course I'm loath to pack more functionality into our script. I'm somewhat worried about the possibility of race conditions causing commit mismatches across the variety of platforms we support, particularly with cargo. I've read mention of locks in buildbot, so we may be able to just throw in a big lock that protects the combined builds from the individual builds. |
@alexcrichton we don't particularly need to do the staging->dist commit-id tracking on s3, but can do it locally on the build master. we don't even need to upload to a staging directory, everything can be retained locally until the final build is complete. Not sure if that's better or worse: with the uploaded staging artifacts at least you have the option of downloading them before the full set is built. |
Tracking things locally instead of on S3 seems fine, certainly easier for the time being. We may have more freedom of directory structure there in order to prevent things from going awry as well. I'm basically fine with whatever's simplest right now, we could always time things to weed out most race conditions with the possibility of making it "rock solid" in the future. |
OK, here's the plan as I see it currently, though details are still vague to me. I am still maintaining the premise that the cargo and rust builds should remain entirely separate. The reasons for this are pretty squishy, I admit: the current independent development model is working well; both builds are very complex and self-hosting, so combining them doubly-so; cargo and rust won't necessarily always support the same platforms, so it may continue to be desirable to produce rustc installers independently.
At that point we can create a
|
Need to start thinking about a future in which we support multiple simultaneous installs. |
This is just a refactoring of the current installer so that Rust and Cargo use the same codebase. cc rust-lang#16456
I've made a lot of progress on this and rust-installer can merge two installers now. I still need to use it to create the combined installer project and then upgrade rust and cargo to use it, adjust automation, move the os x and win installers. |
This is just a refactoring of the current installer so that Rust and Cargo use the same codebase. cc rust-lang#16456
This is just a refactoring of the current installer so that Rust and Cargo use the same codebase. cc rust-lang#16456
This is just a refactoring of the current installer so that Rust and Cargo use the same codebase. cc rust-lang#16456
Done. |
…r=Veykril internal: `tracing` improvements and followups Hi folks! Building on rust-lang/rust-analyzer#16394, I've got a few small tweaks: - Removed the accidental `mod.rs` usage that I introduced. - Removed a panic in `pat_analysis.rs`. - Recorded the event kind in `handle_event` to better distinguish what _kind_ of event is being handled. - Did a small refactor of `hprof` to have somewhat more linear control flow, and more importantly, write the recorded fields to the output. The end result is the following: <img width="1530" alt="A screenshot of Visual Studio Code on a Mac. `hprof.rs` is open, with " src="https://github.com/rust-lang/rust-analyzer/assets/2067774/bd11dde5-b2da-4774-bc38-bcb4772d1192">
On Unix, the rustup.sh script will install both Rust+Cargo (though that may not end up the official installation mechanism). On Windows, acquiring Cargo is not so convenient.
The obvious thing to do on Windows is to put them both in the same installer, but since Cargo and Rust live in different repos (and should continue to do so for the foreseeable future imo) creating that installer will require some work.
Nominating.
The text was updated successfully, but these errors were encountered: