Как запустить шейк без стека
Я создал рекомендуемые
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)?
1 ответ
Я понял, что мне нужно использовать
--lib
флаг с
cabal new-install
в противном случае устанавливается только двоичный файл Shake.
После запуска
cabal new-install --lib shake
, оригинал
build.sh
скрипт с добавлением
-package shake
к
ghc
аргументы теперь работают! И
runhaskell -package shake Shakefile.hs
тоже работает сейчас.