Как запустить шейк без стека

Я создал рекомендованный build.sh файл из раздела «Запуск» руководства Shake:

#!/bin/sh
mkdir -p _shake
ghc --make Shakefile.hs -v -rtsopts -threaded -with-rtsopts=-I0 -outputdir=_shake -o _shake/build && _shake/build "$@"

но запуск этого сценария дает следующую ошибку:

[1 of 1] Compiling Main             ( Shakefile.hs, _shake/Main.o )

Shakefile.hs:1:1: error:
    Could not find module ‘Development.Shake’
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
  |
1 | import Development.Shake
  | ^^^^^^^^^^^^^^^^^^^^^^^^

Shakefile.hs:2:1: error:
    Could not find module ‘Development.Shake.Command’
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
  |
2 | import Development.Shake.Command
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Shakefile.hs:3:1: error:
    Could not find module ‘Development.Shake.FilePath’
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
  |
3 | import Development.Shake.FilePath
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Shakefile.hs:4:1: error:
    Could not find module ‘Development.Shake.Util’
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
  |
4 | import Development.Shake.Util
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Я сделал cabal v2-install shake --installpath=bin, но потом все равно получаю ту же ошибку. Я тоже пробовал bin/shake, но получил ту же ошибку.

Я попытался добавить -package shake к команде ghc в build.sh, но получил эту ошибку:

<command line>: cannot satisfy -package shake
    (use -v for more information)

Добавление -v, как предлагается, дает эту ошибку:

Glasgow Haskell Compiler, Version 8.8.4, stage 2 booted by GHC version 8.8.3
Using binary package database: /Users/avh4/.ghcup/ghc/8.8.4/lib/ghc-8.8.4/package.conf.d/package.cache
package flags [-package shake{package shake True ([])}]
loading package database /Users/avh4/.ghcup/ghc/8.8.4/lib/ghc-8.8.4/package.conf.d
<command line>: cannot satisfy -package shake
    (use -v for more information)

Как правильно использовать Shake без стека Haskell (желательно с использованием только ghc 8.8 установлен с ghcup и / или с помощью команд cabal-install v2)?


person avh4    schedule 23.09.2020    source источник


Ответы (1)


Я понял, что мне нужно использовать флаг --lib с cabal new-install, иначе будет установлен только двоичный файл shake.

После запуска cabal new-install --lib shake исходный сценарий build.sh с добавлением -package shake к ghc аргументам теперь работает! И runhaskell -package shake Shakefile.hs теперь тоже работает.

person avh4    schedule 23.09.2020