Skip to content

Commit e05e2f9

Browse files
committed
bootstrap: add ./x.py run src/tools/build-manifest
1 parent 12f667f commit e05e2f9

File tree

3 files changed

+44
-2
lines changed

3 files changed

+44
-2
lines changed

src/bootstrap/builder.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ impl<'a> Builder<'a> {
477477
install::Src,
478478
install::Rustc
479479
),
480-
Kind::Run => describe!(run::ExpandYamlAnchors,),
480+
Kind::Run => describe!(run::ExpandYamlAnchors, run::BuildManifest,),
481481
}
482482
}
483483

src/bootstrap/dist.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ pub fn pkgname(builder: &Builder<'_>, component: &str) -> String {
4646
}
4747
}
4848

49-
fn distdir(builder: &Builder<'_>) -> PathBuf {
49+
pub(crate) fn distdir(builder: &Builder<'_>) -> PathBuf {
5050
builder.out.join("dist")
5151
}
5252

src/bootstrap/run.rs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
use crate::builder::{Builder, RunConfig, ShouldRun, Step};
2+
use crate::dist::distdir;
23
use crate::tool::Tool;
4+
use build_helper::output;
35
use std::process::Command;
46

57
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
@@ -41,3 +43,43 @@ fn try_run(builder: &Builder<'_>, cmd: &mut Command) -> bool {
4143
}
4244
true
4345
}
46+
47+
#[derive(Debug, PartialOrd, Ord, Copy, Clone, Hash, PartialEq, Eq)]
48+
pub struct BuildManifest;
49+
50+
impl Step for BuildManifest {
51+
type Output = ();
52+
const ONLY_HOSTS: bool = true;
53+
54+
fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
55+
run.path("src/tools/build-manifest")
56+
}
57+
58+
fn make_run(run: RunConfig<'_>) {
59+
run.builder.ensure(BuildManifest);
60+
}
61+
62+
fn run(self, builder: &Builder<'_>) {
63+
// This gets called by `promote-release`
64+
// (https://github.com/rust-lang/promote-release).
65+
let mut cmd = builder.tool_cmd(Tool::BuildManifest);
66+
let sign = builder.config.dist_sign_folder.as_ref().unwrap_or_else(|| {
67+
panic!("\n\nfailed to specify `dist.sign-folder` in `config.toml`\n\n")
68+
});
69+
let addr = builder.config.dist_upload_addr.as_ref().unwrap_or_else(|| {
70+
panic!("\n\nfailed to specify `dist.upload-addr` in `config.toml`\n\n")
71+
});
72+
73+
let today = output(Command::new("date").arg("+%Y-%m-%d"));
74+
75+
cmd.arg(sign);
76+
cmd.arg(distdir(builder));
77+
cmd.arg(today.trim());
78+
cmd.arg(addr);
79+
cmd.arg(&builder.config.channel);
80+
cmd.arg(&builder.src);
81+
82+
builder.create_dir(&distdir(builder));
83+
builder.run(&mut cmd);
84+
}
85+
}

0 commit comments

Comments
 (0)