2000/05/23    I am back

またもや気がつくと1月以上たっていた。忙しく日記をつけるのをさぼっていたために何をどうしたか正確なところは憶えていない。憶えてる事だけでも書いておこう。

[1] binutils-2.9.5.0.41-0a and gcc-2.95.3-2am

Franz のところに新しいものがあったので gcc の更新をする。binutils も更新。
binutils-2.9.5.0.41-0a
である。gcc については、libg2c.a を PIC フラッグつきで作るためftp://devel.linuxppc.org/users/fsirl/R5/SRPMS/ より gcc-2.95.3-2a.src.rpm をとりよせ、例によって -fPIC をつけるパッチ を使い、RPM を作りなおす。使った SPEC はこれ。出来た RPM は
cpp-2.95.3-2am.ppc.rpm
gcc-2.95.3-2am.ppc.rpm
gcc-c++-2.95.3-2am.ppc.rpm
gcc-g77-2.95.3-2am.ppc.rpm
gcc-objc-2.95.3-2am.ppc.rpm
libstdc++-2.10.0-2am.ppc.rpm
で、対応する SRPM は
gcc-2.95.3-2am.src.rpm
である。使う際には使用上の注意を参照(gcc-2.95.1 を適当に gcc-2.95.3 に読み代える)。libg2c.a を組み込んだ共有ライブラリーを作る必要のない場合は、Franz のオリジナルなパッケージと何も違いはない。

[2] gpm-1.19.1-1

セキュリティーホールの存在が報告されていたので、gpm を更新。コンソールで マウスを使うなんて邪道という人には必要ない。
gmp-1.19.1-1.ppc.rpm
gpm-devel-1.19.1-1.ppc.rpm

[3] Tcl/Tk 8.2.3 と関連ライブラリー群

Rawhide のものに、ppc 関連のパッチおよび若干のシンボリックリンクを付け加えて パッケージを作成。
tcl-8.2.3-36a.ppc.rpm
tk-8.2.3-36a.ppc.rpm
expect-5.31-36a.ppc.rpm
tclx-8.2.3-36a.ppc.rpm
tix-4.1.0.6-36a.ppc.rpm
itcl-3.1.0-36a.ppc.rpm
これに関しては、1999/11/19 の日記 にも 書いた理由により、日本語化パッチはあてていない。

[4] Python-1.5.2-17 および pythonlib-1.24.1

上記の Tcl/Tk を入れた後で、Rawhide の python-1.5.2-17 を "rpm --rebuild" した。ただし、/usr/local/include に古い tk.h があったりすると、tkinterを古い日本語版の Tcl7.6/Tk4.2 を使う設定になってしまうので要注意。 実は以前 (5/11) に作ったものにはこの問題があり、netcfg とかが動かない事が最近になって判明(いつも直接設定ファイルをエディットしてしまうので職場の同僚に指摘されるまで気づかなかった)。万が一古いのを持っていた人がいたらごめんなさい。 RPMS は
python-1.5.2-17.ppc.rpm
python-devel-1.5.2-17.ppc.rpm
python-tools-1.5.2-17.ppc.rpm
python-docs-1.5.2-17.ppc.rpm
tkinter-1.5.2-17.ppc.rpm
で対応する SRPM は
python-1.5.2-17.src.rpm
である。 関連して
pythonlib-1.24-1.noarch.rpm
netcfg-2.26-1.noarch.rpm
も更新。
 

[5] Ssh-2.1.0.pl2-1a

2.1.0 以降 va_list 関連の ppc パッチは不要となった。ただし、そのままでは __va_arg_type_violation() がないとおこられる。そこで邪道だがこれをダミーで加えるか、genpkcs.c を -O0 でコンパイルすることで一応動作するパッケージができる。 これは、実は va_arg の type violation を起こす場合が、プログラム上発生しない ためである。しかしあくまで邪道。 もとパッケージに patch level 2 が出たので、この際もう少しましなパッチをあてて作り直すことに。それにしても ppc の va_list は厄介。pointer の大きさ1の配列なので、char でも、 boolean でも、short でも、スキップすべき大きさはint とは。 RPMS は
ssh-2.1.0.pl2-1a.ppc.rpm
ssh-default-2.1.0.pl2-1a.ppc.rpm
SRPM は
ssh-2.1.0.pl2-1a.nosrc.rpm
である。

[6] Kterm-6.2.0-11a

最近になって
$ kterm -e <command>
で、command が動作しない場合に遭遇。原因を調べてみると、<command> が LD_LIBRARY_PATH に指定された共有ライブラリーを使っている場合に、LD_LIBRARY_PATH が export されないためと判明。 では何故 export されないかというと、kterm が setuid(root) されているためであった。セキュリティー上の理由により、LD_LIBRARY_PATH は setuid の際に、親のシェルから継承されない。かつては root にしかアクセスできないログ関連のファイルへのアクセスを許すために setuid(root) が必要とされていたと思われるが、xterm は、setuid(root) されていない所を見るともはや必要ないのではと思われる。セキュリティーからしても setuid(root) はどうしても必要な場合以外すべきではない。 というわけで、kterm の s ビットを外した。
kterm-6.2.0-11a.ppc.rpm

[7] Xaw3d-1.5-2a

これまた、職場の同僚の指摘であるが、xedit で日本語入力をしようとすると seg. fault する。調べてみると、Xaw3d-1.3 の MultiSrc.c というマルチバイトのテキストを扱うルーチンの中で、stack に用意した string を、後で free しようとしている事が判明。英語の入力用の AsciiSrc.c の方では正しく、heap にコピーしている(MultiSrc.c でもその形跡は見られるが、良く分からないコードとなっている)。 Rawhide にある新しいバージョン(1.5)にもこの問題はある。そこで、このパッチをあてパッケージを作り直す。 できた RPMS は
Xaw3d-1.5-2a.ppc.rpm
Xaw3d-devel-1.5-2a.ppc.rpm
で、対応する SRPM は
Xaw3d-1.5-2a.src.rpm
である。

[8] Root 2.24/05

binutils、gcc の更新後、ROOT のバージョンアップ。使った開発環境は
gcc*-2.95.3-2am
glibc-2.1.3-5a
binutils-2.9.5.0.41-0a
XFree86-3.3.6-8a
freetype-1.3.1-1a
Mesa-3.2-3a
コンパイルの手順は
$ tar -zxvf <somewhere>/root_v2.24.05.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
$ patch -p1 < <somewhere>/root_v2.24.05-ppc.patch
$ (cd ..; make depend)
$ make -f Makefile.linuxppcegcs OPT='-O1' HISTPAINTER_HistPainter.o
$ cd ..
$ make >& make.log &

である。ソースのコンパイルで最適化レベルを変更する必要があるものが3つから1つになったのは g++ の進歩である。
できたバイナリーは

root_v2.24.05_linuxppc-2000.tar.gz
である。

[9] 物理の解析パッケージ(Physsim-2000a-1)の更新

まず jsf であるが、最新版(jsf-1-14)では physsim が動作しない。また、最新版であっても root_v2.24.05 とは整合性がない。これは、TEnv class が大幅に書き換えられ、ほとんどのメンバー関数が virtual になってしまったため、引数が同じで戻り値の型のみが違う(邪道)メンバー関数の上書きができなくなってしまった事による。 とりあえず、関数名を変更して jsf-1-13 改とする。lclib の方は最新版で問題ない。
jsf-1-13.tar.gz
lclib-2000-1.tar.gz
physsim-2000a-1.tar.gz
physsim-2000a-1 には、重いクォークのフレーバーをタッグするクラスなど、広島大学の池松氏の成果が採り入れれている。また、ヒッグスの WW* への崩壊に対する積分の収束性を改善するパッチをあてた。
 
 

これらのパッケージは私の環境では動作確認したが、使う場合はいつものように自己責任


Back to Keisuke Fujii's MkLinux/LinuxPPC Life