Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 12 additions & 4 deletions tools/serialization/flatbuffers/component/component_serializer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,25 @@ pub struct ComponentSerializer;
impl ComponentSerializer {
pub fn serialize(elements: &HashMap<String, LogicComponent>) -> Vec<u8> {
let mut builder = FlatBufferBuilder::new();
let source_file = elements
.values()
.next()

// Iterate in key-sorted order: `HashMap`'s default hasher is randomized
// per process, so `.values()` order is non-deterministic and would make
// this Bazel action non-reproducible across runs.
let mut sorted_keys: Vec<&String> = elements.keys().collect();
sorted_keys.sort();

let source_file = sorted_keys
.first()
.and_then(|key| elements.get(*key))
.map(|e| builder.create_string(e.source_location.file.as_ref()));

// --------------------------
// 1) build components
// --------------------------
let mut comps_map = Vec::with_capacity(elements.len());

for element in elements.values() {
for key in &sorted_keys {
let element = &elements[*key];
let mut relation_offsets = Vec::new();

for r in &element.relations {
Expand Down
Loading