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

Remove ENABLE_DOWNLOAD_RUSTC constant #82480

Merged
merged 1 commit into from
Mar 1, 2021

Commits on Feb 24, 2021

  1. Remove ENABLE_DOWNLOAD_RUSTC constant

    This was introduced as part of the MVP for `download-rustc`.
    Unfortunately, it doesn't work very well:
    
    - Steps are ignored by default, which makes it easy to leave out a step
    that should be built. For example, the MVP forgot to enable any tests,
    so it was *only* possible to build locally.
    - It didn't work correctly even when it was enabled: calling
      `builder.ensure()` would completely ignore the constant and rebuild the
      step anyway. This has no obvious fix since `ensure()` has to return a
      `Step::Output`.
    
    Instead, this handles `download-rustc` in `impl Step for Rustc` and
    `impl Step for Std`, which to my knowledge are the only build steps that
    don't first go through `impl Step for Sysroot` (`Rustc` is used for
    the `rustc-dev` component).
    
    See rust-lang#79540 (comment)
    and rust-lang#81930 for further context.
    
    Here are some example runs with these changes and `download-rustc`
    enabled:
    
    ```
    $ x.py build src/tools/clippy
    Building stage1 tool clippy-driver (x86_64-unknown-linux-gnu)
        Finished release [optimized] target(s) in 1m 09s
    Building stage1 tool cargo-clippy (x86_64-unknown-linux-gnu)
        Finished release [optimized] target(s) in 0.11s
    $ x.py test src/tools/clippy
    Updating only changed submodules
    Submodules updated in 0.01 seconds
        Finished dev [unoptimized + debuginfo] target(s) in 0.09s
    Building stage1 tool clippy-driver (x86_64-unknown-linux-gnu)
        Finished release [optimized] target(s) in 0.09s
    Building rustdoc for stage1 (x86_64-unknown-linux-gnu)
        Finished release [optimized] target(s) in 0.28s
        Finished release [optimized] target(s) in 15.26s
         Running build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/release/deps/clippy_driver-8b407b140e0aa91c
    test result: ok. 592 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out
    $ x.py build src/tools/rustdoc
    Building rustdoc for stage1 (x86_64-unknown-linux-gnu)
        Finished release [optimized] target(s) in 41.28s
    Build completed successfully in 0:00:41
    $ x.py test src/test/rustdoc-ui
    Building stage0 tool compiletest (x86_64-unknown-linux-gnu)
        Finished release [optimized] target(s) in 0.12s
    Building rustdoc for stage1 (x86_64-unknown-linux-gnu)
        Finished release [optimized] target(s) in 0.10s
    test result: ok. 105 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.15s
    $ x.py build compiler/rustc
        Finished dev [unoptimized + debuginfo] target(s) in 0.09s
    Build completed successfully in 0:00:00
    ```
    
    Note a few things:
    
    - Clippy depends on stage1 rustc-dev artifacts, but rustc didn't have to
      be recompiled. Instead, the artifacts were copied automatically.
    - All steps are always enabled. There is no danger of forgetting a step,
      since only the entrypoints have to handle `download-rustc`.
    - Building the compiler (`compiler/rustc`) automatically does no work.
    jyn514 committed Feb 24, 2021
    Configuration menu
    Copy the full SHA
    8fb272c View commit details
    Browse the repository at this point in the history