勉強目的でmake buildworldするとgbde.cでコンパイルエラーになると昔書いた。別にどうでも良かったのだけど、誰もいっこうに直さない。いい加減、buildworldってやつをやってみたかったので、エラーを直すことにした。
エラーの原因はgetoptのグローバル変数optargが宣言されていないことだった。これはMakefileに
CFLAGS+= -I${.CURDIR}/../../sys
と書いているために、/usr/src/sys/unistd.hが使われてしまい、このunistd.hにはoptargが宣言されていないのだ。正しい作法を調べるのが面倒なので、横着をして/usr/sys/unistd.hに
#include "/usr/include/unistd.h"
を追加してしまった。そもそも、
% locate unistd.h /usr/include/ssp/unistd.h /usr/include/sys/unistd.h /usr/include/unistd.h /usr/src/contrib/gcclibs/libssp/ssp/unistd.h /usr/src/include/unistd.h /usr/src/sys/i386/ibcs2/ibcs2_unistd.h /usr/src/sys/unistd.h
ってどんだけ〜。手作業でインストールしたシステムならいざ知らず。この辺の歴史的な経緯をよく知らないんだよな。
あと、他にもsbin以下でエラーが出るので横着して直していった。そうすると、buildworldは完了したのだけど、今度はbuildkernelががコンパイルエラーで失敗する。FreeBSDの流儀が良くわからん。