・make_PlamoBuild.py(その2)
make_PlamoBuild.py は引数としてアーカイブファイル(tar.{gz,bz2})かソースコードを展開 したディレクトリ名を取る,と言いましたが,アーカイブファイルを指定した場合, そのアーカイブを展開して,"ファイル名"-"バージョン番号" というディレクトリ が生成されると想定し,PlamoBuild スクリプトのヘッダー部分の pkgbase や vers, src を設定します.
# 大きなアーカイブファイルからファイル名を取り出すのはコストが高い(時間がかかる)ので決め打ちにしちゃっています
そして,そのディレクトリ中のドキュメントらしきファイル(README とか COPYRIGHT 等のキーワードを用意しています) を取り出して.ヘッダー部分の DOCS 行に設定します.
また,ソースコードを置いたディレクトリに *.patch や *.diff といったファイルがあれば, それらをソースコードへのパッチであると判断して patchfiles 行に設定します.
この patchfiles 行に指定されたファイルは,diff の取り方とかは調べず,一律に ソースコードを展開したディレクトリ内で patch -p1 < $patchfile という形で適用されるので, diff を取る際にはソースツリー全体の diff にしておく必要があります.
たいていのソースコードのアーカイブファイルははこの方法でうまく行くのですが, たまに "ファイル名"-"バージョン番号"/ の形に展開されないソースコードがあり, ディレクトリ名を決め打ちしている make_PlamoBuild.py がエラーになることがあります. そのような場合は,ソースコードを手動で展開した上で,そのディレクトリ名を引数に make_PlamoBuild.py を実行してください.
% /share/Srcs/make_PlamoBuild.py ffmpeg ffmpeg patches: [] making PlamoBuild.ffmpeg ...
この方式で生成した PlamoBuild スクリプトは,ヘッダー情報が正しく設定できていない場合が多いので, 適宜手動で修正する必要があります.
例えば,上記で生成した PlamoBuild.ffmpeg スクリプトのヘッダーはこうなっていて,pkgbase や vers を 別途指定してやる必要があります.
#!/bin/sh ############################################################## url= pkgbase= vers=ffmpeg arch=i586 build=P1 src=-ffmpeg OPT_CONFIG='' DOCS='COPYING.GPL COPYING.LGPL Changelog INSTALL MAINTAINERS README' patchfiles='' ##############################################################
これらヘッダー情報のうち,pkgbase,vers, arch, build はパッケージ名を生成するために 用いられ,src はソースコードを展開したディレクトリを指定することになります.
また,OPT_CONFIG 行では configure スクリプトに指定するオプションを指定します. DOCS 行で指定したファイルは,ドキュメントファイルとして /usr/share/doc/$pkgbase-$vers/ ディレクトリに コピーされ,バイナリファイルと共にインストールされます. patchfiles 行で指定したファイルは,一つづつソースコードに対して適用されます.
上記 ffmpeg 用のビルドスクリプトは以下のように修正しました.
#!/bin/sh ############################################################## url='git clone git://git.ffmpeg.org/ffmpeg/ ; cd ffmpeg ; git clone git://git.ffmpeg.org/libswscale/' pkgbase=ffmpeg vers=git_20081222 arch=i586 build=P1 src=ffmpeg OPT_CONFIG='--enable-shared --enable-gpl --enable-postproc --enable-swscale --enable-avfilter \ --enable-avfilter-lavf --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libspeex \ --enable-libtheora --enable-libvorbis --enable-libx264 --enable-zlib' DOCS='COPYING.GPL COPYING.LGPL Changelog INSTALL MAINTAINERS README' patchfiles='' ##############################################################
このスクリプトから生成されるパッケージは ffmpeg-git_20081222-i586-P1.tgz となります.