mirror of
https://github.com/denoland/deno.git
synced 2025-03-03 17:34:47 -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::borrow::Cow;
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
use std::cmp::Ordering;
|
use std::cmp::Ordering;
|
||||||
|
use std::collections::BTreeMap;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::collections::HashSet;
|
use std::collections::HashSet;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
|
@ -515,10 +516,13 @@ async fn sync_resolution_with_fs(
|
||||||
Ok(())
|
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>/`
|
/// Represents a dependency at `node_modules/.deno/<package_id>/`
|
||||||
struct SetupCacheDep<'a> {
|
struct SetupCacheDep<'a> {
|
||||||
previous: Option<&'a HashMap<String, String>>,
|
previous: Option<&'a BTreeMap<String, String>>,
|
||||||
current: &'a mut HashMap<String, String>,
|
current: &'a mut BTreeMap<String, String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> SetupCacheDep<'a> {
|
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)]
|
#[derive(Debug, Default, Serialize, Deserialize, PartialEq, Eq)]
|
||||||
struct SetupCacheData {
|
struct SetupCacheData {
|
||||||
root_symlinks: HashMap<String, String>,
|
root_symlinks: BTreeMap<String, String>,
|
||||||
deno_symlinks: HashMap<String, String>,
|
deno_symlinks: BTreeMap<String, String>,
|
||||||
dep_symlinks: HashMap<String, HashMap<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
|
/// It is very slow to try to re-setup the symlinks each time, so this will
|
||||||
|
|
Loading…
Add table
Reference in a new issue