MATSUU Takuto
matsu****@gmail*****
2009年 7月 8日 (水) 22:30:58 JST
松鵜です。 諸々ご回答ありがとうございます。 > Makefile が削除されたことで、 ccs-tools.spec を使った rpmbuild が動作しなく > なりました。今までは Makefile で INSTALLDIR=%{buildroot} という形で > ( rpmbuild から見た) make install 時のルートディレクトリを指定していました。 > (つまり chroot 相当の機能がありました。) > > rpmbuild にとっては、 make install 時のルートディレクトリは > /var/tmp/ccs-tools-1.6.8-2-buildroot/ なのですが、 ./configure の実行時に > --prefix で指定する /usr/ や /usr/local/ とは異なるものです。 > ccs-tools.spec の %build と %install の中から > > ./configure > make > make install > > を呼ぶように修正することになるのだと思っていますが、 make install 時に > ( rpmbuild のために) /var/tmp/ccs-tools-1.6.8-2-buildroot/ を > ルートディレクトリとして、 /usr/ や /usr/local/ にインストールすることは > 可能なのでしょうか?(それができない場合は / をルートディレクトリとして、 > ccs-tools.spec の %files で1ファイルずつ指定するという事態になります。) > すみません、ccs-tools.specをautotoolを利用する形に変更してませんでした。 ccs-tools.spec.inを作成/追加したものを反映しました。specファイル自体のテスト はまだですが、こんな感じになります。 configureを実行するとccs-tools.specが生成されます。 autotool化されたMakefileの場合、INSTALLDIR相当の機能はDESTDIRが該当します。 specとautotoolsは親和性が高く、./configure --prefix=/usr... は %configure で、 make DESTDIR=%{buildroot} install は %makeinstall で対応可能です。 なお、specに埋め込まれたバージョン情報はconfigure.acに埋め込まれた情報を利用する (ccs-tools.spec.inの@VERSION@が置換されます)ので、バージョン番号更新漏れを 防ぐことができるメリットもあります。他のソースに埋め込まれたバージョン番号も 同じような管理が可能です。 autotoolsで出来上がったものは、ソースをいじらずインストールするだけであれば、 autoconf, automakeは不要ですが、逆にソースをいじるのであれば必要となってくる のは、ソースをいじくる開発者寄りのユーザにとっては確かに不便かもしれません。 利用するだけのユーザは特に問題ないのですが、バージョンアップの仕様変更で 苦しめられるのは主に開発者寄りです。:) せっかくならautotoolsなんてどうでしょう?ぐらいの軽い提案だったんで、 autotoolsに振り回されるぐらいなら導入しないというのもありだと思います。 --- その他の回答については了解です。