1. 12 4月, 2016 1 次提交
    • A
      rustbuild: Migrate tidy checks to Rust · 9dd3c54a
      Alex Crichton 提交于
      This commit rewrites all of the tidy checks we have, namely:
      
      * featureck
      * errorck
      * tidy
      * binaries
      
      into Rust under a new `tidy` tool inside of the `src/tools` directory. This at
      the same time deletes all the corresponding Python tidy checks so we can be sure
      to only have one source of truth for all the tidy checks.
      
      cc #31590
      9dd3c54a
  2. 08 4月, 2016 1 次提交
  3. 07 4月, 2016 1 次提交
    • A
      rustbuild: Support cross rust-docs packages · d78063dd
      Alex Crichton 提交于
      Right now if you configure multiple hosts rustbuild will only build
      documentation for the build triple, but we've got all the support necessary to
      build documentation for different architectures as well. This commit
      reinterprets the `target` field of doc `Step` instances to be the target of the
      documentation rather than the target of the rustdoc/tool being run.
      
      This should enable `make dist` to start producing a bunch of `rust-docs`
      packages for all the cross architectures that rustbuild is producing now.
      d78063dd
  4. 02 4月, 2016 1 次提交
    • A
      rustbuild: Fix dist for non-host targets · 3d6340ff
      Alex Crichton 提交于
      The `rust-std` package that we produce is expected to have not only the standard
      library but also libtest for compiling unit tests. Unfortunately this does not
      currently happen due to the way rustbuild is structured.
      
      There are currently two main stages of compilation in rustbuild, one for the
      standard library and one for the compiler. This is primarily done to allow us to
      fill in the sysroot right after the standard library has finished compiling to
      continue compiling the rest of the crates. Consequently the entire compiler does
      not have to explicitly depend on the standard library, and this also should
      allow us to pull in crates.io dependencies into the build in the future because
      they'll just naturally build against the std we just produced.
      
      These phases, however, do not represent a cross-compiled build. Target-only
      builds also require libtest, and libtest is currently part of the
      all-encompassing "compiler build". There's unfortunately no way to learn about
      just libtest and its dependencies (in a great and robust fashion) so to ensure
      that we can copy the right artifacts over this commit introduces a new build
      step, libtest.
      
      The new libtest build step has documentation, dist, and link steps as std/rustc
      already do. The compiler now depends on libtest instead of libstd, and all
      compiler crates can now assume that test and its dependencies are implicitly
      part of the sysroot (hence explicit dependencies being removed). This makes the
      build a tad less parallel as in theory many rustc crates can be compiled in
      parallel with libtest, but this likely isn't where we really need parallelism
      either (all the time is still spent in the compiler).
      
      All in all this allows the `dist-std` step to depend on both libstd and libtest,
      so `rust-std` packages produced by rustbuild should start having both the
      standard library and libtest.
      
      Closes #32523
      3d6340ff
  5. 23 3月, 2016 1 次提交
    • B
      Introduce 'cargotest' and the check-cargotest buildstep · 3a790acf
      Brian Anderson 提交于
      This is a new suite of tests that verifies that the compiler
      builds specific revisions of select crates from crates.io.
      
      It does not run by default. It is intended that buildbot
      runs these tests against all PRs, and gate on them.
      3a790acf
  6. 17 3月, 2016 1 次提交
    • A
      rustbuild: Implement `make dist` · 6cc06b36
      Alex Crichton 提交于
      This commit implements the `make dist` command in the new rustbuild build
      system, porting over `dist.mk` and `prepare.mk` into Rust. There's a huge amount
      of complexity between those two files, not all of which is likely justified, so
      the Rust implementation is *much* smaller.
      
      Currently the implementation still shells out to rust-installer as well as some
      python scripts, but ideally we'd rewrite it all in the future to not shell out
      and be in Rust proper.
      6cc06b36
  7. 15 3月, 2016 1 次提交
    • A
      rustbuild: Refactor stage arguments away · 8cd1c17d
      Alex Crichton 提交于
      The facet of a stage is rarely relevant when running a tool or building
      something, it's all a question of what stage the *compiler* is built in. We've
      already got a nice handy `Compiler` structure to carry this information, so
      let's use it!
      
      This refactors the signature of the `Build::cargo` function two ways:
      
      1. The `stage` argument is removed, this was just duplicated with the `compiler`
         argument's stage field.
      2. The `target` argument is now required. This was a bug where if the `--target`
         flag isn't passed then the snapshot stage0 compiler is always used, so we
         won't pick up any changes.
      
      Much of the other changes in this commit are just propagating these decisions
      outwards. For example many of the `Step` variants no longer have a stage
      argument as they're baked into the compiler.
      8cd1c17d
  8. 09 3月, 2016 5 次提交
  9. 08 3月, 2016 1 次提交
  10. 29 2月, 2016 6 次提交
    • A
      rustbuild: Relax assertions about stage0 · 93a9ab1a
      Alex Crichton 提交于
      This allows bootstrapping new platforms immediately in stage0
      93a9ab1a
    • A
      rustbuild: Add steps for linking a sysroot · e9a897c1
      Alex Crichton 提交于
      When cross compiling for a new host, we can't actually run the host compiler to
      generate its own libs. In theory, however, all stage2 compilers (for any host)
      will produce the same libraries, so we just require the build compiler to
      produce the necessary host libraries and then we link those into place.
      e9a897c1
    • A
      rustbuild: Document what steps are · 06773878
      Alex Crichton 提交于
      06773878
    • A
      rustbuild: Compile with the build compiler · 5abcc78f
      Alex Crichton 提交于
      This switches the defaults to ensure that everything is built with the build
      compiler rather than the host compiler itself (which we're not guaranteed to be
      able to run)
      5abcc78f
    • A
      rustbuild: Fix a copy/paste error · 189827bd
      Alex Crichton 提交于
      Fixes `--step librustc`
      189827bd
    • A
      rustbuild: Enable bootstrapping new hosts · 90d28ec3
      Alex Crichton 提交于
      This commit fixes a longstanding issue with the makefiles where all host
      platforms bootstrap themselves. This commit alters the build logic for the
      bootstrap to instead only bootstrap the build triple, and all other compilers
      are compiled from that one compiler.
      
      The benefit of this change is that we can cross-compile compilers which cannot
      run on the build platform. For example our builders could start creating
      `arm-unknown-linux-gnueabihf` compilers.
      
      This reduces the amount of bootstrapping we do, reducing the amount of test
      coverage, but overall it should largely just end in faster build times for
      multi-host compiles as well as enabling a feature which can't be done today.
      
      cc #5258
      90d28ec3
  11. 17 2月, 2016 1 次提交
    • A
      rustbuild: Add rustbook/standalone doc support · 848e7855
      Alex Crichton 提交于
      This commit implements documentation generation of the nomicon, the book, the
      style guide, and the standalone docs. New steps were added for each one as well
      as appropriate makefile targets for each one as well.
      848e7855
  12. 12 2月, 2016 1 次提交
    • A
      Add a Cargo-based build system · 046e6874
      Alex Crichton 提交于
      This commit is the start of a series of commits which start to replace the
      makefiles with a Cargo-based build system. The aim is not to remove the
      makefiles entirely just yet but rather just replace the portions that invoke the
      compiler to do the bootstrap. This commit specifically adds enough support to
      perform the bootstrap (and all the cross compilation within) along with
      generating documentation.
      
      More commits will follow up in this series to actually wire up the makefiles to
      call this build system, so stay tuned!
      046e6874