[[diary/Kojima]]
・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 となります.
#comment