MacPortsでswftools@0.9.2を入れようとしたら失敗した

$ port search swftoolsswftools @0.9.2 (graphics)
    SWF manipulation and generation tools
$ sudo port install swftools
[snip]
--->  Building swftools
Error: org.macports.build for port swftools returned: command execution failed
Please see the log file for port swftools for details:
    /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_graphics_swftools/swftools/main.log
To report a bug, follow the instructions in the guide:
    http://guide.macports.org/#project.tickets
Error: Processing of port swftools failed

swftoolsを使いたくて、MacPortsにあったから入れようとしてみたら、エラーで失敗しました。

現状

たぶん、依存してるライブラリ、giflibのバージョンの問題っぽい。後述するメーリングリストのログを、流し読みしたところ*1swftools側で近いうちに、新しいgiflibに対応するということになってるっぽいです。

情報源

Changed 4 weeks ago by ryandesign@…

Replying to simon.groenewolt@…:

I've joined the swftools mailinglist and posted a message regarding this error.

Here are the messages in that thread:

#34553 (swftools: Undefined symbols _PrintGifError) – MacPorts

エラーメッセージで示されたMacPortsのログを見て、そこにあるキーワードを元に探してみると、MacPortsTracに該当するチケットがありました。

> This is not a Mac-specific issue; it affects any user who has
> upgraded to giflib 4.2.0, which is the latest stable version of
> giflib is that has been released by its developers:
>
> http://sourceforge.net/projects/giflib/

I was aware of the above, yes. My suggestion of a downgrade to
4.1.6 was meant as a temporary solution, not a permanent fox.

http://lists.nongnu.org/archive/html/swftools-common/2012-05/msg00056.html

MacPortのチケットにswftoolsメーリングリストのURLが4つ貼ってあります。4個目のURLを見ると、giflib最新の4.2.0だと発生するという報告に対し、とりあえずの対応として4.1.6を使う解決策が出てました。

> The developers of swftools should update swftools to be compatible
> with the latest stable version of giflib by no longer attempting to
> use this function.

Now the issue has been flagged, I agree. I am sure the issue will be
rectified shortly.

http://lists.nongnu.org/archive/html/swftools-common/2012-05/msg00056.html

同じメール内には、それなりに色々と書いてあるけど、とりあえず、最後のほうにswftools側で対応する的な事が書かれてました。このメールが2012/05/31の事だけど、今回エラーが出たって事は、まだMacPortsリポジトリには少なくとも反映されてないみたい。

疑問

回避策として提示されている、giflib 4.1.6を使うという事だけど、この辺の知識が足りなくてやり方がわからない。

LinuxだとldconfigとかLD_LIBRARY_PATHとかを、どうにかするんだと思うんだけど、Macにはldconfig/etc/ld.so.confが無く、どうやら別の仕組みになっているみたい((そもそも一時的な対応なのに、/etc/ld.so.confを変えるのは良くないんだろうけど))。

Mac OS Xの標準のバイナリファイルフォーマット(Mach-O)は、Linuxでのバイナリファイルフォーマット(ELF)とは異なっており、共有ライブラリの扱い方も異なっていたと記憶しているので、Mac OS Xにはldconfigは存在しなかった(=必要ない)と思います。

Macでldコマンド、ldconfigコマンドは使用できますか 【OKWAVE】

MacLinuxの違いは、こういうことらしい。

この辺りいい加減ちゃんと理解しないといけないよなぁ。

MacPortsで入れる代わりに自前でビルドしたライブラリを使ってswftoolsをビルドしてみた - kanonjiの日記

ライブラリ検索パスに入っていない場所に置いてあるライブラリを使って、セルフビルドしてみました。

環境

Mac Mac OS X 10.5.8(Leopard
giflib 4.2.0
swftools 0.9.2(入れようとしたもの)

*1:読み間違ってなければ