rust: checksum: Use BTreeMap instead of HashMap
By using `BTreeMap`, we force the checksum files to be ordered.
This prevents excessive noise during `./crate_tool regenerate --all`
Bug: 388273315
Test: ./crate_tool regenerate aarch64-paging , temp commit, run again, check no diffs.
Change-Id: Ia1de8a43723329f9ac56fde16f7be6005a449bdd
diff --git a/tools/external_crates/checksum/src/lib.rs b/tools/external_crates/checksum/src/lib.rs
index e14188f..33b2805 100644
--- a/tools/external_crates/checksum/src/lib.rs
+++ b/tools/external_crates/checksum/src/lib.rs
@@ -16,7 +16,7 @@
//! very similar to .cargo-checksum.json
use std::{
- collections::HashMap,
+ collections::BTreeMap,
fs::{remove_file, write, File},
io::{self, BufReader, Read},
path::{Path, PathBuf, StripPrefixError},
@@ -31,7 +31,8 @@
#[derive(Serialize, Deserialize)]
struct Checksum {
package: Option<String>,
- files: HashMap<String, String>,
+ // BTreeMap keeps this reproducible
+ files: BTreeMap<String, String>,
}
#[allow(missing_docs)]
@@ -62,7 +63,7 @@
if checksum_file.exists() {
remove_file(&checksum_file)?;
}
- let mut checksum = Checksum { package: None, files: HashMap::new() };
+ let mut checksum = Checksum { package: None, files: BTreeMap::new() };
for entry in WalkDir::new(crate_dir).follow_links(true) {
let entry = entry?;
if entry.path().is_dir() {