nandra | macppc | Entry | (daily) | 2003 1206 1128 0726 0615 0517 0503 0420 0329 ) | cvs tracking | 2002 ( 1214 1116 1114 1109 0817 0816 0802 0801 0722 ) OpenBlockS

build.sh for NetBSD

OS を全て組立てる方法です。/usr/src で make build とやるので、 make build と呼んだりしていました、 しかし 2001/11 頃に導入された NEW_TOOLCHAIN のしくみでは build.sh を使うので、これからは多分 build.sh と呼ぶようになるのでしょう。
Release の上で、同じものをもう一度組立てるのは簡単なのですが、 動いている版と作ろうとする版が時間的に離れていると、 必ずしもそう簡単ではありません。要するに出来たものを少しずつ 更新していくことが必要になります。
というのが 2001/11 月頃までの知識でしたが、 NEW TOOLCHAIN というしくみになって、./build.sh するようになると、
組立てるのに必要な道具、例えば cc, make, as などをまず作ることから始めるので、そうでもなくなり、 cross も含めて、どのような系からでも release(7) が作れる
ようになっているはずです (但し x の方は作ったものを動かして書体を作ったりするので、self に限ります)。

src を開けて、cd src 、場合によっては cd usr/src してから、

setenv DESTDIR     /hogedest
setenv RELEASEDIR  /hogerelease
time ./build.sh -D $DESTDIR -R $RELEASEDIR >& ../log
のようにするだけで、全て作ってくれます。
./build.sh -help とすると、次のような表示が出ます。
Usage:
./build.sh [-bdorUu] [-a arch] [-B buildid] [-j njob] [-m mach] 
   [-w wrapper] [-D dest] [-M obj] [-O obj] [-R release] [-T tools]

    -a: set MACHINE_ARCH to arch (otherwise deduced from MACHINE)
    -B: set BUILDID to buildid
    -b: build nbmake and nbmake wrapper script, if needed
    -D: set DESTDIR to dest
    -d: build a full distribution into DESTDIR (including etc files)
    -j: Run up to njob jobs in parallel; see make(1)
    -M: set obj root directory to obj (sets MAKEOBJDIRPREFIX)
    -m: set MACHINE to mach (not required if NetBSD native)
    -n: show commands that would be executed, but do not execute them
    -O: set obj root directory to obj (sets a MAKEOBJDIR pattern)
    -o: set MKOBJDIRS=no (do not create objdirs at start of build)
    -R: build a release (and set RELEASEDIR to release)
    -r: remove contents of TOOLDIR and DESTDIR before building
    -T: set TOOLDIR to tools
    -t: build and install tools only (implies -b)
    -U: set UNPRIVED
    -u: set UPDATE
    -w: create nbmake script at wrapper (default TOOLDIR/bin/nbmake-MACHINE)

Note: if -T is unset and TOOLDIR is not set in the environment,
      nbmake will be [re]built unconditionally.
この解説は時間があれば書加えます。

自分の都合は /etc/mk.conf に書きます。設定する変数名は man 5 mk.conf に説明があります。 例えば、

.ifndef BSD_PKG_MK
DESTDIR=     /export/20020114d  # not a good practice to hardcode
RELEASEDIR=  /export/20020114r  # not a good practice to hardcode
#### USETOOLS=yes
#### USE_NEW_TOOLCHAIN=yes
# TOOLCHAIN_MISSING=yes    # set only if the architecture does not have it
.endif

# For pkgsrc
.ifdef BSD_PKG_MK
ACCEPTABLE_LICENSES+=fee-based-commercial-use opera-license no-commercial-use
ACCEPTABLE_LICENSES+=adobe-acrobat-license jdk-license shareware no-profit
.endif

# make cleandir && cvs update -dP
# ./build.sh -r -t >& /tmp/bootstrap-$DATE
# ./build.sh -R    >&  ../log

build.sh 再開問題

問題が解決した後, build.sh -u -R
http://www.unixmagic.org/ml/netbsd/200201/msg00040.html
$TOOLDIR/bin/nbmake-$MACHINE_ARCH を使って
http://www.unixmagic.org/ml/netbsd/200201/msg00024.html

参考 URL

Tracking NetBSD-current with CVS (日本語)
http://www.jp.netbsd.org./ja/Documentation/current/
Tracking NetBSD-current with CVS
http://www.jp.netbsd.org./Documentation/current/
この中に書いてあることを見ると 150MB x 3 必要とある。 しかし、これは kernel だけの話で、しかも最近は 200M は必要。(2001/01)
/usr/src/UPDATING
の中にも、新しくする方法が書いてある
NetBSD Developer Documentation: Release Engineering
http://www.netbsd.org/developers/releng/build-release.html
必要な disk の大きさ (単位 MB, 2001/07 .. 11 月頃)
区分 FTP /usr/src $DESTDIR (/,/usr)$RELEASEDIR (*.tgz)
作業等 *.tar.gztar zxf 後 ./build.sh ./build.sh -R $RELEASEDIR
src 104 506 820130 55
xsrc (xc = XF86 3.x)35 172 226 30 13
xsrc (xfree = XF86 4.x) 50 258

-
doc 0.20.7

-
pkgsrc 9.688

-
Total 197 1025
68

source (とその取得法) には何種類かある

( anoncvs, -current/*.tar.gz, sup, snapshot, release)
anoncvs
この方法で持って来ると、常に -current source tree
しかし最初からこれを持って来ようとすると、結構時間がかかる(一例、数時間)
そこで、Release Cycle でない時には のがいい。

と書いていたが、例えば 14kBytes/s の回線だとして、 tar 形式の 100MBytes は 7,000 秒。約 2 時間
anoncvs だと 2:40 くらい。
とすると、日付について自由に取出せる anoncvs の方が有利な気がする。
最近は、例えば「10 日くらい前のものを取出して、その中で問題のあるものだけを少し 新しくする」方法を気に入っている。
そういう時は anoncvs に限る。(相手の機械に少し負担が増えるけれど)

NetBSD-current/tar_files/src/*.tar.gz
これは時期によって二種類ある。
  1. (良くある)長い Release cycle (1.5 が出るよーとお知らせがあって、1.5_ALPHA などというものが用意 されてから、本当に公開されるまでや、その後しばらくの間) の時には、(-current という下に置いてあるにもかかわらず)
    Release の方の source のことがあるので注意が必要 (Release 枝)
  2. それ以外は anoncvs と殆んど同じ
    ftp://ftp.jp.netbsd.org/pub/NetBSD/NetBSD-current/ tar_files/src/
tar で持って来たものと CVS で持って来たものは少し違う
tar で持って来たものと anoncvs から持って来たものは Repository と Root という名前の譜の中身が少しだけ違うので、 その後に CVS で更新しようとする場合、変更する必要がある。

tar_files/src/*.tar.gz と anoncvs から取得したものの中に書いてあること
譜名RepositoryRoot
譜名例 src/bin/cat/CVS/Repository src/bin/cat/CVS/Root
取得方法 *.tar.gz /cvsroot/basesrc/bin/cat anoncvs@anoncvs.netbsd.org:/cvsroot
anoncvs basesrc/bin/cat :pserver:anoncvs@sup.jp.netbsd.org:/cvs/cvsroot
注釈 (内容は一例) tar.gz の方は /cvsroot が頭に余分に付いている内容は一定(*1)

(*1) ssh を使う場合 (setenv CVS_RSH ssh) には更に :pserver: という字は不要になる。

tar.gz から CVS 形式への変更
http://www.unixmagic.org/ml/netbsd/199911/msg00194.html 一時的に見えないかも知れないので → cache
当時と少し事情が違うのか、僕の場合、次のような sh script を使っている。
#!/bin/sh
for f in `find . -name Repository` ; do
        echo $f
        mv $f $f.orig
        sed -e 's|^/cvsroot/||' $f.orig > $f
        rm $f.orig
done
echo ":pserver:anoncvs@sup.jp.netbsd.org:/cvs/cvsroot" > /tmp/A
find . -name Root -exec cp /tmp/A {} \;
sup
上記 src/*.tar.gz に連動
snapshot/src
snapshot を作った時の src 。 architecture によっては、用意されているものもある。 ftp://ftp.jp.netbsd.org/pub/NetBSD/arch/i386/snapshot/ 20001014/source/sets/ (全部揃っている)
ftp://ftp.jp.netbsd.org/pub/NetBSD/arch/i386/snapshot/ 20010206/source/sets/ (syssrc のみ)
Release src
Release を作った時の src
これなら、必ず make build 出来るはずなので、速い機械なら、 まずこれで練習する方がいいと僕は思う。
(これが出来ないようだと他のことが出来るはずがないから) ftp://ftp.jp.netbsd.org/pub/NetBSD/NetBSD-1.5/source/sets/

CVS 保管庫を全て手元に

http://www.netbsd.org/Sites/net.html を見ると、Mirror site が全て書いてある。
CVSup
(現在のところ) i386 の機械でのみ利用出来る
rsync
ftpmirror

準備

/usr/src で make build すればいいと良く書いてあるが、 実際には次のような段階を踏む。
/usr/src に広げる
tar をまとめて開けるには次のようにするのが簡単。
makoto@harry  20:23:17/990220(/usr)> foreach i ( src/tar_files/*tar.gz )
foreach? echo $i
foreach? tar zxf $i
foreach? end
(この後で CVS で更新するなら、更新する前までに、上に書いてある tar.gz -> CVS 形式変更 をしておく )
cvs -d :pserver:anoncvs@sup.jp.netbsd.org:/cvs/cvsroot login
(anoncvs)
cvs -d :pserver:anoncvs@sup.jp.netbsd.org:/cvs/cvsroot checkout -c
cvs -d :pserver:anoncvs@sup.jp.netbsd.org:/cvs/cvsroot checkout src
cvs -d :pserver:anoncvs@sup.jp.netbsd.org:/cvs/cvsroot update -P -d src
などを使う。 (上記 checkout -c すると、利用出来るモジュールの名前を全て表示する)
config を作る
kernel の版によっては config の書式が違っていると言って 動かない。そういう時は まず config.tar.gz を開けて make; make install する。
kernel を作る
別のところを見て下さい
/etc/mk.conf
次のような字を見たら、
"Makefile", line 68: Malformed conditional (${MKMAN} != "no" && !defined(_BUILD))
/etc/mk.conf を設定する
環境変数を設定する
make build は
  1. まず、/usr/include を新しくして、
  2. その次に /usr/lib を新しくする。
それらを本当に、今使っているところにすると、もし動かなくなった時に、 元に戻れなくなってしまうので、 その位置を DESTDIR で別に設定するのが普通。 僕は自分が混乱 しないように mkdir /usr/DESTDIR しておいて、そこを使っている。 (その場合、 所有者を自分にしておけば、root でなくても make build 出来るはず)
setenv DESTDIR /usr/DESTDIR
そうして make build または make release

実際例 .. 旧式

cvs repository から checkout すると (2001/10/14 の場合で)、506M くらい必要
setenv DESTDIR   /usr/DESTDIR   ここに作る。そうしておかないと 後で
                                make release した時に、/etc などを
                                上書きしてしまう
makedir         $DESTDIR
make build                      (例えば三時間)
setenv BUILD_DONE 1             
setenv RELEASEDIR /usr/RELEASE  ここに base.tgz などを作ってくれる
make release                    GENERIC, INSTALL などの kernel も作るので時間
                                がかかる
/usr/xsrc も同様にする

実際例 .. 最近の方式

ttyp0:makoto@quick  10:11:14/020604(/export)> foreach i (/a/j/NetBSD/NetBSD-current/20020526/src/*.tar.gz)
foreach? echo $i
foreach? tar zxf $i
foreach? end
ttyp0:makoto@quick  10:16:20/020604(/export)> mv src 20020526
ttyp0:makoto@quick  10:16:23/020604(/export)> ln -s 20020526 src
ttyp0:makoto@quick  10:16:26/020604(/export)> cd 20020526
ttyp0:makoto@quick  10:16:31/020604(/export/20020526)> which gcc
/usr/pkg/bin/gcc
ttyp0:makoto@quick  10:16:39/020604(/export/20020526)> which cc
/usr/pkg/bin/cc
ttyp0:makoto@quick  10:16:43/020604(/export/20020526)> gcc --version
3.0.4
ttyp0:makoto@quick  10:16:47/020604(/export/20020526)> cc --version
3.0.4
ttyp0:makoto@quick  10:16:51/020604(/export/20020526)> cd sys/arch
ttyp0:makoto@quick  10:17:01/020604(...sys/arch)> mv macppc macppc-HEAD
ttyp0:makoto@quick  10:17:08/020604(...sys/arch)> mv powerpc powerpc-HEAD
                                                  tar zxf /a/j/nandra/macppc-020525.tar.gz
ttyp0:makoto@quick  10:17:15/020604(...sys/arch)> cd ../..
ttyp0:makoto@quick  10:17:42/020604(/export/20020526)> patch -s -p0 < ~/Mail/ml/port-powerpc-ja/1934
ttyp0:makoto@quick  10:17:50/020604(/export/20020526)> mkdir /export/20020526d
ttyp0:makoto@quick  10:18:03/020604(/export/20020526)> mkdir /export/20020526r
ttyp0:makoto@quick  10:18:04/020604(/export/20020526)> su

time ./build.sh -R /export/20020526r -D /export/20020526d >& ../20020526-build.sh

日付別

20021109(ts) 1.6K --- 20021109-UTC 021109 作業
20021028(na) 1.6J
最近うまく行かないので、 daily/current/ を見て多分出来るはずと分っている 2002/10/28 を作って見る。
130 21:28 cvs -d $LOCAL/NetBSD-cvs/main co -D 20021028-UTC src
132 22:00 mkdir 20021028r
133 22:00 mkdir 20021028d

ttyp1:root@quick 22:01:43/021101(/export-n/src)# ./build.sh -D /export-n/20021028d -R /export-n/20021028r > & ../log-20021028.log
ttyp1:root@quick DING!/021102(/export-n/src)# ls -l ../log-20021028.log
-rw-r--r-- 1 root wheel 18736419 Nov 2 01:00 ../log-20021028.log
ttyp1:root@quick 8:15:39/021102(/export-n/src)#
三時間くらいで出来ている ?
20020922(ts) --- 20020922 020911
(cd ../gnu/usr.sbin/sendmail/cf/cf; /ex2/current-ts/obj/tools/tools.NetBSD-1.6A-powerpc/bin/nbmake distribution)
STRIP=/ex2/current-ts/obj/tools/tools.NetBSD-1.6A-powerpc/bin/powerpc--netbsd-strip /ex2/current-ts/obj/tools/tools.NetBSD-1.6A-powerpc/bin/nbinstall -c -p -r -o root -g wheel -m 444 netbsd-proto.cf /ex2/current-ts/20020922d/etc/mail/sendmail.cf
nbinstall: netbsd-proto.cf: stat: No such file or directory
*** Error code 1
以上は obj/gnu/usr.sbin/sendmail/cf/ の下にそれがないことが問題。
20020829(ts) --- 20020829 020824
STRIP=/ex2/current-ts/obj/tools/tools.NetBSD-1.6A-powerpc/bin/powerpc--netbsd-strip /ex2/current-ts/obj/tools/tools.NetBSD-1.6A-powerpc/bin/nbinstall -c -r -o root -g wheel -m 444 netbsd-proto.cf /ex2/current-ts/20020830d/etc/mail/sendmail.cf
nbinstall: netbsd-proto.cf: stat: No such file or directory
*** Error code 1

nbmake: stopped in /ex2/current-ts/tar-src
8592.412u 3486.680s 3:59:25.83 84.0% 0+0k 29144+436427io 15823149pf+116w
makoto@u 4:18:34/020830(/ex2/current-ts)# find tar-src -name netbsd-proto.cf -ls
1885684 92 -r--r--r-- 1 root wheel 46149 Aug 22 11:30 tar-src/gnu/usr.sbin/sendmail/cf/cf/netbsd-proto.cf
(cd /ex2/current-ts/tar-src/etc && /ex2/current-ts/obj/tools/tools.NetBSD-1.6A-powerpc/bin/nbmake INSTALL_DONE=1 release) の後のこと。
20020818(ts) 1.6F --- 20020817-UTC 020817 作業 (作り直し)
20020817(ts) 1.6F --- 20020817-UTC 020817
20020816(ts) 1.6F --- 20020816-UTC 020801 作業 だましだまし一応 release(7) 形式まで出来たのだけれど、 wscons のところで panic してしまう。
20020802(ts) 1.6E --- 2002/08/02 これは何とか出来た。(作業は 2002/08/16 - 17) snapshot
20020801(ts) 1.6E --- 2002/08/01 これも flist が一致しない、と言われるところまでは行った。 どうも na 版でも同じようになる気がする。
20020722(ts) 1.6D --- 2002/07/22 flist が一致しない、と言われるところまでは行った。
20020717(na) 1.6D ---
makoto@u  1:56:24/020717(/ex2/current)# time ./setup.sh
Current Dir: /ex2/current
trac-rw-r--r--  1 root  wheel  20120847 Jul 17 12:27 /ex2/current/20020717.log
10939.132u 3720.940s 5:02:43.43 80.7%   0+0k 24283+472964io 16778823pf+189w
makoto@u  12:27:03/020717(/ex2/current)#
出来たやうだ。 ftp://ftp.ki.nu/pub/NetBSD/arch/macppc/snapshot/20020717/ tiBook 550 に入れて見たが、 一応動いている 気がする。

20020716(na)

makoto@u  22:26:01/020716(/ex2/current)# time ./setup.sh
Current Dir: /ex2/current
-rw-r--r--  1 root  wheel  16140726 Jul 17 01:56 /ex2/current/20020716.log
8334.087u 3126.491s 3:30:19.03 90.8%    0+0k 16403+348926io 13329709pf+41w
makoto@u  1:56:24/020717(/ex2/current)#
CC=/ex2/current/src/tools/obj/tools.NetBSD-1.6A-powerpc/bin/powerpc--netbsd-gcc /ex2/current/src/tools/obj/tools.NetBSD-1.6A-powerpc/bin/nbmkdep -a -nostdinc -isystem /ex2/current/20020716d/usr/include /ex2/current/src/regress/lib/libc/stdlib/getopt/getopt.c
/ex2/current/src/tools/obj/tools.NetBSD-1.6A-powerpc/bin/powerpc--netbsd-gcc -O2 -Werror -nostdinc -isystem /ex2/current/20020716d/usr/include -c /ex2/current/src/regress/lib/libc/stdlib/getopt/getopt.c
cc1: warnings being treated as errors
/ex2/current/src/regress/lib/libc/stdlib/getopt/getopt.c: In function `main':
/ex2/current/src/regress/lib/libc/stdlib/getopt/getopt.c:72: warning: comparison is always true due to limited range of data type
/ex2/current/src/regress/lib/libc/stdlib/getopt/getopt.c:98: warning: comparison is always false due to limited range of data type
*** Error code 1

20020715(na)

(1.6D) gcc 2.95.3 に変更があったので .. 作って見る
rm: grep is a directory
rm: ktrace: is a directory
rm: man: is a directory
rm: mrouted: is a directory
cvs で初めから checkout したばかりのものでも、こうなることがある (?)
124  7:21    rm -rf src/gnu/usr.bin/grep/grep/
130  7:26    rm -rf src/usr.bin/ktrace/ktrace/
133  7:33    rm -rf src/usr.bin/man/man/
135  7:38    rm -rf src/usr.sbin/mrouted/mrouted/
しておく
makoto@u  7:35:40/020716(/ex2/current)# time ./setup.sh
Current Dir: /ex2/current
-rw-r--r--  1 root  wheel  19996454 Jul 16 12:13 /ex2/current/20020716.log
10586.975u 3666.741s 4:34:38.39 86.4%   0+0k 15941+415583io 16548744pf+207w
SMALLPROG=1 MAKE=/ex2/current/src/tools/obj/tools.NetBSD-1.6A-powerpc/bin/nbmake /ex2/current/src/tools/obj/tools.NetBSD-1.6A-powerpc/bin/nbcrunchgen -f -D /ex2/current/src -L /ex2/current/20020716d/usr/lib -q -d "-Os -mmultiple -mstring" ramdiskbin.conf
ramdiskbin.conf: chown: error: no objpaths specified or calculated.
ramdiskbin.conf: chown: ignoring program because of errors.
Run "make -f ramdiskbin.mk objs exe" to build crunched binary.
*** Error code 1
makoto@u 13:10:38/020716(/ex2/current)# pushd ./src/distrib/macppc/floppies/ramdisk/obj
makoto@u 13:10:47/020716(...ramdisk/obj)# env SMALLPROG=1 MAKE=/ex2/current/src/tools/obj/tools.NetBSD-1.6A-powerpc/bin/nbmake /ex2/current/src/tools/obj/tools.NetBSD-1.6A-powerpc/bin/nbcrunchgen -f -D /ex2/current/src -L /ex2/current/20020716d/usr/lib -q -d "-Os -mmultiple -mstring" ramdiskbin.conf
ramdiskbin.conf: fdisk: error: no objpaths specified or calculated.
ramdiskbin.conf: chown: error: no objpaths specified or calculated.
ramdiskbin.conf: fdisk: ignoring program because of errors.
ramdiskbin.conf: chown: ignoring program because of errors.
Run "make -f ramdiskbin.mk objs exe" to build crunched binary.
makoto@u 13:10:52/020716(...ramdisk/obj)# make -f ramdiskbin.mk objs exe
if [ \! -d cat ]; then mkdir cat; fi; cd cat; printf ".PATH: /ex2/current/src/bin/cat\n.CURDIR:= /ex2/current/src/bin/cat\n.include \"\${.CURDIR}/Makefile\"\n" | make CRUNCHEDPROG=1 DBG="-Os -mmultiple -mstring" -f- depend cat.o
mkdep -a /ex2/current/src/bin/cat/cat.c
cc -Os -mmultiple -mstring -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized -Wreturn-type -Wcast-qual -Wpointer-arith -Wwrite-strings -Wswitch -Wshadow -Werror -c /ex2/current/src/bin/cat/cat.c
if [ \! -d chmod ]; then mkdir chmod; fi; cd chmod; printf ".PATH: /ex2/current/src/bin/chmod\n.CURDIR:= /ex2/current/src/bin/chmod\n.include \"\${.CURDIR}/Makefile\"\n" | make CRUNCHEDPROG=1 DBG="-Os -mmultiple -mstring" -f- depend chmod.o
mkdep -a /ex2/current/src/bin/chmod/chmod.c
cc -Os -mmultiple -mstring -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized -Wreturn-type -Wcast-qual -Wpointer-arith -Wwrite-strings -Wswitch -Wshadow -Werror -c /ex2/current/src/bin/chmod/chmod.c
if [ \! -d cp ]; then mkdir cp; fi; cd cp; printf ".PATH: /ex2/current/src/bin/cp\n.CURDIR:= /ex2/current/src/bin/cp\n.include \"\${.CURDIR}/Makefile\"\n" | make CRUNCHEDPROG=1 DBG="-Os -mmultiple -mstring" -f- depend cp.o utils.o
mkdep -a /ex2/current/src/bin/cp/cp.c /ex2/current/src/bin/cp/utils.c
cc -Os -mmultiple -mstring -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized -Wreturn-type -Wcast-qual -Wpointer-arith -Wwrite-strings -Wswitch -Wshadow -Werror -c /ex2/current/src/bin/cp/cp.c
cc1: warnings being treated as errors
/ex2/current/src/bin/cp/cp.c:88: warning: initialization discards `const' from pointer target type
*** Error code 1

20020705(ts)

別記 2002/07/05 src/lib/libc/arch/powerpc/string/bzero.S:52: Error: unsupported relocation type

20020702(na)

#!/bin/sh
DATE=`date +"%Y%m%d"`
EXPORT=/export/current

RELEASE=${EXPORT}/${DATE}r
DEST=${EXPORT}/${DATE}d
LOG=${EXPORT}/${DATE}.log

if [ ! -d $RELEASE ]; then
mkdir $RELEASE
fi
if [ ! -d $DEST ]; then
mkdir $DEST
fi

cd src
echo ./build.sh -R $RELEASE -D $DEST >  $LOG 2>&1
./build.sh -R $RELEASE -D $DEST >  $LOG 2>&1
ls -l $LOG
というようなものを作って実行したら、出来た。G4/800 Dual で 2:45 (1.6B)
# mount -a
# df
Segmentation fault
# df -k
動かないのでしょうか... df と domainname が segfault

20020526 + ts 版

/export/20020526)# ./build.sh -R /export/20020526r -D /export/20020526d > & ../20020526-build.sh-asm.h
... /export/20020526/tools/obj/tools.NetBSD-1.5ZC-powerpc/bin/powerpc--netbsd-gcc -D_LIBC -DLIBC_SCCS -DSYSLIBC_SCCS -D_REENTRANT -I/export/20020526/lib/libc/include -DINET6 -DNLS -D__DBINTERFACE_PRIVATE -I/export/20020526/lib/libc/../../libexec/ld.elf_so -I/export/20020526/lib/libc/dlfcn -DI18NMODULE_MAJOR=4 -DWITH_RUNE -I/export/20020526/lib/libc -DRESOLVSORT -I. -DPOSIX_MISTAKE -DPORTMAP -DFLOATING_POINT -nostdinc -isystem /export/20020526d/usr/include -c -traditional-cpp -DALL_STATE -DUSG_COMPAT -I/export/20020526/lib/libc/arch/powerpc -nostdinc -idirafter /export/20020526d/usr/include /export/20020526/lib/libc/arch/powerpc/string/bzero.S
/export/20020526/lib/libc/arch/powerpc/string/bzero.S: Assembler messages:
/export/20020526/lib/libc/arch/powerpc/string/bzero.S:52: Error: unsupported relocation type
上の -nostdinc を外すと、問題が消える。つまり system のどこかにあるのを見ると通る。 system のどこかにあるもの ... ( -nostdinc があっても、その後に -I/usr/include を付けると通る) .. /usr/include ?
4475 Jun 13  2001 sys/arch/powerpc/include/asm.h
3014 Mar  1 16:13 sys/arch/powerpc/include/asm.h-ts
CC=/export/20020526/tools/obj/tools.NetBSD-1.5ZC-powerpc/bin/powerpc--netbsd-gcc /export/20020526/tools/obj/tools.NetBSD-1.5ZC-powerpc/bin/powerpc--netbsd-lint -chapbxzF -X 272 -d /export/20020526d/usr/include -D_LIBC -DLIBC_SCCS -DSYSLIBC_SCCS -D_REENTRANT -I/export/20020526/lib/libc/include -DINET6 -DNLS -D__DBINTERFACE_PRIVATE -I/export/20020526/lib/libc/../../libexec/ld.elf_so -I/export/20020526/lib/libc/dlfcn -DI18NMODULE_MAJOR=4 -DWITH_RUNE -I/export/20020526/lib/libc -DRESOLVSORT -I. -DPOSIX_MISTAKE -DPORTMAP -DFLOATING_POINT -i /export/20020526/lib/libc/arch/powerpc/gen/syncicache.c
/export/20020526/lib/libc/arch/powerpc/gen/syncicache.c(96): redeclaration of __syncicache [27]
/export/20020526/lib/libc/arch/powerpc/gen/syncicache.c(108): warning: conversion of pointer to 'unsigned int' may lose bits [134]
/export/20020526/lib/libc/arch/powerpc/gen/syncicache.c(120): warning: conversion of pointer to 'unsigned int' may lose bits [134]
*** Error code 1
ttyp0:root@quick 13:34:27/020604(/export/20020526)# mv sys/lib/libkern/arch/powerpc/syncicache.c sys/lib/libkern/arch/powerpc/syncicache.c-keep
-rw-r--r--  1 makoto  wheel  4139 Mar 29 21:21 lib/libc/arch/powerpc/gen/syncicache.c
-rw-r--r--  1 makoto  wheel  4138 Mar 29 21:52 sys/lib/libkern/arch/powerpc/syncicache.c-keep
/export/20020526/tools/obj/tools.NetBSD-1.5ZC-powerpc/bin/powerpc--netbsd-gcc -O2 -DALL_STATE -DUSG_COMPAT -Wall -Wstrict -prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized -Wreturn-type -Wpointer-arith -Wswitch -Wshadow -Werr or -D_LIBC -DLIBC_SCCS -DSYSLIBC_SCCS -D_REENTRANT -I/export/20020526/lib/libc/include -DINET6 -DNLS -D__DBINTERFACE_PRIV ATE -I/export/20020526/lib/libc/../../libexec/ld.elf_so -I/export/20020526/lib/libc/dlfcn -DI18NMODULE_MAJOR=4 -DWITH_RUNE -I/export/20020526/lib/libc -DRESOLVSORT -I. -DPOSIX_MISTAKE -DPORTMAP -DFLOATING_POINT -nostdinc -isystem /export/200205 26d/usr/include -c /export/20020526/lib/libc/arch/powerpc/gen/syncicache.c
cc1: warnings being treated as errors
/export/20020526/lib/libc/arch/powerpc/gen/syncicache.c:96: warning: no previous prototype for `__syncicache'
*** Error code 1

2002/5/27

1.6_BETA1 で試して見る。これは ( AutoBuild project で) 出来ることが分っていたので簡単だった。 (20020407-1.5ZC の入っている機械で そのまま cc = 2.95.3 を使う)
cvs -d :pserver:anoncvs@anoncvs.netbsd.org:/cvsroot checkout -r netbsd-1-6 src
./build.sh -R /export/netbsd-1-6-r -D /export/netbsd-1-6-d >& ../netbsd-1-6-build.sh-20020527
20020407-1.5ZC の iBook/366 で 6:10 くらいかかった。 cc は 2.95.3

2002/05/23 の場合

nbmake: don't know how to make <built-in>. Stop

2002/04/08 の場合

dependall ===> groff
creating cache ./config.cache
....
configure: error: installation or configuration problem: C++ compiler cannot create executables.
この時、 tools/groff/obj/build/config.log に、次のような字が残っている。
/usr/lib/libstdc++.so: undefined reference to `exception type_info function'
/usr/lib/libstdc++.so: undefined reference to `__cp_push_exception'
/usr/lib/libstdc++.so: undefined reference to `__rtti_user'

2002/04/04 の場合

  1. /etc/mk.conf に次のものが必要な気がする。
    MKSKEY=no
    MKYP=no
    MKHESIOD=no
    
    USE_HESIOD=no
    USE_YP=no
    USE_KERBEROS=no
    USE_SKEY=no
    
    (値は問題ではない)
  2. installboot/arch/alpha.c がおかしい気がするので、installboot/Makefile から alpha を外して見るが、 それはうまく行かない。

2002/03/29 の場合

cvs -z3 -d :pserver:anoncvs@anoncvs.netbsd.org:/cvsroot checkout -D 20020329-UTC src
time ./build.sh \
-D /export/20020328d \
-R /export/20020328r -d >& ../20020328-log
nbmake: "/export/20020328/distrib/macppc/floppies/ramdisk/Makefile" line 56: Could not find /utils/libhack/Makefile.inc
Makefile 55-56:
HACKSRC=        ${DISTRIBDIR}/utils/libhack
.include        "${HACKSRC}/Makefile.inc"
ramdisk/Makefileの辺り、3/25,28,30 と 変更になっている。
ttyp7:makoto@iBook366 7:31:12/020401(...20020328/distrib)> cvs update -A -dP
group に ntpd が要るような気がする。
/export/20020328/tools/obj/tools.NetBSD-1.5ZA-powerpc/bin/powerpc--netbsd-gcc -D_LIBC -DLIBC_SCCS -DSYSLIBC_SCC S -D_REENTRANT -I/export/20020328/lib/libc/include -DHESIOD -DINET6 -DNLS -DYP -D__DBINTERFACE_PRIVATE -I/export/ 20020328/lib/libc/../../libexec/ld.elf_so -I/export/20020328/lib/libc/dlfcn -DI18NMODULE_MAJOR=4 -DWITH_RUNE -I/e xport/20020328/lib/libc -DRESOLVSORT -I. -DPOSIX_MISTAKE -DPORTMAP -DFLOATING_POINT -nostdinc -isystem /export/20 020328d/usr/include -c -traditional-cpp -DALL_STATE -DUSG_COMPAT -I/export/20020328/lib/libc/arch/powerpc -nostdinc -idirafter /export/20020328d/usr/include /export/20020328/lib/libc/arch/powerpc/string/bzero.S /export/20020328/lib/libc/arch/powerpc/string/bzero.S: Assembler messages: /export/20020328/lib/libc/arch/powerpc/string/bzero.S:52: Error: unsupported relocation type p

2002/03/17 の場合

2002/03/22 Shared object "libncurses.so.5" not found *

2002/03/01 の場合

2002/02/14 の場合

2002/02/20 #2 nbinstall: ustarboot: stat: No such file or directory .. その後、出来ていない

2002/01/14 の場合

2002/01/19 nbinstall: ustarboot: No such file or directory
2002/02/04 ustarboot の付近で make しておけば良い。 .. 出来ている。

2001/12/20 の場合

2001/ 12/27- 12/28 頃作業
一応動くものは出来ているが gcc-2.95.1 に問題があるような気がする

2001/12/07 の場合

2001/12/10 に作業 2001/12/09 頃作業 (途中で中止)

2001/11/26 の場合

2001/11/27 頃作業
./build.sh -R /export/20011126r > ../build-log-4
のようにやって見たが、何だかうまく行かないので自然消滅

2001/11/04 01:36 USE_NEW_TOOLCHAIN=nowarn

/usr/share/mk/bsd.own.mk 1.208

2001/10/16 の場合

作業は 2002/01/14

2001/10/14 の場合

cvs checkout の時には日付を指定して -D 20011014-UTC を使っているが、 作業は 2001/10/24 に行なった。 floppy は入り切らなかったので、作っていない。
ftp://ftp.ki.nu/pub/NetBSD/arch/macppc/snapshot/20011014/

2001/08/06 の場合

??

2001/06/02 の場合

2001/06/10 に作業
boot.fs が 1.44M を越えてしまうので、 /usr/src/distrib/macppc/floppies/Makefile の中の bootfloppy を消しておいて作る
make release の最後に
sh ../distrib/sets/makesums -t /usr/RELEASE/binary/kernel '*.gz'
という字が見えているので、覚えておく

2001/05/17 の場合

1.5S が入っていて 1.5V の kernel にして、
-rw-rw-r--  1 makoto  wheel    845180 May 17 16:17 bin.tar.gz
-rw-rw-r--  1 makoto  wheel     46470 Feb 21 14:46 config.tar.gz
-rw-rw-r--  1 makoto  wheel   7073998 May 17 16:20 crypto.tar.gz
-rw-rw-r--  1 makoto  wheel   3622109 May 17 16:21 dist.tar.gz
-rw-rw-r--  1 makoto  wheel    921151 May 17 16:22 distrib.tar.gz
-rw-rw-r--  1 makoto  wheel    209283 May 17 16:22 etc.tar.gz
-rw-rw-r--  1 makoto  wheel   2613840 May  7 15:52 games.tar.gz
-rw-rw-r--  1 makoto  wheel  55602107 May 17 16:43 gnu.tar.gz
-rw-rw-r--  1 makoto  wheel    115438 May  7 16:16 include.tar.gz
-rw-rw-r--  1 makoto  wheel   2815783 May 17 16:45 lib.tar.gz
-rw-rw-r--  1 makoto  wheel    496557 May 17 16:46 libexec.tar.gz
-rw-rw-r--  1 makoto  wheel    167988 May 17 16:47 regress.tar.gz
-rw-rw-r--  1 makoto  wheel    804617 May 17 16:48 sbin.tar.gz
-rw-rw-r--  1 makoto  wheel   3443280 May 17 16:50 share.tar.gz
-rw-rw-r--  1 makoto  wheel  20347318 May 17 16:59 sys.tar.gz
-rw-rw-r--  1 makoto  wheel      5516 May  8 14:36 top-level.tar.gz
-rw-rw-r--  1 makoto  wheel   3288632 May 17 17:02 usr.bin.tar.gz
-rw-rw-r--  1 makoto  wheel   3224752 May 17 17:04 usr.sbin.tar.gz
というものを /usr/src に開けて、
setenv DESTDIR /D 
time make build したら出来たので 、

setenv BUILD_DONE 1
setenv RELEASEDIR /usr/RELEASE
make release
したら、

/usr/src/distrib/macppc/floppies/ramdisk/../../../utils/libhack/gethost.c: In function `_gethostbyaddr':
/usr/src/distrib/macppc/floppies/ramdisk/../../../utils/libhack/gethost.c:160: argument `len' doesn't match prototype
/usr/include/netdb.h:262: prototype declaration
で止ってしまった。
    24  20:27   mv /usr/include/netdb.h /usr/include/netdb.h-1.5S
    25  20:27   cp -p /D/usr/include/netdb.h /usr/include/
    

2001/03/07 の場合

  1. mkdir -p $DESTDIR/usr/share/mk しておく必要がある
  2. cleandir ===> bin
    cleandir ===> bin/cat
    "/export/DESTDIR/usr/share/mk/bsd.prog.mk", line 125: Malformed conditional (!commands(${PROG}))
    "/export/DESTDIR/usr/share/mk/bsd.prog.mk", line 142: if-less endif
    "/export/DESTDIR/usr/share/mk/bsd.prog.mk", line 142: Need an operator
    Fatal errors encountered -- cannot continue
    *** Error code 1
    
    これについては 神戸さんが答 を書いていらっしゃる (が、 -I. が更に必要)。
    cd /usr/src/usr.bin/make
    cc -I. -o make -Ilst.lib *.c lst.lib/*.c
    mv /usr/bin/make /usr/bin/make-1.5K
    cp -p make /usr/bin/make
    
  3. install: /export/DESTDIR/usr/include: No such file or directory
    *** Error code 1
    Stop.
    root@nazuha  8:37:48/010311(/usr/src)# mkdir /export/DESTDIR/usr/include
    root@harry  12:02:42/010318(/usr/src)# mkdir -p /usr/DESTDIR/usr/include/cdk
                                           mkdir -p /usr/DESTDIR/usr/include/readline
    
    というようなことが必要になることもある。
  4. make が segment fault する(ことがある)
    → (usr.bin/make で) make だけ make して更に入替 (/usr/bin/make)
  5. (lib/libipsec で) __libyyparse がない → yacc を入れ直そうか ....
  6. (yacc で make する) __assert13 がない → libc だけ make install ( /usr/DESTDIR/usr/lib/libc.*)
  7. yacc を make, 入替 (/usr/bin/yacc)
  8. (lib/libipsec で) make clean; make
  9. (/usr/src で) make 続行
  10. (libexec/kfd で) krb5_rd_cred2 がない → (/usr/src/lib で) make install ( /usr/DESTDIR/usr/lib/libc.*) すると
  11. install: /usr/DESTDIR/usr/lib/runemodule: No such file or directory で止ってしまう。 (がそれはそのままにして make 続行)
  12. (share/locale/ctype で) mklocale: not found

    /usr/src/usr.bin/mklocale; make install
    cp /usr/DESTDIR/usr/bin/mklocale /usr/bin
    rehash
  13. (ctype) Undefined symbol "_CurrentRuneLocale" referenced from COPY relocation in mklocale → netbsd-bugs, 2001/01/19 の修正をして見る
  14. (usr.sbin/sushi で)
    /usr/bin/ld: cannot open -lcdk: No such file or directory
    cc の行に次のように -L をはさむ。
    -lutil -L/usr/DESTDIR/usr/lib -lcdk
    (ではだめで、また同じところに戻ってしまう)
    root@harry  23:02:26/010319(/usr/src)# cp -p /usr/DESTDIR/usr/lib/libcdk.a /usr/lib
    root@harry  23:03:00/010319(/usr/src)# ranlib /usr/lib/libcdk.a 
    
    libform も同様
  15. sushi.o(.text+0xe28): undefined reference to `getprogname' → 新しい libc.a には入っていそう。(違う)

2001/01/03 の場合

make build すると
rm: gdb: is a directory で止ってしまう
/usr/src/usr.bin/gdb/gdb が問題
対処法が分らないので、--> cvs update -dP
mv /usr/src/usr.bin/gdb/gdb /usr/src/usr.bin/gdb/gdb-removed
して見る。次は
cleandir ===> gnu/usr.bin/grep
rm -rf grep.info
rm -f a.out [Ee]rrs .... grep ....
rm: grep: is a directory 
で止ってしまう
diff -ur /usr/share/mk /usr/DESTDIR/usr/share/mk
をして見る
root@nazuha  8:50:59/010103(/export)# mv /usr/share/mk /usr/share/mk-1.5_ALPHA
root@nazuha  8:51:16/010103(/export)# cp -pr /usr/DESTDIR/usr/share/mk /usr/share/mk
としても同じだった。
 grep cleandir Makefile すると次のような字が見えるので
#   NOCLEANDIR will avoid a `make cleandir' at the start of `make build',

setenv NOCLEANDIR 
して見る
/export/src/lib/libc/md/md5c.c:42: md5.h: No such file or directory
root@nazuha  9:54:19/010103(...usr/include)# ln -s sys/md5.h .
root@nazuha  9:54:29/010103(...usr/include)# pwd
/usr/DESTDIR/usr/include

cc -O -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith
-Wno-uninitialized -Werror -DLIBC_SCCS -nostdinc -idirafter
/usr/DESTDIR/usr/include -c -fPIC -DPIC kvm_powerpc.c -o
kvm_powerpc.so lint -chapbxzF -d /usr/DESTDIR/usr/include -DLIBC_SCCS
-i kvm_proc.c

/usr/DESTDIR/usr/include/powerpc/ansi.h(93): warning: ANSI C does not support 'long long'
/usr/DESTDIR/usr/include/powerpc/aout_machdep.h(47): warning: nonportable bit-field type
kvm_proc.c(520): warning: conversion of pointer to 'unsigned int' may lose bits
....
kvm_proc.c(579): warning: conversion of pointer to 'unsigned int' may lose bits
kvm_proc.c(584): illegal member use: p_siglist

2000/03/20 の場合

2000/03/20 次のようにして展開する。
(tar 形式では 56M)
# du -s /home6/NetBSD/NetBSD-current/tar_files/src/
56162   /home6/NetBSD/NetBSD-current/tar_files/src/

makoto@harry  21:26:11/000320(/usr)> foreach i ( /home6/NetBSD/NetBSD-current/tar_files/src/*tar* )
foreach? echo $i
foreach? tar zxf $i
foreach? end

広げるだけで 32 分くらいかかる。そうして、次の大きさ 
Filesystem              1K-blocks     Used    Avail Capacity  Mounted on
/dev/sd0c                  993393   256104   687619    27%    /usr/src

kernel を組立てる
1.4R との違い
僕の場合、StarMax wdc1 問題というのがあって、一か所変更しておく。
port-powerpc-ja の 993 番のメール。


Last Update
19:52:57 03/12/08
CCBot/2.0 (http://commoncrawl.org/faq/)
Apache/2.0.65 (Unix) mod_ssl/2.0.65 OpenSSL/1.0.1g DAV/2 PHP/5.4.26
Count.cgi
(since 2000/03/20)