事の顛末
ファイルやメモリーアクセスの排他制御のため、semaphore が必要であるが、MacOS
X は posix semaphore しか提供しない。これは、SysV semaphore に比べて使いにくいので、http://www.darwinfo.org/で仕入れた情報により
John Bellardo さんの sysv_sem patches を使う事にした。
これをあてて、Darwin 1.2 のカーネルを再構築し、MacOS X PB のものと置き換えたところ起動せず、しかたなくもとに戻したがそれでも起動しなくなってしまった。かねてより
UFS を試してみたいという欲求があったので、深く追求する事なく、UFS で再インストール。
ところが、UFS では今までパスしていた CERNLIB の Paw Test に失敗するようになってしまった。これは再コンパイルで直るようなものかも知れないが、
MacOS X 固有のソフト、例えば IE が、ローカルファイルを開けなくなってしまったとか、不具合が続出、大文字・小文字の区別ができない以上の問題がでてきて、やむなく、HFS+
に逆戻りで再インストール。
SysV Semaphore のサポートは後回しにして、取り敢えず、ROOT のコンパイルを進める事にした。ここでまず問題になったのは、共有ライブラリーの作り方。MacOS
X では、バイナリーは Linux でおなじみの ELF ではなく、Mach-** なる特有のフォーマットで、いわゆる共有ライブラリー(lib**.dylib)と動的にロードするモジュール
(**.bundle) とは別の作り方をしないといけない。
例えば共有ライブラリーなら
c++ -O -dylib -r -nostartfiles -install_name <SONAME に対応する名前> hoge1.o hoge2.o ...... -o libhoge.dylibまた、dynamically loadable module なら
c++ -O -bundle -undefined suppress hoge1.o hoge2.o ..... -o hoge.bundleのような感じ。このオプションを適切に選ばないと duplicate symbols やら 何やらでまともに希望のものを作ってくれない。
後で書くようにいくつかパッチをあてる事により、取り敢えず、ROOT のコンパイルに成功するが、挙動不審。これは、___builtin_new
や ___builtin_delete などの衝突である事が判明。ROOT はオブジェクトの一元管理のために
new/delete を上書きして使っているが、一部で、大もとの libcc_dynamic.a にあるものが使われてしまっていた。これは、私の作った
/usr/local/lib/libcc_dynamic.a が例えば ___builtin_new を private extern
指定をせずに定義してしまっているせいだった。これはもとの darwin source
をいじっていない部分なので不思議であるが、とにかく、このせいで、ld
が ___builtin_new を "text" section でなく "Text" section にバインドしてしまい、custom
new と衝突を引き起こしていた。
gcc を作り直すのが筋だが、標準のものを使うように、応急処置として、問題の
libcc_dynamic.a をライブラリーのサーチパスの外に隠してしまう。こうすることで、lib**.dylib
に 大もとの ___builtin_new がバインドされる問題を避けられる。
しかし、それでも、Tenon の Xtools を rootless で使っていると、どこか知らない部分で 大もとの ___builtin_new が呼ばれてしまい、しかも、それが起こったり起こらなかったりで訳のわからない状態に陥る。また、GUI がマウスのイベントを受け取ったり取らなかったりもする。 Full screen mode ではこの問題は起こらない。実は、TkDesk のエディターの窓のリサイズは rootless で効かなかったりする問題と根は同じかも知れない。
さらに ROOT 同梱のテストを走らせると、いくつか問題あり(tests/vvector, vmatrix )。
Write vector v to databaseてな感じのエラー。これは、Linux でいうところの -WL,-E または -rdynamic に対応するフラッグが立っていない症状(共有ライブラリーでインポートしたシンボルが main から見えない)である。ちょっと調査しただけでは対応するフラッグが見つからなかったので、main の 先頭でApplication Object を作る事で回避する。
Warning in <TClass::TClass>: no dictionary for class TFile is available
Warning in <TClass::TClass>: no dictionary for class TVector is available
Warning in <TClass::TClass>: no dictionary for class TKey is available
Warning in <TClass::TClass>: no dictionary for class TStreamerElement is availableClose database
Warning in <TClass::TClass>: no dictionary for class TList is available
Warning in <TClass::TClass>: no dictionary for class TObject is available
Warning in <TClass::TClass>: no dictionary for class TStreamerInfo is available
Warning in <TClass::TClass>: no dictionary for class TNamed is available
Warning in <TClass::TClass>: no dictionary for class TObjArray is availableOpen database in read-only mode and read vector
Error in <TKey::ReadObj>: Cannot create new object of class TList
Error in <TKey::ReadObj>: Cannot create new object of class TVectorRead vector should be same as original still in memory
*** Break *** bus error
しかーし、なおも問題は残る。stress test の終了時、また、TBrowser で root file を見ようとすると seg-fault する。Xtools に対してすっかり信用をなくしたので XFree86 を試す事にする。時間がないのでバイナリーをインストール。実は、バイナリーは共有ライブラリーを提供しないので、X 関連のアプリケーションを再コンパイルする必要があった(どちらが手間か迷ったすえ、既に十分打ちのめされていたので、安全な道を選んでしまった)。しかし、あまり期待していなかったとはいえ、やっぱり駄目であった。
そこで、いよいよ、後回しにしていた semaphore 問題に立ち返る。しかし、一度駄目だったものはやはり駄目、悲惨な事に、またシステムが起動しなくなってしまった。今度は、簡単にはあきらめられずネット上で情報を漁った結果、FAQ であった。つまり、WallStreet では、MacOS X partition は volume の先頭から 8GB 以内になくてはならなかった。うーん、それなら始めからインストールできたり動いたりしないで欲しい。ひとたび mach_kernel の位置を動かしたが最後、 BootX はそれを見失ってしまう。結局あきらめざるをえなかった。救いは、partition を小さくしたら嘘のように SysV Semaphore パッチのあたった custom kernel が起動したこと。
しかし、上記の残された ROOT の問題は解決せず。仕方なく地道なデバッグを始める。デバッグする事半日、ようやく原因をつきとめた。
何と ROOT のバグであった。これを直すと、見事、ROOT が美しく動いてくれた。
ようやく自前のソフトの移植に移行できる。早くスキーにいきたいが、忘れてしまう前に、再インストール後の足跡を簡単に。
# vi /etc/hosts.denyそこで、Tenon よりダウンロードした Xtools をインストール。これはパッケージをダブルクリックしてインストール。その後、
ALL: ALL
# vi /etc/hosts.allow
ALL: LOCAL ***.**.***.
sshd: ALL
sshdfwd-X11: ***.**.***.
# vi /System/Library/StartupItems/SSH/SSH
......
if [ "${SSHSERVER:=-NO-}" = "-YES-" ]; then
.....
sshd -h /etc/ssh_host_key
fi
....
# vi /etc/hostconfig
....
SSHSERVER=-YES-
# vi /etc/sshd_config
....
Protocol 2,1
....
# vi /etc/ssh_config
....
Host * ....
ForwardX11 yes
....
# patch -p0 < memo/xtools.config.patch上記のパッチは共有ライブラリーを正しくインストールさせるために必要(canna で問題になった)。
# cd <somewhere>/fonts
# ls
6x12rk.pcf.gz fonts.alias.75dpi.added s5x8.pcf.gz
a12.pcf.gz fonts.alias.misc.added
elisau10.pcf.gz k12.pcf.gz
# cp *.gz /usr/X11R6/lib/X11/fonts/misc/
# mkfontdir /usr/X11R6/lib/X11/fonts/misc/
# cat fonts.alias.75dpi.added >> /usr/X11R6/lib/X11/fonts/75dpi/fonts.alias
# cat fonts.alias.misc.added >> /usr/X11R6/lib/X11/fonts/misc/fonts.alias
# tar -zxvf Xaw3d-1.5-bin.tar.gz -C /また、日本語環境も適当に。
# pushd /usr/X11R6/lib
# mv libXaw.dylib libXaw.dylib.ORIG
# ln -s libXaw3d.dylib libXaw.dylib
# popd
# tar -zxvf bash-2.03-bin.tar.gz -C /
# cp /usr/local/bin/bash /bin/bash
# tar -zxvf less-358-bin.tar.gz -C /
# tar -zxvf nkf_1.92_1-bin.tar.gz -C /
# tar -zxvf kterm-6.2.0-bin.tar.gz -C /
# tar -zxvf Canna-3.5b2-bin.tar.gz -C /
# tar -zxvf kinput2-v3-bin.tar.gz -C /# tar -zxvf tcltk-8.0.5jp-bin.tar.gz -C /
# tar -zxvf tkdesk-1.2jp-bin.tar.gz -C /
次に、まず ADC より入手した Apple's developer tools をインストール。これもパッケージをダブルクリックしてインストール。
また、以下のものは Apple の Darwin source repository よりダウンロードし、コンパイルする。/usr/bin/cc
また、make は 3.79 を使う事。
コンパイルには
export HOSTTYPE=macintoshなどとしておくと良い。
export VENDOR=apple
export OSTYPE=macos
export MACHTYPE=powerpc
export MAKEFILEPATH=/Developer/Makefilesexport RC_ARCHS=ppc
export RC_CFLAGS='-arch ppc'
export RC_OS='macos'
export SRCROOT=`pwd`
export TARGETS=ppc
export HOSTS=ppc
$ cd bootstrap_cmds-24
$ mkdir tmp
$ su
# make install DSTROOT=`pwd`/tmp
# mkdir /Library/Frameworks
# cp -PR /System/Library/Frameworks/IOKit.framework /Library/Frameworks/IOKit.fr
amework
# mkdir /Local
# ln -s ../Library /Local/Library
# exit
$ ln -s xnu-3-1 xnu
$ cd xnu
$ vi SETUP/setup.sh
....
export SRCROOT=`pwd`
....
$ make exporthdrs
$ make
$ make install
$ ^C # quit when compilation starts$ IOKitUser-3-1-0-1
$ vi Makefile
....
NEXTSTEP_BUILD_OUTPUT_DIR = /Users/fujiik/sandbox/xnu/BUILD/dst/System/Library/F
rameworks
...
$ make$ su
# pushd ../xnu/BUILD/dst/System/Library/Frameworks/
# cp -Rp IOKit.framework/Versions/A/Headers/* /Library/Frameworks/IOKit.framewor
k/Versions/A/Headers/# popd
# pushd ../xnu/BUILD/dst/System/Library/Frameworks/System.framework/
# cp -R libkern /System/Library/Frameworks/System.framework/Headers/libkern
# popd
$ cd ~/sandbox/darwin/build/Libm-18-1
$ su
# make install DSTROOT=`pwd`/tmp
# cd tmp
# tar -zcvf ../../../tgz/Libm-18-1-bin.tar.gz .
# tar -zxvf ../../../tgz/Libm-18-1-bin.tar.gz -C /
# exit$ cd ../Libcurses-23
$ su
# make install DSTROOT=`pwd`/tmp
# cd tmp
# tar -zcvf ../../../tgz/Libcurses-23-bin.tar.gz .
# tar -zxvf ../../../tgz/Libcurses-23-bin.tar.gz -C /
# exit$ cd ../Libcompat-14-1
$ su
# make install DSTROOT=`pwd`/tmp
# cd tmp
# tar -zcvf ../../../tgz/Libcompat-14-1-bin.tar.gz .
# tar -zxvf ../../../tgz/Libcompat-14-1-bin.tar.gz -C /
# exit$ cd ../Libstreams-21-1
$ su
# make install DSTROOT=`pwd`/tmp
# cd tmp
# tar -zcvf ../../../tgz/Libstreams-21-1-bin.tar.gz .
# tar -zxvf ../../../tgz/Libstreams-21-1-bin.tar.gz -C /
# pushd /System/Library/Frameworks/System.framework/
# ln -s Versions/Current/PrivateHeaders .
# popd
# exit$ cd ../Csu-35
$ su
# make install DSTROOT=`pwd`/tmp
# cd tmp
# tar -zcvf ../../../tgz/Csu-35-bin.tar.gz .
# tar -zxvf ../../../tgz/Csu-35-bin.tar.gz -C /
# exit$ cd ../libc-149
$ make
$ su
# pushd /Users/Public/SandBox
# ln -s fujiik root
# popd
# make install DSTROOT=`pwd`/tmp
# cd tmp
# tar -zcvf ../../../tgz/Libc-149-bin.tar.gz .
# tar -zxvf ../../../tgz/Libc-149-bin.tar.gz -C /
# exit$ cd ../cctools-6-1
$ cat ~/memo/setup.sh
export RC_ARCHS=ppc
export RC_CFLAGS='-arch ppc'
export RC_OS='macos'
export TARGETS=ppc
export HOSTS=ppc
export SRCROOT=`pwd`
export OBJROOT=$SRCROOT/BUILD/obj
export SYMROOT=$SRCROOT/BUILD/sym
export DSTROOT=$SRCROOT/BUILD/dst
$ mkdir -p BUILD/{obj,sym,dst}
$ source ~/memo/setup.sh
$ make install >& install.log
$ su
# cd BUILD/dst
# tar -zcvf ../../../../tgz/cctools-6-1-local-bin.tar.gz usr/local
# exit$ cd gcc-2
$ cp -PR <somewhere>/libf2c .
$ cp -PR <somewhere>/gcc/f gcc/.
$ patch -p1 -s < <somewhere>/gcc-2.95.2-libg2c.patch
$ patch -p1 -s < <somewhere>/gcc-2.95.2-macosx.patch
$ make >& make.log &
$ cd gcc
$ for i in ../obj/cc-ppc-on-ppc/*.h; do ln -s $i .; done
$ cd ..
$ mkdir obj/ppc/libf2c
$ cd obj/ppc/libf2c
$ CFLAGS='-traditional-cpp' $SRCROOT/libf2c/configure --srcdir=/Users/fujiik/sandbox/gcc-2/libf2c --host=ppc --target=ppc
$ make TARGETS='ppc' HOSTS='ppc' >& make.log &
$ cd dlcompat-20010123
$ cat dlcompat-20010123-makefile.patch
--- dlcompat-20010123/Makefile.ORIG Fri Jan 19 01:30:29 2001
+++ dlcompat-20010123/Makefile Fri Jan 26 14:44:28 2001
@@ -31,7 +31,7 @@
CFLAGS=-Wall -O2 -DDEBUG=$(DEBUG)
AR=ar cru
RANLIB=ranlib
-INSTALL=install
+INSTALL=install -cOBJS = dlopen.o
@@ -39,12 +39,14 @@
all: libdl.a libdl.dylibinstall: all
- if test ! -d $(prefix)/lib ; then mkdir $(prefix)/lib ; fi
- $(INSTALL) -m 644 libdl.a $(prefix)/lib
- $(RANLIB) $(prefix)/lib/libdl.a
- chmod 644 $(prefix)/lib/libdl.a
- $(INSTALL) -m 755 libdl.dylib $(prefix)/lib
- if test ! -d $(prefix)/include ; then mkdir $(prefix)/include ; fi
+ if test ! -d $(prefix)/lib/system ; then mkdir -p $(prefix)/lib/system ;
fi
+ $(INSTALL) -m 644 libdl.a $(prefix)/lib/system
+ $(RANLIB) $(prefix)/lib/system/libdl.a
+ chmod 644 $(prefix)/lib/system/libdl.a
+ ln -s system/libdl.a $(prefix)/lib/.
+ $(INSTALL) -m 755 libdl.dylib $(prefix)/lib/system
+ ln -s system/libdl.dylib $(prefix)/lib/.
+ if test ! -d $(prefix)/include ; then mkdir -p $(prefix)/include ; fi
$(INSTALL) -m 644 dlfcn.h $(prefix)/include
$ patch -p1 -s < dlcompat-20010123-makefile.patch
$ make
$ su
# make install prefix=usr/local
# tar -zcvf dlcompat-2001023-bin.tar.gz usr
# tar -zxvf dlcompat-2001023-bin.tar.gz -C /
$ for i in *.tar.gz; do tar -zxvf $i; doneそして、TkDesk。
$ tcl8.0.5/
$ patch -p2 < ../../tcl8.0.3-glibc21.patch
$ patch -p2 < ../../tcl8.0.5-sigpwr.patch
$ patch -p0 < ../../tcl8.0.5jp1.6.patch
$ patch -p1 < ../../tcl8.0.5-macosx-shared.patch
$ cd ../itcl3.0.1/
$ patch -p5 -s < ../../itcl_fix.diff
$ patch -p1 -s < ../../itcl3.0.1jp-tkpath.patch
$ patch -p1 < ../../tk8.0.5-macosx-shared.patch
$ cd ../tk8.0.5/
$ patch -p0 -s < ../../tk8.0.5jp1.6a.patch
$ patch -p1 -s < ../../tk8.0.5jp1.6a-im.patch
$ patch -p2 -s < ../../tcl8.0.5jp-path.patch
$ patch -p1 < ../../itcl3.0.1-macosx-shared.patch$ cd tcl8.0.5/unix
$ ./configure --enable-shared --enable-gcc --prefix=/usr/local
$ make >& make.log # with libc and libm, I don't need to set LIBS$ cd tk8.0.5/unix
$ ./configure --enable-shared --enable-gcc --with-tcl=../../tcl8.0.5/unix --pref
ix=/usr/local
$ make >& make.log # with libc and libm, I don't need to set LIBS$ cd itcl3.0.1/
$ ./configure --enable-shared --prefix=/usr/local -enable-gcc \
--with-tcl=/Users/fujiik/sandbox/mypkg/src/tcltk/build/tcl8.0.5/unix/ \
-with-tk=/Users/fujiik/sandbox/mypkg/src/tcltk/build/tk8.0.5/unix/
$ make CC='gcc -DKANJI -DKINPUT2 -DXIM_IMPROVE' >& make.log &
$ tkdesk-1.2
$ patch -p1 < ../tkdesk-1.2+jp.patch
$ patch -p0 < ../exit-save-dd.diff
$ cd tcldesk/
$ patch -p0 < ../../appbar-dnd.diff
$ patch -p0 < ../../empty-trash.diff
$ patch -p0 < ../../find-dd.diff
$ cd ..
$ ./configure --prefix=/usr/local
$ make CC_OPTS="-O2 -DKANJI -DKINPUT2 -DXIM_IMPROVE"
$ mkdir -p usr/local/{bin,lib,man}
$ make install INSTALL_ROOT=`pwd`
# tar -zxvf lesstif-08102000.tar.gz -C /
# pushd /usr/X11R6/include/
# ln -s ../../local/LessTif/Motif1.2/include/Xm .
# ln -s ../../local/LessTif/Motif1.2/include/Mrm .
# cd include
# ln -s ../Xm .
# ln -s ../Mrm .
# cd ../lib
# ln -s ../../local/LessTif/Motif1.2/lib/libXm.a .
# ln -s ../../local/LessTif/Motif1.2/lib/libMrm.a .
# popd
# mkdir /cernlib
# ln -s cernlib /cern
# ln -s 2000 /cern/pro
# for i in cernlib-2000-*; do tar -zxvf $i -C /cernlib/; done
# tar -zxvf patchy-4.15-bin.tar.gz -C /# tar -zxvf readline-4.1-bin.tar.gz -C /
# tar -zxvf termcap-2.0.8-bin.tar.gz -C /
# tar -zxvf dis45-v1.36-bin.tar.gz -C /# tar -zxvf freetype-1.3.1-bin.tar.gz -C /
# cd /etc
# mv X11 X11.tenon
# cd /usr
# mv X11R6 X11R6.tenon
# cd <somewhere>
# sh Xinstall.sh
# tar -zxpvf XAqua0.2.tgz -C /
# cd <somewhere>/fonts
# ls
6x12rk.pcf.gz fonts.alias.75dpi.added s5x8.pcf.gz
a12.pcf.gz fonts.alias.misc.added
elisau10.pcf.gz k12.pcf.gz
# cp *.gz /usr/X11R6/lib/X11/fonts/misc/
# cat fonts.alias.75dpi.added >> /usr/X11R6/lib/X11/fonts/75dpi/fonts.alias
# cat fonts.alias.misc.added >> /usr/X11R6/lib/X11/fonts/misc/fonts.alias
# pushd /usr/X11R6/lib/X11/config
# vi Imake.cf
.....
#if defined(__APPLE__)
# undef __APPLE__
# define MacroIncludeFile <darwin.cf>
# define MacroFile darwin.cf
# define DarwinArchitecture
# define MacOSXArchitecture # for convenience
#endif
Lesstif の代わりに OpenMotif にしてみる。
# cd <somewhere>OpenGL も
# ls
Mrm-headers.tar.gz libUil.a.gz
Uil-headers.tar.gz libXm.a.gz
Xm-headers.tar.gz usr-include-headers.tar.gz
libMrm.a.gz
# for i in Mrm-headers.tar.gz Uil-headers.tar.gz Xm-headers.tar.gz; do tar -zxpv
f $i -C /usr/X11R6/include; done
# cp libXm.a.gz libMrm.a.gz libUil.a.gz /usr/X11R6/lib
# pushd /usr/X11R6/lib
# gunzip libXm.a.gz libMrm.a.gz libUil.a.gz
# for i in libXm.a.gz libMrm.a.gz libUil.a.gz; do ranlib -s $i; done
# cd ../include/X11
# for i in ../Xm ../Mrm ../Uil; do ln -s $i .; done
# cd ../../libこれでもって、Xaw3d、fvwm2、kinput2、Tcl/Tk、TkDesk など X 関連をリンクし直し。うーん、やっぱり共有ライブラリーが欲しい。
# cp /usr/X11R6.tenon/lib/libGLU.a .
# cp /usr/X11R6.tenon/lib/libglut.a .
# for i in libGLU.a libglut.a; do ranlib -s $i; done
# cp -pPR /usr/X11R6.tenon/include/GL /usr/X11R6/include
日本語キーボードを ascii 配列で使うため
$ vi ~/.Xmodmapなどとしておく。また、X 起動時に fvwm2 と TkDesk が立ち上がるようにしておく。
keycode 101 = grave asciitilde
$ cat $HOME/bin/tkdeskとにかく、bash を使いたいので、.profile で export SHELL=/bin/bash にする反則技を使っている。
#!/bin/bash
source ~/.profile
xmodmap ~/.Xmodmap
export SHELL=/bin/bash
exec /usr/local/bin/tkdesk $*
$ vi ~/.xinitrc
.....
$HOME/bin/tkdesk $* &
exec /usr/local/bin/fvwm2$ ln -s .Xdefaults ~/.Xresources
Xtools に戻るには /etc/X11 と /usr/X11R6 を入れ換えれば良い。
$ cd xnuパッチ、および precompiled kernel はここ。私のマシンでは動いたが、動作する保証は全くないので使う場合は自己責任で。
$ pushd bsd/kern
$ patch -s < ~/sandbox/xnu-patches/sysvsem_bsd_kern.patch
$ mv sysv_sem.c sysv_sem.c.ORIG
$ cp ~/sandbox/xnu-patches/sysv_sem.c
$ cd ../sys
$ patch -s < ~/sandbox/xnu-patches/sysvsem_bsd_sys.patch
$ mv sem.h sem.h.ORIG
$ cp ~/sandbox/xnu-patches/sem.h .
$ cd ../conf/
$ patch -s < ~/sandbox/xnu-patches/sysvsem_bsd_conf.patch
$ popd
$ make installhdrs
$ make install
コンパイルの仕方は
$ tar -zxvf ../orig/root_v3.00.02.source.tar.gzstream.h と stdiostream.h は g++ のもの。Apple の標準ではインストールされない。私家版の MacOSX パッチには、ROOT 自体の問題に対する以下のパッチも含まれる。
$ tar -zxvf ../orig/ttf_1.1.tar.gz
# mv ttf/fonts /usr/share/fonts/ttf
# pushd /cern/pro/lib
# ln -s libpythia6134.a libPythia.a
# pushd /System/Library/Frameworks/System.framework/Headers/c++
# cp -p <somewhere>/stream.h .
# cp -p <somewhere>/stdiostream.h .
$ cd root
$ export ROOTSYS=`pwd`
$ export LD_LIBRARY_PATH=$ROOTSYS/lib
$ export PATH=$ROOTSYS/bin:$PATH
$ patch -p1 -s < ../orig/root_v3.00.02-macosx-0.2.patch
$ export PATH=/usr/bin:$PATH # use standard cc and c++
$ ./configure darwin
$ make
$ cd lib
$ for i in *.dylib; do lib=`basename $i .dylib`; \
g++ -O -bundle -undefined suppress -o $lib.so $i; done
--- 3.00.02/gui/src/TGButton.cxx.ORIG Tue Oct 17 21:34:52 2000この問題のせいで、fGroup にゴミが入っていると、実体がいると思って参照先を delete に行って seg-fault する。
+++ 3.00.02/gui/src/TGButton.cxx Tue Feb 6 16:14:45 2001
@@ -76,6 +76,7 @@
fMsgWindow = p;
fUserData = 0;
fTip = 0;
+ fGroup = 0;fNormGC = norm;
fState = kButtonUp;
今までにコンパイルしたもののソースおよびパッチは macosx/src
に、またバイナリーの tar ball は macosx/tgz
または macosx/darwin.tgz
にそれぞれ置いてある。いつものように使う場合は自己責任で。