VMware上のUbuntuでMozilla Trunkビルド環境を作る
VMware上にUbuntu 7.10環境を構築し,Mozilla Trunk(Minefield)のビルド環境を構築するためのメモ.
作業手順 (Ubuntuセットアップ)
VMware上にUbuntu用ゲストOSを作成
ゲストOS作成後,vmxファイルをテキストエディタで開き,以下を追加する.これは,VMware上でUbuntuのインストーラを起動させた際,解像度がやたら高くなってしまう問題を回避するため.
svga.maxWidth = "1024" svga.maxHeight = "768"
D: にUbuntu 7.10のisoイメージをマウントし,普通にインストール.再起動する.
まずはアップデート
GUIが好きな人は,タスクトレイ(?)の所にあるアレをクリックしてアップデートしてもよいと思う.
% sudo apt-get update % sudo apt-get upgrade
一度再起動が必要かも.
Mozillaのビルドに必要なパッケージをapt-get install
がんがんapt-get installする.
% sudo apt-get -y install build-essential % sudo apt-get -y build-dep firefox-3.0 % sudo apt-get -y install cvs % sudo apt-get -y install libdbus-glib-1-dev % sudo apt-get -y install libcurl3 % sudo apt-get -y install libcurl4-openssl-dev
生活環境も整える.
% sudo apt-get -y install vim lv % sudo apt-get -y install subversion zsh openssh-server % sudo apt-get -y install ddd global
zshが無いと死ぬ人はchshしておく.
VMware toolsをビルドするのに必要なパッケージもインストール.
% sudo apt-get install libqt3-headers libqt3-mt-dev % sudo apt-get install bin86 kernel-package
VMware toolsをここでインストールしてもよいし,しなくてもよい.
私は上記を毎回手で打つのも面倒なので,.sshや.zshenv, .zshrc, .screenrc, ... etc ... を展開する作業とあわせてシェルスクリプトにした.このあたりは各自お好みで.
Mozilla Firefox(Minefield)ビルド手順
ビルド環境を整える
${HOME}/.mozconfigを作る
. $topsrcdir/browser/config/mozconfig export CC=/usr/bin/gcc export CXX=/usr/bin/g++ mk_add_options MOZ_CO_PROJECT=browser mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/firefox-build ac_add_options --enable-application=browser ac_add_options --enable-default-toolkit=cairo-gtk2 # below are not necessary. do as you like: ac_add_options --disable-ldap ac_add_options --disable-postscript ac_add_options --disable-accessibility ac_add_options --disable-printing ac_add_options --disable-composer ac_add_options --disable-mathml ac_add_options --disable-svg ac_add_options --disable-svg-foreignobject ac_add_options --enable-debug ac_add_options --enable-optimize=-O
ビルドの度に手でコマンドを打つのも面倒なので,シェルスクリプト書く.
- build-trunk.sh
#!/bin/sh # build-trunk.sh # $Id: build-trunk.sh 87 2008-04-07 08:57:04Z genta $ # BRANCH="-r MOZILLA_1_8_BRANCH" BRANCH="" DIRNAME="mozilla_trunk" LOG=${HOME}/log/build.${DIRNAME}.log export CVSROOT=':pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot' # Output to STDOUT and STDERR gose to file ${LOG} exec 4>&1 5>&2 exec 3>${LOG} 1>&3 2>&3 echo 'Begin building' LANG=C date # rotate dir and mkdir if [ -d ${DIRNAME} ]; then if [ -d ${DIRNAME}.old ]; then mv ${DIRNAME}.old ${DIRNAME}.trash rm -rf ${DIRNAME}.trash fi mv ${DIRNAME} ${DIRNAME}.old fi mkdir ${DIRNAME}; cd ${DIRNAME} cvs co ${BRANCH} mozilla/client.mk cvs co ${BRANCH} mozilla/browser/config/mozconfig mkdir mozilla/firefox-build cd mozilla cp ${HOME}/.mozconfig . make -f client.mk checkout make -f client.mk build 2>&1 echo 'Build done' LANG=C date echo 'Creating gtags' LANG=C date gtags -v htags -saF echo 'Done'
gtagsとかしている部分はお好みで.
ビルド中のログを出力するためのディレクトリを掘る.
% mkdir ~/log
ビルド
% ./build-trunk.sh
ビルド中のログは~/log/build.mozilla_trunk.logに落ちているので,気になる人は他の端末エミュレータを開いてtail -fしておくとよいと思う.
起動
無事ビルドが終わったら,起動してみる.
% cd mozilla_trunk/mozilla/firefox-build/dist/bin % ./run-mozilla.sh ./firefox
run-mozilla.shの引数には "./firefox" と,"./" を忘れないように注意.忘れると/usr/bin/firefoxの方が起動したりしてわりと混乱することになる.
デバッガ(ddd)の上でfirefoxを起動するときは以下のようにする.
% ./run-mozilla.sh -g ./firefox-bin
runさせて適当なタイミングでinfo threadsとかして途方に暮れるのもよし.
ssh経由で起動するときは,DISPLAY環境変数を適当に設定しておくとよし.手元にX11が起動していればそれを使ってもいいと思う.
% env DISPLAY=:0.0 ./run-mozilla.sh ./firefox-bin
GNU Globalで作ったHTMLを閲覧
htagsが~/mozilla_trunk/mozilla/HTML以下にHTMLファイルを作ってくれているので,これをソースコード解析の基点にすることができる.普通にUbuntuの上でWebブラウザを用いて閲覧するか,またはlighttpdとか適当なHTTPdをインストールして他のマシンから閲覧してもよい.
lighttpdのセットアップ (おまけ)
public_htmlを用意
% mkdir ~/public_html % cd ~/public_html % ln -s ../mozilla_trunk/mozilla/HTML
- build-lighttpd.sh
#!/bin/sh # build-lighttpd.sh -- Build lighttpd environment for reading source code apt-get install lighttpd cp lighttpd.user /etc/lighttpd (cd /etc/lighttpd; patch ) < patch.lighttpd.conf (cd /etc/lighttpd/conf-available; patch -p1 ) < patch.auth.conf /usr/sbin/lighty-enable-mod auth /usr/sbin/lighty-enable-mod userdir /etc/init.d/lighttpd force-reload
- lighttpd.user
yourname:yourBasicAuthPassword
お好みで.
- patch.lighttpd.conf
*** lighttpd.conf.orig 2008-03-12 04:23:02.000000000 +0900 --- lighttpd.conf 2008-04-07 12:03:07.000000000 +0900 *************** *** 63,68 **** --- 63,69 ---- ## bind to port (default: 80) # server.port = 81 + server.port = 10080 ## bind to localhost only (default: all interfaces) ## server.bind = "localhost"
server.portはお好みで.
- patch.auth.conf
*** conf-available/10-auth.conf.orig 2008-03-12 04:23:02.000000000 +0900 --- conf-available/10-auth.conf 2008-04-07 12:17:00.000000000 +0900 *************** *** 5,13 **** server.modules += ( "mod_auth" ) ! # auth.backend = "plain" ! # auth.backend.plain.userfile = "lighttpd.user" ! # auth.backend.plain.groupfile = "lighttpd.group" # auth.backend.ldap.hostname = "localhost" # auth.backend.ldap.base-dn = "dc=my-domain,dc=com" --- 5,20 ---- server.modules += ( "mod_auth" ) ! auth.backend = "plain" ! auth.backend.plain.userfile = "/etc/lighttpd/lighttpd.user" ! auth.backend.plain.groupfile = "lighttpd.group" ! ! auth.require = ( "/" => ! ( "method" => "digest", ! "realm" => "Permitted user", ! "require" => "valid-user" ! ) ! ) # auth.backend.ldap.hostname = "localhost" # auth.backend.ldap.base-dn = "dc=my-domain,dc=com"
BASIC認証の設定ファイル.これまたお好みで.
インストール用スクリプトを実行.
% sudo ./build-lighttpd.sh
他のマシンから http://
または,mozilla.orgが提供しているLXRも便利かも.