23:09:25 # Life qemubuilder 内部で distccを使う。 ホストOS上に emdebian などからとってきたクロスコンパイラをインストールしておきます。 エミュレーション環境から、 distcc でホストOSのクロスコンパイラを実行することが可能です。 エミュレーション環境の実行速度は非常に遅いので、 これで十分な速度が出るようにできるはずです。 比較してみると、この単純なケースでも二倍の差がありました。 まだいろいろとチューニングしないと実際にパッケージのビルドまで至らないとは思いますが 基本としては何をしないといけないのかが分かりました。
root@pbuilder-coreduo:/tmp# export DISTCC_HOSTS=10.0.2.2 root@pbuilder-coreduo:/tmp# time distcc arm-linux-gnueabi-gcc -c a.c real 0m0.324s user 0m0.160s sys 0m0.150s root@pbuilder-coreduo:/tmp# time cc -c a.c real 0m0.657s user 0m0.410s sys 0m0.240s
10:22:56 # Life eeepc に distccをインストールしてみた。 MacBookでビルドする際になんらかのたしになるか?と思ったんだけど、どうでしょう。 avahi を活用して zeroconf として使えそうな雰囲気で書いてありちょっと期待しました。 これがちゃんと動くと、ネットワークで近所にあるマシンで distcc サービスを動かしているものがあったら 勝手に追加されるというのができてしまいます。 ただ、それはまだうまく動かせませんでした、2.18.3-8 時点では ipv6 対応がうまくいっていないようでした 481951。 ipv6 のアドレスに対応していないのが問題なので、 明示的にipv4 で使えるホスト名を指定してあげればうまく動きました。 ホスト名 akkeee と coreduo があったので、 DISTCC_HOSTS="akkeee.local coreduo.local"と指定したらいけましたよ。
akkeee:/home/dancer# netstat -lp | grep dist tcp6 0 0 [::]:distcc [::]:* LISTEN 3119/distccd
10:51:31 # Life 手元のmacbookのファイルシステムの分割のしかた。 160GBのディスクで etch d-i の LVM でインストールしようとしたら動かないバグ(120GB 以上の場合?)にひっかかったので LVMではないインストールになりました。 とりあえず普通のパーティション構成にして、/home を消してLVM領域にしなおして構成。 デフォルトでは / は 7GB 程度しか割り当てられないためすぐに容量がいっぱいになるので /var とかを別パーティションに飛ばしたりしています。 とりあえず今の感じ。 /dev/mapper/xxxx となっているのは、LVM2 の領域です。 LVM2 の領域は df とかでは device mapper のパスで見えます。
$ df -h Filesystem サイズ 使用 残り 使用% マウント位置 /dev/sda1 6.5G 3.3G 2.9G 53% / tmpfs 490M 0 490M 0% /lib/init/rw udev 10M 100K 10M 1% /dev tmpfs 490M 0 490M 0% /dev/shm /dev/mapper/vgcoreduo-home 40G 19G 19G 51% /home tmpfs 490M 12K 490M 1% /tmp /dev/mapper/vgcoreduo-var 9.9G 2.4G 7.1G 25% /var /dev/mapper/vgcoreduo-pbuilder 3.0G 391M 2.5G 14% /var/cache/pbuilder
fstabはこんな感じ。
proc /proc proc defaults 0 0 /dev/sda1 / ext3 errors=remount-ro 0 1 /dev/vgcoreduo/home /home ext3 defaults 0 2 /dev/sda2 none swap sw 0 0 /dev/hda /media/cdrom0 udf,iso9660 user,noauto 0 0 tmpfs /tmp tmpfs rw /dev/vgcoreduo/var /var ext3 defaults 0 1 /dev/vgcoreduo/pbuilder /var/cache/pbuilder ext3 defaults 0 2
21:55:52 # Life distcc を debuild で利用する。 distcc/ccache を debuild で利用する方法も確立されているようです。 Debianでも並列ビルドオプションも最近はサポートされているようです。 debuild に並列度数を指定するオプションで「-j5」などを指定して実行すればよいです。 distcc などの設定は簡単で、.devscript に設定を記述すればよいです。 これで、超高速にビルドができるようになります。
DEBUILD_SET_ENVVAR_CCACHE_PREFIX="distcc" DEBUILD_SET_ENVVAR_DISTCC_HOSTS="coreduo.local akkeee.local" # ビルドに利用するマシン名 DEBUILD_PREPEND_PATH=/usr/lib/ccache
23:34:20 # Life Debian関連の活動をうまく確認するよいほうほうはないかなぁとおもって調べていたら、 debian-devel-changes が Google Groups に登録されているのに気づきました。 debian-devel-changes は Debian パッケージがアップロードされるたびに そのchangelog の内容がメールになって飛ぶメーリングリストです。 Debian Projectのウェブでもアーカイブされて公開されていますが、このインタフェース、検索するのには結構不便です。 Google Groups にこの内容がミラーされているようで、 linux.debian.changes.develとしてアクセスできます。
00:33:42 # Life MacBookの再インストール中。 ひさしぶりにスクラッチからインストールしています。 m-a a-i kvm でインストールできずにm-a a-i kvm-source でインストールできるというのにしばらく悩みました。 kvmパッケージが存在するからそれを使おうとしてしまうのね・・・。
21:53:59 # Life Manojと朝食。 Debian Policy の今後について語る。 もともとdpkgの仕様書としてはじまった文書なので、Debian全体のポリシーとしては詳細すぎる部分やたりない部分がある。 もっとモジュラーにしたい。 必要な部分をとりだせるようにしたい。 ポリシー文書は聖句ではなく、人の考え出した設計であり、その都度変更する必要のある文書。 そのためには、RATIONALE が必要だろう。 RATIONALE が存在しないと、人はそれを絶対視してしまう。
00:02:28 # Life qemubuilderパッケージアップデート。 Debconf会場にて、armelアーキテクチャをサポートしてみました。 distccを使ってホストOSでのクロスコンパイルに対応するとか、 いろいろやってみたいことはあるんですが、とりあえずこんな感じで。
03:08:13 # Life ひさしぶりにgpg keysignしてみる。 gpg --keyserver keyring.debian.org --recv-key XXXX. gnudoit '(compose-mail "gismo@debian.org" "your signed key") (end-of-buffer) (insert (shell-command-to-string "gpg --export --armor 9DDB992B | gpg --armor --encrypt -r 9DDB992B "))'
04:13:43 # Life cowbuilderをC++にしてみようとおもいたつ。 ずっと前からやろうと思っていたことの一つ。 char* と sprintf より、string と strstream が使いたいので、 C++ に切り替えてみようかとおもってみたが、 ファイル名を変更してコンパイルがとおるところまでして挫折してみる。
04:03:31 # Life libgettext-ruby. 492907 を調査した結果、libgettext-rubyのlocale関連がきちんと文字コードを検出していないような気がします。 ソースをみているとWindowsの場合は対応表があるのですが、Linuxの場合はどういう挙動になっているのかがよくわかりません。 よくわからないというよりむしろそれっぽいコードが見つからない。 euc-jp以外はもしかして実装されていないのか?という嫌な予感がする今日この頃です。
06:29:04 # Life m68kのbuildd。 m68kのコード自体を aranym でエミュレーション実行しているが、gcc が distcc になっていて、コンパイルするときには host OS で クロスビルドしているらしい。 ただし、そういうことですげーとかいっていると、qemuのメンテナンスをするはめになるので危険。
13:34:06 # Life dsh のリポジトリを Git に引越し。 CVS で管理していたソースですが、Gitに引っ越しました。 Alioth から取得できます。 2001年開発開始なので、もう7年前ですね。 細々と管理しているのですが、ユーザもそれなりにいて、 バグもそれなりに見つかっているようです。
$Id: 200808.html.ja,v 1.18 2008/09/01 06:12:54 dancer Exp $