Rustbuild (All Hands 2019)
Audience
Rustbuild maintainers (Alex, Mark); Potentially anyone — but will likely be somewhat low-level
When
Tuesday, 11:00-13:00, may wind down earlier
Where
Tomato
Meeting Style
Brainstorming/Discussion led by Mark

Summary

  • Medium-term: LLVM will no longer need to be built locally (will use CI artifacts)
  • needs windows
  • Short-term: Non-rustc developers will no longer need to build rustc, LLVM
  • Short-term: Rustc developers should predominantly be building rustc once
The goal here is primarily to determine a plan for 2019 implementation/assistance for the below workflows. This is brainstorming in general.

Overall desires

  • Avoid LLVM builds
  • can likely do locally, probably don’t want to on CI
  • copy libLLVM-8.0.so from CI to local builds
  • Need to investigate dynamic libraries on Windows (currently libLLVM only built on linux)

Stage renaming

  • bootstrap compiler
Now
Compiler
Artifacts
--cfg
Compilation #1
downloaded/local
A
stage0
Compilation #2
A ( copied )
B
stage1
Compilation #3
B ( copied )
Routes:
  1. B copied
  1. C
stage2
Future
Compiler
Artifacts
--cfg
Compilation #1
downloaded/local
A
bootstrap (if previous version)
Compilation #2
A ( copied )
B
n/a
Compilation #3
B ( copied )
Routes:
  1. B copied
  1. C
n/a
x.py test --use-compiler={0,1,2}
  • 0 = bootstrap

  • No one should be passing --use-compiler in general

Workflows

Compiler development
  • Generally need std, test, but don’t want to wait to rebuild if possible
  • Want pathway from change to src/librustc* to working compiler to be as fast as possible

# can't be changing metadata, if you do, stop passing this option
# downloads CI artifacts for compiler 1
./configure --compiler-1-is-master
                                   
x.py build src/libtest
x.py test src/test/{run-pass...}