2001/04/28    CERNLIB on MacOS X Release

準備ができたので、まずは CERNLIB から。
 

[0] お膳立て

コンパイル環境は、

        MacOS X Release 10.0.01
        make-3.78-1a
        gcc-with-g77-2.95.2-1a
        Libc-167-1a
        Libcomapt-14.1-1a
        dlcompat-20010123-1a
 

である。いぜん LinuxPPC の場合もそうであったように、MacOS X の標準開発環境に含まれる make-3.79 では、strip に null string を入れることが許されず、make がこけてしまう。やむなく make-3.78 を入れた。Motif は OpenMotif を使おうとしたのだが、Paw++ が動かなかったので libXm.a のみ lesstif より取ってきて使った。

ソースには、本来は、MacOS X 用の #ifdef を用意すべきであるが、面倒なので、基本的に LinuxPPC のものを流用する。それでも MacOS X 用にいくつか patch が必要であった。それについては以下にでてくるパッチを参照。

# cd /
# ln -s ~/sandbox/mypkg/src/cernlib cern
# cd /cern
# for i in `ls <somewhere>/src_*.tar.gz`; do tar -zxvf $i; done
# ln -s 2000 new
# ln -s 2000 pro
# mkdir -p 2000/work
# chown fujiik:jlc 2000/work
# chown fujiik:jlc 2000
# cd src
# patch -p1 -s < <somewhere>/cernlib-2000-macosx.patch

[1] コンパイル

準備ができたらあとは、おきまりの手順で作業する。
$ export CVSCOSRC=/cern/2000/src
$ cd /cern/2000/work
$ mkdir ../{bin,logs}
$ cp $CVSCOSRC/scripts/cernlib ../bin
$ $CVSCOSRC/config/imake_boot
$ make tree HAVE_MOTIF='YES' >& ../logs/tree.log &
$ tail -f ../logs/tree.log
^C

$ pushd packlib/kuip/programs/kuipc
$ make
$ make install.bin
$ popd
$ make HAVE_MOTIF='YES' >& ../logs/make.log &
$ tail -f ../logs/make.log

$ cd packlib
$ make install.bin HAVE_MOTIF='YES' >& ../../logs/packlib.bin.log &
$ tail -f ../../logs/packlib.bin.log

$ cd ../pawlib
$ make install.bin HAVE_MOTIF='YES' >& ../../logs/pawlib.bin.log &
$ tail -f ../../logs/pawlib.bin.log

$ cd ../graflib
$ make install.bin HAVE_MOTIF='YES' >& ../../logs/graflib.bin.log &
$ tail -f ../../logs/graflib.bin.log

$ cd ../scripts
$ make install.bin HAVE_MOTIF='YES' >& ../../logs/scripts.bin.log &
$ tail -f ../../logs/scripts.bin.log

$ cd ..
$ make install.include CERN_INCLUDEDIR=/cern/new/include >& ../logs/install.include.log &
$ tail -f ../logs/install.include.log

$ su
# tar -zxvf <somewhere>/patchy-4.15-bin.tar.gz -C /
# exit
$ cd patchy
$ PATH=.:$PATH make install.bin HAVE_MOTIF='YES' >& ../../logs/patchy.bin.log &
$ tail -f ../../logs/patchy.bin.log

てな具合で clean make できるはずである。

[2] テスト

$ cd ../packlib
$ make test >& ../../logs/packlib.test.log &
$ tail -f ../../logs/packlib.test.log

        ALL TESTS PASSED!

$ cd ../mathlib
$ make test >& ../../logs/mathlib.test.log &
$ tail -f ../../logs/mathlib.test.log

        ALL BUT TEST C327 PASSED!

$ cd ../graflib/higz/examples
$ make higzex
$ ./higzex

        OK!

$ cd ../../../../src/pawlib/paw/demo
$ paw all.kumac
...
go
...
        OK!
 

$ cd ../../../../work/mclibs
$ make test >& ../../logs/mclibs.test.log &
$ tail -f ../../logs/mclibs.test.log

        ALL TESTS PASSED!
        but remember you remove lepto63 from testlibdir.

$ cd ../phtools
$ make test >& ../../logs/phtools.test.log &
$ tail -f ../../logs/phtools.test.log

        ALL TESTS PASSED!

$ cd ../geant321
$ make test >& ../../logs/geant321.test.log &
$ tail -f ../../logs/geant321.test.log

        ALL TESTS PASSED!

mathlib の C327 の問題は追求していない。時間がとれ次第追求。
 

[3] Aftermath

# cd ~/sandbox/mypkg/src/cernlib
# chown -R root:wheel 2000
# mkdir 2000/tgz
# tar -zcvf 2000/tgz/cernlib-2000-bin.tar.gz 2000/bin
# tar -zcvf 2000/tgz/cernlib-2000-lib.tar.gz 2000/lib
# tar -zcvf 2000/tgz/cernlib-2000-include.tar.gz 2000/include
# tar -zcvf 2000/tgz/cernlib-2000-share.tar.gz 2000/share

 

今までにコンパイルしたMacOS X Release 用の rpm については、 spec ファイル、パッチ、ソース RPM、バイナリー RPM それぞれについて SPECSSOURCESSRPMSRPMS に対応するものが置いてある。バイナリーのみの RPM および Tar Ball のみのパッケージの場合には、ソースおよびパッチは src に、また、Tar Ball は tgz にそれぞれ置いてある。新しいものは ~fujiik/macosx/10.0.X/ 以下にある点に注意(~fujiik/macosx 直下のものは Public Beta 用の古いもの)。  いつものように使う場合は自己責任で。


Back to Keisuke Fujii's MkLinux/LinuxPPC Life