Another attempt [Re: Groff is not working in the latest code]

Alex Goncharov alex-goncharov at
Wed Aug 27 03:26:26 UTC 2008

`groff' is still not working for me, and with it `man' doesn't:

$ uname -srv
FreeBSD 7.1-PRERELEASE FreeBSD 7.1-PRERELEASE #34: Tue Aug 26 18:14:46 EDT 2008...

$ man man
/usr/bin/groff: can't find `DESC' file
/usr/bin/groff:fatal error: invalid device `ascii'

I may have found some clues -- jump to under the quoted (and trimmed)
message -- but I still can't make it build right, and am wondering if
this is really only my personal issue and everybody else can use "man"
all right...

(I do the update/rebuild daily now.)

,--- I/Alex (Mon, 18 Aug 2008 11:09:10 -0400) ----*
| The following happens in 7.0-STABLE built from the source "csup"ed
| either yesterday's or this morning:
| ------------------------------------------------------------
| $ truss -mm -t -Tascii 2>&1 | grep DESC

| truss groff -mm -t -Tascii 2>&1 | grep DESC
| open("/usr/local/share/groff/site-font/devascii/DESC",O_RDONLY,0666)
| groff: can't find `DESC' file
| write(2,"groff: can't find `DESC' file\n",30)    = 30 (0x1e)
| $ ls -l /usr/share/groff_font/devascii/DESC
| -r--r--r--  1 root  wheel  95 Aug 18 08:59
| /usr/share/groff_font/devascii/DESC
| ------------------------------------------------------------
| Note an attempt to look for a file under /usr/local, which should not
| happen for a program in "base".
| This behavior is very new -- no such problem existed in the code
| fetched last Saturday. There, I see:
| ------------------------------------------------------------
| $ truss groff -mm -t -Tascii 2>&1 | grep DESC
| open("/usr/share/groff_font/devascii/DESC",O_RDONLY,0666) = 3 (0x3)
| ------------------------------------------------------------

So, I looked at how things are being built and think that the
following is supposed to happen with respect to `groff' -- a GNU

1. The build is driven by `gnu/usr.bin/groff/Makefile' (all paths in
   the following are relative to `/usr/src'.

2. During the build, the original "contrib" code is used, to be found
   in `contrib/groff'.

   That code is configured by the pristine `contrib/groff/configure'
   and results in setting the "prefix" to the GNU-usual `/usr/local'
   and generating the FreeBSD-unaware `defs.h' and `config.h'.

3. Then some magic "is supposed to happen / was happening two weeks
   ago for me", when the newly generated `defs.h' and `config.h' are
   replaced with the FreeBSD hard versions that had been delivered
   from CVS -- and the paths get corrected to eliminate the `local'
   component from them and do other path adjustments to bring it all
   to the FreeBSD standards:

$ diff contrib/groff/src/include/defs.h gnu/usr.bin/groff/src/include/defs.h | head -n 12         
> /* $FreeBSD: src/gnu/usr.bin/groff/src/include/defs.h,v 1.4 2001/04/17 12:37:07 ru Exp $ */
< #define INSTALLPATH "/usr/local"
< #define BINPATH "/usr/local/bin"
< #define FONTPATH "/usr/local/share/groff/site-font:/usr/local/share/groff/1.19.2/font:/usr/lib/font"
< #define MACROPATH "/usr/local/lib/groff/site-tmac:/usr/local/share/groff/site-tmac:/usr/local/share/groff/1.19.2/tmac"
> #define BINPATH "/usr/bin"
> #define FONTPATH "/usr/share/groff_font"
> #define MACROPATH "/usr/share/tmac"

$ diff contrib/groff/src/include/config.h gnu/usr.bin/groff/src/include/config.h             
> /* $FreeBSD: src/gnu/usr.bin/groff/src/include/config.h,v 1.5 2005/10/20 10:57:52 ru Exp $ */

4. Then the build happens with whatever `defs.h' and `config.h' will
   be found at that time under `contrib/groff/src/include'.

If the step 3 worked before but is not working now, it explains my
current end results.

But how about others: everything works for you?  What could have
triggered the change in the process for me a week or so ago?

Anybody is able and willing to lead me out of my lasting misery?


-- Alex -- alex-goncharov at --

More information about the freebsd-stable mailing list