cabal新安装的hakill无法建立依赖关系



安装ghcup后,我尝试使用命令cabal new-install hakyll安装hakyll。这导致依赖项text-conversions库中的构建错误:

Failed to build text-conversions-0.3.0.
Build log (
/home/me/.cabal/logs/ghc-8.8.4/text-conversions-0.3.0-e3c3dbd414a885ff0e8ec81ad4c2c319c5dff5772ce6392ac561833941ecfd06.log
):
Configuring library for text-conversions-0.3.0..
Preprocessing library for text-conversions-0.3.0..
Building library for text-conversions-0.3.0..
[1 of 1] Compiling Data.Text.Conversions ( src/Data/Text/Conversions.hs, dist/build/Data/Text/Conversions.o )
src/Data/Text/Conversions.hs:152:5: error:
• Couldn't match expected type ‘Either String B.ByteString’
with actual type ‘(B.ByteString, [Char])’
• In the pattern: (bs, "")
In a case alternative: (bs, "") -> Just $ Base16 bs
In the expression:
case Base16.decode (T.encodeUtf8 txt) of
(bs, "") -> Just $ Base16 bs
(_, _) -> Nothing
|
152 |     (bs, "") -> Just $ Base16 bs
|     ^^^^^^^^
src/Data/Text/Conversions.hs:153:5: error:
• Couldn't match expected type ‘Either String B.ByteString’
with actual type ‘(a1, b1)’
• In the pattern: (_, _)
In a case alternative: (_, _) -> Nothing
In the expression:
case Base16.decode (T.encodeUtf8 txt) of
(bs, "") -> Just $ Base16 bs
(_, _) -> Nothing
|
153 |     (_,  _)  -> Nothing
|     ^^^^^^^
src/Data/Text/Conversions.hs:164:5: error:
• Couldn't match expected type ‘Either String BL.ByteString’
with actual type ‘(BL.ByteString, [Char])’
• In the pattern: (bs, "")
In a case alternative: (bs, "") -> Just $ Base16 bs
In the expression:
case Base16L.decode (TL.encodeUtf8 $ TL.fromStrict txt) of
(bs, "") -> Just $ Base16 bs
(_, _) -> Nothing
|
164 |     (bs, "") -> Just $ Base16 bs
|     ^^^^^^^^
src/Data/Text/Conversions.hs:165:5: error:
• Couldn't match expected type ‘Either String BL.ByteString’
with actual type ‘(a0, b0)’
• In the pattern: (_, _)
In a case alternative: (_, _) -> Nothing
In the expression:
case Base16L.decode (TL.encodeUtf8 $ TL.fromStrict txt) of
(bs, "") -> Just $ Base16 bs
(_, _) -> Nothing
|
165 |     (_,  _)  -> Nothing
|     ^^^^^^^
cabal: Failed to build text-conversions-0.3.0 (which is required by
exe:hakyll-init from hakyll-4.13.4.0). See the build log above for details.

知道出了什么问题以及如何解决吗?

text-conversions软件包与本周发布的最新版本base16-bytestring不兼容。所以构建失败了。

短期解决方案是使用cabal install命令中的标志--constraint="base16-bytestring < 1"添加约束,或将行constraints: base16-bytestring < 1添加到文件~/.cabal/config。(链接到阴谋集团文件的相关章节(

从长远来看,必须修复text-conversions包,才能在依赖项base16-bytestring < 1上添加版本上限。你可以在以下问题中询问事物的状态:

  • https://github.com/cjdev/text-conversions/pull/10
  • https://github.com/haskell/base16-bytestring/issues/14

理想情况下(不一定(,应该发布与base16-bytestring-1.0.0.0兼容的text-conversions的新版本,但仍有必要修复现有版本的边界,以避免出现损坏的构建计划。

最新更新