雑記 - glibc2.3 上での firefox3 の build Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

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 ... と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 をとって固めたもの)→ {{attach_anchor('gtk2147.patch')}}

build & install した gtk+ 等を[[固めたもの|http://ult.riise.hiroshima-u.ac.jp/~nagato/ice/gtk+-2.14.tgz]]

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 のサンプルは[[これ|http://ult.riise.hiroshima-u.ac.jp/~nagato/ice/.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]]