Subject: Re: -t fails in groff (still)
To: Paul Mather <>
From: Luke Mewburn <>
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/ -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 was self-hosting, i.e., if
  | groff relies on certain C++ features to work, then shouldn't
  | 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 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...