Получение ошибки при использовании библиотеки gtk2hs-buildtool в проекте Haskell с использованием Stack - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь добавить зависимость gtk2hs-buildtool в мой проект на Haskell, но при сборке стека возникает следующая ошибка.

In the dependencies for TicTacToe-0.1.0.0:
    gtk2hs-buildtools needed, but the stack configuration has no specified version  (latest matching
                      version is 0.13.5.4)
needed since TicTacToe is a build target.

Файл TicTacToe.cabal:

library
  exposed-modules:
      TicTacToeEngine
  other-modules:
      Paths_TicTacToe
  hs-source-dirs:
      src
  build-depends:
      base >=4.7 && <5,
      gtk2hs-buildtools
  default-language: Haskell2010

1 Ответ

1 голос
/ 04 ноября 2019

Если вы используете инструмент stack, вам не следует трогать файл <packagename>.cabal. stack отвечает за его генерацию из package.yaml. Несмотря на то, что обычной практикой является изменение <packagename>.cabal, рабочий процесс разработки будет проще, если вы этого не сделаете.

Файлы, которые вас интересуют (и те, которые использует инструмент stack)stack.yaml и package.yaml.

В stack.yaml вы должны увидеть запись с именем resolver: lts-XX.XX. Это означает, что ваша версия зависимостей управляется так, что они совпадают с указанными в lts (он же snapshot). Вы можете перейти к https://www.stackage.org/,, щелкнуть по вашей версии lts и выполнить поиск пакета gtk2hs-buildtools, чтобы получить правильную версию для вашего проекта (пример: lts-12.26 использует gtk2hs-buildtools-0.13.4.0). В вашем package.yaml, в разделе dependencies введите запись - gtk2hs-buildtools

Начиная с lts-13.11 и выше gtk2hs-buildtools недоступно в стеке, поэтому вам необходимо добавить ее как дополнительнуюнизинав stack.yaml, в разделе extra-dep добавьте следующую запись gtk2hs-buildtools-0.13.4.0 (или номер версии, которую вы хотите использовать). Затем добавьте package.yaml и введите gtk2hs-buildtools. Необходимо добавить запись в оба файла. Обратитесь к документации по стеку, чтобы понять, почему.

Просто для того, чтобы убедиться, что вы можете построить свой проект, ваши файлы должны выглядеть примерно так:

, если используется определитель выше или равен 13.11

stack.yaml

resolver: lts-13.11
extra-deps: 
 - gtk2hs-buildtools-0.13.4.0

package.yaml

dependencies:
 - base
 - gtk2hs-buildtools

при использовании резольвера ниже 13.11

stack.yaml

resolver: lts-12.26
extra-deps:

package.yaml

dependencies:
 - base
 - gtk2hs-buildtools
...