Skip to content

Commit dbe8055

Browse files
committed
Auto merge of #45322 - infinity0:master, r=alexcrichton
When cross-compiling, also build target-arch tarballs for libstd. (Closes: #42320) 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 fixes that so the overall install works. There is one minor bug in the existing code which this commit doesn't fix - the install.log from multiple runs of the installer gets clobbered, which seems like it might interfere with the uninstall process (I didn't look very deeply into this, because it doesn't affect what I need to do.) The actual installed files under DESTDIR seem fine though - either they are installed under an arch-specific path, or the multiple runs will clobber the same path with the same arch-independent file.
2 parents 58557fa + 32cf6e6 commit dbe8055

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

src/bootstrap/install.rs

+9-9
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,8 @@ pub fn install_docs(builder: &Builder, stage: u32, host: Interned<String>) {
2727
install_sh(builder, "docs", "rust-docs", stage, Some(host));
2828
}
2929

30-
pub fn install_std(builder: &Builder, stage: u32) {
31-
for target in &builder.build.targets {
32-
install_sh(builder, "std", "rust-std", stage, Some(*target));
33-
}
30+
pub fn install_std(builder: &Builder, stage: u32, target: Interned<String>) {
31+
install_sh(builder, "std", "rust-std", stage, Some(target));
3432
}
3533

3634
pub fn install_cargo(builder: &Builder, stage: u32, host: Interned<String>) {
@@ -175,11 +173,13 @@ install!((self, builder, _config),
175173
install_docs(builder, self.stage, self.target);
176174
};
177175
Std, "src/libstd", true, only_hosts: true, {
178-
builder.ensure(dist::Std {
179-
compiler: builder.compiler(self.stage, self.host),
180-
target: self.target
181-
});
182-
install_std(builder, self.stage);
176+
for target in &builder.build.targets {
177+
builder.ensure(dist::Std {
178+
compiler: builder.compiler(self.stage, self.host),
179+
target: *target
180+
});
181+
install_std(builder, self.stage, *target);
182+
}
183183
};
184184
Cargo, "cargo", _config.extended, only_hosts: true, {
185185
builder.ensure(dist::Cargo { stage: self.stage, target: self.target });

0 commit comments

Comments
 (0)