Build manpage archive deterministically

Keep deterministic builds for Cargo! The changes here are:

* Sort files being added to the archive to ensure they're added in the
  same order on all platforms.
* Flag the archive builder as "deterministic mode" which means it won't
  pick up fields like mtime.

Closes #8599
This commit is contained in:
Alex Crichton 2020-08-07 14:46:15 -07:00
parent 449743b1ac
commit 624acc8e2b
1 changed files with 7 additions and 2 deletions

View File

@ -14,10 +14,15 @@ fn compress_man() {
.filename("man.tar")
.write(dst, Compression::best());
let mut ar = tar::Builder::new(encoder);
ar.mode(tar::HeaderMode::Deterministic);
let mut add_files = |dir, extension| {
for entry in fs::read_dir(dir).unwrap() {
let path = entry.unwrap().path();
let mut files = fs::read_dir(dir)
.unwrap()
.map(|e| e.unwrap().path())
.collect::<Vec<_>>();
files.sort();
for path in files {
if path.extension() != Some(extension) {
continue;
}