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 becauseab5a2bc731/src/bootstrap/builder.rs (L334)
would match with JsonStd and remove the paths that Std matched. So I did [this](ffd4078264/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
This commit is contained in:
commit
131ef95808
3 changed files with 44 additions and 53 deletions
|
@ -19,6 +19,7 @@ use crate::cache::{Interned, INTERNER};
|
|||
use crate::channel;
|
||||
use crate::compile;
|
||||
use crate::config::TargetSelection;
|
||||
use crate::doc::DocumentationFormat;
|
||||
use crate::tarball::{GeneratedTarball, OverlayKind, Tarball};
|
||||
use crate::tool::{self, Tool};
|
||||
use crate::util::{exe, is_dylib, output, t, timeit};
|
||||
|
@ -97,7 +98,11 @@ impl Step for JsonDocs {
|
|||
/// Builds the `rust-docs-json` installer component.
|
||||
fn run(self, builder: &Builder<'_>) -> Option<GeneratedTarball> {
|
||||
let host = self.host;
|
||||
builder.ensure(crate::doc::JsonStd { stage: builder.top_stage, target: host });
|
||||
builder.ensure(crate::doc::Std {
|
||||
stage: builder.top_stage,
|
||||
target: host,
|
||||
format: DocumentationFormat::JSON,
|
||||
});
|
||||
|
||||
let dest = "share/doc/rust/json";
|
||||
|
||||
|
|
|
@ -420,6 +420,7 @@ impl Step for SharedAssets {
|
|||
pub struct Std {
|
||||
pub stage: u32,
|
||||
pub target: TargetSelection,
|
||||
pub format: DocumentationFormat,
|
||||
}
|
||||
|
||||
impl Step for Std {
|
||||
|
@ -432,7 +433,15 @@ impl Step for Std {
|
|||
}
|
||||
|
||||
fn make_run(run: RunConfig<'_>) {
|
||||
run.builder.ensure(Std { stage: run.builder.top_stage, target: run.target });
|
||||
run.builder.ensure(Std {
|
||||
stage: run.builder.top_stage,
|
||||
target: run.target,
|
||||
format: if run.builder.config.cmd.json() {
|
||||
DocumentationFormat::JSON
|
||||
} else {
|
||||
DocumentationFormat::HTML
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
/// Compile all standard library documentation.
|
||||
|
@ -442,19 +451,26 @@ impl Step for Std {
|
|||
fn run(self, builder: &Builder<'_>) {
|
||||
let stage = self.stage;
|
||||
let target = self.target;
|
||||
let out = builder.doc_out(target);
|
||||
let out = match self.format {
|
||||
DocumentationFormat::HTML => builder.doc_out(target),
|
||||
DocumentationFormat::JSON => builder.json_doc_out(target),
|
||||
};
|
||||
|
||||
t!(fs::create_dir_all(&out));
|
||||
|
||||
builder.ensure(SharedAssets { target: self.target });
|
||||
|
||||
let index_page = builder.src.join("src/doc/index.md").into_os_string();
|
||||
let mut extra_args = vec![
|
||||
OsStr::new("--markdown-css"),
|
||||
OsStr::new("rust.css"),
|
||||
OsStr::new("--markdown-no-toc"),
|
||||
OsStr::new("--index-page"),
|
||||
&index_page,
|
||||
];
|
||||
let mut extra_args = match self.format {
|
||||
DocumentationFormat::HTML => vec![
|
||||
OsStr::new("--markdown-css"),
|
||||
OsStr::new("rust.css"),
|
||||
OsStr::new("--markdown-no-toc"),
|
||||
OsStr::new("--index-page"),
|
||||
&index_page,
|
||||
],
|
||||
DocumentationFormat::JSON => vec![OsStr::new("--output-format"), OsStr::new("json")],
|
||||
};
|
||||
|
||||
if !builder.config.docs_minification {
|
||||
extra_args.push(OsStr::new("--disable-minification"));
|
||||
|
@ -478,15 +494,12 @@ impl Step for Std {
|
|||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
doc_std(
|
||||
builder,
|
||||
DocumentationFormat::HTML,
|
||||
stage,
|
||||
target,
|
||||
&out,
|
||||
&extra_args,
|
||||
&requested_crates,
|
||||
);
|
||||
doc_std(builder, self.format, stage, target, &out, &extra_args, &requested_crates);
|
||||
|
||||
// Don't open if the format is json
|
||||
if let DocumentationFormat::JSON = self.format {
|
||||
return;
|
||||
}
|
||||
|
||||
// Look for library/std, library/core etc in the `x.py doc` arguments and
|
||||
// open the corresponding rendered docs.
|
||||
|
@ -499,38 +512,6 @@ impl Step for Std {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
|
||||
pub struct JsonStd {
|
||||
pub stage: u32,
|
||||
pub target: TargetSelection,
|
||||
}
|
||||
|
||||
impl Step for JsonStd {
|
||||
type Output = ();
|
||||
const DEFAULT: bool = false;
|
||||
|
||||
fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
|
||||
let default = run.builder.config.docs && run.builder.config.cmd.json();
|
||||
run.all_krates("test").path("library").default_condition(default)
|
||||
}
|
||||
|
||||
fn make_run(run: RunConfig<'_>) {
|
||||
run.builder.ensure(Std { stage: run.builder.top_stage, target: run.target });
|
||||
}
|
||||
|
||||
/// Build JSON documentation for the standard library crates.
|
||||
///
|
||||
/// This is largely just a wrapper around `cargo doc`.
|
||||
fn run(self, builder: &Builder<'_>) {
|
||||
let stage = self.stage;
|
||||
let target = self.target;
|
||||
let out = builder.json_doc_out(target);
|
||||
t!(fs::create_dir_all(&out));
|
||||
let extra_args = [OsStr::new("--output-format"), OsStr::new("json")];
|
||||
doc_std(builder, DocumentationFormat::JSON, stage, target, &out, &extra_args, &[])
|
||||
}
|
||||
}
|
||||
|
||||
/// Name of the crates that are visible to consumers of the standard library.
|
||||
/// Documentation for internal crates is handled by the rustc step, so internal crates will show
|
||||
/// up there.
|
||||
|
@ -543,7 +524,7 @@ impl Step for JsonStd {
|
|||
const STD_PUBLIC_CRATES: [&str; 5] = ["core", "alloc", "std", "proc_macro", "test"];
|
||||
|
||||
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
|
||||
enum DocumentationFormat {
|
||||
pub enum DocumentationFormat {
|
||||
HTML,
|
||||
JSON,
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ use crate::cache::Interned;
|
|||
use crate::compile;
|
||||
use crate::config::TargetSelection;
|
||||
use crate::dist;
|
||||
use crate::doc::DocumentationFormat;
|
||||
use crate::flags::Subcommand;
|
||||
use crate::native;
|
||||
use crate::tool::{self, SourceType, Tool};
|
||||
|
@ -822,7 +823,11 @@ impl Step for RustdocJSStd {
|
|||
command.arg("--test-file").arg(path);
|
||||
}
|
||||
}
|
||||
builder.ensure(crate::doc::Std { target: self.target, stage: builder.top_stage });
|
||||
builder.ensure(crate::doc::Std {
|
||||
target: self.target,
|
||||
stage: builder.top_stage,
|
||||
format: DocumentationFormat::HTML,
|
||||
});
|
||||
builder.run(&mut command);
|
||||
} else {
|
||||
builder.info("No nodejs found, skipping \"src/test/rustdoc-js-std\" tests");
|
||||
|
|
Loading…
Add table
Reference in a new issue