glib2.3 上での firefox3 の build
glibc2.3 を使った古いシステム(Vine3.2)上で Firefox 3 を使えるようにしたときのメモ(某所の wiki に書いたものに加筆修正したもの)
Vine 3.2 はいろいろ古い。glibc は 2.3 だし、gtk+ の version もかなり古い。 というわけで、そのままでは配布されている Firefox 3 バイナリパッケージを使う事ができない。 いろいろ試してみたが glibc の version up は、kernel を 2.6 系列に上げない限り無理なので諦めることにする。 とりあえず glibc は上げないで、gtk+ のみを上げ、firefox を独自 build する方針に。
(補足)上で glibc2.3 云々と書いたが、他の version で build する場合でも同じはず。新しい gtk+ とかが入っているなら、次の「build の下準備」は不要。(たぶん)
build の下準備
apt-get で XOrg-devel を入れておく。(たぶん必要)それから、 gtk+-2.14_build というディレクトリ内で gtk 関連のものを build し、/opt/gtk+-2.14 に install する。 gtk+ の version が新しければ、ここの記述はスキップしていいはず。
mkdir gtk+-2.14_build
cd gtk+-2.14_build/ tar zxf ~/pkg-config-0.23.tar.gz cd pkg-config-0.23/ ./configure --prefix=/opt/gtk+-2.14 make && make install
cd ../ tar zxf ../gtk+alpha/tiff-3.8.1.tar.gz cd tiff-3.8.1/ LD_LIBRARY_PATH=/opt/gtk+-2.14/lib \ PKG_CONFIG_PATH="/opt/gtk+-2.14/lib/pkgconfig:/usr/lib/pkgconfig" \ ./configure --prefix=/opt/gtk+-2.14 make && make install
cd ../ tar zxf ../gtk+alpha/libpng-1.2.34.tar.bz2 cd libpng-1.2.34/ LD_LIBRARY_PATH=/opt/gtk+-2.14/lib \ PKG_CONFIG_PATH="/opt/gtk+-2.14/lib/pkgconfig:/usr/lib/pkgconfig" \ ./configure --prefix=/opt/gtk+-2.14 make && make install
cd ../ tar zxf ../gtk+alpha/pixman-0.13.2.tar.gz cd pixman-0.13.2/ LD_LIBRARY_PATH=/opt/gtk+-2.14/lib \ PKG_CONFIG_PATH="/opt/gtk+-2.14/lib/pkgconfig:/usr/lib/pkgconfig" \ ./configure --prefix=/opt/gtk+-2.14 make && make install
tar zxf ../gtk+alpha/freetype-2.3.7.tar.bz2 cd freetype-2.3.7/ LD_LIBRARY_PATH=/opt/gtk+-2.14/lib \ PKG_CONFIG_PATH="/opt/gtk+-2.14/lib/pkgconfig:/usr/lib/pkgconfig" \ ./configure --prefix=/opt/gtk+-2.14 make && make install
cd .. tar zxf ~/Desktop/glib-2.18.4.tar.bz2 cd glib-2.18.4/ LD_LIBRARY_PATH=/opt/gtk+-2.14/lib \ PATH="/opt/gtk+-2.14/bin:$PATH" LD_LIBRARY_PATH=/opt/gtk+-2.14/lib \ PKG_CONFIG_PATH="/opt/gtk+-2.14/lib/pkgconfig:/usr/lib/pkgconfig" \ ./configure --prefix=/opt/gtk+-2.14 make && make install
cd ../ tar zxf ../gtk+alpha/cairo-1.8.6.tar.gz cd cairo-1.8.6/ PATH="/opt/gtk+-2.14/bin:$PATH" LD_LIBRARY_PATH=/opt/gtk+-2.14/lib \ PKG_CONFIG_PATH="/opt/gtk+-2.14/lib/pkgconfig:/usr/lib/pkgconfig" \ ./configure --prefix=/opt/gtk+-2.14 make && make install
cd ../ tar zxf ~/Desktop/pango-1.20.5.tar.bz2 cd pango-1.20.5/ PATH="/opt/gtk+-2.14/bin:$PATH" LD_LIBRARY_PATH=/opt/gtk+-2.14/lib \ PKG_CONFIG_PATH="/opt/gtk+-2.14/lib/pkgconfig:/usr/lib/pkgconfig" \ ./configure --prefix=/opt/gtk+-2.14 make && make install
pango の make 時に
../pango/pango-enum-types.h:12:9: error: macro names must be identifiers
のような error が出たら、pango-enum-types.h を以下のように修正して make
cd pango perl -pi -e 's/\@ENUMPREFIX\@/PANGO/g' pango-enum-types.h cd .. make
cd ../ tar zxf ../gtk+alpha/atk-1.25.2.tar.gz cd atk-1.25.2/ PATH="/opt/gtk+-2.14/bin:$PATH" LD_LIBRARY_PATH=/opt/gtk+-2.14/lib \ PKG_CONFIG_PATH="/opt/gtk+-2.14/lib/pkgconfig:/usr/lib/pkgconfig" \ ./configure --prefix=/opt/gtk+-2.14 make && make install
cd ../ tar zxf ~/Desktop/gtk+-2.14.7.tar.bz2 cd gtk+-2.14.7/ PATH="/opt/gtk+-2.14/bin:$PATH" LDFLAGS="-L/opt/gtk+-2.14/lib" \ LD_LIBRARY_PATH=/opt/gtk+-2.14/lib PKG_CONFIG_PATH="/opt/gtk+-2.14/lib/pkgconfig:/usr/lib/pkgconfig" \ ./configure --prefix=/opt/gtk+-2.14 --without-libjasper patch -p0 < ~/gtk+-2147.patch make && make install
gtk+-2.14.7 に当てた patch(diff をとって固めたもの)→ gtk2147.patch
build & install した gtk+ 等を固めたもの
zlib-devel とか libIDL-devel も入ってなかったら入れておく。( libIDL is a library for CORBA IDL and Mozilla's XPIDL. ) 環境によっては他の devel package も必要だろう。
firefox 3.0.x の build
tar jxf ~/Desktop/firefox-3.0.6-source.tar.bz2 cd mozilla/ vi .mozconfig
ここで .mozconfig のサンプルはこれ。option は適当に変更する必要あり。gcc option を適切に選べば高速になるんじゃないかな。
make -f client.mk checkout make -f client.mk build cd obj-i686-pc-linux-gnu/dist/bin/ LD_LIBRARY_PATH=/opt/gtk+-2.14/lib sh ./firefox
package を作るには mozilla/obj-i686-pc-linux-gnu に移動して make package
cd ../../ make package
dist ディレクトリの中に firefox-3.0.x.ja.linux-i686.tar.bz2 といかいう package ができる。
おまけ
firefox3 など最近の gtk-printbackend module を使ったアプリケーションで、lpr を使うときの話。
CUPS ではなく LPRを使っているシステムで印刷ダイアログにプリンタリストを表示するための小細工。 → libprintbackend-lpr's patch for gtk+-2.1x
Keyword(s):[glibc2.3] [firefox3] [make]
References:[firefox]