summary refs log tree commit diff
path: root/src/bootstrap/dist.rs
AgeCommit message (Collapse)AuthorLines
2018-02-11Use time crate in bootstrap dist instead of dateOnur Aslan-3/+3
2018-01-13[beta] Automaticaly calculate beta prerelease numbersAlex Crichton-1/+0
This commit automatically calculates the beta prerelease number meaning we'll no longer need to manually change the beta version. Instead beta will automatically deploy any time a backport is merged, ensuring that backports are released for testing ASAP. More details about this can be found on the internal [forums] The only bit of trickiness here was that on CI we do shallow clones by default but the git history probing here requires some more information. Do cope with that this commit chooses the strategy of converting the repository to a full clone via the `--unshallow` flag to `git`. That way this should work for local developers as well as CI changes. Note that this commit is coming first to the beta branch to test it, and if successful we can go back and land it on master. [forums]: https://internals.rust-lang.org/t/tweaking-how-betas-are-produced/6526
2017-12-27Revert "Add a file to trivially disable tool building or testing"kennytm-10/+0
This reverts commit ab018c76e14b87f3c9e0b7384cc9b02d94779cd5. This also adds the `ToolBuild::is_ext_tool` field to replace the previous `ToolBuild::expectation` field, to indicate whether a build-failure of certain tool is essential.
2017-12-17Distribute intrinsic.natvis with the compiler for windows-msvc.Antal Szabó-0/+1
2017-12-04template month/year, version into man pages while building dist tarballZack M. Davis-2/+17
This is meant to resolve #25689.
2017-11-22Always ignore build failure of failable tools (rls, rustfmt, clippy, miri).kennytm-3/+5
If build failed for these tools, they will be automatically skipped from distribution, and will not fail the whole build. Test failures are *not* ignored, nor build failure of other tools (e.g. cargo). Therefore it should have no observable effect to the current CI system. This is step 1/8 of automatic management of broken tools #45861.
2017-11-22Rollup merge of #46031 - Keruspe:cargofmt, r=Mark-Simulacrumkennytm-0/+5
rustbuild: distribute cargo-fmt alongside rustfmt Not sure whether we want that nor if it's the right way to do so, but it feels quite weird to have rustfmt without cargo-fmt. Or are there other plans wrt that? What do you think @nrc ?
2017-11-20rustbuild: fix expectation messageMarc-Antoine Perennou-1/+1
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
2017-11-19std: Add a new wasm32-unknown-unknown targetAlex Crichton-0/+5
This commit adds a new target to the compiler: wasm32-unknown-unknown. This target is a reimagining of what it looks like to generate WebAssembly code from Rust. Instead of using Emscripten which can bring with it a weighty runtime this instead is a target which uses only the LLVM backend for WebAssembly and a "custom linker" for now which will hopefully one day be direct calls to lld. Notable features of this target include: * There is zero runtime footprint. The target assumes nothing exists other than the wasm32 instruction set. * There is zero toolchain footprint beyond adding the target. No custom linker is needed, rustc contains everything. * Very small wasm modules can be generated directly from Rust code using this target. * Most of the standard library is stubbed out to return an error, but anything related to allocation works (aka `HashMap`, `Vec`, etc). * Naturally, any `#[no_std]` crate should be 100% compatible with this new target. This target is currently somewhat janky due to how linking works. The "linking" is currently unconditional whole program LTO (aka LLVM is being used as a linker). Naturally that means compiling programs is pretty slow! Eventually though this target should have a linker. This target is also intended to be quite experimental. I'm hoping that this can act as a catalyst for further experimentation in Rust with WebAssembly. Breaking changes are very likely to land to this target, so it's not recommended to rely on it in any critical capacity yet. We'll let you know when it's "production ready". --- Currently testing-wise this target is looking pretty good but isn't complete. I've got almost the entire `run-pass` test suite working with this target (lots of tests ignored, but many passing as well). The `core` test suite is still getting LLVM bugs fixed to get that working and will take some time. Relatively simple programs all seem to work though! --- It's worth nothing that you may not immediately see the "smallest possible wasm module" for the input you feed to rustc. For various reasons it's very difficult to get rid of the final "bloat" in vanilla rustc (again, a real linker should fix all this). For now what you'll have to do is: cargo install --git https://github.com/alexcrichton/wasm-gc wasm-gc foo.wasm bar.wasm And then `bar.wasm` should be the smallest we can get it! --- In any case for now I'd love feedback on this, particularly on the various integration points if you've got better ideas of how to approach them!
2017-11-16rustbuild: dist cargo-fmt as part of rustfmtMarc-Antoine Perennou-0/+5
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
2017-11-16Fix a bug where the rustfmt tarball was not being producedNick Cameron-2/+5
2017-11-13review changesNick Cameron-1/+1
2017-11-13Distribute RustfmtNick Cameron-0/+89
2017-11-08std: Remove `rand` crate and moduleAlex Crichton-1/+0
This commit removes the `rand` crate from the standard library facade as well as the `__rand` module in the standard library. Neither of these were used in any meaningful way in the standard library itself. The only need for randomness in libstd is to initialize the thread-local keys of a `HashMap`, and that unconditionally used `OsRng` defined in the standard library anyway. The cruft of the `rand` crate and the extra `rand` support in the standard library makes libstd slightly more difficult to port to new platforms, namely WebAssembly which doesn't have any randomness at all (without interfacing with JS). The purpose of this commit is to clarify and streamline randomness in libstd, focusing on how it's only required in one location, hashmap seeds. Note that the `rand` crate out of tree has almost always been a drop-in replacement for the `rand` crate in-tree, so any usage (accidental or purposeful) of the crate in-tree should switch to the `rand` crate on crates.io. This then also has the further benefit of avoiding duplication (mostly) between the two crates!
2017-10-22Remove deprecated `collections` crate.leonardo.yvens-1/+0
This reverts commit 6484258f1749499d3e51685df867b3d460a7f0be.
2017-10-20Auto merge of #44792 - Mark-Simulacrum:correct-deps, r=alexcrichtonbors-1/+3
Make sure to clear out the stageN-{rustc,std,tools} directories. We copy built tool binaries into a dedicated directory to avoid deleting them, stageN-tools-bin. These aren't ever cleared out by code, since there should be no reason to do so, and we'll simply overwrite them as necessary. When clearing out the stageN-{std,rustc,tools} directories, make sure to delete both Cargo directories -- per-target and build scripts. This ensures that changing libstd doesn't cause problems due to build scripts not being rebuilt, even though they should be. Fixes https://github.com/rust-lang/rust/issues/44739.
2017-10-19Make tools which may not build return Option.Mark Simulacrum-1/+3
This makes it mandatory for other steps to have to handle the potential failure instead of failing in an odd way later down the road.
2017-10-19rustbuild: fix dist in debug modeMarc-Antoine Perennou-1/+1
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
2017-10-16rustbuild: Allow setting rls/rustfmt to "broken"Alex Crichton-88/+108
This commit enables configuring the RLS/rustfmt tools to the "broken" state and actually get it past CI. The main changes here were to update all dist-related code to handle the situation where the RLS isn't available. This in turn involved a homegrown preprocessor-like-function to edit the configuration files we pass to the various combined installer tools.
2017-10-09cleanup: rustc doesn't use an external archiverVadim Petrochenkov-1/+1
2017-09-27Rename rls component to rls-preview on nightlyNick Cameron-13/+4
2017-09-17Prevent distribution if miri is enabledOliver Schneider-0/+25
2017-09-14Attempt to fix the component manifest problem for rls-previewNick Cameron-4/+13
cc #44270
2017-09-12Auto merge of #44413 - est31:move_man, r=nikomatsakisbors-2/+1
Move the man directory to a subdirectory There is no reason it should be in the top directory.
2017-09-11rustbuild: Fix a distribution bug with rustdocAlex Crichton-0/+1
Apparently `File::create` was called when there was an existing hard link or the like, causing an existing file to get accidentally truncated! Closes #44487
2017-09-09rustbuild: Switch back to using hard linksAlex Crichton-2/+6
The `copy` function historically in rustbuild used hard links to speed up the copy operations that it does. This logic was backed out, however, in #39518 due to a bug that only showed up on Windows, described in #39504. The cause described in #39504 happened because Cargo, on a fresh build, would overwrite the previous artifacts with new hard links that Cargo itself manages. This behavior in Cargo was fixed in rust-lang/cargo#4390 where it no longer should overwrite files on fresh builds, opportunistically leaving the filesystem intact and not touching it. Hopefully this can help speed up local builds by doing fewer copies all over the place!
2017-09-08Move the man directory to a subdirectoryest31-2/+1
There is no reason it should be in the top directory.
2017-09-06Rollup merge of #44321 - ↵Mark Simulacrum-1/+4
jakllsch:jakllsch-4f2d6c87-2674-43e4-9c5f-2415136e6bdc, r=Mark-Simulacrum bootstrap: only include docs in extended distribution if enabled Fixes #44163
2017-09-06Rollup merge of #44218 - SimonSapin:commit-hash, r=alexcrichtonMark Simulacrum-0/+9
Add full git commit hash to release channel manifests The full hash is necessary to build the download URL for "alternate" compiler builds. This is a first step for https://github.com/rust-lang-nursery/rustup.rs/issues/1099.
2017-09-04bootstrap: only include docs in extended distribution if enabledJonathan A. Kollasch-1/+4
Issue #44163
2017-09-04Only include git-commit-hash in tarballs when availableSimon Sapin-6/+9
… instead of writing an empty file.
2017-09-01Add git-commit-hash in source and extended tarballs too.Simon Sapin-0/+4
2017-08-31Add full git commit hash to release channel manifestsSimon Sapin-0/+2
The full hash is necessary to build the download URL for "alternate" compiler builds. This is a first step for https://github.com/rust-lang-nursery/rustup.rs/issues/1099
2017-08-30rustbuild: update the rust-src filter for compiler-rtJosh Stone-1/+1
We wanted `src/compiler-rt/test` filtered from the `rust-src` package, but that path is now `src/libcompiler_builtins/compiler-rt/test`. This saves over half of the installed rust-src size. (50MB -> 22MB)
2017-08-29Rollup merge of #44076 - RalfJung:src, r=alexcrichtonAriel Ben-Yehuda-0/+6
include Cargo.{toml,lock} in rust-src tarball The lock file is interesting because e.g. xargo could use it to build libstd against the same dependencies that were used for the main build. More generally speaking, just documenting in this form which exact dependencies should be used IMHO makes lots of sense. I added the Cargo.toml mostly because having the lock without the toml feels odd. Of course, the toml contains references to paths that don't actually exist in the rust-src tarball. Not sure if that is considered a problem.
2017-08-27rustbuild: Rewrite the configure script in PythonAlex Crichton-0/+1
This commit rewrites our ancient `./configure` script from shell into Python. The impetus for this change is to remove `config.mk` which is just a vestige of the old makefile build system at this point. Instead all configuration is now solely done through `config.toml`. The python script allows us to more flexibly program (aka we can use loops easily) and create a `config.toml` which is based off `config.toml.example`. This way we can preserve comments and munge various values as we see fit. It is intended that the configure script here is a drop-in replacement for the previous configure script, no functional change is intended. Also note that the rationale for this is also because our build system requires Python, so having a python script a bit earlier shouldn't cause too many problems. Closes #40730
2017-08-26Do not include the src/Cargo.tomlRalf Jung-1/+0
distcheck complains that this file references projects not cotnained in the tarball
2017-08-24include Cargo.{toml,lock} in rust-src tarballRalf Jung-0/+7
2017-08-13Build rustdoc only at the top stageMark Simulacrum-2/+1
2017-08-13Unify flags into config.Mark Simulacrum-1/+1
This introduces a slight change in behavior, where we unilaterally respect the --host and --target parameters passed for all sanity checking and runtime configuration.
2017-07-27Build rustdoc on-demand.Mark Simulacrum-0/+3
Rustdoc is no longer compiled in every stage, alongside rustc, instead it is only compiled when requested, and generally only for the last stage.
2017-07-27Change tools to take a compiler instead of a stage.Mark Simulacrum-2/+8
2017-07-24Make dist equivalent to old build system.Mark Simulacrum-85/+77
2017-07-22Make distcheck work again.Mark Simulacrum-1/+2
2017-07-20Change make_run signature to taking a RunConfig struct for refactorability.Mark Simulacrum-68/+41
2017-07-20Add an optional condition to constrain defaults.Mark Simulacrum-13/+6
Utilized primarily to not be a default rule unless some configuration is given (e.g., compiler docs are enabled).
2017-07-20Remove step.rs commentsMark Simulacrum-110/+0
2017-07-20Implement available paths list.Mark Simulacrum-25/+25
2017-07-20Utilize interning to allow Copy/Clone stepsMark Simulacrum-84/+104
2017-07-20Remove core_intrinsics feature gateMark Simulacrum-0/+12