-
Notifications
You must be signed in to change notification settings - Fork 12.9k
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
rustbuild: Add support for compiling Cargo #39917
Conversation
r? @brson (rust_highfive has picked a reviewer for you, use r? to override) |
684305c
to
becb091
Compare
☔ The latest upstream changes (presumably #39966) made this pull request unmergeable. Please resolve the merge conflicts. |
becb091
to
3120181
Compare
@@ -1,5 +1,5 @@ | |||
[package] | |||
name = "cargotest" | |||
name = "cargotest2" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why is this renamed?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh this conflicted with the cargotest
package in Cargo itself, so I figured it'd be easiest to rename this here
@bors r+ All the openssl logic in bootstrap is 😢 |
📌 Commit 3120181 has been approved by |
3120181
to
ed2f0d6
Compare
@bors: r=brson |
📌 Commit ed2f0d6 has been approved by |
FWIW rust-openssl may get support soon for building OpenSSL given a source tarball, so we could at least do away with all the grungy build logic. |
src/bootstrap/native.rs
Outdated
}; | ||
|
||
configure.arg(format!("--prefix={}", dst.display())); | ||
configure.arg("no-dso"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Might be worth adding no-ssl2 no-ssl3 no-comp
additionally just to be safe.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
ed2f0d6
to
b8fc75f
Compare
@bors: r=brson |
📌 Commit b8fc75f has been approved by |
b8fc75f
to
28ea763
Compare
@bors: r=brson |
📌 Commit 28ea763 has been approved by |
☔ The latest upstream changes (presumably #39851) made this pull request unmergeable. Please resolve the merge conflicts. |
🔒 Merge conflict |
28ea763
to
be5cb13
Compare
@bors: r=brson |
📌 Commit be5cb13 has been approved by |
⌛ Testing commit be5cb13 with merge 9d6ed79... |
💔 Test failed - status-travis |
be5cb13
to
985be4f
Compare
@bors: r=brson |
This commit adds support to rustbuild for compiling Cargo as part of the release process. Previously rustbuild would simply download a Cargo snapshot and repackage it. With this change we should be able to turn off artifacts from the rust-lang/cargo repository and purely rely on the artifacts Cargo produces here. The infrastructure added here is intended to be extensible to other components, such as the RLS. It won't exactly be a one-line addition, but the addition of Cargo didn't require too much hooplah anyway. The process for release Cargo will now look like: * The rust-lang/rust repository has a Cargo submodule which is used to build a Cargo to pair with the rust-lang/rust release * Periodically we'll update the cargo submodule as necessary on rust-lang/rust's master branch * When branching beta we'll create a new branch of Cargo (as we do today), and the first commit to the beta branch will be to update the Cargo submodule to this exact revision. * When branching stable, we'll ensure that the Cargo submodule is updated and then make a stable release. Backports to Cargo will look like: * Send a PR to cargo's master branch * Send a PR to cargo's release branch (e.g. rust-1.16.0) * Send a PR to rust-lang/rust's beta branch updating the submodule * Eventually send a PR to rust-lang/rust's master branch updating the submodule For reference, the process to add a new component to the rust-lang/rust release would look like: * Add `$foo` as a submodule in `src/tools` * Add a `tool-$foo` step which compiles `$foo` with the specified compiler, likely mirroring what Cargo does. * Add a `dist-$foo` step which uses `src/tools/$foo` and the `tool-$foo` output to create a rust-installer package for `$foo` likely mirroring what Cargo does. * Update the `dist-extended` step with a new dependency on `dist-$foo` * Update `src/tools/build-manifest` for the new component.
77fb172
to
44a01b8
Compare
📌 Commit 44a01b8 has been approved by |
⌛ Testing commit 44a01b8 with merge 7d2bdb0... |
💔 Test failed - status-travis |
@bors: retry
|
⌛ Testing commit 44a01b8 with merge 4e0cfbd... |
💔 Test failed - status-travis |
… On Fri, Mar 3, 2017 at 2:26 PM, bors ***@***.***> wrote:
💔 Test failed - status-travis
<https://travis-ci.org/rust-lang/rust/builds/207483714>
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#39917 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AAD95H4aP8toucGp1Kc1sDhv-Q26LriKks5riHdjgaJpZM4MEzbk>
.
|
rustbuild: Add support for compiling Cargo This commit adds support to rustbuild for compiling Cargo as part of the release process. Previously rustbuild would simply download a Cargo snapshot and repackage it. With this change we should be able to turn off artifacts from the rust-lang/cargo repository and purely rely on the artifacts Cargo produces here. The infrastructure added here is intended to be extensible to other components, such as the RLS. It won't exactly be a one-line addition, but the addition of Cargo didn't require too much hooplah anyway. The process for release Cargo will now look like: * The rust-lang/rust repository has a Cargo submodule which is used to build a Cargo to pair with the rust-lang/rust release * Periodically we'll update the cargo submodule as necessary on rust-lang/rust's master branch * When branching beta we'll create a new branch of Cargo (as we do today), and the first commit to the beta branch will be to update the Cargo submodule to this exact revision. * When branching stable, we'll ensure that the Cargo submodule is updated and then make a stable release. Backports to Cargo will look like: * Send a PR to cargo's master branch * Send a PR to cargo's release branch (e.g. rust-1.16.0) * Send a PR to rust-lang/rust's beta branch updating the submodule * Eventually send a PR to rust-lang/rust's master branch updating the submodule For reference, the process to add a new component to the rust-lang/rust release would look like: * Add `$foo` as a submodule in `src/tools` * Add a `tool-$foo` step which compiles `$foo` with the specified compiler, likely mirroring what Cargo does. * Add a `dist-$foo` step which uses `src/tools/$foo` and the `tool-$foo` output to create a rust-installer package for `$foo` likely mirroring what Cargo does. * Update the `dist-extended` step with a new dependency on `dist-$foo` * Update `src/tools/build-manifest` for the new component.
☀️ Test successful - status-appveyor, status-travis |
@alexcrichton after pulling this change, I can no longer build:
Is there another step I'm unaware of? |
Ah yup that'd do it. Cargo's a submodule. We'll have to move submodule updates sooner in the process or warn about it. You can fix this with:
|
Should that perhaps be posted in a more visible location (e.g., internals)? I suspect pretty much all developers working on rustc will run into it. |
I think everyone is playing that new Zelda game today 😉 More seriously, I just assumed that it would be fixed soon enough that not many people would run into it. I'm also a bit surprised that the build machines didn't have any issues. I guess there's differences between what a human does and the autobuilds? |
I've sent a PR to fix the issue @shepmaster ran into. Sorry for the breakage! Also yeah the auto builds explicitly update submodules for... reasons. So that's why they didn't run into this. |
This commit adds support to rustbuild for compiling Cargo as part of the release
process. Previously rustbuild would simply download a Cargo snapshot and
repackage it. With this change we should be able to turn off artifacts from the
rust-lang/cargo repository and purely rely on the artifacts Cargo produces here.
The infrastructure added here is intended to be extensible to other components,
such as the RLS. It won't exactly be a one-line addition, but the addition of
Cargo didn't require too much hooplah anyway.
The process for release Cargo will now look like:
Cargo to pair with the rust-lang/rust release
master branch
the first commit to the beta branch will be to update the Cargo submodule to
this exact revision.
then make a stable release.
Backports to Cargo will look like:
For reference, the process to add a new component to the rust-lang/rust release
would look like:
$foo
as a submodule insrc/tools
tool-$foo
step which compiles$foo
with the specified compiler,likely mirroring what Cargo does.
dist-$foo
step which usessrc/tools/$foo
and thetool-$foo
outputto create a rust-installer package for
$foo
likely mirroring what Cargodoes.
dist-extended
step with a new dependency ondist-$foo
src/tools/build-manifest
for the new component.