From: bin@hiauly1.hia.nrc.ca
Newsgroups: gnu.groff.bug
Subject: Building groff-1.06 on hp730
Date: 15 Sep 92 07:58:07 GMT
Distribution: gnu
Organization: GNUs Not Usenet

This note describes my experience building and testing groff 1.06 on my HP
Apollo 9000/730 running hpux 8.07.  I used gcc 2.2.2 to compile groff.
After running configure, I edited the Makefile to define my system's print
commands (maybe configure could output "lp" commands for SYSV systems) and turn
off optimization for the initial compilation.

The initial "make" failed to build troff correctly.  The symbol "NULL_SYMBOL"
was not found by ld.  This was fixed by removing "const" from the definition
of NULL_SYMBOL in symbol.h.  I think the problem here is really in gcc.  I
experienced other similar problems with "const" in building libg++.  After
this change, groff successfully compiled.

I tested troff to see if it could process a man page.  It dumped core in the
module node.cc in the procedure "node *ligature_node::copy()".  This is a
problem which I discovered in the previous version of groff.  For some reason,
"n1->copy()" and "n2->copy()" are evaluated after the new ligature_node call.
I introduced two temporary node pointers to evaluate "n1->copy()" and
"n2->copy()" before the new ligature_node call and everything seems to work.

I then tried to build groff with "-O".  It builds ok but troff drops core
printing the groff man pages and the me documentation in various spots.  By
trial and error, I have determined that the modules dictionary.cc, div.cc,
input.cc and node.cc can't by compiled with "-O" on the hp730.  The rest
seems to be ok.

I think these notes maybe useful to other hp users since the troff package
is not distributed with hpux.  Thus, hp users especially appreciate the gnu
effort in developing and supporting packages such as groff and gcc.

Dave Anglin
National Research Council of Canada

diff -c -r groff-1.06/soelim/soelim.man groff-1.06.hp730/soelim/soelim.man
*** groff-1.06/soelim/soelim.man	Thu Aug  6 07:27:07 1992
--- groff-1.06.hp730/soelim/soelim.man	Mon Sep 14 16:41:41 1992
***************
*** 1,5 ****
  .\" -*- nroff -*-
! .TH @g@SOELIM @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
  .SH NAME
  @g@soelim \- interpret .so requests in groff input
  .SH SYNOPSIS
--- 1,5 ----
  .\" -*- nroff -*-
! .TH @G@SOELIM @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
  .SH NAME
  @g@soelim \- interpret .so requests in groff input
  .SH SYNOPSIS
diff -c -r groff-1.06/troff/node.cc groff-1.06.hp730/troff/node.cc
*** groff-1.06/troff/node.cc	Mon Aug  3 06:25:04 1992
--- groff-1.06.hp730/troff/node.cc	Mon Sep 14 14:58:43 1992
***************
*** 1637,1646 ****
  
  node *ligature_node::copy()
  {
  #ifdef STORE_WIDTH
!   return new ligature_node(ci, tf, wid, n1->copy(), n2->copy());
  #else
!   return new ligature_node(ci, tf, n1->copy(), n2->copy());
  #endif
  }
  
--- 1637,1648 ----
  
  node *ligature_node::copy()
  {
+   node *nd1 = n1->copy();
+   node *nd2 = n2->copy();
  #ifdef STORE_WIDTH
!   return new ligature_node(ci, tf, wid, nd1, nd2);
  #else
!   return new ligature_node(ci, tf, nd1, nd2);
  #endif
  }
  
diff -c -r groff-1.06/troff/node.cc groff-1.06.hp730/troff/node.ccgroff-1.06/troff/symbol.h groff-1.06.hp730/troff/symbol.h
*** groff-1.06/troff/symbol.h	Mon Aug  3 06:25:11 1992
--- groff-1.06.hp730/troff/symbol.h	Mon Sep 14 12:23:46 1992
***************
*** 39,45 ****
  };
  
  
! extern const symbol NULL_SYMBOL;
  
  inline symbol::symbol() : s(0)
  {
--- 39,45 ----
  };
  
  
! extern symbol NULL_SYMBOL;
  
  inline symbol::symbol() : s(0)
  {
Newsgroups: gnu.groff.bug