むつの日記

43846f2d :むつ 2005-07-30 11:59 43846f2dx.txt
>>e01f3987
でつくった configure 支援スクリプトです。少しずつ加筆していきましたら、複雑怪奇になってしまいました。

Attached File Name: cf.sh

* PACKAGENAME は bash-3.0 とか eFarm-1.1 とかです。

基本は変ってません。cf.sh pre とすることで、このスクリプトに必要なファイルやディレクトリを作ります。

今回、obj-PACKAGENAME というサブディレクトリを作るようにしましたので、
$ cd obj-PACKAGENAME
$ vi PACKAGENAME.conf
$ cf.sh conf && cf.sh make && cf.sh install ; xlogo
とでもしてください。
途中でエラーした場合、exit 1 を返すようにしたつもりなのですが、うまくいってない気がします。orz
install は PACKAGENAME/work 以下にインストールされます。主に pkgtool の為。
checkinstall で各種パッケージを作れた気がしますので、他ディストリビューションの方は checkinstall を試してみてください(未確認)。

cf.sh pre で作られるファイル、ディレクトリ:
file: configure.help: ./configure --help の内容そのまま
file: PACKAGENAME.conf: configure.help をこのスクリプトから読むために改変したもの。
-- 全てコメントアウトされていますので、必要に応じてコメントをはずしてください。
file: log/cflags.txt: configure オプションの CFLAGS です。
-- デフォルトでは -mcpu=i686 -march=i686 を設定してます。
-- 必要に応じて -O2 など追加してください。
-- 改行はしないでください。
-- そういや、-mcpu は廃止になったような。
file: log/docs.txt: インストールするドキュメントのリストです。
-- このスクリプトでは $prefix/doc/PACKAGENAME にインストールされます。
-- 今時なら $prefix/share/doc/PACKAGENAME にインストールすべきかもしれません。
-- 詳しくは後述。
file: log/prefix.txt: PACKAGENAME.conf の --prefix と同じものを書いてください。
-- デフォルトでは /usr/local になります。
-- (PREFIX=$(cat log/prefix.txt) ./configure とかしたほうがいいのかも)
-- 改行しないでください。
file: log/src.txt: make するディレクトリから見えるソースがあるディレクトリを指定します。
-- デフォルトでは .. です。obj-PACKAGENAME サブディレクトリではコンパイルに失敗する場合に、ソースがある PACKAGENAME ディレクトリでビルドするよう、. と指定します。
file: log/makeopts.txt: make 時に与えるオプションです。
-- デフォルトは -j2 です。
file: obj-PACKAGENAME/PACKAGENAME.conf: シンボリックリンクです。
dir: obj-PACKAGENAME/log: シンボリックリンクです。
dir: work: 仮想インストールディレクトリです。

log/docs.txt には %gzip, %nogzip, %mkdir, %docdir の4つの命令が使えます。
%gzip 引数なし:
以降のファイルを gzip 圧縮します。
%nogzip 引数なし:
以降のファイルは gzip 圧縮しません。
%mkdir /path/dir/name
work/$prefix/doc/PACKAGENAME に /path/dir/name ディレクトリを作ります。
-p オプション付きなので、深いディレクトリも OK です。
%docdir path/dir/name
ドキュメントが PACKAGENAME/path/dir/name 以下にある場合で、かつ、それを work/$prefix/doc/PACKAGENAE にインストールしたい場合に指定します。
この %docdir を指定しなくとも、path/dir/name 以下にドキュメントがありそれを log/docs.txt に記述すれば、work/$prefix/doc/PACKAGENAME/path/dir/name にインストールします。
自動的にディレクトリは作りませんので、%mkdir 命令を使ってください。

log/docs.txt の例
%gzip
README
INSTALL
%docdir docs
changelog
changelog.old
%mkdir example
%nogzip
example/sample1.rc
example/sample2.rc

こんな感じです。
cf.sh install-doc でドキュメントはインストールされます。

その他:
cf.sh link: シンボリックリンクを張りなおします。
cf.sh docs.sh: install-doc に使うスクリプトを生成します。確認用。
cf.sh strip: work 以下にインストールしたファイルを strip します。また、man page を gzip 圧縮します。
cf.sh all: cf.sh conf && cf.sh make します。
cf.sh check: find . -name "Makefile" -exec grep "\-O" します。
log/force-prefix.txt というファイルを作ると、インストール時に DESTDIR ではなく、prefix を指定してインストールします。cf.sh install が失敗する時用。

なお、log/install.log は作らなくなりました。というか、作れなくなりました。
回避方法はあるにはあるのですが(未確認)。
# DESTDIR=$PREFIX make install && echo "OK." || echo "Faild."
# とかしてるから、tee しても echo が取れるだけ。

そういや、info のこと、すっかり忘れてました。これも gzip 圧縮できるらしいです。
info/dir のこともあるので後まわし。
Powered by shinGETsu.