Я попытался установить generic-haskell из источника, мне удалось, и я могу описать, как я это исправил.Моя инсталляционная платформа - Haskell Platform 2011.2.0.1-x86_64, но следующие инструкции несколько более общие.
Я столкнулся с тремя проблемами, включая первую, которую вы описали (№ 3 ниже).Для других пользователей я также опишу первые два, которые вы, вероятно, также решили.
1) Другие пользователи должны сначала исправить ошибку в зависимости от изменения типа Data.Map.lookup
, для containers
> =0.2.0.0: раньше он возвращал Monad m => m b
(в containers-1.0.0.0
), теперь он возвращает только Maybe b
.Я добавил вызовы к Data.Maybe.maybeToList
, чтобы исправить несколько сайтов вызовов, которым нужно использовать тип списка;Бьюсь об заклад, вы исправили ту же ошибку в некотором роде.Это исправление можно найти по адресу: http://hpaste.org/47624.
2) Еще одна ошибка, с которой я столкнулся в GHC 7, заключается в том, что скрипт настройки не понимает, что он новее, чем GHC 6.8, поэтому он также должен зависетьконтейнеры.настроить вывод, включив эту строку:
проверка, разбит ли базовый пакет (GHC 6.8 или новее) ... нет
Чтобы это исправить, вам нужно заменить
if test $ghc_ma -ge 6 -a $ghc_mi -ge 8; then
с
if test $ghc_ma -eq 6 -a $ghc_mi -ge 8 -o $ghc_ma -ge 7; then
3) Чтобы исправить вашу проблему, вам нужно отредактировать build/generic-haskell.cabal.pkg
(при условии, что вы не выполняете установку на месте с make-на месте).Вам нужно добавить строку id: и исправить строку зависимости, чтобы использовать идентификаторы пакетов, присутствующих в вашей системе, вместо имен пакетов.Вы можете узнать идентификаторы, используя следующие команды (выходные данные на моей системе включены):
$ ghc-pkg field base id
id: base-4.3.1.0-f5c465200a37a65ca26c5c6c600f6c76
$ ghc-pkg field haskell98 id
id: haskell98-1.1.0.1-150131ea75216886448a7146c9e0526b
$ ghc-pkg field containers id
id: containers-0.4.0.0-b4885363abca642443ccd842502a3b7e
Тогда изменение на build/generic-haskell.cabal.pkg
будет:
-depends: base-4.3.1.0
- haskell98-1.1.0.1
- containers-0.4.0.0
+depends: base-4.3.1.0-f5c465200a37a65ca26c5c6c600f6c76
+ haskell98-1.1.0.1-150131ea75216886448a7146c9e0526b
+ containers-0.4.0.0-b4885363abca642443ccd842502a3b7e
Кроме того, вам нужнодобавить строку идентификатора к тому же файлу - подойдет любой идентификатор, если вы измените его, если / когда переустановите библиотеку.Здесь я использовал:
id: generic-haskell-1.80-lib-md5sum-2a7ae9d60440627618ad0b0139ef090b
Я также выровнял все поля с пробелами, как в существующих файлах.Ссылка на синтаксис этого файла находится в: http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/packages.html#installed-pkg-info