cabal new-установить hakyll не удается создать зависимость

#haskell #cabal #hakyll

#haskell #cabal #хакилл

Вопрос:

После установки ghcup я пытаюсь установить hakyll с помощью команды cabal new-install 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 typeEither 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 typeEither 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 typeEither 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 typeEither 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.
  

Есть идеи, что происходит не так и как это исправить?

Ответ №1:

text-conversions Пакет несовместим с новейшей версией base16-bytestring , выпущенной на этой неделе. Таким образом, сборка завершается неудачно.

Краткосрочное решение — добавить ограничение, используя флаг --constraint="base16-bytestring < 1" в cabal install команде или добавив строку constraints: base16-bytestring < 1 в файл ~/.cabal/config . (Ссылка на соответствующий раздел документации cabal)

В долгосрочной перспективе text-conversions пакет должен быть исправлен, чтобы добавить верхнюю границу версии для зависимости base16-bytestring < 1 . Вы можете спросить о состоянии дел в следующих выпусках:

В идеале (не обязательно) text-conversions base16-bytestring-1.0.0.0 должна быть выпущена новая версия compatible with, но все равно необходимо исправить границы существующих версий, чтобы избежать когда-либо нарушенных планов сборки.

Комментарии:

1. Большое спасибо Ли-яо! Он строится сейчас.