mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-01 11:13:43 +00:00
Fix "Remove src_files and remove_file"
This commit is contained in:
parent
43929a8a75
commit
7ff0df5102
@ -92,7 +92,7 @@ impl<'a> ArchiveBuilder<'a> for ArArchiveBuilder<'a> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn build(mut self) {
|
fn build(mut self) -> bool {
|
||||||
enum BuilderKind {
|
enum BuilderKind {
|
||||||
Bsd(ar::Builder<File>),
|
Bsd(ar::Builder<File>),
|
||||||
Gnu(ar::GnuBuilder<File>),
|
Gnu(ar::GnuBuilder<File>),
|
||||||
@ -191,6 +191,8 @@ impl<'a> ArchiveBuilder<'a> for ArArchiveBuilder<'a> {
|
|||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let any_members = !entries.is_empty();
|
||||||
|
|
||||||
// Add all files
|
// Add all files
|
||||||
for (entry_name, data) in entries.into_iter() {
|
for (entry_name, data) in entries.into_iter() {
|
||||||
let header = ar::Header::new(entry_name, data.len() as u64);
|
let header = ar::Header::new(entry_name, data.len() as u64);
|
||||||
@ -216,6 +218,8 @@ impl<'a> ArchiveBuilder<'a> for ArArchiveBuilder<'a> {
|
|||||||
self.sess.fatal(&format!("Ranlib exited with code {:?}", status.code()));
|
self.sess.fatal(&format!("Ranlib exited with code {:?}", status.code()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
any_members
|
||||||
}
|
}
|
||||||
|
|
||||||
fn inject_dll_import_lib(
|
fn inject_dll_import_lib(
|
||||||
|
@ -100,7 +100,7 @@ impl<'a> ArchiveBuilder<'a> for ArArchiveBuilder<'a> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn build(mut self) {
|
fn build(mut self) -> bool {
|
||||||
use std::process::Command;
|
use std::process::Command;
|
||||||
|
|
||||||
fn add_file_using_ar(archive: &Path, file: &Path) {
|
fn add_file_using_ar(archive: &Path, file: &Path) {
|
||||||
@ -133,6 +133,8 @@ impl<'a> ArchiveBuilder<'a> for ArArchiveBuilder<'a> {
|
|||||||
BuilderKind::Bsd(ar::Builder::new(File::create(&self.config.dst).unwrap()))
|
BuilderKind::Bsd(ar::Builder::new(File::create(&self.config.dst).unwrap()))
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let any_members = !self.entries.is_empty();
|
||||||
|
|
||||||
// Add all files
|
// Add all files
|
||||||
for (entry_name, entry) in self.entries.into_iter() {
|
for (entry_name, entry) in self.entries.into_iter() {
|
||||||
match entry {
|
match entry {
|
||||||
@ -193,6 +195,8 @@ impl<'a> ArchiveBuilder<'a> for ArArchiveBuilder<'a> {
|
|||||||
if !status.success() {
|
if !status.success() {
|
||||||
self.config.sess.fatal(&format!("Ranlib exited with code {:?}", status.code()));
|
self.config.sess.fatal(&format!("Ranlib exited with code {:?}", status.code()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
any_members
|
||||||
}
|
}
|
||||||
|
|
||||||
fn inject_dll_import_lib(&mut self, _lib_name: &str, _dll_imports: &[DllImport], _tmpdir: &MaybeTempDir) {
|
fn inject_dll_import_lib(&mut self, _lib_name: &str, _dll_imports: &[DllImport], _tmpdir: &MaybeTempDir) {
|
||||||
|
@ -97,13 +97,14 @@ impl<'a> ArchiveBuilder<'a> for LlvmArchiveBuilder<'a> {
|
|||||||
|
|
||||||
/// Combine the provided files, rlibs, and native libraries into a single
|
/// Combine the provided files, rlibs, and native libraries into a single
|
||||||
/// `Archive`.
|
/// `Archive`.
|
||||||
fn build(mut self) {
|
fn build(mut self) -> bool {
|
||||||
let kind = self.llvm_archive_kind().unwrap_or_else(|kind| {
|
let kind = self.llvm_archive_kind().unwrap_or_else(|kind| {
|
||||||
self.sess.fatal(&format!("Don't know how to build archive of type: {}", kind))
|
self.sess.fatal(&format!("Don't know how to build archive of type: {}", kind))
|
||||||
});
|
});
|
||||||
|
|
||||||
if let Err(e) = self.build_with_llvm(kind) {
|
match self.build_with_llvm(kind) {
|
||||||
self.sess.fatal(&format!("failed to build archive: {}", e));
|
Ok(any_members) => any_members,
|
||||||
|
Err(e) => self.sess.fatal(&format!("failed to build archive: {}", e)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -270,7 +271,7 @@ impl<'a> LlvmArchiveBuilder<'a> {
|
|||||||
kind.parse().map_err(|_| kind)
|
kind.parse().map_err(|_| kind)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn build_with_llvm(&mut self, kind: ArchiveKind) -> io::Result<()> {
|
fn build_with_llvm(&mut self, kind: ArchiveKind) -> io::Result<bool> {
|
||||||
let mut additions = mem::take(&mut self.additions);
|
let mut additions = mem::take(&mut self.additions);
|
||||||
let mut strings = Vec::new();
|
let mut strings = Vec::new();
|
||||||
let mut members = Vec::new();
|
let mut members = Vec::new();
|
||||||
@ -353,7 +354,7 @@ impl<'a> LlvmArchiveBuilder<'a> {
|
|||||||
};
|
};
|
||||||
Err(io::Error::new(io::ErrorKind::Other, msg))
|
Err(io::Error::new(io::ErrorKind::Other, msg))
|
||||||
} else {
|
} else {
|
||||||
Ok(())
|
Ok(!members.is_empty())
|
||||||
};
|
};
|
||||||
for member in members {
|
for member in members {
|
||||||
llvm::LLVMRustArchiveMemberFree(member);
|
llvm::LLVMRustArchiveMemberFree(member);
|
||||||
|
@ -50,7 +50,7 @@ pub trait ArchiveBuilder<'a> {
|
|||||||
where
|
where
|
||||||
F: FnMut(&str) -> bool + 'static;
|
F: FnMut(&str) -> bool + 'static;
|
||||||
|
|
||||||
fn build(self);
|
fn build(self) -> bool;
|
||||||
|
|
||||||
fn inject_dll_import_lib(
|
fn inject_dll_import_lib(
|
||||||
&mut self,
|
&mut self,
|
||||||
|
@ -2503,8 +2503,9 @@ fn add_upstream_rust_crates<'a, B: ArchiveBuilder<'a>>(
|
|||||||
}) {
|
}) {
|
||||||
sess.fatal(&format!("failed to build archive from rlib: {}", e));
|
sess.fatal(&format!("failed to build archive from rlib: {}", e));
|
||||||
}
|
}
|
||||||
archive.build();
|
if archive.build() {
|
||||||
link_upstream(&dst);
|
link_upstream(&dst);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user