Commit Graph

285 Commits

Author SHA1 Message Date
Joshua Nelson ca3daa0fb6 Fix x check --stage 1 when download-ci-llvm=false 2023-04-10 22:30:07 -05:00
clubby789 9fc7eca935 Always set RUSTC_BOOTSTRAP with x doc 2023-03-27 17:12:18 +01:00
Alex Huang 29b0befd18 bootstrap: document tidy 2023-03-10 08:23:45 -05:00
Pietro Albini 317be6172a make --open work on all books 2023-02-23 13:11:45 +01:00
Pietro Albini 8f84408697 also document hidden items 2023-01-26 14:13:35 +01:00
Pietro Albini bba274fabb add option to include private items in library docs 2023-01-24 17:00:45 +01:00
Michael Goulet 93032e8112 Rollup merge of #106305 - jyn514:tail-args, r=Mark-Simulacrum
bootstrap: Get rid of tail_args in stream_cargo

Based on https://github.com/rust-lang/rust/pull/106303 for convenience.

r? ````@Mark-Simulacrum````
2022-12-30 21:26:35 -08:00
Joshua Nelson c8c849ef5c Use more consistent progress messages in bootstrap
Before:
```
Testing ["rustc_interface"] stage0 (aarch64-unknown-linux-gnu -> aarch64-unknown-linux-gnu)
```

After:
```
Testing {rustc_interface} stage0 (aarch64-unknown-linux-gnu -> aarch64-unknown-linux-gnu)
```

Note there is a slight consistency between `build` and `test`: The
former doesn't print "compiler artifacts". It would be annoying to fix
and doesn't hurt anything, so I left it be.

```
; x t rustc_interface --stage 0 --dry-run
Testing {rustc_interface} stage0 (aarch64-unknown-linux-gnu -> aarch64-unknown-linux-gnu)
; x b rustc_interface --stage 0 --dry-run
Building {rustc_interface} stage0 compiler artifacts (aarch64-unknown-linux-gnu -> aarch64-unknown-linux-gnu)
```
2022-12-30 20:37:48 +00:00
Lukas Markeffsky 50a8ca56be ./x doc library --open opens std 2022-12-29 13:31:45 +01:00
Joshua Nelson f94c926aec Support documenting Cargo
The primary motivation is to have the cargo docs show up on https://doc.rust-lang.org/nightly/nightly-rustc/cargo, but as a nice side effect this makes `x doc cargo` work locally.
2022-12-22 14:33:22 -06:00
Nixon Enraght-Moony 37b0a100aa rustbuild: Don't build doc::SharedAssets when building JSON docs. 2022-11-25 13:50:41 +00:00
Dylan DPC d3e9191875 Rollup merge of #104286 - ozkanonur:fix-doc-bootstrap-recompilation, r=jyn514
copy doc output files by format

This pr provides copying doc outputs by checking output format without removing output directory on each trigger.

Resolves #103785
2022-11-23 20:32:36 +05:30
ozkanonur 7e28df9561 refactor doc copying process
Signed-off-by: ozkanonur <work@onurozkan.dev>
2022-11-20 15:51:50 +03:00
Joshua Nelson fb471de5a9 Make all download functions need only Config, not Builder
This also adds a new `mod download` instead of scattering the download code
across `config.rs` and `native.rs`.
2022-11-13 21:56:52 -05:00
ozkanonur 0a275abec6 copy doc output files by format r=ozkanonur
Signed-off-by: ozkanonur <work@onurozkan.dev>
2022-11-13 21:30:36 +03:00
Joshua Nelson 34972c512b Distinguish --dry-run from the automatic dry run check 2022-11-12 15:37:58 -06:00
Matthias Krüger 131ef95808 Rollup merge of #103851 - viandoxdev:103816_bootstrap_fix_json_doc, r=jyn514
Fix json flag in bootstrap doc

Fix the `--json` flag not working with x.py (Closes #103816)

While this works I'm not sure about the `should_run` of `JsonStd`, had to change it because https://github.com/rust-lang/rust/blob/ab5a2bc7316012ee9b2a4a4f3821673f2677f3d5/src/bootstrap/builder.rs#L334 would match with JsonStd and remove the paths that Std matched. So I did [this](https://github.com/viandoxdev/rust/blob/ffd4078264c4892b5098d6191e0adfe3564d62ca/src/bootstrap/doc.rs#L526-L534) but that looks more like a hack/workaround than anything. I'm guessing there's something to do with the default condition thing but idk how it works
2022-11-06 08:35:26 +01:00
viandoxdev 900af414a3 fix out dir being wrong in json 2022-11-05 18:30:01 +01:00
Pietro Albini 5e4618ff14 address review comment 2022-11-03 16:42:28 +01:00
Pietro Albini 6bc36d18ce move browser opening logic in Builder
This allows open() to be called from other places in bootstrap (I need
this for Ferrocene), and it simplifies the callers by moving the
"was_invoked_explicitly" check into the function.
2022-11-03 11:42:51 +01:00
viandoxdev 1bc2bfa44c prevent open with json 2022-11-02 11:28:31 +01:00
viandoxdev 972d075aa6 merge JsonStd and Std steps 2022-11-02 11:23:42 +01:00
viandoxdev ffd4078264 fix json running all the time 2022-11-01 22:18:19 +01:00
viandoxdev 6e1361f358 Fixes #103816 make --json work 2022-11-01 21:50:28 +01:00
bors 024207ab43 Auto merge of #102950 - oli-obk:check_miri, r=RalfJung
Enable `x.py check` for miri

Now that the miri subtree is working properly, let's add it to x.py check.

cc `@rust-lang/miri`
2022-10-31 23:03:39 +00:00
Dylan DPC b03fa1a3fe Rollup merge of #102706 - ferrocene:pa-ignore-doc-index, r=jyn514
Support excluding the generation of the standalone docs

For Ferrocene we need to exclude the generation of the standalone docs (which include the index page, which we want to replace with our own), but with the way bootstrap is currently implemented that proved not possible. This PR aims to support that.

The first problem is that the `doc::Standalone` step did two things: it generated the "standalone" documentation (which includes the index page and all the pages at the root of the documentation tree), but it also generated some files like `rust.css` and `version_info.html` that other step like `doc::TheBook` required. This meant generating the book required generating the index page, which made disabling the index page generation problematic.

The approach I took to fix the first problem is to split the step into `doc::Standalone` and `doc::SharedAssets`, with `doc::TheBook` now depending on `doc::SharedAssets`.

The second problem is that disabling the `doc::Standalone` proved to be tricky due to its path, `src/doc`. The path is accurate, as the source files for that step are `src/doc/*.md`. The problem is, bootstrap treats `--exclude` as a *suffix*, and so it also excluded the Cargo book whose source lives at `src/tools/cargo/src/doc`.

The approach I took to fix the second problem is to add the `standalone` path in addition to `src/doc`, so that you can pass `--exclude standalone`. I'm not fully happy with the solution, and the other idea I had was to just move the standalone docs source code to `src/doc/standalone`. I feel that second approach is cleaner, but also requires more changes and might require more consensus.

This PR is best reviewed commit-by-commit.

r? `@jyn514`
2022-10-26 17:32:54 +05:30
Pietro Albini 91c09d44f6 use the shared assets step for building std too 2022-10-24 13:03:12 +02:00
Pietro Albini f134370b91 apply joshua's suggestion
Co-authored-by: Joshua Nelson <github@jyn.dev>
2022-10-18 16:47:35 +02:00
Oli Scherer 0227d8d555 Enable x.py check for miri 2022-10-12 08:43:14 +00:00
Pietro Albini 004b8b98d6 add a "standalone" path for doc::Standalone to be able to exclude it
Before this commit, the path for the doc::Standalone step was "src/doc",
which is accurate as the standalone docs source files live at the root
of the "src/doc" directory tree.

Unfortunately, that caused bad interactions when trying to exclude it
with `--exclude src/doc`. When an exclusion is passed to bootstrap, it
will exclude all steps whose path *ends with* the exclusion, which
results in the Cargo book (src/tools/cargo/src/doc) to also be excluded.

To work around this problem, this commit adds the "standalone" path as
an alternate path for doc::Standalone, allowing `--exclude standalone`
to work without side effects.
2022-10-05 14:32:09 +02:00
Pietro Albini afe29e48bc split steps for generating the standalone docs and the shared assets
Before this commit, the step to generate the standalone docs (which
included the index page and other HTML files at the root of the
documentation) was bundled with the code copying files needed by
multiple pieces of documentation. This means it wasn't possible to avoid
generating the standalone docs.

This commit splits the step into two, allowing the standalone docs
generation to be excluded while still building the rest of the docs.
2022-10-05 14:32:06 +02:00
Josh Triplett 39484ac3b0 Move style guide to rust-lang/rust
Per [RFC 3309](https://rust-lang.github.io/rfcs/3309-style-team.html).
2022-09-24 19:49:58 +01:00
bors c8e12cc8bf Auto merge of #101799 - LukeMathWalker:distribute-json-doc, r=jyn514
Distribute json doc

# Overview

We add a new component, `rust-json-docs`, to distribute the JSON version of rustdoc's output for public compiler crates (i.e. `std`, `alloc`, `proc_macro`, `core` and `test`).
As discussed in #101383, we do not bundle this up as part of the existing `rust-docs` component since `rustdoc`'s JSON format is still unstable.

# Open questions / Doubts

I tried my best, but I never touched this codebase and I couldn't find much documentation on how `dist` works - I pattern-matched existing code, which might have led to some non-sensical choices in the eyes of people more familiar with the codebase. In particular, I am not sure if my choice of adding a new config flag is appropriate or if the decision to build/not build the JSON docs is more appropriately gated by one of the existing flags.
Any suggestion is more than welcome.

Closes #101383
2022-09-19 02:13:54 +00:00
Luca Palmieri 235dccef2b Add a new component, rust-json-docs, to distribute the JSON-formatted documentation for std crates in nightly toolchains.
We also add a new flag to `x doc`, `--json`, to render the JSON-formatted version alongside the HTML-formatted one.
2022-09-17 21:58:34 +02:00
Jacob Hoffman-Andrews 68a3ca0392 Don't add rustdoc's CSS to other doc pages
This was originally added so those doc pages could use the same font
files, but it turns out to be fragile. And those doc pages are just
stubs that link to other pages, so they don't need fancy fonts.
2022-09-16 16:53:53 -07:00
Guillaume Gomez 117169799f Generate error index with mdbook instead of raw HTML pages 2022-08-31 20:31:22 +02:00
flip1995 f2a1e45246 Build the Clippy book as part of x.py doc 2022-07-06 10:01:27 +02:00
Guillaume Gomez 0a7f2c3a02 Rollup merge of #95503 - jyn514:build-single-crate, r=Mark-Simulacrum
bootstrap: Allow building individual crates

This aims to be as unintrusive as possible, but did still require adding a new `tail_args` field to all `Rustc` and `Std` steps.

New library and compiler crates are added to the sysroot as they are built, since it's useful to have e.g. just alloc and not std.

Fixes https://github.com/rust-lang/rust/issues/44293.
2022-07-05 23:43:28 +02:00
Ralf Jung ed92d88ff4 ignore rustdoc failures for out-of-tree tools 2022-07-03 22:30:31 +02:00
InfRandomness 45a69cc215 Add in_tree macro literal
Signed-off-by: InfRandomness <infrandomness@gmail.com>
2022-07-03 22:30:31 +02:00
InfRandomness dbe77e856a Add miri to the rustc docs.rs page
This adds miri to https://doc.rust-lang.org/nightly/nightly-rustc/

Signed-off-by: InfRandomness <infrandomness@gmail.com>
2022-07-03 22:30:30 +02:00
Joshua Nelson d0011b0c05 Allow building single crates for the compiler and standard library
- Add `Interned<Vec<String>>` and use it for tail args
- Refactor `cache.rs` not to need a separate impl for each internable type
2022-07-02 19:29:39 -05:00
Joshua Nelson b0ea4e74cb Avoid accidentally enabling unstable features in compilers (take 2)
This allows rustbuild to control whether crates can use nightly features or not.
It also prevents rustbuild from using nightly features itself.
2022-05-22 08:31:50 -05:00
Matthias Krüger 472404039e Rollup merge of #95504 - jyn514:library-alias, r=Mark-Simulacrum
Add `x {check,build,doc} {compiler,library}` aliases.

While working on https://github.com/rust-lang/rust/pull/95503, I realized that it will interfere with existing command lines:
Currently people run `x build library/std` expecting it to "add all library crates to the sysroot",
but after that change, it will *only* build `libstd` and its dependencies (and add them to the sysroot), not libtest or libproc_macro.

That will work for local testing in most cases, but could be confusing. Even if not, though, I think `x build library` is more clear about what actually happens than the current `x build library/std`.

The intended end goal is something like:
- For check/build/doc, we have library + compiler aliases, which correspond to basically "most possible" for that piece. This is the intended path of entry (rather than library/test or similar as today) for when you just want the thing to work -- for example, getting a compiler that is "crates.io-compatible" would be roughly `x.py build library`). #95504
- Specific crate invocations build up to that crate, which means that if you don't care about tests you probably want x.py build library/proc_macro or library/std for faster build times. #95503

Note that this is already implemented today for the `doc` command and seems to work pretty well in practice.

I plan to change the dev-guide and various instructions in the README to `build library` once this is merged.

`@rustbot` label +A-rustbuild
2022-04-24 18:00:25 +02:00
Joshua Nelson dd0ad7375e Don't build the library and standard library before documenting them
Rustdoc doesn't require the build artifacts to generate the docs, and
especially in the case of rustc, it greatly increases the time needed to
run the build.

- Statically ensure that only the top_stage of a tool is documented

If another part of rustbuild tried to document a different stage, it
would run into errors because `check::Rustc` unconditionally uses the
top stage.

- Try building rustc instead of checking to avoid duplicate artifacts

Tries to workaround the following error:
```
error[E0464]: multiple matching crates for `rustc_ast`
  --> src/librustdoc/lib.rs:40:1
   |
40 | extern crate rustc_ast;
   | ^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: candidates:
           crate `rustc_ast`: /checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_ast-6d7c193782263d89.rlib
           crate `rustc_ast`: /checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_ast-e5d09eda5beb759c.rmeta
```
2022-04-14 19:18:46 -05:00
Joshua Nelson 9f38ce09ae Add x {check,build,doc} {compiler/library} aliases.
While working on https://github.com/rust-lang/rust/pull/95503,
I realized that this will interfere with existing command lines:
Currently people run `x build library/std` expecting it to be added to the sysroot,
but after that change, it will *only* build `libstd` without making it available
for the toolchain.

It's debatable whether that's a breaking change that will be accepted; if so, this PR is absolutely
necessary to make sure there's a command for "build the standard library and add it to the sysroot".
Even if not, though, I think `x build library` is more clear about what actually happens than the
current `x build library/std`.

For consistency, also add support for `compiler` and all other command variants.  Note that `doc
compiler` was already supported, so in a sense this is just fixing an existing inconsistency.

I plan to change the dev-guide and various instructions in the README to `build library` once this is merged.
2022-03-30 18:31:51 -05:00
Joshua Nelson 72315919e6 Reduce duplication in impl Step for doc::Rustc
This should have no user-visible change.
2022-03-30 18:03:11 -05:00
Joshua Nelson 43c16acc27 Remove dead code in doc.rs
`run` is never called for invalid paths; they get filtered out by `should_run`.
2022-03-30 18:01:37 -05:00
Joshua Nelson 50d1ee90e7 Fix x doc compiler/rustc
This works by mapping the local path to a crate name before trying to fetch crates it depends on.
2022-03-30 18:01:29 -05:00
Eric Huss 935e281959 bootstrap: better error message for no_std docs 2022-03-28 12:13:18 -07:00