smellman's Broken Diary

クソみたいなもんです

coreutils とか使おうよ!

以前弊社の技術 blog の DoRuby でMacOSX の sed に気をつけろという記事を書いたのですが、今日 vimperator の Makefile がいろいろ酷い感じになっていたので修正したのを気に coreutils の方も気になりだしました。
たぶん、 Linux とかしか使ってない人は GNU style なものばかり使ってしまうのですが、そこらへんを Makefile でやられてしまうと Mac OS X ユーザが即死するというオチになってしまっています。
具体的には cp コマンドすら互換性がない状態です。そりゃ BSD style だから当たり前なんだけど、結構きっついのです。
なので、こんな風に書き換えてあげると幸せになります。

CP = cp
...
  $(CP) -Lr --parents hoge -t fuga

これで cp を Mac OS XMacPorts の gcp で実行するにはこんな感じになります。

$ make CP=gcp

動作させるにはもちろん MacPorts などで coreutils を入れておく必要があります。他のパッケージシステムが coreutils のやつをどうやってエイリアスしているのかはわかりませんが、たぶん似たようなものがあるのだろうと思います。
とりあえず、 vimperator の方は ML にパッチを送ったので、いろいろ参考になるかもしれません。