From 11c681984c0ff08dd020ae82e5cbfb94b2b907d6 Mon Sep 17 00:00:00 2001 From: Lucas Bollen Date: Wed, 19 Feb 2025 13:56:38 +0100 Subject: [PATCH] Add list of `ignoredErrors` to `openOcdWaitForHalt` --- .../src/Bittide/Instances/Hitl/Utils/Program.hs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/bittide-instances/src/Bittide/Instances/Hitl/Utils/Program.hs b/bittide-instances/src/Bittide/Instances/Hitl/Utils/Program.hs index baf3d782e..6b8484177 100644 --- a/bittide-instances/src/Bittide/Instances/Hitl/Utils/Program.hs +++ b/bittide-instances/src/Bittide/Instances/Hitl/Utils/Program.hs @@ -14,7 +14,7 @@ import Paths_bittide_instances import Control.Monad.Catch import Control.Monad.IO.Class -import Data.List (isPrefixOf) +import Data.List (isPrefixOf, isSubsequenceOf) import Data.Maybe (fromJust) import System.IO import System.Posix.Env (getEnvironment) @@ -226,9 +226,16 @@ startPicocomWithLoggingAndEnv devPath stdoutPath stderrPath extraEnv = do pure (picoHandles', cleanupProcess picoHandles) +-- | List of detectors that match on error messages that can be safely ignored. +ignoredErrors :: [String -> Bool] +ignoredErrors = + [ isSubsequenceOf "DMI operation didn't complete in" + ] + -- | Wait until we see "Halting processor", fail if we see an error. openOcdWaitForHalt :: String -> Filter openOcdWaitForHalt s + | any ($ s) ignoredErrors = Continue | "Error:" `isPrefixOf` s = Stop (Error ("Found error in OpenOCD output: " <> s)) | "Halting processor" `isPrefixOf` s = Stop Ok | otherwise = Continue