本業が忙しくて、ずいぶん長い間、更新できずにいた。このページ、日記のつもりが、ほとんど年記である(何度この台詞を使ったことか)。忙しくて仕事に使える環境を壊す危険を冒すわけにいかず、年末まで 10.2 を使っていてた。すっかり時代に取り残された感があったが、 新しい PowerBook G4 の購入を契機に(10.3 preinstalled なので)ようやくMacOS X 10.3 に移行した。 10.2.X のバイナリーは基本的にそのまま使えるようであるが、 デフォールトのコンパイラーが gcc-3.3 ベースになってしまったので、 全てのパッケージを更新あるいは再コンパイルした。 また、移行の際に気付いたこととしては、
また、g77 は、gcc を 10.3 で使われているバージョン(gcc-3.3 20030304: gcc-1495)の ソースを使って作りなおした。ところが、これが結構くせ者で、
$ cat test.F
stop
end
$ g77 test.F
/var/tmp//ccr9QDpP.s:23:section difference relocatable subtraction expression, "LC0" minus "L00000000001$pb" using a symbol at the end of section will not produce an assembly time constant
/var/tmp//ccr9QDpP.s:23:use a symbol with a constant value created with an assignment instead of the expression, L_const_sym = LC0 - L00000000001$pb
/var/tmp//ccr9QDpP.s:22:section difference relocatable subtraction expression, "LC0" minus "L00000000001$pb" using a symbol at the end of section will not produce an assembly time constant
/var/tmp//ccr9QDpP.s:22:use a symbol with a constant value created with an assignment instead of the expression, L_const_sym = LC0 - L00000000001$pb
てな具合で、こんな簡単なプログラムがコンパイルできない。ところが
$ vi test.F
stop 0
end
$ g77 test.F
のように stop に戻り値を入れるとコンパイルできる。ネットを探しまわった結果、Geoffrey Keating 氏が 2003/07/26 づけで
gcc 本家の CVS にパッチ (varasm.c) をあげていることが分かったので、これをバックポートした。これは、Apple のアセンブラの仕様が変わってしまって、今まで許されていたコードが許されなくなってしまったことによるらしい。パッチは新しいアセンブラが気に入るように、出力アセンブラコードに対して
STOP に戻り値を与えたときと同じ効果を与えるようにするものである。また、open 文で direct access file 開く際のデフォールトが
FORMATTED になってしまって使いにくくて仕方がないので、これも gcc 本家からこれを UNFORMATTED にするパッチ (open.c)
をバックポートしてあてた。また、gcc-3.1(10.2)の時代の g77 にくらべて最適化で壊れたコードを吐く確率が上がったような気がする。より賢くなろうとしてなりきれないで失敗するぐらいなら何もしない(たぶんこれが
gcc-3.1 でうまくいっていた理由)方がましとも言う。安全のため今までにもまして最適化レベルを変えて結果をテストすることが必要。
HEP on X ページ(英語)もこれに合わせて更新、移動した。 新しいページは http://www-jlc.kek.jp/~fujiik/macosx/10.3.X/
である。 詳細はそちらを参照のこと。
今までにコンパイルしたMacOS X Release 10.3.X 用の rpm については、 spec ファイル、パッチ、ソース RPM、バイナリー
RPM それぞれについて SPECS、
SOURCES、
SRPMS、 RPMS
に対応するものが置いてある。RPMS 以下の ppc はマシン依存な RPM 、noarch はマシン非依存な RPM の置き場所である。バイナリーのみの
RPM および Tar Ball のみのパッケージの場合には、ソースおよびパッチは src
に、また、Tar Ball は tgz
にそれぞれ置いてある。新しいものは ~fujiik/macosx/10.3.X/ 以下にある点に注意(~fujiik/macosx 直下のものは Public
Beta 用、~fujiik/macosx/10.0.X/、~fujiik/macosx/10.1.X/、~fujiik/macosx/10.2.X/
以下は 10.0.X、10.1.X、10.2.X 用の古いもの、今後更新の予定なし)。