Category: ccache
openoffice.org-2.0.3をインストール
July 3rd, 2006portsnapしたら、editors/openoffice-2.0のportが2.0.3に更新されていた。
今まで、portの方は、2.0.3rc{3,5,6,7}と更新が重ねられていたけど、openoffice.orgのportは、ビルドに時間もかかることだし、特に2.0.2のバージョンの使用にも問題がなかったので、あえて、他のportsを更新する際にも、
# portupgrade -aRr -x editors/openoffice.org-2.0
のようにして、openoffice.orgのportの更新は保留していた。
しかし、今回は、リリース版ということなので、久しぶりにアップグレードしてみることにした。
pkgtools.confは、前回と同じく、
MAKE_ARGS = {
'editors/openoffice.org-2.0' => [
'LOCALIZED_LANG=ja',
'-DWITHOUT_MOZILLA',
'-DWITH_CCACHE',
],
}
のように設定してある。
ただ、いつぞやから、/etc/rc.confに、
tmpmfs="YES" tmpsize="64m"
と記述しており、/tmpに、64MBのメモリディスクをマウントするようにしていた。
これでは、portupgrade時のログで、/tmpがきついと思われたので、
# env TMPDIR=/var/tmp portupgrade editors/openoffice.org-2.0
と、容量に余裕のあるディスクを、環境変数TMPDIRに指定してビルドすることにした。
(最終的には、ログファイルの大きさは、40,133,051 bytesであった)
ccacheの新規キャッシュは、以下の通り。
# ccache -s cache directory /root/.ccache cache hit 717 cache miss 12431 called for link 462 compile failed 42 preprocessor error 27 not a C/C++ file 53 autoconf compile/link 421 no input file 69 files in cache 24862 cache size 448.6 Mbytes max cache size 976.6 Mbytes
更新履歴 2006/04/19
April 19th, 2006私の環境には直接関係ないと思うけど、
が来てたんで、なんとなくアップグレード。
前回同様、ccacheを使って、buildkernelを行ってみた。
| buildkernel前 | buildkernel後 | 差分 | |
|---|---|---|---|
| cache directory | /root/.ccache | /root/.ccache | - |
| cache hit | 1237 | 2474 | 1237 |
| cache miss | 1247 | 1248 | 1 |
| called for link | 3 | 4 | 1 |
| not a C/C++ file | 7 | 10 | 3 |
| unsupported compiler option | 2 | 3 | 1 |
| files in cache | 29446 | 29448 | 2 |
| cache size | 139.9 Mbytes | 139.9 Mbytes | 0(?) |
| max cache size | 976.6 Mbytes | 976.6 Mbytes | - |
- *1 ちなみに
GENERICなコンフィギュレーションじゃないですよ。
所要、11分37秒。
# uname -r 6.0-RELEASE-p7
に。
更新履歴 2006/03/23
March 23rd, 2006の更新が来てたんで、アップグレード。
まずは、
# cd /usr/src # make update
で、cvsupを使って、ソースを同期。
ccacheを使いたかったので、先日の設定を反映させるため、
# source /etc/csh.cshrc # env | grep -i ccache PATH=/usr/local/libexec/ccache:/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/root/bin CCACHE_PATH=/usr/bin:/usr/local/bin
で必要な環境変数が登録されていることを確認。
今回は、buildworldは行わず、2.と3.に関しては、それぞれの指示に従って、個別に更新。
まずは、2.のopieから。
# cd /usr/src/usr.bin/opiepasswd # make obj && make depend && make && make install
次に、3.のsendmailを更新。
# cd /usr/src/lib/libsm # make obj && make depend && make # cd /usr/src/lib/libsmutil # make obj && make depend && make # cd /usr/src/usr.sbin/sendmail # make obj && make depend && make && make install
そして、1.のipsecに関しては、buildkernelを行った(この時、ccache -zと統計情報をゼロクリア)。
# cd /usr/src # ( date && make buildkernel; date ) |& tee buildkernel.log # make installkernel # reboot
所要、21分1秒。
結果、
# uname -r 6.0-RELEASE-p6
に。
| buildkernel前 | buildkernel後 | 実質 | |
|---|---|---|---|
| cache directory | /root/.ccache | /root/.ccache | /root/.ccache |
| cache hit | 0 | 0 | 0 |
| cache miss | 0 | 1238 | 1238 |
| called for link | - | 1 | 1 |
| not a C/C++ file | - | 3 | 3 |
| unsupported compiler option | - | 1 | 1 |
| files in cache | 26952 | 29428 | 4278 |
| cache size | 124.2 Mbytes | 139.8 Mbytes | 15.6 Mbytes |
| max cache size | 976.6 Mbytes | 976.6 Mbytes | 976.6 Mbytes |
ついでに、後学のため、もう一回、buildkernelを行ってみた。所要時間は、12分24秒。
と言っても、GENERICなものではないので余り参考にはならないのだが…。ccacheを使わない場合よりも、半分ぐらい、時間が短縮されるということで。
| buildkernel後 | 実質 | ||
|---|---|---|---|
| 初回時 | 2回目 | ||
| cache directory | /root/.ccache | /root/.ccache | /root/.ccache |
| cache hit | 0 | 1237 | 1237 |
| cache miss | 1238 | 1239 | 1 |
| called for link | 1 | 2 | 1 |
| not a C/C++ file | 3 | 6 | 3 |
| unsupported compiler option | 1 | 2 | 1 |
| files in cache | 29428 | 29430 | (4280) |
| cache size | 139.8 Mbytes | 139.8 Mbytes | (15.6 Mbytes) |
| max cache size | 976.6 Mbytes | 976.6 Mbytes | 976.6 Mbytes |
ccacheを使ったbuildworld
March 22nd, 2006devel/ccacheのportで、buildworld(とbuildkernel)をサポートするようになった。
以下、ちょっとしたパフォーマンスの検証(※ あまりクリーンな環境下とも言えないので、あくまでも大雑把な目安としてみて下さい)。
標準での実行(ccacheなし)
ccacheの設定等は、ccacheのportsをインストールすると同時にインストールされる
/usr/local/share/doc/ccache/ccache-howto-freebsd.txt
のドキュメントに詳細が書いてあると思うけど、まずはccacheを使わずにbuildworldを行って、時間をはかってみる。
ちなみに、/etc/make.confには、
CPUTYPE?=pentium4CFLAGS= -O -pipeCOPTFLAGS= -O -pipeNO_I4B=NO_PROFILE=
の変更追記をしてるぐらい。
# uname -rp 6.0-RELEASE-p5 i386
# cd /usr/src
# ( date && make buildworld; date ) |& tee buildworld.log
# ( head -1 && tail -1 ) < buildworld.log Wed Mar 22 04:41:22 JST 2006 Wed Mar 22 05:50:33 JST 2006
大体、こちらの環境(Pentium4 1.8GHz)では、69分11秒であった。
ccacheを使ってのbuildworld(1回目)
続いて、ccacheを使ってbuildworldを行うため、ドキュメント通り、/etc/make.confに
.if (!empty(.CURDIR:M/usr/src*) || !empty(.CURDIR:M/usr/obj*)) && !defined(NOCCACHE) CC=/usr/local/libexec/ccache/world-cc CXX=/usr/local/libexec/ccache/world-c++ .endif
を追加し、/etc/csh.cshrcの方には、
setenv PATH /usr/local/libexec/ccache:$PATH setenv CCACHE_PATH /usr/bin:/usr/local/bin
を追加。
source /etc/csh.cshrcで設定を反映させ、上記の3.および4.の処理を実行(当然ではあるが、同じ条件で行うため、先程ビルドしたものはクリアしてある)。
結果は、
Wed Mar 22 12:54:23 JST 2006 Wed Mar 22 14:13:57 JST 2006
で、79分34秒。先程のccacheを使わなかった場合より、15%程時間を要した。
この時(処理終了後)のccacheの統計情報は、以下の通り。
# ccache -s cache directory /root/.ccache cache hit 545 cache miss 11492 called for link 555 multiple source files 1 not a C/C++ file 1209 no input file 1 files in cache 22984 cache size 90.4 Mbytes max cache size 976.6 Mbytes
(cache directoryの項目で表示されているディレクトリの実体はsymlinkで、別ディレクトリを参照する設定にしてある)
ccacheを使ってのbuildworld(2回目)
ccacheを使ってのコンパイルが本領を発揮するのは、溜め込んだキャッシュを使っての2回目以降のビルド作業になると思うけど、確認のため先程と同様に、前述の3.および4.の処理を実行(なお、処理開始前、ccache -zとして、統計情報を便宜上、クリアしている)。
結果は、
Wed Mar 22 14:28:45 JST 2006 Wed Mar 22 15:05:46 JST 2006
で、37分1秒。これはccacheを使用しなかった場合の所要時間のおよそ53%。
buildworldの様に同じコードベースで、何回もビルド作業を行う可能性があるものの場合、やっぱり便利かと思われる。
ちなみに、この時のccacheの統計情報は、
cache directory /root/.ccache cache hit 12029 cache miss 8 called for link 555 multiple source files 1 not a C/C++ file 1209 no input file 1 files in cache 23000 cache size 90.4 Mbytes max cache size 976.6 Mbytes
でした。
openoffice.org-2.0.2をインストール
March 16th, 2006RELEASE前のportsの凍結もそろそろ融け出したようで、ぼちぼち更新が出始めて来た。
個人的には、editors/openoffice.org-2.0のバージョンが、2.0.2rc2から、2.0.2に更新されてたのが一番大きいけど、gtkその他も更新されていたので、まずは最初に、openoffice.org-2.0のportを除外し、その他のportsをアップグレード。
# portupgrade -aRr -x editors/openoffice.org-2.0
続いて、openoffice.org-2.0のビルド。pkgtools.confは、従来通り、
MAKE_ARGS = {
'editors/openoffice.org-2.0' => [
'LOCALIZED_LANG=ja',
'-DWITHOUT_MOZILLA',
'-DWITH_CCACHE',
],
}
としてる。これは単なる好みだけど。
2.0.2のバージョンのソースコードは新たにfetchし直すことになるので、前回の教訓を踏まえ、多分、あまりHitしないであろうccacheのキャッシュは統計情報とともに事前にクリアしておいた。
# ccache -Cz
ビルド&インストールとも特に問題もなく、正常に終わった。
ccacheの統計情報は、以下の通り。
# ccache -s cache directory /var/tmp/ccache-ooo cache hit 652 cache miss 12522 called for link 484 compile failed 42 preprocessor error 27 not a C/C++ file 53 autoconf compile/link 420 no input file 69 files in cache 25044 cache size 454.2 Mbytes max cache size 976.6 Mbytes
※ なお、ビルド前に、環境変数CCACHE_DIRを設定して、ディレクトリを専用のものに指定してある。
openoffice.org-2.0.2rc2をインストール
March 2nd, 2006editors/openoffice.org-2.0のport(2.0.2rc2)に更新があったので、アップグレード。
pkgtools.confは、
MAKE_ARGS = {
'editors/openoffice.org-2.0' => [
'LOCALIZED_LANG=ja',
'-DWITHOUT_MOZILLA',
'-DWITH_CCACHE',
],
}
の引数でビルドした。これは、前回と同じ。
実は、2.0.1のバージョンから、2.0.2rc1にportが更新された時、一旦、更新を試みたのだけれども、ビルドに失敗してしまうので、しばらく、2.0.1のバージョンのまま様子見の状態を続けてた。
この時、2.0.1でのccacheを使い回そうと思っていたけど、全然ヒットせず。やっぱり、ソースが変われば無意味。当り前とも言えるけど。
2.0.2rc1から、2.0.2rc2の更新が来た時は、これもソースが違うので、
# ccache -C
とクリアしてから、2.0.2rc2のビルドを開始した。
でも、失敗。どうやら、昨日のパッチ(moz-patch_i59729)があたるまで、-DWITHOUT_MOZILLAの引数をつけていると、ビルドできなったみたい。
今回のパッチが当たった後、同じ2.0.2rc2を再ビルドしてみたけど、さすが同じソース。かなりキャッシュがヒットして、思ってたより速くビルドが完了した。
openoffice.org-2.0.1をインストール
December 25th, 2005editors/openoffice.org-2.0を2.0.1にアップグレード。
pkgtools.confは、
MAKE_ARGS = {
'editors/openoffice.org-2.0' => [
'LOCALIZED_LANG=ja',
'-DWITHOUT_MOZILLA',
'-DWITH_CCACHE',
],
}
としてビルドした。
ccacheのmax cache sizeを1GB確保していたけど、実際には、
# ccache -s | grep 'cache size' cache size 457.2 Mbytes max cache size 976.6 Mbytes
だった。
openoffice.org-1.0のportの場合には、初回起動時のセットアップで、KDE環境にもメニュー等を追加してくれるけど、なぜか、2.0のportでは追加してくれないので、必要なものを適宜、手動で追加。
/usr/local/bin/openoffice.org*
に実体へのsymlinkがあるので、これらを利用しても良い。
プリンタの管理が見当たらないので、直接、
% cd /usr/local/openoffice.org-2.0.1/program % ./spadmin
でメニューを立ち上げ、OpenOffice.org用に使用するフォントを追加したりした。
