Mac, XCode 4, доморощенный Haskell: Не можете установить utf8-light? - PullRequest
3 голосов
/ 06 апреля 2011

Я не понимаю следующее сообщение об ошибке, но знаю, что раньше я установил utf8-light в Linux без проблем.Может кто-то пролить свет на то, что не так?Это проблема LLVM, проблема GHC 7 или проблема с utf8-light?

$ cabal install utf8-light
Resolving dependencies...
Configuring utf8-light-0.4...
Preprocessing library utf8-light-0.4...
Building utf8-light-0.4...
[1 of 1] Compiling Codec.Binary.UTF8.Light ( src/Codec/Binary/UTF8/Light.hs, dist/build/Codec/Binary/UTF8/Light.o )
SpecConstr
    Function `$j_s2oG{v} [lid]'
      has five call patterns, but the limit is 3
    Use -fspec-constr-count=n to set the bound
    Use -dppr-debug to see specialisations
In file included from /usr/local/Cellar/ghc/7.0.3/lib/ghc-7.0.3/include/Stg.h:230,

                 from /var/folders/1+/1+3Ih2g9EriMfl8UHRtdQU+++TM/-Tmp-/ghc39083_0/ghc39083_0.hc:3:0:


/usr/local/Cellar/ghc/7.0.3/lib/ghc-7.0.3/include/stg/Regs.h:177:0:
     sorry, unimplemented: LLVM cannot handle register variable ‘R1’, report a bug
cabal: Error: some packages failed to install:
utf8-light-0.4 failed during the building phase. The exception was:
ExitFailure 1

Ответы [ 3 ]

2 голосов
/ 06 апреля 2011

Поскольку это проблема с LLVM на Mac, у вас есть несколько вариантов:

  • установить GHC 7.0.3 (которая исправляет эту проблему, IIRC),
  • дождитесь следующей недели, когда выйдет новая версия платформы Haskell
  • компилировать через один из других бэкэндов GHC, например -fasm или -fvia-C

например.

$ cabal install utf8-string --ghc-options=-fasm

должно принудительно использовать нативный кодоген.

1 голос
/ 06 апреля 2011

Это не так уж и полезно, но поиск этой проблемы привел меня к этому сообщению об ошибке . Кажется, что это проблема LLVM и не имеет ничего общего с Haskell. Тем не менее, я не знаю, о чем говорю, и понятия не имею, как это исправить. Извините, я не мог быть более полезным.

0 голосов
/ 06 апреля 2011

llvm-gcc и llvm не поддерживают глобальные переменные, закрепленные в регистре.Таким образом, единственным решением будет переписать код, чтобы не использовать их.Локальные переменные хороши, так как можно автоматически переписать доступ к ним в inline asm.

...