Index: sdk/lib/_internal/pub/lib/src/io.dart |
diff --git a/sdk/lib/_internal/pub/lib/src/io.dart b/sdk/lib/_internal/pub/lib/src/io.dart |
index 90e8cf749092ae8a36a81a986526d2ba49c7a7bb..864d6f4c6171087dc81ac367f6f86200fb014488 100644 |
--- a/sdk/lib/_internal/pub/lib/src/io.dart |
+++ b/sdk/lib/_internal/pub/lib/src/io.dart |
@@ -793,8 +793,16 @@ Future<bool> extractTarGz(Stream<List<int>> stream, String destination) { |
return _extractTarGzWindows(stream, destination); |
} |
- return startProcess("tar", |
- ["--extract", "--gunzip", "--directory", destination]).then((process) { |
+ var args = ["--extract", "--gunzip", "--directory", destination]; |
+ if (Platform.operatingSystem == "linux") { |
+ // BSD tar (the default on OS X) can insert strange headers to a tarfile |
+ // that GNU tar (the default on Linux) is unable to understand. This will |
+ // cause GNU tar to emit a number of harmless but scary-looking warnings |
+ // which are silenced by this flag. |
+ args.insert(0, "--warning=no-unknown-keyword"); |
+ } |
+ |
+ return startProcess("tar", args).then((process) { |
// Ignore errors on process.std{out,err}. They'll be passed to |
// process.exitCode, and we don't want them being top-levelled by |
// std{out,err}Sink. |