From 4febdf0c0171121234e7fec1746e8530e2c6c364 Mon Sep 17 00:00:00 2001 From: ilgeco Date: Thu, 26 Feb 2026 18:52:08 +0100 Subject: [PATCH] future proofing against glob order of file --- .../pim-simulator/src/bin/pim-simulator/main.rs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/backend-simulators/pim/pim-simulator/src/bin/pim-simulator/main.rs b/backend-simulators/pim/pim-simulator/src/bin/pim-simulator/main.rs index 7aa9241..56efb5b 100644 --- a/backend-simulators/pim/pim-simulator/src/bin/pim-simulator/main.rs +++ b/backend-simulators/pim/pim-simulator/src/bin/pim-simulator/main.rs @@ -1,4 +1,4 @@ -use anyhow::{Context, Result, bail}; +use anyhow::{bail, Context, Result}; use clap::Parser; use glob::glob; use pimcore::json_to_instruction::json_to_executor; @@ -55,7 +55,6 @@ fn main() -> Result<()> { Ok(()) } - fn populate_crossbar(args: &Args, executor: &mut pimcore::Executable) { let num_cores = executor.cpu_mut().num_core(); @@ -72,7 +71,7 @@ fn populate_crossbar(args: &Args, executor: &mut pimcore::Executable) { .filter_map(|entry| { let path = entry.ok()?.path(); let file_name = path.file_name()?.to_str()?; - + if file_name.starts_with("crossbar_") && file_name.ends_with(".bin") { let num_str = &file_name[9..file_name.len() - 4]; let num = num_str.parse::().ok()?; @@ -94,12 +93,10 @@ fn populate_crossbar(args: &Args, executor: &mut pimcore::Executable) { .execute_store(&bytes) .unwrap(); } - } } } - fn dump_memory(mut executor: pimcore::Executable, args: &Args) -> Result<()> { let dumps: Vec<(i32, i32)> = args .dump @@ -171,12 +168,18 @@ fn retrive_cores(args: &Args) -> Result, anyhow::Error> { } else if let Some(folder) = args.folder.as_ref() { let pattern = folder.join("core*.json"); let pattern_str = pattern.to_str().context("Invalid path encoding")?; - let paths: Vec<_> = glob(pattern_str)?.collect(); + let mut paths: Vec<_> = glob(pattern_str)?.map(|x| x.unwrap()).collect(); + paths.sort_by_cached_key(|x| { + let mut x = x.file_stem().expect("Extracting the stem").to_str().expect("File not utf-8"); + x = &x[5..]; + x.parse::().unwrap() + }); + if paths.is_empty() { bail!("No core*.json files found in {:?}", folder); } for entry in paths { - let path = entry?; + let path = entry; let content = fs::read_to_string(&path) .with_context(|| format!("Failed to read core file: {:?}", path))?; let json: Value = serde_json::from_str(&content)