From f2fc321f217c4496d2b0bdd3a76d6839c5ea83cb Mon Sep 17 00:00:00 2001 From: kpcyrd Date: Fri, 11 Sep 2020 14:40:50 +0200 Subject: [PATCH] Compile libgit2 deterministically by sorting read_dir --- libgit2-sys/build.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libgit2-sys/build.rs b/libgit2-sys/build.rs index 178d931cf9..dadc6c82d1 100644 --- a/libgit2-sys/build.rs +++ b/libgit2-sys/build.rs @@ -1,5 +1,6 @@ use std::env; use std::fs; +use std::io; use std::path::{Path, PathBuf}; use std::process::Command; @@ -199,8 +200,12 @@ fn cp_r(from: impl AsRef, to: impl AsRef) { } fn add_c_files(build: &mut cc::Build, path: impl AsRef) { - for e in path.as_ref().read_dir().unwrap() { - let e = e.unwrap(); + // sort the C files to ensure a deterministic build for reproducible builds + let dir = path.as_ref().read_dir().unwrap(); + let mut paths = dir.collect::>>().unwrap(); + paths.sort_by_key(|e| e.path()); + + for e in paths { let path = e.path(); if e.file_type().unwrap().is_dir() { // skip dirs for now