From c975c84d5faa79c29dcfca5795b4b861ca659458 Mon Sep 17 00:00:00 2001 From: "Paolo G. Giarrusso" Date: Wed, 17 Aug 2016 10:22:37 +0200 Subject: [PATCH] solver: parse cabal errors also on Windows Noticed on #2502. Basically, `isSuffixOf "suffix" "stuff suffix\r"` is spuriously false, so we should better strip `\r`. I've not yet verified that `\r` is actually there; I infer it from the presence of `stripCR` and the parse failure. Time to test this. --- src/Stack/Solver.hs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Stack/Solver.hs b/src/Stack/Solver.hs index 4aba9391a3..7757837096 100644 --- a/src/Stack/Solver.hs +++ b/src/Stack/Solver.hs @@ -136,6 +136,7 @@ cabalSolver menv cabalfps constraintType where errCheck = T.isInfixOf "Could not resolve dependencies" + linesNoCR = map stripCR . T.lines cabalBuildErrMsg e = ">>>> Cabal errors begin\n" <> e @@ -167,7 +168,7 @@ cabalSolver menv cabalfps constraintType else errExit msg parseConflictingPkgs msg = - let ls = dropWhile (not . errCheck) $ T.lines msg + let ls = dropWhile (not . errCheck) $ linesNoCR msg select s = ((T.isPrefixOf "trying:" s) || (T.isPrefixOf "next goal:" s)) && (T.isSuffixOf "(user goal)" s) @@ -180,8 +181,7 @@ cabalSolver menv cabalfps constraintType parseCabalOutput bs = do let ls = drop 1 $ dropWhile (not . T.isPrefixOf "In order, ") - $ map stripCR - $ T.lines + $ linesNoCR $ decodeUtf8 bs (errs, pairs) = partitionEithers $ map parseCabalOutputLine ls if null errs