やっと、コンパイルが終わった。正味、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、...
何となくもう一波乱ありそうな気がする。うー、疲れてきた。