Subject: Re: build.sh -t fails in groff (still)
To: Paul Mather <paul@gromit.dlib.vt.edu>
From: Luke Mewburn <lukem@netbsd.org>
List: port-alpha
Date: 12/02/2002 09:04:22
On Sun, Dec 01, 2002 at 01:09:41PM -0500, Paul Mather wrote:
| Has anyone managed to run "/usr/src/build.sh -t" to completion lately?
| Mine still fails in groff, even after an rsync of the -current sources
| today:
|
| >>>>>
| dependall ===> groff
| [...]
| checking that C++ static constructors and destructors are called... no
| configure: error: a working C++ compiler is required
| *** Error code 1
| [...]
| <<<<<
|
| Is the fact that it fails on the test for static constructors and
| destructors related to the 20021121 entry in /usr/src/UPDATING? If
| so, how can I fix this? I thought build.sh was self-hosting, i.e., if
| groff relies on certain C++ features to work, then shouldn't build.sh
| make sure it has built a working C++ compiler before trying to build
| groff?
I saw a similar problem, which I tracked down to installing new
versions of /usr/lib/*crt*.o without having a new compiler, in
/usr/bin, and the resultant code didn't run.
In my case, because I was using UPDATE=1, configure did not run again,
but the generated tooldir groff ($TOOLDIR/bin/nbgroff) would fail with
an error about "not finding the ascii device" (or something like
that). In both cases, the problems are related.
I solved this with something along the lines of:
cd /usr/src/lib
make clean
cd /usr/src/lib/csu
make MKMAN=no dependall install
cd /usr/src/lib
make MKMAN=no dependall install
cd /usr/src/gnu/lib
make MKMAN=no clean dependall install
cd /usr/src/gnu/usr.bin/gcc
make MKMAN=no clean dependall install
Now that /usr/bin/g++ and /usr/lib/*crt*.o are back in sync, the c++
programs generated by the host (/usr/bin) compiler such as
$TOOLDIR/bin/nbgroff should work.
I suspect this caused a problem for people using build.sh if you
build to DESTDIR=/ and restarted the build after a do-lib-csu was
run but before the "make install" for the new compiler occurred...
"ouch".
Luke.