rust-lang/rust

Build rust with rustpkg

brson opened this issue · 15 comments

As discussed in this week's meeting, let's rewrite our build system in Rust.

We made a good effort but the current Makefile-based system has collapsed into a black hole of endless macros and meta-programming. The first thing the build does is download a copy of rustc, so let's just use that to orchestrate the rest of the build.

This could make bootstrapping new architectures even more interesting, but we like to be on the bleeding edge.

FWIW, I don't think it changes much for building on new architectures. Most of the build is still building rustc itself. To run our tests, we need to build the compiletest framework, which is in Rust. So, essentially, when doing the 64-bit port at least, I spent 75% of the time just getting rustc to build. it'll be the same on other architectures, I imagine.

My main hesitation on this is that we'll wind up snapshotting a lot more: any time we enhance the builder or fix a bug in it. Maybe we should track builder snapshots separately? The whole toolchain is not small.

(for that matter, tracking llvm snapshots separately from rustc might also be reasonable. Hm. Why aren't we just storing stage0 binaries in git?)

I don't think we need to snapshot the builder. The build shell script will use the stage0 rustc to build the builder, then the builder takes over.

I milestoned this as 1.0, but let me know if you think that's too ambitious :-)

Ok, so we need to keep enough shell-and-make around to accomplish the download and compile-the-builder steps. Possible, yeah.

(I am still curious about whether it'd be reasonable to just store stage0 binaries in git. I'm not sure why we didn't do that in the first place.)

See also #2238. These tasks are, I think, related. Also both mine! so I will merge the bugs at my own leisure :)

@graydon we didn't do it by personal preference. I thought it was nice to bootstrap off the smallest possible set of files. I don't particularly agree with that decision any more.

non-critical for 0.6, de-milestoning

nominating for backwards-compatible milestone

Re-titled to reflect that this is about making rustpkg build Rust, and re-assigning to myself.

We don't have an 0.8 milestone, but I'd like this to happen for 0.8.

(I make a tour of easy/interresting bug) And It seems this bug was resolved by design by dropping rustpkg no?

I think not since rust will have a package manager and we will want to dogfood it.

reem commented

This issue has long since passed its relevance and should be replaced with an issue to build with cargo, if that's feasible.

I've opened a more specific issue for cargo: #16091