今年のMax-SAT EvalutionとPseudo Boolean Evaluationへの投稿を完了。
色々とやりたいことはあるのだけれど、結局大したことはできず、前回の投稿からそんなに変わってはいない。
Max-SAT Evaluation
http://maxsat.ia.udl.cat/home/
Pseudo Boolean Evaluation
http://maxsat.ia.udl.cat/introduction/
投稿したもの
https://github.com/msakai/toysolver/releases/tag/pb2015-20150701
https://github.com/msakai/toysolver/releases/tag/maxsat2015-20150701
以下、余談ながら、〆切直前に、静的リンクと Template Haskell の問題が発生して、ちょっと焦った。 静的リンクのバイナリを作るために cabal configure --disable-shared --ghc-options="-static -optl-static -optl-pthread" としてたんだけれど、これだと Template Haskell のコード実行時に依存ライブラリがうまく読み込まれず、以下の様なエラーになってしまう。
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbeginT.o: relocation R_X86_64_32 against `__TMC_END__' can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-linux-gnu/4.8/crtbeginT.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
ごく最近 Template Haskell を使ってビルドしたバイナリにgitのハッシュ値を埋め込むようにしたのだけれど、こんな落とし穴があったとは……
https://github.com/msakai/toysolver/blob/6a35f19f9941363e144e70b172b6e8d672dbff88/src/ToySolver/Version.hs
https://github.com/msakai/toysolver/blob/6a35f19f9941363e144e70b172b6e8d672dbff88/src/ToySolver/Version/TH.hs
結局、cabalファイル中にフラグを用意して、Template Haskell を使っていない実行ファイル部分でだけ、上記のフラグが有効になるようにして対処。