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

Last modified:2010/02/18 17:07:39
Keyword(s):[glibc2.3] [firefox3] [make]
References:[firefox]