Glib Гремлин с GHC 7,4 - PullRequest
       1

Glib Гремлин с GHC 7,4

3 голосов
/ 22 января 2012

Я выполняю этот процесс, протестирован с GHC 7.2.2 для установки gtk2hs и соответствующего комплекта, но я столкнулся с небольшим затруднением.Я использую Mac OS X Lion, glib 2.30.2, установленный через homebrew, и ghc 7.4 (кандидат на выпуск незадолго до Рождества).Я полагаю, что моя версия gcc может быть актуальной

bash-3.2$ gcc --version
i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)

Проблема возникает при попытке установить зависимость glib во время cabal install gtk.Я пробовал раздельные cabal unpack glib и cabal install, и я получаю эту параноидальную жалобу указателя.

bash-3.2$ cabal install
Resolving dependencies...
Configuring glib-0.12.2...
Building glib-0.12.2...
Preprocessing library glib-0.12.2...
System/Glib/hsgclosure.c: In function 'gtk2hs_closure_marshal':

System/Glib/hsgclosure.c:110:0:
     warning: passing argument 1 of 'rts_evalIO' from incompatible pointer type

System/Glib/hsgclosure.c:110:0:
     error: void value not ignored as it ought to be

Соответствующая строка соответствующего файла

cap=rts_evalIO(CAP rts_apply(CAP (HaskellObj)runIO_closure, call),&ret);

, но у меня естьне умение ее интерпретировать.

Я задал тот же вопрос в комментарии к дискуссии reddit , которая привела меня к процессу в первую очередь, но я подумал, что могу искатьи здесь мудрость.

Изменил ли GHC 7.4 способ, которым это делается, или более вероятно, что что-то еще сломалось, ранее в настройке?Это не очевидно эта проблема , но на этом уровне очень мало для меня очевидно.У меня нет хорошей ментальной модели того, что происходит.

Я был бы благодарен за любой сарай.

Ответы [ 2 ]

7 голосов
/ 23 января 2012

дарки получают http://code.haskell.org/gtk2hs/

из журнала:

Thu Jan 19 22:50:06 PST 2012  Duncan Coutts <duncan@community.haskell.org>
  * Fix the type generator for GHC 7.4
  GHC 7.4 is stricter about FFI imports with newtypes, the newtype
  constructor must be visible at the point of import.

Thu Jan 19 22:42:43 PST 2012  Duncan Coutts <duncan@community.haskell.org>
  * Fix cairo for GHC 7.4
  Changes in Num type class

Thu Jan 19 22:40:20 PST 2012  Duncan Coutts <duncan@community.haskell.org>
  * Fix glib for change in RTS API in GHC 7.4
3 голосов
/ 22 января 2012

Да, GHC 7.4 изменил некоторые вещи. rts_evalIO определен в include / RtsAPI.h, ранее он был

Capability * 
rts_evalIO (Capability *, HaskellObj p, /*out*/HaskellObj *ret);

Теперь в 7.4 это

void rts_evalIO (/* inout */ Capability **,
                 /* in    */ HaskellObj p,
                 /* out */   HaskellObj *ret);

Другие функции rts_eval* изменились аналогичным образом. Короче говоря, glib-0.12.2 не собирается с 7.4. Либо взломайте его самостоятельно, чтобы он скомпилировался (я подозреваю, весьма нетривиально), либо подождите и используйте 7.2.2, пока не выйдет новый glib, который работает с 7.4.

...