modbuilders 独自ビルド環境について
TRANSCRIPT
2012/2/18 mozilla独⾃ビルダー勉強会
独⾃ビルド環境について
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
⾃⼰紹介・名前:アベヒロキ (@hATrayflood)・職業:⾃宅サーバ管理者・URL:rayflood.org/diary-temp/・住所:⻑野市 地元:東部町
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
まずby ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
今回の開催までの流れ
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
jbを囲む会で@htguardと初対⾯
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
その勢いでtwitterに
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
@htguardと@m̲ayakawaが釣れました
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
@makoto̲katoも釣られてくれるらしい
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
さすがにotachanと@tete009̲は来れないようで
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
というわけで(勝⼿に)開催決定
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
⽇程調整して会場確保してatnd告知
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
えーとby ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
スレ住⼈いる?
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
本題by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
rayfloodビルド
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
http://rayflood.org/mozilla/
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
⽅針by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
ビルド実験が主な目的
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
公式ビルドでは使わないコンパイラや
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
サポートしてないコンパイラでビルドできるか
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
主にVisual StudioExpressでビルドを検証してた
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
なんでVSExpress?
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
フリーソフトをビルドするのに⾼価なVS使うのは
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
なんか⽭盾してないか?
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
という(どうでもいい)疑問から出発
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
なのでby ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
以下の点には気を配りません
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
・性能・安定性
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
特徴by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
Windows、MacLinuxのバイナリをビルドしてます
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
それぞれのOSで複数のコンパイラでビルドしてます
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
ほぼ全部のmozilla製品をビルドしてます
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
⾔語リソース⽇本語/英語中国語(繁体字)
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
Windows版のみの特徴
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
gecko-1.9.2からfreetype2でフォント描画
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
gecko-2.0以降も(⼀応)対応予定サンプルビルド
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
詳細by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
実際にビルドできたコンパイラ製品別VCバージョン⼀覧
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
列挙するとby ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
vc6, vc71, vc8vc9, vc10
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
ここまで製品版VC ここからフリーVC
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
vc8e, vc9e, vc10esdk60, sdk61sdk70, sdk71gcc-3.4, gcc-4.5ddk, llvm-gcc-4.2
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
なんかいろいろある
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
Express版もあるけどWindows SDK付属のVCも使える
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
ATLやMFCがないので2003 SDKやWDKと組み合わせる
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
Windows SDKはx64版ビルドも可能(⼀部ヘッダ要修正)
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
windowsでのgccはgecko-1.9.1以降ビルド不可
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
WDKにもコンパイラついてるけどダメっぽい(理由はいろいろ)
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
というわけでby ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
フリーなVCでもコア開発に参加できるよ!
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
PGOは泥沼by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
時間かかるしバグも多い
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
Linux, Macby ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
基本gccとllvm-gccも
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
Ubuntu 10.04 LTS gcc-4.1, gcc-4.3, gcc-4.4llvm-gcc-4.2それぞれi386とx86̲64
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
Ubuntu 11.10 gcc-4.4, gcc-4.5, gcc-4.6llvm-gcc-4.5それぞれi386とx86̲64
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
x86̲64環境でi386版をビルドしようとするとi386ライブラリが不⾜
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
なのでi386とx86̲64両⽅のネイティブ環境を⽤意してビルド
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
llvmはi386のllvm-gcc-4.2だけ他はコンパイルエラー
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
ビルドが通るのはgecko-1.9.1まで以降はエラー
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
gcc-4.5, 4.6はPGOできるらしい(未検証)
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
Mac OS X 10.6 gcc-4.0, gcc-4.2llvm-gcc-4.2
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
gccはppc, i386, x86̲64llvm-gccはi386, x86̲64
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
gccはXcode純正llvm-gccはmacports
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
Xcodeのllvm-gccはコンパイルエラーだった
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
macportsのでもビルドが通るのはgecko-1.9.1まで以降はエラー
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
ppc版をビルドする場合はOSX 10.6まで10.7からRosettaが廃⽌された
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
x86̲64版のビルドはOSが32bit起動でも可能32bit動作のOS上でもx86̲64を実⾏できる
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
llvm-gccはmozillaには役に⽴たなかったか・・・clangに期待
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
Intel Cも試してみたいがちょっと⾼いなーしかもWin, Mac, Linuxそれぞれあるし
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
機器by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
・Windows, LinuxCore i7 2600メモリ12GB ⾃作機
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
12GBという半端な量はメモリ4本のうち1本がmemtestでエラーのため
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
・MacC2D T7500 4GBMacbook 2007 Late
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
コア数by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
Core i7 2600 4コア + Hyper Threading = 8スレッド
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
C2D T7500 2コア、のみ = 2スレッド
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
ビルド物件
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
firefox, thunderbirdseamonkey, fennecxulrunnerlightning/sunbird
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
がそれぞれvc10, vc9vc8の32bit/64bitでビルドするとなると
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
6 x 6 = 36うち、PGOは8
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
firefoxとseamonkeyのvc10, vc9が32/64でPGOは8つ
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
ビルド物件が多いのにこれだけのCPUコア数でさばかなれければならない
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
つまり、いかにCPUコアを消費しつくすかがキモ
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
・選択肢1makeのオプション-j4で並列コンパイルを指⽰し1つずつ順次ビルド
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
・選択肢2makeに-j4は使わず4つ同時にビルド
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
回答by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
→選択肢2makeの-j4では最適化されないプロセスがある
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
xpidlによる.idlファイルのコンパイルはターゲットが複数でも並列実⾏されない
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
.exeや.dllのリンクはターゲットが常に1つなので並列実⾏されない
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
PGOするとxul.dllのリンクに非常に時間がかかるlink.exe⾃体もマルチスレッドで動作してない
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
複数のアプリを並列でビルドする場合は、時間のかかるPGO対象アプリが優先そうなると今度は
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
メモリが⾜りない
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
PGO1つで3〜4GB消費これが4つ同時なので12〜16GBほど必要
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
link.exeがマルチスレッド実⾏できないがためにメモリで肩代わり・・・
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
物理メモリがこれより少なくてもswapがあれば実⾏できるが非常に遅い
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
ただでさえ時間がかかるリンクがさらに何倍も時間がかかる
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
swapを使わず全て物理メモリ上で実⾏すべき
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
Hyper Threading
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
4コア8スレッドだが実際はどうかというと
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
半分は幻by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
8スレッドのうち4つは幻にすぎません物理コアじゃないから
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
4つ並列ビルドと8つ並列ビルドでは8つ並列のほうがちょうど2倍遅い
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
確かに8つ同時ならCPUを使い切れるけどその分遅くなるので
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
単位時間あたりの処理量で⾒ると4つ同時と変わらない
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
並列ビルドは物理コア数まで
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
投⼊by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
並列ビルドするとなるとビルドが終わったら次を投⼊するわけですが
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
⼿動はありえない
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
とにかく数が多い並列、という時点で⾃動投⼊以外ない
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
しかも要件として同⼀ソースツリーを同時に使えない
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
PGOを優先しつつ余ったスレッドで通常ビルドも実⾏
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
というやや特殊な条件があるのでmakeでは不⼗分
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
というわけでそれ⽤に書いたparalelbuild.py
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
PGOキューとそれ以外のキューの2本PGOワーカーn本とそれ以外のワーカー
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
ビルドするアプリのリストという構成
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
ワーカーがキューからビルドするアプリを取り出す
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
アプリが他のワーカーでビルド中かチェック
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
ビルド中なら後回しキューにつめ直して再度取り出す
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
PGOワーカーはPGOキューを優先して取り出す
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
これでキューが尽きるまでCPUをフルに使い切れる
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
でも24時間以内に全ビルド完了という目標に届くか不明
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
今後by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
そろそろ刷新予定
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
ただしESRのみ
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
freetype2版は可能なら出す(パッチ的に)
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
ESRでのビルドももう少しかかりそう
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
第1陣で旧バージョンが3⽉第2陣でESRが4⽉かもね
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
vc11の対応はWindows 8が出てから…
by ABE Hiroki aka hATrayflood
2012/2/18 mozilla独⾃ビルダー勉強会
・リンク集twitter @hATrayfloodhttp://twitter.com/hATrayfloodmozilla rayflood独⾃ビルドhttp://rayflood.org/mozilla/firefox-4.0.1 freetype2版 サンプルビルドhttp://rayflood.org/diary-temp/firefox-4.0.1-rayflood-win32-sdk70.7zバックナンバー freetype2 on fx-3.6 win32http://www.slideshare.net/hATrayflood/modest02-freetype2-on-fx36-win32バックナンバー firefox-3.6.4以降のビルドについてhttp://www.slideshare.net/hATrayflood/modest04-firefox364バックナンバー core i7 2600とfirefox 4.0b9でベンチ測ってみたよhttp://www.slideshare.net/hATrayflood/modest08-core-i7-2600firefox-40b9
by ABE Hiroki aka hATrayflood