portmapを使っていないとこでも、/usr/objをrsyncで持ってくればいいんだけど。
Xeon Dualをdistccに参加させれば、各マシンでportsの導入も楽になりそう。
portupgradeをつかってportinstall ccache distccでインストール。
まずdistccというuserを使おうとするので作成。
pw groupadd distcc -g 3632 pw useradd distcc -u 3632 -g distcc -s /sbin/nologinデフォルトのport3632 *1 で待ち受けするtcpserverを設定。 *2 daemontoolsだとtcprulesで
127.0.0.1:allow 192.168.:allow aaa.bbb.ccc.ddd:allow :denyというアクセス制限を/usr/local/etc/distccd/distccd.confなどで作成。aaa.bbb.ccc.dddは環境に合わせて適切に。
cd /usr/local/etc/distccd tcprules distccd.cdb distccd.tmp < distccd.confでdistccd.cdbを用意する。
Makefileを
distccd.cdb: tcprules distccd.cdb distccd.tmp < distccd.confで/usr/local/etc/distccd/Makefileとして作っておくとmakeだけで更新できる。
service-conf distcc distcc /usr/local/etc/distccd 'tcpserver -RH -x /usr/local/etc/distccd/distccd.cdb 0 3632 /usr/local/sbin/distccd --log-stderr --inetd --no-detach' *3 などとしてdaemontoolsのサービスディレクトリを作成。
runは
#!/bin/sh exec 2>&1 env - PATH="$PATH" \ tcpserver -RH -x /usr/local/etc/distccd/distccd.cdb 0 3632 /usr/local/sbin/distccd --log-stderr --inetd --no-detachと言う感じ。ついでにlog/runのmultilogに!"/usr/bin/gzip"を追加する。
マスター側は~/.cshrcなどにsetenv DISTCC_HOSTS "foo bar hoge localhost"と言う感じでdistccホストを指定。
さらに/etc/make.confに
CC=/usr/local/bin/ccache /usr/local/bin/distcc CXX=/usr/local/bin/ccache /usr/local/bin/distcc g++ MAKEOPTS=-j8を指定。
あとln -s /home/ほげ/.ccache /root/.ccache しておくとccacheファイルでルートがあふれるのを防げる。
portupgradeでdistcc:
setenv DISTCC_HOSTS '192.168.hoge.1 192.168.fuga.2 localhost' portupgrade -sCc \*で。
distccdの数に合わせて、MAKEOPTS="-j8"を調整。ホスト数の2倍がお勧めらしい。
非力なノートパソコンをdistccで快適に:
ThinkPad 535だと、ちょっとports入れるのでも重い。DISTCC_HOSTSにlocalhostを入れずに、コンパイルする。
time make buildkernelで時間を計ってみる:
ccacheをまっさらにして1回目。
241.857u 44.154s 5:25.25 87.9% 1547+2200k 436+8332io 815pf+0w続きの再起動後2回目。
45.945u 28.086s 1:44.36 70.9% 201+593k 5743+639io 951pf+0w試しにKERNCONF=GENERICでやってみたら、もう少し時間がかかった。INSTKERNNAME=kernel.GENERICも忘れずに。



[ コメントする ]