Как исправить hdevtools - ошибка "GHC_PACKAGE_PATH несовместима .."

Я новичок в haskell, использую появление кода в качестве обучающих примеров. При настройке в этом году я переустановил стек (на новой машине, однако скопировал большинство файлов точек) и начал с моих прошлогодних заметок и не смог снова заставить hdevtools работать.

Я создал новый проект с stack new advent2019. Если это имеет значениеstack buildНа "пустой" проект вроде бы уходит несколько минут - кажется, намного дольше, чем в прошлом году. Я устанавливаю hdevtools с помощьюstack build hdevtools.

Когда я бегу stack exec hdevtools -- check src/Lib.hs Я получаю следующую ошибку:

Cabal error: hdevtools: Use of GHC's environment variable GHC_PACKAGE_PATH is incompatible
with Cabal. Use the flag --package-db to specify a package database (it can be
used multiple times).

Пока я пробовал:

  • Я проверил свою оболочку и сделал rg --no-ignore через мой домашний каталог, чтобы подтвердить GHC_PACKAGE_PATHустанавливается не мной. Также в каталоге проекта.
  • Я не мог понять, как пользоваться упомянутым --package-db флаг - ставя его после hdevtools, я получаю unknown flag ошибка, помещая его в стек, я получаю invalid option.
  • stack exec --no-ghc-package-path hdevtools -- check src/Lib.hs- упоминается здесь
  • Я удалил все возможные связанные файлы: ~/.local/bin/hdevtools, все из ~/.stack, все ~/.ghc*.

Никто не помог с ошибкой.

Полагаю, я упустил из виду что-то очевидное - но вы можете указать на это?

Для полноты:

  • в OS X, 10.15.1
  • stack --version: Version 1.9.3, Git revision 40cf7b37526b86d1676da82167ea8758a854953b (6211 commits) x86_64 hpack-0.31.1
  • stack ghc -- --version: The Glorious Glasgow Haskell Compilation System, version 8.6.5
  • stack path:
stack-root: /Users/me/.stack
project-root: /Users/me/Code/advent2019
config-location: /Users/me/Code/advent2019/stack.yaml
bin-path: /Users/me/.stack/snapshots/x86_64-osx/lts-14.16/8.6.5/bin:/Users/me/.stack/compiler-tools/x86_64-osx/ghc-8.6.5/bin:/Users/me/.stack/programs/x86_64-osx/ghc-8.6.5/bin:/usr/local/texlive/2018basic/bin/x86_64-darwin:/Users/me/.local/bin/:/Users/me/.gem/bin:/Users/me/.yarn/bin:/Users/me/Library/Python/3.7/bin/:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Library/TeX/texbin:.:/Applications/Wireshark.app/Contents/MacOS
programs: /Users/me/.stack/programs/x86_64-osx
compiler-exe: /Users/me/.stack/programs/x86_64-osx/ghc-8.6.5/bin/ghc
compiler-bin: /Users/me/.stack/programs/x86_64-osx/ghc-8.6.5/bin
compiler-tools-bin: /Users/me/.stack/compiler-tools/x86_64-osx/ghc-8.6.5/bin
local-bin: /Users/me/.local/bin
extra-include-dirs: 
extra-library-dirs: 
snapshot-pkg-db: /Users/me/.stack/snapshots/x86_64-osx/lts-14.16/8.6.5/pkgdb
local-pkg-db: /Users/me/Code/advent2019/.stack-work/install/x86_64-osx/lts-14.16/8.6.5/pkgdb
global-pkg-db: /Users/me/.stack/programs/x86_64-osx/ghc-8.6.5/lib/ghc-8.6.5/package.conf.d
ghc-package-path: /Users/me/Code/advent2019/.stack-work/install/x86_64-osx/lts-14.16/8.6.5/pkgdb:/Users/me/.stack/snapshots/x86_64-osx/lts-14.16/8.6.5/pkgdb:/Users/me/.stack/programs/x86_64-osx/ghc-8.6.5/lib/ghc-8.6.5/package.conf.d
snapshot-install-root: /Users/me/.stack/snapshots/x86_64-osx/lts-14.16/8.6.5
local-install-root: /Users/me/Code/advent2019/.stack-work/install/x86_64-osx/lts-14.16/8.6.5
snapshot-doc-root: /Users/me/.stack/snapshots/x86_64-osx/lts-14.16/8.6.5/doc
local-doc-root: /Users/me/Code/advent2019/.stack-work/install/x86_64-osx/lts-14.16/8.6.5/doc
dist-dir: .stack-work/dist/x86_64-osx/Cabal-2.4.0.1
/Users/me/Code/advent2019/.stack-work/install/x86_64-osx/lts-14.16/8.6.5/hpc
local-bin-path: /Users/me/.local/bin
ghc-paths: /Users/me/.stack/programs/x86_64-osx

2 ответа

Решение

Оказывается, я упустил из виду .cabalкаталог в моей чистке. Хоть еще и протереть пришлось.stack перед установкой hdevtools. Также пришлось построить тест отдельно, чтобы я получал ошибки зависимости.

Я не думаю, что это решение для тех, кто продуктивно использует haskell. Напоминает мне дни, когда я работал с Windows 95, когда служба поддержки просила вас отформатировать и переустановить для каждой проблемы.

В --no-ghc-package-pathрешение должно было работать. Однако вы можете просто запуститьhdevtoolsвне стека. На машине Linux, если я точно выполню следующий набор команд:

$ stack new advent2019
$ cd advent2019
$ stack build
$ stack install hdevtools
$ hdevtools check src/Lib.hs

тогда hdevtools запускается без ошибок и работает в фоновом режиме.

Если ваша оболочка не может найти hdevtools, может быть, ~/.local/bin не находится на вашем пути, поэтому добавьте его или попробуйте вместо этого:

$ ~/.local/bin/hdevtools check src/Lib.hs
Другие вопросы по тегам