How to build liblicense on MacOSX

Creative Commons(以下CC)という自分の著作物に対するライツを明示する方法がある。 なんて説明は要らないぐらい、CCは認知されている。

明快な内容と、どんなライセンスかを簡単に示す方法があるので、とても使いやすい。ライセンス自体はCCのページから簡単にWebなどのページに埋め込む用のコードを作成してくれるようなツールも用意されている。

面白いのがライセンスの表現自体がURL表記になっていることだ。たとえば、http://creativecommons.org/licenses/by-nc-sa/3.0/のような感じに。URLの該当ページにはライセンスの内容が書いてあり、また、他言語のページも用意されている。

Webなどや文字媒体にはライセンスを書くことは比較的楽に出来るのだけど、わたしはmp3などの音声媒体にライセンスを含めたい。iTunesなどでTagを編集するときに記述できると良いのだけど、残念ながらiTunesにはその機能はないようだ。他のTagエディタで出来るのかはわからない。

CCにもccPublisherというソフトが用意されてあり、それを使えばmp3のID3Tagにライセンス内容を含めることも出来るのだけど、ccPublisherは長い間メンテナンスされてないらしく、しかも何か分からないエラーで書き出しされないことがある。つまり、ちょっと使えないな、と。

ないなら作れば良いという話なのだけど、幸いCCはliblicenseというライセンスの選択、読み書きをするライブラリを公開している。CCがというより、有志が作っているという表現の方が正しいかもしれない。

とりあえず、liblicenseが動けば目的までは近そうなので、liblicenseをMacOSXで動くようにbuildしてみることにした。ここで簡単にbuildできてしまっては話が終わってしまうのだけど、いろいろはまりポイントがあったので、備忘録もかねて手順を書いておこうと思う。

MacにはDeveloper Tool、およびMacPortが導入されていることが前提条件となっている。

さて、liblicenseのソースはここにある。こちらにリリースバージョンが1上がったものがあるのだけど、前者の方がリポジトリの日付が新しかったのでそちらを選んだ。ただし0.8.1版の方も一部必要になるのでダウンロードしておく。適当なディレクトリに展開して、以下liblicense-0.8/で作業を行っている。

MacPortで最低限autoconf、gnome-common、raptorをインストールする。わたしはmp3にライセンスを書き込むのが目的なので、ID3Libもインストールしておく。libid3tagではないところに注意したい。

Portでのインストールが済んだら、目的のliblicenseのビルドに入るわけだけど、いくつか設定しておかないといけないことと、liblicense自体一部修正する必要がある。

まず、環境変数に、

ACLOCAL_FLAGS="-I /opt/local/share/aclocal"
CFLAGS="/opt/local/include"
LDFLAGS="/opt/local/lib"

を設定する。そして、module/io/Makefile.amに

raptor_la_LDFLAGS = -L../../liblicense/.libs -llicense -no-undefined -module -avoid-version

の、太字の部分(-L../../liblicense/.libs -llicense)を追加する。raptorのモジュールがliblicense自体をリンクしているらしいのだけど、リンク指定がないので、私の環境ではシンボルが見つからないというエラーが出ていた。その対策だ。

ここまできたら、ビルド・・・と行きたいのだけど、なぜか0.8版ではいくつかのフォルダが空になっている。0.8.1では含まれているので、それをコピーしておく。空なのはlicenses/とicons/jurisdictions/。

cp -fR ../liblicense-0.8.1/licenses/* licenses/
cp -fR ../liblicense-0.8.1/icons/jurisdictions/* icons/jurisdictions/

などとしても、もちろんFinderでフォルダーをコピーでもOKだ。

さて、ようやくビルドなんだけど、このままだとruby-bindingでエラーが出る。出るのだけど、わたしは使わないのでdisableにしてビルドした。

./autogen.sh --disable-ruby --prefix=/opt/local/

そしてインストール。

sudo make install

こうしてビルドが完成したわけだけど、liblicenseを使うためにもう一つしておかないといけないことがある。liblicenseはxdgmimeというライブラリを使ってファイルのmime typeを判別しているのだけど、xdgmimeのコード自体は含まれているのだけど、定義ファイルが含まれていない。gnomeがインストールされている環境では、もしかしたら標準で存在するものなのかもしれないけど、わたしの環境ではないため、このままでは全部application/octet-streamに判定されてしまう。

liblicenseにmime-type定義ファイルを読み込ませるインターフェイスが用意されていればいいのだけど内包されているので、xdgmimeが想定しているとおりにデータを用意する。

そのために、まず~/.local/share/mimeディレクトリを作成し、そこにglobsというファイルを

audio/mpeg:*.mp3

と、言った内容で作成する。

以上で作業は終了だ。ライブラリだけなのでこれですぐに何か出来るというわけではない(licenseというコマンドも/opt/local/binにインストールされるがいまいちどういうものなのかが分からない)のだけどね。