ThriftのMacportsパッケージ

今月のWEB+DB PRESSでも特集されていたThriftですが、Macportsに無い(debでも無いのですぐに作られるのは期待できない)ようだったので自分でPortfileを作ってみました。以下のファイルをコピー&ペーストしてPortfileという名前で保存し

$ sudo mkdir -p /opt/local/var/localports/devel/thrift
$ sudo cp Portfile /opt/local/local/var/localports/devel/thrift/
$ cd /opt/local/var/localports
$ sudo portindex
$ sudo port -v selfupdate

と実行すればMacportsにtxが組み込まれる。

$ port list thrift
thrift                         @20080411p1     devel/thrift

以下がPortfileの中身

PortSystem      1.0

name            thrift
version         20080411p1
categories      devel
description     A software framework for scalable cross-language services development.
long_description  Thrift is a software framework for scalable cross-language services development. It combines a powerful software stack wi$
homepage          http://developers.facebook.com/thrift/
platforms         darwin
master_sites      http://developers.facebook.com/thrift/
checksums         md5 8a28f61c897aeb388ef77c1ccb8b91d2
depends_lib       port:boost
depends_run       port:python25
configure.args    --with-libevent=no \
                  --with-java=no \
                  --enable-java=no \
                  --with-csharp=no \
                  --enable-gen-csharp=no \
                  --with-erlang=no \
                  --enable-gen-perl=no \
                  --enable-gen-php=no \
                  --enable-gen-ruby=no
configure.env-append PY_PREFIX=${prefix}

variant libevent {
        configure.args-delete   --with-libevent=no
        depends_lib-append      port:libevent
}

variant perl {
        configure.args-delete --enable-gen-perl=no
        depends_lib-append      port:perl5.8
        depends_lib-append      port:p5-bit-vector
        depends_run-append      port:p5-class-accessor
        post-configure {
                    system "cd ${worksrcpath}/lib/perl && perl Makefile.PL && cd ${worksrcpath}"
        }
        post-build {
                    system "cd ${worksrcpath}/lib/perl && make && cd ${worksrcpath}"
        }
        post-install {
                    system "cd ${worksrcpath}/lib/perl && make install && cd ${worksrcpath}"
        }

}

variant ruby {
        configure.args-delete --enable-gen-ruby=no
        depends_lib-append      port:ruby
        post-configure {
                    system "cd ${worksrcpath}/lib/rb && ruby setup.rb config && cd ${worksrcpath}"
        }
        post-build {
                    system "cd ${worksrcpath}/lib/rb && ruby setup.rb setup && cd ${worksrcpath}"
        }
        post-install {
                    system "cd ${worksrcpath}/lib/rb && ruby setup.rb install && cd ${worksrcpath}"
        }
}

default_variants        +libevent +perl +ruby

これで、以下のコマンドでインストールできます。

$ sudo port -v install thrift

尚、このパッケージでインストールされるThriftではC++,Python,Ruby,Perlしか使えません。本来はこの他にもPHP,Java,C#,Ocamo,Smalltalk,Haskell,Cocoa等でも使えますがインストールコマンドやドキュメントが無かったり、ユーザープログラムと共に同梱する必要があるものであったりしたので見送りました。また、Ruby, Perlに関しては必要なければ-ruby, -perlのオプションを付けることによってインストール対象から外すことができます。