Ensure dist::Std for every libstd target. (Closes: #42320)

This fixes cross-compile installation. Half of the logic is actually in there
already in install.rs:install_std but it fails with an error like:

sh: 0: Can't open /<<BUILDDIR>>/rustc-1.21.0+dfsg1/build/tmp/dist/rust-std-1.21.0-powerpc64le-unknown-linux-gnu/install.sh

because the target-arch dist tarball wasn't built as well.
This commit is contained in:
Ximin Luo 2017-11-06 11:34:18 +01:00
parent 54bbd56715
commit 32cf6e64c1

View file

@ -27,10 +27,8 @@ pub fn install_docs(builder: &Builder, stage: u32, host: Interned<String>) {
install_sh(builder, "docs", "rust-docs", stage, Some(host)); install_sh(builder, "docs", "rust-docs", stage, Some(host));
} }
pub fn install_std(builder: &Builder, stage: u32) { pub fn install_std(builder: &Builder, stage: u32, target: Interned<String>) {
for target in &builder.build.targets { install_sh(builder, "std", "rust-std", stage, Some(target));
install_sh(builder, "std", "rust-std", stage, Some(*target));
}
} }
pub fn install_cargo(builder: &Builder, stage: u32, host: Interned<String>) { pub fn install_cargo(builder: &Builder, stage: u32, host: Interned<String>) {
@ -175,11 +173,13 @@ install!((self, builder, _config),
install_docs(builder, self.stage, self.target); install_docs(builder, self.stage, self.target);
}; };
Std, "src/libstd", true, only_hosts: true, { Std, "src/libstd", true, only_hosts: true, {
builder.ensure(dist::Std { for target in &builder.build.targets {
compiler: builder.compiler(self.stage, self.host), builder.ensure(dist::Std {
target: self.target compiler: builder.compiler(self.stage, self.host),
}); target: *target
install_std(builder, self.stage); });
install_std(builder, self.stage, *target);
}
}; };
Cargo, "cargo", _config.extended, only_hosts: true, { Cargo, "cargo", _config.extended, only_hosts: true, {
builder.ensure(dist::Cargo { stage: self.stage, target: self.target }); builder.ensure(dist::Cargo { stage: self.stage, target: self.target });