use {Build, Mode};
use build_helper::up_to_date;
-use util::{cp_r, symlink_dir};
+use util::symlink_dir;
use builder::{Builder, Compiler, RunConfig, ShouldRun, Step};
use tool::Tool;
use compile;
use cache::{INTERNER, Interned};
+use config::Config;
macro_rules! book {
($($name:ident, $path:expr, $book_name:expr;)+) => {
let out = out.join(name);
- println!("Cargo Book ({}) - {}", target, name);
+ build.info(&format!("Cargo Book ({}) - {}", target, name));
let _ = fs::remove_dir_all(&out);
let src = src.join(name);
let index = out.join("index.html");
let rustbook = builder.tool_exe(Tool::Rustbook);
+ let mut rustbook_cmd = builder.tool_cmd(Tool::Rustbook);
if up_to_date(&src, &index) && up_to_date(&rustbook, &index) {
return
}
- println!("Rustbook ({}) - {}", target, name);
+ build.info(&format!("Rustbook ({}) - {}", target, name));
let _ = fs::remove_dir_all(&out);
- build.run(builder.tool_cmd(Tool::Rustbook)
+ build.run(rustbook_cmd
.arg("build")
.arg(&src)
.arg("-d")
// build the index page
let index = format!("{}/index.md", name);
- println!("Documenting book index ({})", target);
+ build.info(&format!("Documenting book index ({})", target));
invoke_rustdoc(builder, compiler, target, &index);
// build the redirect pages
- println!("Documenting book redirect pages ({})", target);
+ build.info(&format!("Documenting book redirect pages ({})", target));
for file in t!(fs::read_dir(build.src.join("src/doc/book/redirects"))) {
let file = t!(file);
let path = file.path();
let build = builder.build;
let target = self.target;
let compiler = self.compiler;
- println!("Documenting standalone ({})", target);
+ build.info(&format!("Documenting standalone ({})", target));
let out = build.doc_out(target);
t!(fs::create_dir_all(&out));
let version_input = build.src.join("src/doc/version_info.html.template");
let version_info = out.join("version_info.html");
- if !up_to_date(&version_input, &version_info) {
+ if !build.config.dry_run && !up_to_date(&version_input, &version_info) {
let mut info = String::new();
t!(t!(File::open(&version_input)).read_to_string(&mut info));
let info = info.replace("VERSION", &build.rust_release())
up_to_date(&favicon, &html) &&
up_to_date(&full_toc, &html) &&
up_to_date(&version_info, &html) &&
- up_to_date(&rustdoc, &html) {
+ (build.config.dry_run || up_to_date(&rustdoc, &html)) {
continue
}
let build = builder.build;
let stage = self.stage;
let target = self.target;
- println!("Documenting stage{} std ({})", stage, target);
+ build.info(&format!("Documenting stage{} std ({})", stage, target));
let out = build.doc_out(target);
t!(fs::create_dir_all(&out));
let compiler = builder.compiler(stage, build.build);
// will also directly handle merging.
let my_out = build.crate_doc_out(target);
build.clear_if_dirty(&my_out, &rustdoc);
- t!(symlink_dir_force(&my_out, &out_dir));
+ t!(symlink_dir_force(&build.config, &my_out, &out_dir));
let mut cargo = builder.cargo(compiler, Mode::Libstd, target, "doc");
compile::std_cargo(builder, &compiler, target, &mut cargo);
}
build.run(&mut cargo);
- cp_r(&my_out, &out);
+ build.cp_r(&my_out, &out);
}
}
let build = builder.build;
let stage = self.stage;
let target = self.target;
- println!("Documenting stage{} test ({})", stage, target);
+ build.info(&format!("Documenting stage{} test ({})", stage, target));
let out = build.doc_out(target);
t!(fs::create_dir_all(&out));
let compiler = builder.compiler(stage, build.build);
// See docs in std above for why we symlink
let my_out = build.crate_doc_out(target);
build.clear_if_dirty(&my_out, &rustdoc);
- t!(symlink_dir_force(&my_out, &out_dir));
+ t!(symlink_dir_force(&builder.config, &my_out, &out_dir));
let mut cargo = builder.cargo(compiler, Mode::Libtest, target, "doc");
compile::test_cargo(build, &compiler, target, &mut cargo);
build.run(&mut cargo);
- cp_r(&my_out, &out);
+ build.cp_r(&my_out, &out);
}
}
let build = builder.build;
let stage = self.stage;
let target = self.target;
- println!("Documenting stage{} whitelisted compiler ({})", stage, target);
+ build.info(&format!("Documenting stage{} whitelisted compiler ({})", stage, target));
let out = build.doc_out(target);
t!(fs::create_dir_all(&out));
let compiler = builder.compiler(stage, build.build);
// See docs in std above for why we symlink
let my_out = build.crate_doc_out(target);
build.clear_if_dirty(&my_out, &rustdoc);
- t!(symlink_dir_force(&my_out, &out_dir));
+ t!(symlink_dir_force(&builder.config, &my_out, &out_dir));
let mut cargo = builder.cargo(compiler, Mode::Librustc, target, "doc");
compile::rustc_cargo(build, &mut cargo);
}
build.run(&mut cargo);
- cp_r(&my_out, &out);
+ build.cp_r(&my_out, &out);
}
}
let build = builder.build;
let stage = self.stage;
let target = self.target;
- println!("Documenting stage{} compiler ({})", stage, target);
+ build.info(&format!("Documenting stage{} compiler ({})", stage, target));
let out = build.compiler_doc_out(target);
t!(fs::create_dir_all(&out));
let compiler = builder.compiler(stage, build.build);
};
if !build.config.compiler_docs {
- println!("\tskipping - compiler docs disabled");
+ build.info(&format!("\tskipping - compiler docs disabled"));
return;
}
// We do not symlink to the same shared folder that already contains std library
// documentation from previous steps as we do not want to include that.
build.clear_if_dirty(&out, &rustdoc);
- t!(symlink_dir_force(&out, &out_dir));
+ t!(symlink_dir_force(&builder.config, &out, &out_dir));
let mut cargo = builder.cargo(compiler, Mode::Librustc, target, "doc");
+ cargo.env("RUSTDOCFLAGS", "--document-private-items");
compile::rustc_cargo(build, &mut cargo);
// Only include compiler crates, no dependencies of those, such as `libc`.
let build = builder.build;
let target = self.target;
- println!("Documenting error index ({})", target);
+ build.info(&format!("Documenting error index ({})", target));
let out = build.doc_out(target);
t!(fs::create_dir_all(&out));
let mut index = builder.tool_cmd(Tool::ErrorIndex);
target,
});
- println!("Generating unstable book md files ({})", target);
+ build.info(&format!("Generating unstable book md files ({})", target));
let out = build.md_doc_out(target).join("unstable-book");
- t!(fs::create_dir_all(&out));
- t!(fs::remove_dir_all(&out));
+ build.create_dir(&out);
+ build.remove_dir(&out);
let mut cmd = builder.tool_cmd(Tool::UnstableBookGen);
cmd.arg(build.src.join("src"));
cmd.arg(out);
}
}
-fn symlink_dir_force(src: &Path, dst: &Path) -> io::Result<()> {
+fn symlink_dir_force(config: &Config, src: &Path, dst: &Path) -> io::Result<()> {
+ if config.dry_run {
+ return Ok(());
+ }
if let Ok(m) = fs::symlink_metadata(dst) {
if m.file_type().is_dir() {
try!(fs::remove_dir_all(dst));
}
}
- symlink_dir(src, dst)
+ symlink_dir(config, src, dst)
}