Skip to content
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

Merged
merged 1 commit into from Dec 7, 2016

Conversation

@alexcrichton
Copy link
Member

@alexcrichton alexcrichton commented Nov 16, 2016

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 of
rustbuild itself.

@rust-highfive
Copy link
Collaborator

@rust-highfive rust-highfive commented Nov 16, 2016

r? @aturon

(rust_highfive has picked a reviewer for you, use r? to override)

@alexcrichton
Copy link
Member Author

@alexcrichton alexcrichton commented Nov 16, 2016

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!

@rust-highfive rust-highfive assigned brson and unassigned aturon Nov 16, 2016
To learn more about the driver and top-level targets, you can execute:

```sh
python x.py --help

This comment has been minimized.

@petrochenkov

petrochenkov Nov 16, 2016
Contributor

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.

This comment has been minimized.

@badboy

badboy Nov 17, 2016
Member

Tracked here: #37305

Copy link
Contributor

@petrochenkov petrochenkov left a comment

Fix #37305 before merging

of the compiler. You can execute it as:

```sh
python x.py build

This comment has been minimized.

@petrochenkov

petrochenkov Nov 17, 2016
Contributor

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.)

This comment has been minimized.

@xen0n

xen0n Nov 17, 2016
Contributor

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.

This comment has been minimized.

@retep998

retep998 Nov 17, 2016
Member

Last I heard, Python 2 was only necessary for LLVM.

This comment has been minimized.

@xen0n

xen0n Nov 17, 2016
Contributor

@retep998 Yeah you're right, there is this which means precisely Python 2.7.x is required, but rustbuild itself isn't limited to that. Which means compilation will only fail on systems with no Python 2.x at all due to LLVM, but should be fine otherwise.

This comment has been minimized.

@alexcrichton

alexcrichton Nov 17, 2016
Author Member

AFAIK bootstrap.py is fully compatible, and then later version detection happens in rustbuild itself.

configure Outdated
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"

This comment has been minimized.

@petrochenkov

petrochenkov Nov 17, 2016
Contributor

Sorry for a silly question, but is the date in standard format (2 January) or in Freedom Units (1 February)?.

This comment has been minimized.

@cuviper

cuviper Nov 17, 2016
Member

I just commented on the internals thread -- I think it should actually be February 2nd.

This comment has been minimized.

@hanna-kruppe

hanna-kruppe Nov 17, 2016
Contributor

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.

This comment has been minimized.

@petrochenkov

petrochenkov Nov 17, 2016
Contributor

Could you document explicit parallelizing with -jN somewhere as well?

@alexcrichton alexcrichton force-pushed the alexcrichton:rustbuild-default branch from bd5bab4 to 6b11d6a Nov 17, 2016
configure Outdated
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"

This comment has been minimized.

@cuviper

cuviper Nov 17, 2016
Member

*2017

python x.py build
```

If you're on a Unix-based system, you can also use the shorter version:

This comment has been minimized.

@retep998

retep998 Nov 17, 2016
Member

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.

This comment has been minimized.

@petrochenkov

petrochenkov Nov 17, 2016
Contributor

And MSYS2 is just "Unix-based" enough to see the shebang :D

README.md Outdated

```sh
$ ./configure
$ make && make install
$ python x.py build

This comment has been minimized.

@retep998

retep998 Nov 17, 2016
Member

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

This comment has been minimized.

@pitdicker

pitdicker Nov 17, 2016
Contributor

*is itself

//!
//! ## Architecture
//!
//! Although this build system defers most of the compilcated logic to Cargo

This comment has been minimized.

@pitdicker

pitdicker Nov 17, 2016
Contributor

*complicated

This comment has been minimized.

@fbstj

fbstj Nov 17, 2016
Contributor

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.

This comment has been minimized.

@pitdicker

pitdicker Nov 17, 2016
Contributor

*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

This comment has been minimized.

@pitdicker

pitdicker Nov 17, 2016
Contributor

*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.

This comment has been minimized.

@pitdicker

pitdicker Nov 17, 2016
Contributor

*For each step Rustbuild relies on the step to be internally incremental and also to be internally parallelizing.

@alexcrichton alexcrichton force-pushed the alexcrichton:rustbuild-default branch 2 times, most recently from 8204cb4 to b92e513 Nov 17, 2016
@alexcrichton
Copy link
Member Author

@alexcrichton alexcrichton commented Nov 17, 2016

@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!

@alexcrichton alexcrichton mentioned this pull request Nov 17, 2016
@alexcrichton alexcrichton force-pushed the alexcrichton:rustbuild-default branch from b92e513 to b781dec Nov 17, 2016
@alexcrichton alexcrichton force-pushed the alexcrichton:rustbuild-default branch 4 times, most recently from d5bfc7c to 3a66312 Nov 18, 2016
@alexcrichton alexcrichton force-pushed the alexcrichton:rustbuild-default branch from 76f9e9e to 4755f95 Dec 5, 2016
@alexcrichton
Copy link
Member Author

@alexcrichton alexcrichton commented Dec 5, 2016

@bors: r=brson

@bors
Copy link
Contributor

@bors bors commented Dec 5, 2016

📌 Commit 4755f95 has been approved by brson

@bors
Copy link
Contributor

@bors bors commented Dec 5, 2016

Testing commit 4755f95 with merge 0ae2037...

bors added a commit that referenced this pull request Dec 5, 2016
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.
@bors
Copy link
Contributor

@bors bors commented Dec 5, 2016

💔 Test failed - auto-linux-64-x-android-t

@bors
Copy link
Contributor

@bors bors commented Dec 5, 2016

The latest upstream changes (presumably #38100) made this pull request unmergeable. Please resolve the merge conflicts.

@alexcrichton alexcrichton force-pushed the alexcrichton:rustbuild-default branch from 4755f95 to fd183a2 Dec 7, 2016
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 #37858
@alexcrichton alexcrichton force-pushed the alexcrichton:rustbuild-default branch from fd183a2 to 0e272de Dec 7, 2016
@alexcrichton
Copy link
Member Author

@alexcrichton alexcrichton commented Dec 7, 2016

@bors: r=brson

@bors
Copy link
Contributor

@bors bors commented Dec 7, 2016

📌 Commit 0e272de has been approved by brson

@bors
Copy link
Contributor

@bors bors commented Dec 7, 2016

Testing commit 0e272de with merge 7846610...

bors added a commit that referenced this pull request Dec 7, 2016
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.
@bors bors merged commit 0e272de into rust-lang:master Dec 7, 2016
1 of 2 checks passed
1 of 2 checks passed
continuous-integration/travis-ci/pr The Travis CI build failed
Details
homu Test successful
Details
@frewsxcv
Copy link
Member

@frewsxcv frewsxcv commented Dec 8, 2016

It looks like Travis started failing everything after this pull request merged.

@alexcrichton alexcrichton deleted the alexcrichton:rustbuild-default branch Dec 19, 2016
frewsxcv added a commit to frewsxcv/rust that referenced this pull request Feb 5, 2017
…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!
bors added a commit that referenced this pull request Feb 5, 2017
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!
bors added a commit that referenced this pull request Feb 6, 2017
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!
bors added a commit that referenced this pull request Feb 6, 2017
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!
frewsxcv added a commit to frewsxcv/rust that referenced this pull request Feb 7, 2017
…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!
frewsxcv added a commit to frewsxcv/rust that referenced this pull request Feb 7, 2017
…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!
frewsxcv added a commit to frewsxcv/rust that referenced this pull request Feb 8, 2017
…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!
frewsxcv added a commit to frewsxcv/rust that referenced this pull request Feb 8, 2017
…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!
anatol pushed a commit to anatol/steed that referenced this pull request Mar 31, 2017
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!
djrenren pushed a commit to djrenren/compiletest that referenced this pull request Aug 26, 2019
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!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

You can’t perform that action at this time.