Shorten linker output even more when --verbose is not present
- Don't show environment variables. Seeing PATH is almost never useful, and it can be extremely long. - For .rlibs in the sysroot, replace crate hashes with a `"-*"` string. This will expand to the full crate name when pasted into the shell. - Move `.rlib` to outside the glob. - Abbreviate the sysroot path to `<sysroot>` wherever it appears in the arguments. This also adds an example of the linker output as a run-make test. Currently it only runs on x86_64-unknown-linux-gnu, because each platform has its own linker arguments. So that it's stable across machines, pass BUILD_ROOT as an argument through compiletest through to run-make tests. - Only use linker-flavor=gnu-cc if we're actually going to compare the output. It doesn't exist on MacOS.
This commit is contained in:
@@ -13,6 +13,7 @@ pub(crate) struct Command {
|
||||
args: Vec<OsString>,
|
||||
env: Vec<(OsString, OsString)>,
|
||||
env_remove: Vec<OsString>,
|
||||
env_clear: bool,
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
@@ -36,7 +37,13 @@ impl Command {
|
||||
}
|
||||
|
||||
fn _new(program: Program) -> Command {
|
||||
Command { program, args: Vec::new(), env: Vec::new(), env_remove: Vec::new() }
|
||||
Command {
|
||||
program,
|
||||
args: Vec::new(),
|
||||
env: Vec::new(),
|
||||
env_remove: Vec::new(),
|
||||
env_clear: false,
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn arg<P: AsRef<OsStr>>(&mut self, arg: P) -> &mut Command {
|
||||
@@ -79,6 +86,11 @@ impl Command {
|
||||
self
|
||||
}
|
||||
|
||||
pub(crate) fn env_clear(&mut self) -> &mut Command {
|
||||
self.env_clear = true;
|
||||
self
|
||||
}
|
||||
|
||||
fn _env_remove(&mut self, key: &OsStr) {
|
||||
self.env_remove.push(key.to_owned());
|
||||
}
|
||||
@@ -106,6 +118,9 @@ impl Command {
|
||||
for k in &self.env_remove {
|
||||
ret.env_remove(k);
|
||||
}
|
||||
if self.env_clear {
|
||||
ret.env_clear();
|
||||
}
|
||||
ret
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user