EclipseFP ищет GHC и не может его найти

У меня работает Eclipse (Kepler Service Release 2) + EclipseFP (2.6.0) + платформа Haskell под Windows 8.1 x64. В какой-то момент после установки Cabal EclipseFP перестал работать и показал мне:

Требуется версия программы ghc>=6.4, но она не может быть найдена.

Я имею:

  1. Деинсталлированная платформа Haskell
  2. Удалено C:\Users\myuser\AppData\Roaming\cabal*
  3. Удалено C:\Program Files (x86)\Haskell*
  4. Установите Haskell Platform 2013.2
  5. Запустите Eclipse с моим рабочим пространством на Haskell
  6. Попробуйте построить мой проект
  7. Он дал мне эту ошибку о GHC и не может построить его.

Конфигурация EclipseFP обнаружила все исполняемые файлы Haskell Helper. Он уже нашел Cabal 1.16.0.2 и GHC 7.6.3. Из командной строки GHC и клика найдены и работают. "cabal build" также работает над проектом из командной строки.

Это сообщение не говорит почти ничего! Если бы я мог видеть путь, он ищет GHC или откуда он взял этот путь...

РЕДАКТИРОВАТЬ: Сообщение от buildwrapper:

"C: \ Users \ home \ AppData \ Roaming \ cabal \ bin \ buildwrapper.exe синхронизировать --force=false --tempfolder=.dist-buildwrapper --cabalpath=C:\Program Files (x86)\Haskell Platform\2013.2.0.0\lib\extralibs\bin\cabal.exe --cabalfile=D:\Project\haskell2\SomeGL\SomeGL.cabal --cabalflags= --logcabal=true
настройка, потому что setup_config нет
"C:\Program Files (x86)\Haskell Platform\2013.2.0.0\lib\extralibs\bin\cabal.exe" "configure" "--verbose=1" "--user" "--enable-tests" "--enable-benchmarks" "--builddir=D:\Project\haskell2\SomeGL.dist-buildwrapper\dist" cabal.exe: Требуется версия ghc программы>=6.4, но ее не удалось найти."

Вызывая точно последнюю строку из cmd.exe (как обычный пользователь без прав администратора), все работает нормально:

"C:\Program Files (x86)\Haskell Platform\2013.2.0.0\lib\extralibs\bin\cabal.exe" "configure" "--verbose=1" "--user" "--enable-tests" "--enable-benchmarks" "--builddir=D:\Project\haskell2\SomeGL\.dist-buildwrapper\dist"

РЕДАКТИРОВАТЬ: Чтобы найти потенциальное окружение пути, которое используется, я попытался запустить консоль GHCi внутри Eclipse и попытался:

import System.Environment
x <- getEnvironment
filter (\ (a,_) -> a == "Path") x

и получил то, что начинается с:

[("Путь","C:\Program Files (x86)\Haskell\bin;C:\Program Files (x86)\Haskell Platform\2013.2.0.0\lib\extralibs\bin;C:\Program Files (x86)\Haskell Platform\2013.2.0.0\bin;...")]

Первая папка недействительна, но платформа Haskell действительна и работает. Еще одна вещь, которую я нашел. Один раз я выполнил команду "Build All", в Eclipse был запущен Process с GHC и путь был:

Запуск исполняемого файла C:\Program Files (x86)\Haskell Platform\2013.2.0.0\bin\ghc.exe

Я посмотрел детали этого процесса, и он запускается от того же пользователя, с которым в настоящее время работает Eclipse. И путь правильный, но я все еще получил ошибку:

Требуется версия программы ghc>=6.4, но она не может быть найдена.

Запуск из командной строки все еще работает. В программе есть ошибки, но только в командной строке я их вижу.

Может ли кто-нибудь помочь с поиском этой проблемы?

РЕДАКТИРОВАТЬ: Я нашел некоторые интересные проблемы. Выполнение команды "Build All" выполняет эту команду:

C: \ Users \ myuser \ AppData \ Roaming \ cabal \ bin \ buildwrapper.exe синхронизировать --force=false --tempfolder=.dist-buildwrapper --cabalpath=C:\Program Files (x86)\Haskell Platform\2013.2.0.0\lib\extralibs\bin\cabal.exe --cabalfile=D:\haskell\SomeGL\SomeGL.cabal --cabalflags= --logcabal=true

Какой запуск из командной строки выдает ошибку. Проблема в том, что вокруг cabalpath нет кавычек, потому что в нем есть пробелы. Когда я запускаю его таким образом из командной строки, он работает:

C:\Users\myuser\AppData\Roaming\cabal\bin\buildwrapper.exe synchronize --force=false --tempfolder=.dist-buildwrapper --cabalpath="C:\Program Files (x86)\Haskell Platform\2013.2.0.0\lib\extralibs\bin\cabal.exe" --cabalfile=D:\haskell\SomeGL\SomeGL.cabal --cabalflags= --logcabal=true

Я думаю, что все параметры "--cabalfile" должны иметь кавычки, потому что пути могут содержать пробелы. Я до сих пор не знаю, является ли это проблемой в Eclipse.

2 ответа

Решение

Я нашел проблему!

Дело в том, что EclipseFP 2.6.0 использует переменную "PATH" в верхнем регистре, но моя Windows 8.1 использует "Path", и с программной точки зрения можно иметь две допустимые переменные "PATH" и "Path" при выполнении BuildWrapper и Cabal. Так что что-то не так.

Обойти эту проблему можно, если переименовать из панели управления | Система | Переменные среды для пользователя и системы от "Путь" до "ПУТЬ".

Я надеюсь, что это можно исправить в EclipseFP, чтобы оно могло работать в будущем в любом случае.

Сборка вашего проекта означает, что под сценой запускается сборка Cabal. Если вы активируете режим отладки на странице предпочтений исполняемого файла помощника Haskell (покажите ответы BuildWrapper), вы должны увидеть точную отправляемую команду сборки Cabal. Возможно, что путь, используемый в Eclipse, отличается от пути, используемого в командной строке, проверьте ярлыки затмения. EclipseFP может найти исполняемые файлы, потому что он ищет также в некоторых известных папках на окнах. Вы также можете взять текущую версию EclipseFP для разработчиков из github. Теперь он должен передать --with-ghc вызовам cabal, чтобы убедиться, что путь, обнаруженный в Eclipse, используется.

Другие вопросы по тегам