-
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
mk: Switch rustbuild to the default build system #37817
Conversation
r? @aturon (rust_highfive has picked a reviewer for you, use r? to override) |
r? @brson Note that this shouldn't be r+'d yet as I'd like to wait for appveyor/Travis to go green (trying to run all the builders there). Also if there's any more requests for documentation anywhere, I'd be more than happy to oblige! |
To learn more about the driver and top-level targets, you can execute: | ||
|
||
```sh | ||
python x.py --help |
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.
I run x.py --help
and it starts downloading something big from the internet instead of showing help.
I don't think this is an appropriate behavior.
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.
Tracked here: #37305
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.
Fix #37305 before merging
of the compiler. You can execute it as: | ||
|
||
```sh | ||
python x.py build |
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.
Is bootstrap python3
-compatible, btw? In case python
defaults to 3. This is probably worth mentioning.
(Or build fails in some other way if python == python3
, but python2
is still available? I don't remember exactly.)
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.
Yes all the Python code in Rust repo is Py3k-compatible AFAIK, which is not so much btw. The whole Python 2-only thing in README is outdated actually.
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.
Last I heard, Python 2 was only necessary for LLVM.
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.
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.
AFAIK bootstrap.py is fully compatible, and then later version detection happens in rustbuild itself.
warn "the makefile-based build system is deprecated in favor of rustbuild" | ||
msg "" | ||
msg "It is recommended you avoid passing --disable-rustbuild to get your" | ||
msg "build working as the makefiles will be deleted on 2016-01-02. If you" |
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.
Sorry for a silly question, but is the date in standard format (2 January) or in Freedom Units (1 February)?.
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.
I just commented on the internals thread -- I think it should actually be February 2nd.
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.
In any case, the year is wrong. (In the PR description, too)
//! to execute each in sequence. Each time rustbuild is invoked, it will simply | ||
//! iterate through this list of steps and execute each serially in turn. | ||
//! Rustbuild relies in each step internally being incremental and also | ||
//! internally parallelizing. |
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.
Could you document explicit parallelizing with -jN
somewhere as well?
bd5bab4
to
6b11d6a
Compare
warn "the makefile-based build system is deprecated in favor of rustbuild" | ||
msg "" | ||
msg "It is recommended you avoid passing --disable-rustbuild to get your" | ||
msg "build working as the makefiles will be deleted on 2016-02-02. If you" |
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.
*2017
python x.py build | ||
``` | ||
|
||
If you're on a Unix-based system, you can also use the shorter version: |
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.
Technically you can also use a different short version on Windows if you have .py
files associated with Python. x.py build
in cmd
and .\x.py build
in powershell
.
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.
And MSYS2 is just "Unix-based" enough to see the shebang :D
|
||
```sh | ||
$ ./configure | ||
$ make && make install | ||
$ python x.py build |
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.
This prompt is supposed to be cmd.exe
according to the above paragraph, so using $
is incorrect here.
questions on the build system internals, try asking in | ||
[`#rust-internals`][pound-rust-internals]. | ||
The build system lives in [the `src/bootstrap` directory][bootstrap] in the | ||
project root. Our build system its itself written in Rust and is based on Cargo |
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.
*is itself
//! | ||
//! ## Architecture | ||
//! | ||
//! Although this build system defers most of the compilcated logic to Cargo |
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.
*complicated
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.
tho it is also pretty compile-cated
// That logic is all defined in the `native` module so we just delegate to | ||
// the relevant function there. The argument to the closure passed to `run` | ||
// is a `Step` (defined below) which encapsulates information like the | ||
// stage, host, target, etc. |
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.
*compiled (I guess) line 77
//! | ||
//! Although this build system defers most of the compilcated logic to Cargo | ||
//! itself, it still needs to maintain a list of targets and dependencies which | ||
//! it can itself perform. Rustbuild is comprised of of a list of rules with |
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.
*perform on. Rustbuild is made up of
Just a suggestion 'of of' reads a bit difficult
//! to execute each in sequence. Each time rustbuild is invoked, it will simply | ||
//! iterate through this list of steps and execute each serially in turn. | ||
//! Rustbuild relies in each step internally being incremental and also | ||
//! internally parallelizing. |
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.
*For each step Rustbuild relies on the step to be internally incremental and also to be internally parallelizing.
8204cb4
to
b92e513
Compare
@petrochenkov can you elaborate on why you think #37305 is a blocker for landing this PR? I unfortunately don't see any path forward to solving it, so any opinions on how to solve it would also be greatly appreciated! |
b92e513
to
b781dec
Compare
d5bfc7c
to
3a66312
Compare
76f9e9e
to
4755f95
Compare
@bors: r=brson |
📌 Commit 4755f95 has been approved by |
⌛ Testing commit 4755f95 with merge 0ae2037... |
💔 Test failed - auto-linux-64-x-android-t |
☔ The latest upstream changes (presumably #38100) made this pull request unmergeable. Please resolve the merge conflicts. |
4755f95
to
fd183a2
Compare
This commit switches the default build system for Rust from the makefiles to rustbuild. The rustbuild build system has been in development for almost a year now and has become quite mature over time. This commit is an implementation of the proposal on [internals] which slates deletion of the makefiles on 2016-01-02. [internals]: https://internals.rust-lang.org/t/proposal-for-promoting-rustbuild-to-official-status/4368 This commit also updates various documentation in `README.md`, `CONTRIBUTING.md`, `src/bootstrap/README.md`, and throughout the source code of rustbuild itself. Closes rust-lang#37858
fd183a2
to
0e272de
Compare
@bors: r=brson |
📌 Commit 0e272de has been approved by |
mk: Switch rustbuild to the default build system This commit switches the default build system for Rust from the makefiles to rustbuild. The rustbuild build system has been in development for almost a year now and has become quite mature over time. This commit is an implementation of the proposal on [internals] which slates deletion of the makefiles on 2017-02-02. [internals]: https://internals.rust-lang.org/t/proposal-for-promoting-rustbuild-to-official-status/4368 This commit also updates various documentation in `README.md`, `CONTRIBUTING.md`, `src/bootstrap/README.md`, and throughout the source code of rustbuild itself.
It looks like Travis started failing everything after this pull request merged. |
…rson Delete the makefile build system This PR deletes the makefile build system in favor of the rustbuild build system. The beta has now been branched so 1.16 will continue to be buildable from the makefiles, but going forward 1.17 will only be buildable with rustbuild. Rustbuild has been the default build system [since 1.15.0](rust-lang#37817) and the makefiles were [proposed for deletion](https://internals.rust-lang.org/t/proposal-for-promoting-rustbuild-to-official-status/4368) at this time back in November of last year. And now with the deletion of these makefiles we can start getting those sweet sweet improvements of using crates.io crates in the compiler!
Delete the makefile build system This PR deletes the makefile build system in favor of the rustbuild build system. The beta has now been branched so 1.16 will continue to be buildable from the makefiles, but going forward 1.17 will only be buildable with rustbuild. Rustbuild has been the default build system [since 1.15.0](#37817) and the makefiles were [proposed for deletion](https://internals.rust-lang.org/t/proposal-for-promoting-rustbuild-to-official-status/4368) at this time back in November of last year. And now with the deletion of these makefiles we can start getting those sweet sweet improvements of using crates.io crates in the compiler!
…rson Delete the makefile build system This PR deletes the makefile build system in favor of the rustbuild build system. The beta has now been branched so 1.16 will continue to be buildable from the makefiles, but going forward 1.17 will only be buildable with rustbuild. Rustbuild has been the default build system [since 1.15.0](rust-lang#37817) and the makefiles were [proposed for deletion](https://internals.rust-lang.org/t/proposal-for-promoting-rustbuild-to-official-status/4368) at this time back in November of last year. And now with the deletion of these makefiles we can start getting those sweet sweet improvements of using crates.io crates in the compiler!
…rson Delete the makefile build system This PR deletes the makefile build system in favor of the rustbuild build system. The beta has now been branched so 1.16 will continue to be buildable from the makefiles, but going forward 1.17 will only be buildable with rustbuild. Rustbuild has been the default build system [since 1.15.0](rust-lang#37817) and the makefiles were [proposed for deletion](https://internals.rust-lang.org/t/proposal-for-promoting-rustbuild-to-official-status/4368) at this time back in November of last year. And now with the deletion of these makefiles we can start getting those sweet sweet improvements of using crates.io crates in the compiler!
…rson Delete the makefile build system This PR deletes the makefile build system in favor of the rustbuild build system. The beta has now been branched so 1.16 will continue to be buildable from the makefiles, but going forward 1.17 will only be buildable with rustbuild. Rustbuild has been the default build system [since 1.15.0](rust-lang#37817) and the makefiles were [proposed for deletion](https://internals.rust-lang.org/t/proposal-for-promoting-rustbuild-to-official-status/4368) at this time back in November of last year. And now with the deletion of these makefiles we can start getting those sweet sweet improvements of using crates.io crates in the compiler!
Delete the makefile build system This PR deletes the makefile build system in favor of the rustbuild build system. The beta has now been branched so 1.16 will continue to be buildable from the makefiles, but going forward 1.17 will only be buildable with rustbuild. Rustbuild has been the default build system [since 1.15.0](rust-lang/rust#37817) and the makefiles were [proposed for deletion](https://internals.rust-lang.org/t/proposal-for-promoting-rustbuild-to-official-status/4368) at this time back in November of last year. And now with the deletion of these makefiles we can start getting those sweet sweet improvements of using crates.io crates in the compiler!
Delete the makefile build system This PR deletes the makefile build system in favor of the rustbuild build system. The beta has now been branched so 1.16 will continue to be buildable from the makefiles, but going forward 1.17 will only be buildable with rustbuild. Rustbuild has been the default build system [since 1.15.0](rust-lang/rust#37817) and the makefiles were [proposed for deletion](https://internals.rust-lang.org/t/proposal-for-promoting-rustbuild-to-official-status/4368) at this time back in November of last year. And now with the deletion of these makefiles we can start getting those sweet sweet improvements of using crates.io crates in the compiler!
This commit switches the default build system for Rust from the makefiles to
rustbuild. The rustbuild build system has been in development for almost a year
now and has become quite mature over time. This commit is an implementation of
the proposal on internals which slates deletion of the makefiles on
2017-02-02.
This commit also updates various documentation in
README.md
,CONTRIBUTING.md
,src/bootstrap/README.md
, and throughout the source code ofrustbuild itself.