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