如何使堆栈不将“-fdiagnostics-color=always”传递给 GHC
How do I make stack not pass "-fdiagnostics-color=always" to GHC
我是一名 Windows 用户,最近迁移到最新的堆栈 (1.6.3) 和最新的 GHC (8.2.2)。似乎在最新的 GHC 中有可能带有错误消息的颜色输出。颜色通过 windows 无法理解的 ANSI 转义序列出现,因此它只是在真实文本之间显示一堆垃圾文本。
[1 of 2] Compiling IOSystem.Haskeline ( app\IOSystem\Haskeline.hs, .stack-work\distc8418a7\build\galbreak\galbreak-tmp\IOSystem\Haskeline.o )
←[;1mapp\IOSystem\Haskeline.hs:28:13: ←[;1m←[31merror:←[0m←[0m←[;1m←[0m←[0m←[;1m
* Couldn't match type `[Char]' with `Text'
Expected type: InputT m (LineResult Text)
Actual type: InputT m (Either LineFailure String)
* In a stmt of a 'do' block: pure $ Right line
In the expression:
do modifyHistory $ addHistoryUnlessConsecutiveDupe line
pure $ Right line
In a case alternative:
Just line
-> do modifyHistory $ addHistoryUnlessConsecutiveDupe line
pure $ Right line←[0m←[0m
←[;1m←[34m |←[0m←[0m
←[;1m←[34m28 |←[0m←[0m ←[;1m←[31mpure $ Right line←[0m←[0m
←[;1m←[34m |←[0m←[0m←[;1m←[31m ^^^^^^^^^^^^^^^^^←[0m←[0m
←[0m←[0m←[0m
我尝试将 ghc-options: -fdiagnostics-color=never
放入我的 project.cabal 文件的库和可执行部分,但它似乎没有效果。我用详细的输出重新 运行,似乎堆栈正在将它自己的“-fdiagnostics-color=always”命令放在我指定的 ghc-options 之后。
我只是需要堆栈以某种方式不是那样做。
stack -v --cabal-verbose build
(省略很多文字)
2018-01-14 18:54:24.009085: [信息] "C:\Users\Daniel\AppData\Local\Programs\stack\x86_64-windows\ghc-8.2.2\bin\ghc.EXE" “--make” “-no-link” “-fbuilding-cabal-package” “ -O" "-static" "-outputdir" ".stack-work\distc8418a7\build\galbreak\galbreak-tmp" "-odir" ".stack-work\distc8418a7\build\galbreak\galbreak-tmp" "-hidir" ".stack-work\distc8418a7\build\galbreak\galbreak-tmp" "-stubdir" ".stack-work\distc8418a7\build\galbreak\galbreak-tmp" "-i" "-i.stack-work\distc8418a7\build\galbreak\galbreak-tmp" "-iapp" "-i.stack-work\distc8418a7\build\galbreak\autogen" "-i.stack-work\distc8418a7\build\global-autogen" "-I.stack-work\distc8418a7\build\galbreak\autogen" "-I.stack-work\distc8418a7\build\global-autogen" "-I.stack-work\distc8418a7\build\galbreak\galbreak-tmp" "-IC:\Users\Daniel\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw64\include" "-optP-include" "-optP.stack-work\distc8418a7\build\galbreak\autogen\cabal_macros.h" "-hide-all-packages" "-Wmissing-home-modules" "-no-user-package-db" "-package-db" "C:\sr\snapshotscecb13\pkgdb" "-package-db" "D:\dev\galaxy-break.stack-work\install\ccbce92a\pkgdb" "-package-db" ".stack-work\distc8418a7\package.conf.inplace" "-package-id" "base-4.10.1.0" "-package-id" "text-1.2.2.2-9VTsh6V7U7hpagw2HDvpZ" "-package-id " "haskeline-0.7.4.2-DGuJCOcZAmc2Ddce2AkQr0" "-XHaskell2010" "IOSystem.Haskeline" "app\Main.hs" "-W" "-threaded" "-rtsopts" "-with-rtsopts=-N" "-O2" "-fdiagnostics-color =never" "-ddump-hi" "-ddump-to-file" "-fdiagnostics-color=always"
您可以使用 --color never
.
您似乎使用了不寻常的终端配置。解决此问题的一种选择可能是向 ansi-terminal 提交 PR 以使其 https://hackage.haskell.org/package/ansi-terminal-0.8/docs/System-Console-ANSI.html#v:hSupportsANSI 为您的终端 False
产生
目前无法在您的 config.yaml
中指定它,但也许它应该是 - 我已经打开 https://github.com/commercialhaskell/stack/issues/3778 来跟踪添加它。不是高优先级
我是一名 Windows 用户,最近迁移到最新的堆栈 (1.6.3) 和最新的 GHC (8.2.2)。似乎在最新的 GHC 中有可能带有错误消息的颜色输出。颜色通过 windows 无法理解的 ANSI 转义序列出现,因此它只是在真实文本之间显示一堆垃圾文本。
[1 of 2] Compiling IOSystem.Haskeline ( app\IOSystem\Haskeline.hs, .stack-work\distc8418a7\build\galbreak\galbreak-tmp\IOSystem\Haskeline.o )
←[;1mapp\IOSystem\Haskeline.hs:28:13: ←[;1m←[31merror:←[0m←[0m←[;1m←[0m←[0m←[;1m
* Couldn't match type `[Char]' with `Text'
Expected type: InputT m (LineResult Text)
Actual type: InputT m (Either LineFailure String)
* In a stmt of a 'do' block: pure $ Right line
In the expression:
do modifyHistory $ addHistoryUnlessConsecutiveDupe line
pure $ Right line
In a case alternative:
Just line
-> do modifyHistory $ addHistoryUnlessConsecutiveDupe line
pure $ Right line←[0m←[0m
←[;1m←[34m |←[0m←[0m
←[;1m←[34m28 |←[0m←[0m ←[;1m←[31mpure $ Right line←[0m←[0m
←[;1m←[34m |←[0m←[0m←[;1m←[31m ^^^^^^^^^^^^^^^^^←[0m←[0m
←[0m←[0m←[0m
我尝试将 ghc-options: -fdiagnostics-color=never
放入我的 project.cabal 文件的库和可执行部分,但它似乎没有效果。我用详细的输出重新 运行,似乎堆栈正在将它自己的“-fdiagnostics-color=always”命令放在我指定的 ghc-options 之后。
我只是需要堆栈以某种方式不是那样做。
stack -v --cabal-verbose build
(省略很多文字)
2018-01-14 18:54:24.009085: [信息] "C:\Users\Daniel\AppData\Local\Programs\stack\x86_64-windows\ghc-8.2.2\bin\ghc.EXE" “--make” “-no-link” “-fbuilding-cabal-package” “ -O" "-static" "-outputdir" ".stack-work\distc8418a7\build\galbreak\galbreak-tmp" "-odir" ".stack-work\distc8418a7\build\galbreak\galbreak-tmp" "-hidir" ".stack-work\distc8418a7\build\galbreak\galbreak-tmp" "-stubdir" ".stack-work\distc8418a7\build\galbreak\galbreak-tmp" "-i" "-i.stack-work\distc8418a7\build\galbreak\galbreak-tmp" "-iapp" "-i.stack-work\distc8418a7\build\galbreak\autogen" "-i.stack-work\distc8418a7\build\global-autogen" "-I.stack-work\distc8418a7\build\galbreak\autogen" "-I.stack-work\distc8418a7\build\global-autogen" "-I.stack-work\distc8418a7\build\galbreak\galbreak-tmp" "-IC:\Users\Daniel\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw64\include" "-optP-include" "-optP.stack-work\distc8418a7\build\galbreak\autogen\cabal_macros.h" "-hide-all-packages" "-Wmissing-home-modules" "-no-user-package-db" "-package-db" "C:\sr\snapshotscecb13\pkgdb" "-package-db" "D:\dev\galaxy-break.stack-work\install\ccbce92a\pkgdb" "-package-db" ".stack-work\distc8418a7\package.conf.inplace" "-package-id" "base-4.10.1.0" "-package-id" "text-1.2.2.2-9VTsh6V7U7hpagw2HDvpZ" "-package-id " "haskeline-0.7.4.2-DGuJCOcZAmc2Ddce2AkQr0" "-XHaskell2010" "IOSystem.Haskeline" "app\Main.hs" "-W" "-threaded" "-rtsopts" "-with-rtsopts=-N" "-O2" "-fdiagnostics-color =never" "-ddump-hi" "-ddump-to-file" "-fdiagnostics-color=always"
您可以使用 --color never
.
您似乎使用了不寻常的终端配置。解决此问题的一种选择可能是向 ansi-terminal 提交 PR 以使其 https://hackage.haskell.org/package/ansi-terminal-0.8/docs/System-Console-ANSI.html#v:hSupportsANSI 为您的终端 False
产生
目前无法在您的 config.yaml
中指定它,但也许它应该是 - 我已经打开 https://github.com/commercialhaskell/stack/issues/3778 来跟踪添加它。不是高优先级