2000/04/20 Sorry for My Long Long Silence
気がつくと2月以上たっていた。この間、パッケージをいろいろアップデートしたが、忙しく日記をつけるのをさぼっていたために何をどうしたか正確なところは忘れてしまった。とりあえず、開発環境など重要なところだけ思い出しながら書いてみる。現在のところ私の環境は、YDL-1.2
に一番近いと思われるが、LinuxPPC2000 ベースでも本質的な違いはないはず。
[1] glibc-2.1.3-5a
Franz Sirl の最新版を、ftp://devel.linuxppc.org/users/fsirl/R5/RPMS/ppc
より入手。
glibc-2.1.3-5a.ppc.rpm
glibc-devel-2.1.3-5a.ppc.rpm
glibc-profile-2.1.3-5a.ppc.rpm
を "rpm -Uvh" で放り込む。ただし、glibc-2.1.3-0j
からのアップデートの場合、Franz
の警告にあるように、glibc-2.1.3-0j 環境でコンパイルしたアプリケーションの内、setrlimit
または getrlimit 関数を呼ぶものは動作しなくなるので注意。glibc-2.1.3-4b
の場合の注意を参照。
glibc-2.1.3-5a 以降に関する注意としては、2-byte
locale の扱いの仕様変更がある。今までの locale-ja では日本語が使えなくなるので注意する必要がある。私の場合、
locale-ja-2.1.1.1-0a.noarch.rpm
を導入。対応する SRPM は、
locale-ja-2.1.1.1-0a.src.rpm
である。
[2] binutils-2.9.5.0.34-0a and gcc-2.95.2-1km
glibc の更新後、gcc の更新をする。binutils も更新。
binutils-2.9.5.0.34-0a
である。gcc については、libg2c.a を PIC フラッグつきで作るためftp://devel.linuxppc.org/users/fsirl/R5/SRPMS/
より
gcc-2.95.2-1k.src.rpm をとりよせ、例によって -fPIC
をつけるパッチ を使い、RPM を作りなおす。使った SPEC はこれ。出来た
RPM は
cpp-2.95.2-1km.ppc.rpm
gcc-2.95.2-1km.ppc.rpm
gcc-c++-2.95.2-1km.ppc.rpm
gcc-g77-2.95.2-1km.ppc.rpm
gcc-objc-2.95.2-1km.ppc.rpm
libstdc++-2.10.0-1km.ppc.rpm
で、対応する SRPM は
gcc-2.95.2-1km.src.rpm
である。使う際には使用上の注意を参照(gcc-2.95.1
を適当に gcc-2.95.2 に読み代える)。libg2c.a を組み込んだ共有ライブラリーを作る必要のない場合は、Franz
のオリジナルなパッケージと何も違いはない。
[3] Rpm-3.0.4-0.45
rpm 関連パッケージ群は
rpm-3.0.4-0.45.ppc.rpm
rpm-python-3.0.4-0.45.ppc
rpm-build-3.0.4-0.45.ppc.rpm
rpm-devel-3.0.4-0.45.ppc.rpm
popt-1.5-0.45.ppc.rpm
[4] 開発ライブラリー関連
いろいろあるが、主だったもので
libtermcap-2.0.8-20.ppc.rpm
libtermcap-devel-2.0.8-20.ppc.rpm
ncurses-5.0-10.ppc.rpm
ncurses-devel-5.0-10.ppc.rpm
Mesa-3.2-3a.ppc.rpm
Mesa-devel-3.2-3a.ppc.rpm
glib-1.2.7-1a.ppc.rpm
glib-devel-1.2.7-1a.ppc.rpm
gtk+-1.2.7-1a.ppc.rpm
gtk+-devel-1.2.7-1a.ppc.rpm
とくに、Mesa はライブラリーの名前が変わってしまった(本物の OpenGL
ライブラリーと同じになった)ので、これをリンクしているプログラムはリンクし直す必要がある。その他、放り込んだものはここにあるので適当に漁って下さい。
[5] FreeWnn-1.10-5a
Wnn4.2 および、FreeWnn-1.10 にはバッファーオーバーランのセキュリティーホールが指摘されているので、アルファ版のパッチをバックポートした。使ったパッチはこれ。できた
RPMS は
FreeWnn-1.10-5a.ppc.rpm
FreeWnn-devel-1.10-5a.ppc.rpm
で対応する SRPM は
FreeWnn-1.10-5a.src.rpm
である。
[6] Ssh-2.1.0-1b
最新版では va_list 関連の ppc パッチは不要となった。ただし、そのままでは
__va_arg_type_violation() がないとおこられる。そこで邪道だがこれをダミーで加えるか、genpkcs.c を -O0 でコンパイルする必要がある。 使った SPEC はこれ、できた
RPMS は
ssh-2.1.0-1b.ppc.rpm
ssh-default-2.1.0-1b.ppc.rpm
SRPM は
ssh-2.1.0-1b.nosrc.rpm
である。
[7] Root 2.24/01
glibc、gcc の更新後、ROOT のバージョンアップ。
$ tar -zxvf <somewhere>/root_v2.24.01.source.tar.gz
$ tar -zxvf <somewhere>/ttf_1.1.tar.gz
$ export ROOTSYS=`pwd`
$ export LD_LIBRARY_PATH=$ROOTSYS/lib
$ export PATH=$ROOTSYS/bin:$PATH
$ sh configure linuxppcegcs \
--with-ttf-incdir=/usr/include/freetype --with-ttf-libdir=/usr/lib
\
--with-opengl-incdir=/usr/X11R6/include --with-opengl-libdir=/usr/X11R6/lib
\
--with-cern-libdir=/cern/pro/lib \
--preserve-include
$ cd src
$ cp -p <somewhere>/iosenum.h
../cint/include/
$ cp -p <somewhere>/MAKEINFO
../cint/
$ patch -p1 < <somewhere>/root_v2.23-x3d.patch
$ patch -p1 < <somewhere>/root_v2.23.07-g2c.patch
$ (cd ..; make depend)
$ make -f Makefile.linuxppcegcs OPT='-O0' EG_DatabasePDG.o
$ make -f Makefile.linuxppcegcs OPT='-O0' EG_AttParticle.o
$ make -f Makefile.linuxppcegcs OPT='-O1' HISTPAINTER_HistPainter.o
$ cd ..
$ make >& make.log &
である。いくつかのソースのコンパイルで最適化レベルを変更する必要がある点(g++
の問題)に注意。
できたバイナリーは
root_v2.24.01_linuxppc-2000.tar.gz
である。
[8] CERNLIB 関連
CERNLIB のライセンスが GPL 準拠のものに変わりました。詳しくは新しい配布ポリシーをご覧下さい。
これに伴い、今まで CERNLIB 関連のディレクトリー
(cernlib、dis45)にかけていたパスワード保護を解除します。
これらのパッケージは私の環境では動作確認したが、使う場合はいつものように自己責任。
Back to Keisuke Fujii's MkLinux/LinuxPPC Life