mirror of
https://github.com/denoland/deno.git
synced 2024-11-21 15:04:11 -05:00
fix: make .setup-cache.bin in node_modules more reproducible (#24480)
This commit is contained in:
parent
ed49f00e04
commit
3c91d597ce
1 changed files with 12 additions and 5 deletions
|
@ -7,6 +7,7 @@ mod bin_entries;
|
|||
use std::borrow::Cow;
|
||||
use std::cell::RefCell;
|
||||
use std::cmp::Ordering;
|
||||
use std::collections::BTreeMap;
|
||||
use std::collections::HashMap;
|
||||
use std::collections::HashSet;
|
||||
use std::fs;
|
||||
|
@ -515,10 +516,13 @@ async fn sync_resolution_with_fs(
|
|||
Ok(())
|
||||
}
|
||||
|
||||
// Uses BTreeMap to preserve the ordering of the elements in memory, to ensure
|
||||
// the file generated from this datastructure is deterministic.
|
||||
// See: https://github.com/denoland/deno/issues/24479
|
||||
/// Represents a dependency at `node_modules/.deno/<package_id>/`
|
||||
struct SetupCacheDep<'a> {
|
||||
previous: Option<&'a HashMap<String, String>>,
|
||||
current: &'a mut HashMap<String, String>,
|
||||
previous: Option<&'a BTreeMap<String, String>>,
|
||||
current: &'a mut BTreeMap<String, String>,
|
||||
}
|
||||
|
||||
impl<'a> SetupCacheDep<'a> {
|
||||
|
@ -534,11 +538,14 @@ impl<'a> SetupCacheDep<'a> {
|
|||
}
|
||||
}
|
||||
|
||||
// Uses BTreeMap to preserve the ordering of the elements in memory, to ensure
|
||||
// the file generated from this datastructure is deterministic.
|
||||
// See: https://github.com/denoland/deno/issues/24479
|
||||
#[derive(Debug, Default, Serialize, Deserialize, PartialEq, Eq)]
|
||||
struct SetupCacheData {
|
||||
root_symlinks: HashMap<String, String>,
|
||||
deno_symlinks: HashMap<String, String>,
|
||||
dep_symlinks: HashMap<String, HashMap<String, String>>,
|
||||
root_symlinks: BTreeMap<String, String>,
|
||||
deno_symlinks: BTreeMap<String, String>,
|
||||
dep_symlinks: BTreeMap<String, BTreeMap<String, String>>,
|
||||
}
|
||||
|
||||
/// It is very slow to try to re-setup the symlinks each time, so this will
|
||||
|
|
Loading…
Reference in a new issue