From 2f89688ca974944781878a74873801597c0b1f11 Mon Sep 17 00:00:00 2001 From: Hugo van der Wijst Date: Tue, 15 Jan 2019 22:42:50 -0800 Subject: Make builds reproducible This is done by using `BTreeMap`s and `BTreeSet`s to get deterministic ordering. Also updated the CI job to check reproducibility of all examples. --- macros/src/syntax.rs | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) (limited to 'macros/src/syntax.rs') diff --git a/macros/src/syntax.rs b/macros/src/syntax.rs index ad7d8bd..581eb83 100644 --- a/macros/src/syntax.rs +++ b/macros/src/syntax.rs @@ -1,5 +1,5 @@ use std::{ - collections::{HashMap, HashSet}, + collections::{BTreeMap, BTreeSet}, iter, u8, }; @@ -120,10 +120,10 @@ impl App { pub fn parse(items: Vec, args: AppArgs) -> parse::Result { let mut idle = None; let mut init = None; - let mut exceptions = HashMap::new(); - let mut interrupts = HashMap::new(); - let mut resources = HashMap::new(); - let mut tasks = HashMap::new(); + let mut exceptions = BTreeMap::new(); + let mut interrupts = BTreeMap::new(); + let mut resources = BTreeMap::new(); + let mut tasks = BTreeMap::new(); let mut free_interrupts = None; for item in items { @@ -418,25 +418,25 @@ impl App { } } -pub type Idents = HashSet; +pub type Idents = BTreeSet; -pub type Exceptions = HashMap; +pub type Exceptions = BTreeMap; -pub type Interrupts = HashMap; +pub type Interrupts = BTreeMap; -pub type Resources = HashMap; +pub type Resources = BTreeMap; pub type Statics = Vec; -pub type Tasks = HashMap; +pub type Tasks = BTreeMap; -pub type FreeInterrupts = HashMap; +pub type FreeInterrupts = BTreeMap; pub struct Idle { pub args: IdleArgs, pub attrs: Vec, pub unsafety: Option, - pub statics: HashMap, + pub statics: BTreeMap, pub stmts: Vec, } @@ -607,7 +607,7 @@ pub struct Init { pub args: InitArgs, pub attrs: Vec, pub unsafety: Option, - pub statics: HashMap, + pub statics: BTreeMap, pub stmts: Vec, // TODO remove in v0.5.x pub assigns: Vec, @@ -703,7 +703,7 @@ pub struct Exception { pub args: ExceptionArgs, pub attrs: Vec, pub unsafety: Option, - pub statics: HashMap, + pub statics: BTreeMap, pub stmts: Vec, } @@ -791,7 +791,7 @@ pub struct Interrupt { pub args: InterruptArgs, pub attrs: Vec, pub unsafety: Option, - pub statics: HashMap, + pub statics: BTreeMap, pub stmts: Vec, } @@ -1070,8 +1070,8 @@ pub struct Static { } impl Static { - fn parse(items: Vec) -> parse::Result> { - let mut statics = HashMap::new(); + fn parse(items: Vec) -> parse::Result> { + let mut statics = BTreeMap::new(); for item in items { if statics.contains_key(&item.ident) { @@ -1104,7 +1104,7 @@ pub struct Task { pub attrs: Vec, pub unsafety: Option, pub inputs: Vec, - pub statics: HashMap, + pub statics: BTreeMap, pub stmts: Vec, } -- cgit v1.2.3