1999/06/15    CERNLIB, ROOT, ...

[5-2] 大仕事 cernlib

やっと、コンパイルが終わった。正味、20時間くらいか。

やっぱりというか、以外に少なかったというか、難しいところであるが、いくつかソースの修正が必要であった。

string.h まわりで、今まで2重定義にならなかった、strdup、strchr 等が、コンパイルエラーを出す。迷わず消してしまう。例えば

#if !defined(__linux__)  /* to avoid multiply definition strcasecmp,.. */
extern int strcasecmp(const char *, const char *);
extern char *strdup();
extern int strncasecmp(const char *, const char *, size_t);
#endif
....

のような修正。

__powerpc__ ではなく、__linux__ にしてあるが、おそらく、RedHat R6 でも同様の問題があるだろうと言う推測にすぎない。

しかーし、コンパイルは終わったものの、2つほど mathlib で test に落第した。うーん、こんなことは DR3 ではなかった(正確に言うとあったが直した)。前のは、最適化の問題か、テストルーチンの問題であった。今回のは、error function と bessel function で、以前と違うのは、全く違う答えを出すのではなく、double precision の関数が single precision の答えしか出さないと言う問題。これはやっかいそうだ。最適化を変えて試す必要があるが、テスト用にその部分だけを抜き出したものを作らないと、テストもままならない。何せ cernlib の Makefile と来た分にゃ、賢すぎて膨大なパッケージの依存関係を全て調べに回り、再コンパイルが始まるまでに10分以上かかってしまう。make Makefiles が 20分かかったのだから驚く。

ただし、他の全てのテストは通ったので、実用上はこの問題を気にとめておけば問題なく使える。時間ができ次第追求する。優先度は高い。
 

[5-3] patchy

これは、rpm --rebuild で済んでしまった。テストもばっちり。
 

[5-4] garfield

patchy が入ったので、garfield がコンパイルできる。これも rpm --rebuild で終わり。いつもこうであれば、rpm にしたかいがあるというもの。
 

[5-5] Dis45

ここでの最大の問題は、Imake の architecture flag が

        PPCArchitecture --> PowerPCArchitecture

のように変更されてしまったこと。これはつらい。これが書かれた Imakefile は動かないか、間違ったコードを作ることになってしまう。自分の書いたもので他にもこういう部分がないか、忘れずにチェックしなくては。コード中で、implicit に効くマシーンフラッグは __powerpc__ で、これは変わっていない。どうやら、linuxppc が本家の linux tree に統合される過程で起きた悲劇のようだ。今後、Imake を使ったアプリケーションで何か変なことが起きたら、このことを思い出すこと。

また、fortran のオープン文で、以前怒られなかった、

        readonly
        carriagecontrol

のようなコントロールフラッグがエラーになるようになった。これはおそらく、元々 g77 ではサポートされていなかったと思われるので、黙って無視するよりは有り難いと感謝すべきであろうが、直さなくてはいけないのは面倒くさい。
 
 

[5-6] ROOT

cernlib と違いこちらは、すんなり動いた。現在のバージョンは、2.22b4。ソースは、root.cern.ch から手に入る。これだけのものがフリーとは有り難い。
 

[5-7] ところで

再起動して初めて気がついたのだが、jserver も cannaserver も自動起動しない。/etc/rc.d/rc*.d/Snnxxxx を見てみると、jserver も cannaserver もS と K が同じ 12 になっている。この数字の順に起動、終了が行われるので Snnxxxx とすると K(100-nn)xxxx とするのが作法のはず。12 では起動のタイミングが早すぎる。そこで、Snnxxxx の nn を 88 にするようシンボリックリンクを張り替えた。これは、本来はパッケージの修正を要するが、時間がないので忘れないようにしておき、手動の修正のままにする。とにもかくにもこれで、自動起動するようになった。
 

そして、後は、自前のソフトの移植。jsf、lclib、physsim、...
何となくもう一波乱ありそうな気がする。うー、疲れてきた。
 


Back to Keisuke Fujii's MkLinux/LinuxPPC Life