Invoke Netinfo Manager in Applications/Utilities
Select Domain:Security:Authentication
Select Domain:Security:Activate Root Account
You need to supply root passwd
# vi /etc/hostconfig
.....
SSHSERVER=-YES-
.....
# vi /etc/sshd_config
.....
Protocol 2,1
.....
# vi /etc/ssh_config
.....
Hosts *
ForwardX11 yes
.....
# tar -zxvf rpm-4.0.2-1a-bin.tar.gz -C /この rpm には、symlink の chown の問題とか(rpm にシンボリックリンクが含まれる場合、 実体が事前に存在していないとインストールできない問題:この場合は仮の実体を touch で作っておく)、 soname を正しく調べない問題などいろいろ問題があるので、早い段階で作り直すことにする。
# rpm -initdb
# cd /usr/local/src/apple/SPECSそれでもって、Terminal Application の default shell を /bin/bash にする。
# rpm -ba bash.spec
# rpm -ivh ../RPMS/ppc/bash-2.03-1a.ppc.rpm
$ tar -zxvf gcc-926-3.tar.gzこれに、オリジナルの gcc-2.95.2 に含まれる g77 部分を上書きする。
$ mv gcc-3 gcc-2.95.2-g77
$ tar -zxvf patches/gcc-2.95.2-g77.tar.gzこのパッチは以前のものと本質的に同じだが、-fPIC を default にする変更を含む 。これで cc と default が同じになる。
$ cd gcc-2.95.2-g77/
$ patch -p1 -s < ../patches/gcc-2.95.2-macosx-rel.patch
$ export RC_ARCHS=ppcROOT のコンパイルに必要なので、以下のヘッダーも入れておく(古い API)。
$ export RC_CFLAGS='-arch ppc'
$ export RC_OS='macos'
$ export TARGETS=ppc
$ export HOSTS=ppc
$ export SRCROOT=`pwd`
$ make >& make.log &
$ make install >& install.log &
$ cp libio/stream.h libio/stdiostream.h dst/usr/include/gcc/darwin/2.95.2/g++/これをバイナリーオンリーの RPM にしたのが
$ patch -p1 -s < ../patches/gcc-2.95.2-libg2c.patch
$ cd gcc
$ for i in ../obj/cc-ppc-on-ppc/*.h; do ln -s $i .; done
$ cd ..
$ mkdir obj/ppc/libf2c
$ pushd obj/ppc/libf2c
$ CFLAGS='-traditional-cpp' $SRCROOT/libf2c/configure --srcdir=$SRCROOT/libf2c --host=ppc --target=ppc
$ make
$ cp -pP libg2c.a ../../../dst/usr/lib/gcc/darwin/2.95.2/
$ popd
$ patch -p1 -s < ../patches/gcc-2.95.2-libg2c-static.patch
$ pushd obj/ppc/libf2c
$ make distclean
$ CFLAGS='-traditional-cpp' $SRCROOT/libf2c/configure --srcdir=$SRCROOT/libf2c --host=ppc --target=ppc
$ make
$ cp -pP libg2c.a ../../../dst/usr/lib/gcc/darwin/2.95.2/libg2c_static.a$ cp g2c.h ../../../dst/usr/include/gcc/darwin/2.95.2/
$ ln -s gcc/darwin/2.95.2/g2c.h ../../../dst/usr/include/.
$ ln -s gcc/darwin/default/libg2c.a ../../../dst/usr/lib/libg2c.a
$ ln -s gcc/darwin/default/libg2c_static.a ../../../dst/usr/lib/libg2c_static.a
$ cd ../../cc-ppc-on-ppc/
$ cp g77 ../../dst/usr/bin/f77
$ cp f771 ../../dst/usr/libexec/gcc/darwin/ppc/2.95.2/
$ su
# cd ../../dst
# chown -R root:wheel usr
# pushd usr/bin
# ln -s c++ g++
# ln -s cc gcc
# ln -s f77 g77
# popd
# tar -zcvf /gcc-cvs20010413-with-g77-bin.tar.gz usr/
Building of Csu requires cctools's indr, and cctools requires Libstreams's streams/streams.hというようにからみあっており大変めんどくさい。結局あきらめるのだからやめときゃよかった。 ひょっとしたら、必要になることがあるかもしれないので、記録のみはとっておく。また、基本的に Source Tar Ball は、ADC の Darwin 1.3.1 からとってきた(CVS からとってくることもできるが、 一応正式版と同期が取れていたほうが気持ちがよいということで)。RPM にしたものはバイナリーは RPMS Directory、またソースは SRPMS Directory に置いてある。以降、make の仕方は特に必要でない限り省略するので、気になる人は SRPM を見てほしい。または、SPECS Directory および SOURCES Directory(ここにパッチがある)を参照のこと。
and Libc's architecture/ppc/processor_facilities.h and libc.a but cctools needs ctr0.o contained in Csu:-(
cctools also requires libm_static and libcc.a:-(
# rpm -ivh ../RPMS/ppc/Libstreams-22-1a.ppc.rpmで放り込む。
# rpm -ivh ../RPMS/ppc/Libm-devel-18-1a.ppc.rpm
# cd Libc-167これについては、作るのが大変なので、バイナリーオンリーの RPM
# make install DSTROOT=`pwd`/tmp
# cd tmp
# mkdir -p tmp/usr
# cd tmp
# cp -pPR ../usr/local usr/
# cp -pPR ../System .
# ln -s B System/Library/Frameworks/System.framework/Versions/Current
# ln -s Versions/Current/PrivateHeaders System/Library/Frameworks/System.framework/.
# cd ..
# tar -zcvf ../../../../tgz/Libc-167-1-bin.tar.gz .
# tar -zxvf ../../../../tgz/Libc-167-1-bin.tar.gz -C /
# cd ../..
# bash
# cd cctools-7
# 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}
# make install
# cp -P BUILD/dst/usr/local/bin/indr /usr/local/bin
# exit
# rpm -ivh ../RPMS/ppc/Libstreams-22-1a.ppc.rpm
# bashこれについても面倒なので、バイナリーオンリー RPM:cctools-7-1a.ppc.rpm のみ。
# cd cctools-7
# 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}
# make install
# tar -zcvf ../../../tgz/cctools-353-7-local.tar.gz -C BUILD/dst usr/local
# tar -zxvf ../../../tgz/cctools-353-7-local.tar.gz -C /
# rpm -ivh ../RPMS/ppc/gettext-0.10.35-1a.ppc.rpm
cc -arch "ppc" -fsigned-char -O2 -dynamic -fno-common -c xxx.cLDFLAGS としては
cc -arch "ppc" -dynamiclib -undefined suppress -install_name xxx.dylib -o xxx.dylibこうなるように、ltconfig にパッチをあてる。ここで、-dynamic は default なので書かなくてもよい。 また、-install_name hogehoge は、soname の指定と思えばよい。
# rpm -ivh ../RPMS/ppc/db3*-3.2.9-1a.ppc.rpm
# find /usr/lib -name ‘lib*.dylib’-print > dylib.list
# rpm -ivh ../RPMS/ppc/popt-1.7-0.34a.ppc.rpm
# rpm -ivh ../RPMS/ppc/rpm*-4.0.2-0.34a.ppc.rpm
# rpm -ivh ../RPMS/ppc/libcompat-14.1-1a.ppc.rpm
# rpm -ivh ../RPMS/ppc/dlcompat-20010123-1a.ppc.rpm
# vi /usr/local/lib/rpm/macrosなどとしておけばよい。
.....
%__libtoolize true
....
# vi /usr/local/lib/rpm/macrosとしておく。ただし、bzip2 の RPM を入れた場合。
.....
%_bzip2bin /usr/local/bin/bzip2
....
それと、xmkmf を使う場合、cpp に __APPLE__ FLAG を立ててもらうために
# vi /usr/bin/cppなどとしておく。
.....
ALST="-traditional -D__GNUC__ -D__APPLE__ -$"
....
# cd <wherever appropriate>とする。APPLE 標準の ltconfig では 共有ライブラリーに soname がつかないので、つけたければ、 私が多少手を加えた私家版 ltconfig を使う。 このポイントは、コンパイル時には
# cp /usr/share/libtool/{config.guess,config.sub,ltconfig,ltmain} .
cc -O2 -arch "ppc" -fsigned-char -fno-common -c hogehoge.cのように、また共有ライブラリーを作る際には
cc -arch "ppc" -dynamiclib -undefined suppress -install_name libFoo.n.dylib -o libFoo.n.m.dylib $(OBJS)のようにすること。動的ロードモジュールの場合、
cc -arch "ppc" -bundle -undefined suppress -nostdlib -install_name libFoo.n.so -o libFoo.n.m.so $(OBJS)のような感じ。
それともうひとつはまったこと。make install とやっても install が up to date と言われて、 install してくれない場合、おうおうにして、その Makefile のいるディレクトリーに INSTALL というファイルがある。 これは HFS+ が小文字と大文字を区別しないので、INSTALL というファイルは更新の必要なしと言っているわけである。こんな場合、
$ vi Makefileとつけ加えて、install が単なる FLAG であることを教えてあげる。
..........
PHONY: install
.........
readline-4.1-8a.src.rpm今までにコンパイルしたMacOS X Release 用の rpm については、 spec ファイル、パッチ、ソース RPM、バイナリー RPM それぞれについて SPECS、 SOURCES、 SRPMS、 RPMS に対応するものが置いてある。バイナリーのみの RPM および Tar Ball のみのパッケージの場合には、ソースおよびパッチは src に、また、Tar Ball は tgz にそれぞれ置いてある。 いつものように使う場合は自己責任で。
ncurses-5.0-10a.src.rpm
ncftp-3.0.2-1a.src.rpm
nkf-1.92-4a.src.rpm
less-358-16a.src.rpm
libtool-1.3.5-8a.src.rpm
automake-1.4-8a.src.rpm
bzip2-1.0.1-3a.src.rpm
Xaw3d-1.5-2a.src.rpm
kterm-6.2.0-20a.src.rpm
fvwm2-2.2.4-9a.src.rpm
jp-tcltk-8.0.5-36a.src.rpm
jp-blt-2.4m-2a.src.rpm
jp-TkDesk-1.2-2a.src.rpm
Canna-3.5b2-5a.src.rpm
kinput2-v3-2a.src.rpm
gettext-0.10.35-1a.src.rpm
gettext-0.10.35-2a.src.rpm
freetype-1.3.1-2a.src.rpm
VFlib2-2.24.2-8a.src.rpm
tkaddwd-1.0-1a.src.rpm
tkps-2.0-1a.src.rpm
psutils-1.17-10a.src.rpm
pstoedit-3.16-1a.src.rpm
libjpeg-6b-15a.src.rpm
libpng-1.0.9-1a.src.rpm