haskell-jp / questions #99 at 2022-01-15 20:57:28 +0900

識者がいれば教えてほしいんですけど、text 2.0 で Windows 向け GHC 8.2 の MinGW に付いてこない C ライブラリーを使うようになったんですかね?これは推測でまったくの検討違いかもしれないのですが。
ことの発端としては Glob のテストが通らなくなりまして、エラーメッセージ的にそうかなあと。
C:\sr\ghc-8.2.2\text-2.0-5e3f12ca9a37edf5a48459f7f3969564285f2adb\lib/libHStext-2.0-5e3f12ca9a37edf5a48459f7f3969564285f2adb.a(measure_off.o):measure_off.c:(.text+0x2da): undefined reference to `__get_cpuid_count'

https://github.com/Deewiant/glob/runs/4826516512?check_suite_focus=true#step:6:39
__get_cpuid_count<cpuid.h> でインライン関数として定義されるべき関数のようですね。textの measure_off.c ではGCC 6以降でそれを使うようになっているが、GHC 8.2に付属するGCC 6.2にはそれが含まれない、と。 https://github.com/haskell/text/blob/master/cbits/measure_off.c#L40
同じようなエラーがちょいちょい報告されてますね
https://github.com/haskell/text/issues/385
text-2.0リリース後の1/7にもまさしくGHC 8.2.2でこちらのエラーが。最新のmasterでは直っているっぽいです。
https://github.com/haskell/text/issues/385#issuecomment-1007032602
textのmasterではGHC 8.2 on Windowsでのビルドを禁止することで解決(?)したんですかね
すみません、肝心の「直した」PRをちゃんと読めてませんでした... :cold_sweat:
あっ(なるほど
  -- For GHC 8.2, 8.6.3 and 8.10.1 even TH + C crash Windows linker.
  if os(windows) && impl(ghc >= 8.2 && < 8.4 || == 8.6.3 || == 8.10.1)
    build-depends: base < 0