Missing compile_et and kerberos breaks buildworld
Steve Kargl
sgk at troutmask.apl.washington.edu
Tue Jan 15 23:35:31 UTC 2013
It seems that buildworld depends on the existence of
/usr/bin/compile_et if one wants to build WITH_KERBEROS
on a system that has never had Kerberos support. I
discovered this issue when des@ removed the NOFOO and
NO_FOO options, and the NO_KERBEROS="YES" in my
/etc/make.conf was neutered. The system in question
has never had kerneros installed. One can emulate
the problem as follows:
% mv /usr/bin/compile_et /usr/bin/compile_et.old
% cd /usr/src
% make buildworld
(a few hours later ... boom)
===> kerberos5/lib/libasn1 (buildincludes)
compile_et /usr/src/kerberos5/lib/libasn1/../../../crypto/heimdal/lib/asn1/asn1_err.et
compile_et: No such file or directory
*** [asn1_err.h] Error code 1
Stop in /usr/src/kerberos5/lib/libasn1.
*** [buildincludes] Error code 1
Stop in /usr/src/kerberos5/lib.
*** [buildincludes] Error code 1
Stop in /usr/src/kerberos5.
*** [includes] Error code 1
Stop in /usr/src/kerberos5.
*** [kerberos5.includes__D] Error code 1
Stop in /usr/src.
*** [_includes] Error code 1
Stop in /usr/src.
*** [buildworld] Error code 1
Stop in /usr/src.
The obvious step of installing compile_et gives
% cd /usr/src/usr.bin/compile_et
% make depend
yacc -d -o parse.c /usr/src/usr.bin/compile_et/../../contrib/com_err/parse.y
lex -t /usr/src/usr.bin/compile_et/../../contrib/com_err/lex.l > lex.c
rm -f .depend
mkdep -f .depend -a -I. -I/usr/src/usr.bin/compile_et/../../contrib/com_err -std=gnu99 /usr/src/usr.bin/compile_et/../../contrib/com_err/compile_et.c parse.c lex.c
/usr/src/usr.bin/compile_et/../../contrib/com_err/compile_et.c:39:20: error: getarg.h: No such file or directory
/usr/src/usr.bin/compile_et/../../contrib/com_err/compile_et.c:41:19: error: roken.h: No such file or directory
mkdep: compile failed
*** [.depend] Error code 1
so it appears that I need to build and install libroken to
get the headers getarg.h and roken.h installed in /usr/include.
% cd /usr/src/kerberos5/lib/libroken
% make depend
make-roken > roken.h
make-roken: not found
*** [roken.h] Error code 127
Stop in /usr/src/kerberos5/lib/libroken.
Ok. Let's try building make-roken.
% cd /usr/src/kerberos5/tools/make-roken
% make depend && make && make install
Hooray, that worked.
% cd /usr/src/kerberos5/lib/libroken
% make depend
Hooray, again.
% make
(boom)
cc -O2 -pipe -march=opteron -I/usr/src/kerberos5/lib/libroken/../../../crypto/heimdal/lib/roken -I. -DHAVE_CONFIG_H -I/usr/src/kerberos5/lib/libroken/../../include -std=gnu99 -fstack-protector -c /usr/src/kerberos5/lib/libroken/../../../crypto/heimdal/lib/roken/copyhostent.c -o copyhostent.o
/usr/src/kerberos5/lib/libroken/../../../crypto/heimdal/lib/roken/copyhostent.c:42: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'struct'
*** [copyhostent.o] Error code 1
Stop in /usr/src/kerberos5/lib/libroken.
:(
% make clean && make depend
% make && make install
That worked! (Apparently, something in the previous buildworld made
cc unhappy.)
% cd /usr/src/usr.bin/compile_et
% make
(boom)
cc -O2 -pipe -march=opteron -I. -I/usr/src/usr.bin/compile_et/../../contrib/com_err -std=gnu99 -fstack-protector -Wno-pointer-sign -o compile_et compile_et.o parse.o lex.o -lroken /usr/obj/usr/src/usr.bin/compile_et/../../kerberos5/lib/libvers/libvers.a
cc: /usr/obj/usr/src/usr.bin/compile_et/../../kerberos5/lib/libvers/libvers.a: No such file or directory
*** [compile_et] Error code 1
% cd /usr/src/kerberos5/lib/libvers
% make depend && make && make install
Ok.
% cd /usr/src/usr.bin/compile_et
% make clean && make depend && make && make install
% cd /usr/src
% make buildenv
Entering world for amd64:amd64
# which compile_et
/usr/bin/compile_et
# exit
Whoops. That can't be right.
% make -DNO_CLEAN buildworld
and buildworld seems to be back on-track.
--
Steve
More information about the freebsd-current
mailing list