about summary refs log tree commit diff
path: root/src/bootstrap
AgeCommit message (Collapse)AuthorLines
2024-08-03Rollup merge of #128283 - lolbinarycat:bootstrap-custom-target, r=albertlarsan68Matthias Krüger-3/+14
bootstrap: fix bug preventing the use of custom targets the bug was caused by two factors: 1. only checking the RUST_TARGET_PATH form, not the full filepath form 2. indirectly trying to use the Debug presentation to get the file path
2024-08-03Remove another false-negative hidden by dead code changesMichael Goulet-4/+0
2024-08-03Promote aarch64-apple-darwin to Tier 1Evelyn Harthbrooke-1/+1
Per rust-lang/rfcs#3671.
2024-08-03allow setting `link-shared` and `static-libstdcpp` with CI LLVMonur-ozkan-3/+17
These options also affect `compiler/rustc_llvm` builds. They should be configurable even when using CI LLVM. Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-08-02bootstrap: fix bug preventing the use of custom targetsbinarycat-3/+14
the bug was caused by two factors: 1. only checking the RUST_TARGET_PATH form, not the full filepath form 2. indirectly trying to use the Debug presentation to get the file path
2024-08-02Move the standard library to a separate workspacebjorn3-1/+7
This ensures that the Cargo.lock packaged for it in the rust-src component is up-to-date, allowing rust-analyzer to run cargo metadata on the standard library even when the rust-src component is stored in a read-only location as is necessary for loading crates.io dependencies of the standard library. This also simplifies tidy's license check for runtime dependencies as it can now look at all entries in library/Cargo.lock without having to filter for just the dependencies of runtime crates. In addition this allows removing an exception in check_runtime_license_exceptions that was necessary due to the compiler enabling a feature on the object crate which pulls in a dependency not allowed for the standard library. While cargo workspaces normally enable dependencies of multiple targets to be reused, for the standard library we do not want this reusing to prevent conflicts between dependencies of the sysroot and of tools that are built using this sysroot. For this reason we already use an unstable cargo feature to ensure that any dependencies which would otherwise be shared get a different -Cmetadata argument as well as using separate build dirs. This doesn't change the situation around vendoring. We already have several cargo workspaces that need to be vendored. Adding another one doesn't change much. There are also no cargo profiles that are shared between the root workspace and the library workspace anyway, so it doesn't add any extra work when changing cargo profiles.
2024-08-02Rollup merge of #128436 - GuillaumeGomez:update-sysinfo, r=clubby789Matthias Krüger-37/+93
Update sysinfo version to 0.31.2 I needed to update `memchr` version (which was pinned in https://github.com/rust-lang/rust/commit/36a16798f798eb59db21ff2a8a163135b4a599fe). So let's see if it triggers the linker issue. try-job: x86_64-mingw
2024-08-01Update sysinfo version to 0.31.2Guillaume Gomez-37/+93
2024-08-01Rollup merge of #128437 - onur-ozkan:handle-llvm-tools-properly, ↵Matthias Krüger-3/+34
r=albertlarsan68,Kobzol improve bootstrap to allow selecting llvm tools individually Everything works as before, + now bootstrap allows for individually selecting LLVM tools (e.g., `x dist opt llvm-dis`) to include in the dist artifact.
2024-07-31improve bootstrap to allow selecting llvm tools individuallyonur-ozkan-3/+34
Everything works as before, + now bootstrap allows for individually selecting LLVM tools (e.g., `x dist opt llvm-dis`) to include in the dist artifact. Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-07-30Auto merge of #128083 - Mark-Simulacrum:bump-bootstrap, r=albertlarsan68bors-4/+1
Bump bootstrap compiler to new beta https://forge.rust-lang.org/release/process.html#master-bootstrap-update-t-2-day-tuesday
2024-07-30set `force_recompile: true` if library is modifiedonur-ozkan-8/+31
This allows the standard library to be compiled even with `download-rustc` enabled. Which means it's no longer a requirement to compile `rustc` in order to compile `std`. Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-07-29Rollup merge of #128342 - onur-ozkan:ci-env-usage, r=KobzolMatthias Krüger-8/+6
simplify the use of `CiEnv` self-explanatory
2024-07-29simplify the use of `CiEnv`onur-ozkan-8/+6
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-07-29ignore `crates` if running unit testsonur-ozkan-0/+5
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-07-29remove the requirement of `Builder` arg in `doc::Std::new` functiononur-ozkan-18/+2
`crates` field is handled in the `Step::make_run` just like in any other `Std` implementation, so we don't need to resolve them in `Std::new`. Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-07-29allow running `x doc` on std for no_std targetsonur-ozkan-8/+2
Since we now handle library crates properly, there's no need to panic for `no_std` targets anymore. `x doc library` now generates documentation for the `alloc` crate from standard library. Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-07-29handle no_std targets on std buildsonur-ozkan-8/+22
This change unifies the `Step::run_make` logic and improves it by skipping std specific crates for no_std targets. Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-07-29Rollup merge of #128269 - onur-ozkan:improve-cargo-invocations, ↵Matthias Krüger-117/+151
r=Mark-Simulacrum improve cargo invocations on bootstrap Fixes few of the `FIXME`s on cargo invocations and should be considered as blocker for https://github.com/rust-lang/rust/issues/128180.
2024-07-29Reformat `use` declarations.Nicholas Nethercote-208/+166
The previous commit updated `rustfmt.toml` appropriately. This commit is the outcome of running `x fmt --all` with the new formatting options.
2024-07-28step cfg(bootstrap)Mark Rousskov-4/+1
2024-07-28Auto merge of #128301 - matthiaskrgr:rollup-9fyf587, r=matthiaskrgrbors-92/+219
Rollup of 3 pull requests Successful merges: - #125889 (Add migration lint for 2024 prelude additions) - #128215 (Update the reference) - #128263 (rustdoc: use strategic ThinVec/Box to shrink `clean::ItemKind`) r? `@ghost` `@rustbot` modify labels: rollup
2024-07-28Rollup merge of #128215 - ehuss:update-reference, r=KobzolMatthias Krüger-92/+219
Update the reference This updates the reference to use the new mdbook-spec preprocessor, which is a Cargo library inside the reference submodule. Note that this PR contains a bunch of bootstrap cleanup commits to assist with making sure the submodules are working correctly. All of the cleanup PRs should have a description in their commit. I'd be happy to move those to a separate PR if that makes review easier. The main changes for the reference are: - Move the `doc::Reference` bootstrap step out of the generic macro into a custom step. - This step needs to build rustdoc because the new mdbook-spec plugin uses rustdoc for generating links. - PATH is updated so that the rustdoc binary can be found. - rustbook now includes the mdbook-spec plugin as a dependency. - rustbook enables the mdbook-spec preprocessor. I did a bunch of testing with the various commands and setups, such as: - `submodules=true` and `submodules=false` - having all submodules deinitialized - not in a git repository However, there are probably thousands of different permutations of different commands, settings, and environments, so there is a chance I'm missing something.
2024-07-28Auto merge of #127799 - Kobzol:bootstrap-cmd-refactor-7, r=onur-ozkanbors-171/+167
Bootstrap command refactoring: make command output API more bulletproof (step 7) Continuation of https://github.com/rust-lang/rust/pull/127680. This PR modifies the API of running commands to make it more explicit when a command is expected to produce programmatically handled output. Now if you call just `run`, you cannot access the stdout/stderr by accident, because it will not be returned to the caller. This API change might be seen as overkill, let me know what do you think. In any case, I'd like to land the second commit, to make it harder to accidentally read stdout/stderr of commands that did not capture output (now you'd get an empty string as a result, but you should probably get a panic instead, if you try to read uncaptured stdout/stderr). Tracking issue: https://github.com/rust-lang/rust/issues/126819 r? `@onur-ozkan` try-job: x86_64-msvc
2024-07-27improve `check::{Std, Rustc}` to handle clippy properlyonur-ozkan-11/+37
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-07-27Rename require_and_update_submodule to require_submoduleEric Huss-25/+25
Just trying to be a little less verbose here.
2024-07-27Add clarifying documentation to require_and_update_submodule.Eric Huss-1/+4
2024-07-27Change prebuilt_llvm_config to not be required.Eric Huss-1/+2
I misread this one. It is only checking if LLVM needs to be rebuilt. There is code below that handles the case where it is unable to compute the stamp if the source is missing.
2024-07-27Change the blanket submodule update for library submodules to be requiredEric Huss-1/+7
These are required 100% of the time, but they are almost always required for any command that runs Cargo in the main workspace. Ideally, initializing these two standard library submodules would be lazy and only initialized when required (see https://github.com/rust-lang/rust/pull/82653). However, it would require updating these in almost every Step (anything that runs `cargo` in the main workspace).
2024-07-27Consistently use a string to represent a submodule.Eric Huss-11/+11
This makes it easier to call these functions without needing to form a Path.
2024-07-27Add more descriptions to why submodules are required.Eric Huss-5/+13
2024-07-27Fix mistake setting ONLY_HOSTS for Reference.Eric Huss-1/+0
This was a copy/paste mistake.
2024-07-27refactor cargo invocations with strongly-typed subcommandonur-ozkan-109/+117
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-07-27add change entry for `rust.channel` defaultsonur-ozkan-0/+5
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-07-26Fix storing of stdout/stderr in bootstrap commands that failed to startJakub Beránek-3/+13
Before, their stdout/stderr was forcefully set to `None`, even if the corresponding command tried to capture output.
2024-07-26Fix broken doc linkJakub Beránek-1/+1
2024-07-26Fix usages of old command APIJakub Beránek-3/+2
2024-07-26Make it easier to detect when bootstrap tries to read uncaptured stdout/stderrJakub Beránek-20/+32
If e.g. only stdout is captured, but the caller tries to read stderr, previously they would get back an empty string. Now the code will explicitly panic when accessing an uncaptured output stream.
2024-07-26Make command output capturing more explicitJakub Beránek-145/+120
Now there are separate functions for running a command without capturing, running while capturing stdout and running while capturing everything. This should help avoid situations where stdout/stderr is accessed when it was not captured.
2024-07-26Update Android testing to API 21, matching NDK 26Matthew Maurer-5/+8
We were running testing on API 18, which was already out of support for NDK 25, and some of the ancient behavior in that image was causing trouble when developing `rustc` features (#120326). Update to the current LTS NDK 26, and to its minimum supported API 21. Fixes: #120567
2024-07-25Integrate mdbook-spec for the reference.Eric Huss-11/+66
This updates the reference which is now using a new mdbook plugin. This requires a little extra work than a normal book because the plugin uses `rustdoc` to generate links to the standard library. It also ensures that the submodule is available for *any* command that uses rustbook, since it is now part of the rustbook workspace.
2024-07-25Make sure submodules are checked out with `x test`Eric Huss-7/+17
If the submodule is not checked out, then these tests would fail.
2024-07-25Clarify comment about why bootstrap tests need src/doc/bookEric Huss-3/+6
2024-07-25Add require_and_update_submodule to ensure submodules existEric Huss-50/+87
This adds a new method `require_and_update_submodule` to replace `update_submodule`. This new method will generate an error if the submodule doesn't actually exist. This replaces some ad-hoc checks that were performing this function. This helps ensure that a good error message is always displayed. This also adds require_and_update_all_submodules which does this for all submodules. Ideally this should not have any change other than better error messages when submodules are missing.
2024-07-25Fix rustbook submodule update locationEric Huss-7/+11
I put this submodule update in the entirely wrong location. I put it in the `RustcBook` step (for generating src/doc/rustc), when it really should exist for all steps that use the `Rustbook` tool.
2024-07-25Remove outdated comment about update_submoduleEric Huss-1/+0
Although its origins were in bootstrap.py, that code in bootstrap.py no longer exists since it was removed.
2024-07-25Remove argument from the submodules methodEric Huss-5/+8
The argument was not necessary, since it was only ever passed one value that exists in the config itself.
2024-07-25Clarify comment on update_existing_submodulesEric Huss-1/+2
This felt like an important point to me.
2024-07-25Remove `pub` from update_existing_submodulesEric Huss-1/+1
This is not used anywhere outside this module.
2024-07-25Remove comment about bootstrap.py handling submodulesEric Huss-2/+0
bootstrap.py handling of submodules was removed in https://github.com/rust-lang/rust/pull/97513.