Hi,

you may have noticed a flurry of mandoc commits lately: mandoc is now
able to format the manual pages of the GNU troff package.  As usual,
a few unimportant formatting differences remain, mostly whitespace,
but nothing very serious.

So i think it is time for groff to switch over to install manual
page sources and have mandoc do the formatting on demand like for
(almost) every other package.

You might wonder whether this is a good idea - couldn't it happen
that groff might use even more crazy stuff in its manual pages
in the future, putting unfair workload on the maintainer of the
groff port for future updates?  There are five answers to that:

 1. That maintainer is - schwarze@.
    So in the worst case, i'm hurting myself.
    But i care a lot about groff/mandoc compatibility in the
    first place, so such future changes would cause grief for
    me either way.
 2. We already know that the manual pages of the next release,
    1.22.4, will also be fine with mandoc.
 3. It isn't actually likely to get worse quickly because groff
    isn't a fast-moving target nowadays, quite to the contrary.
 4. Even if somebody pops up and threatens to commit bad stuff,
    i'll notice right away because i have commit access to groff
    upstream, and i'll certainly try to forestall further upstream
    degradation of quality.
 5. It's actually likely that i will be able to talk people out
    of making things worse.  The other groff developers pay more
    attention to portability nowadays, compared to years ago when
    groff was practically the only maintained roff implementation.

There is one weird special case: the manual page documenting the
groff_www(7) macro set stupidly uses a few of its own macros for
formatting instead of just using macros of identical functionality
that are available in the man(7) language, or more precisely, in
the man-ext GNU extensions which everyone has to support anyway.
For now, i'm patching that up in a minimal way using .de and .als,
but i'm in the process of pushing a real fix upstream for the
groff-1.22.4 release.  (A few years ago, i would have run off
screaming when finding .de and .als in a manual page; now they can
be used in a routine fashion to patch up stuff that is even more
broken.  But don't you dare attempting to use those in base =;-).

OK?
  Ingo


Index: Makefile
===================================================================
RCS file: /cvs/ports/textproc/groff/Makefile,v
retrieving revision 1.38
diff -u -p -r1.38 Makefile
--- Makefile    22 Aug 2017 23:28:52 -0000      1.38
+++ Makefile    25 Aug 2018 19:42:57 -0000
@@ -4,7 +4,7 @@ COMMENT =               GNU troff typesetter
 VERSION =              1.22.3
 SUBST_VARS =           VERSION
 DISTNAME =             groff-${VERSION}
-REVISION =             8
+REVISION =             9
 
 CATEGORIES =           textproc
 DPB_PROPERTIES =       parallel
Index: patches/patch-Makefile_comm
===================================================================
RCS file: patches/patch-Makefile_comm
diff -N patches/patch-Makefile_comm
--- patches/patch-Makefile_comm 6 Nov 2014 22:15:22 -0000       1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,60 +0,0 @@
-$OpenBSD: patch-Makefile_comm,v 1.3 2014/11/06 22:15:22 schwarze Exp $
-# Install preformatted manuals
-# since mandoc(1) does not format the groff manuals well.
-# But install groff_mdoc(7) as source
-# because mandoc(1) handles that one better than groff.
---- Makefile.comm.orig Mon Oct 13 00:16:08 2014
-+++ Makefile.comm      Mon Oct 13 00:32:56 2014
-@@ -172,27 +172,44 @@ install_man:
-       -test -d $(DESTDIR)$(man1dir) || $(mkinstalldirs) $(DESTDIR)$(man1dir)
-       @-pages="$(MAN1)"; \
-        for p in $$pages; do \
--         prog=`basename $$p .n`; \
--         target=$(DESTDIR)$(man1dir)/$(NAMEPREFIX)$$prog.$(man1ext); \
-+         p0="$${p%.n}.0"; \
-+         echo "groff -t -mandoc -Tascii -P -c $$p > $$p0"; \
-+         $(top_srcdir)/test-groff -t -mandoc -Tascii -P -c $$p > $$p0; \
-+         target=$(DESTDIR)$(man1dir)/$(NAMEPREFIX)$$p0; \
-          rm -f $$target; \
--         echo $(INSTALL_DATA) $$p $$target; \
--         $(INSTALL_DATA) $$p $$target; \
-+         echo $(INSTALL_DATA) $$p0 $$target; \
-+         $(INSTALL_DATA) $$p0 $$target; \
-       done
-       -test -d $(DESTDIR)$(man5dir) || $(mkinstalldirs) $(DESTDIR)$(man5dir)
-       @-pages="$(MAN5)"; \
-        for p in $$pages; do \
--         target=$(DESTDIR)$(man5dir)/`basename $$p .n`.$(man5ext); \
-+         p0="$${p%.n}.0"; \
-+         echo "groff -t -mandoc -Tascii -P -c $$p > $$p0"; \
-+         $(top_srcdir)/test-groff -t -mandoc -Tascii -P -c $$p > $$p0; \
-+         target=$(DESTDIR)$(man5dir)/$$p0; \
-          rm -f $$target; \
--         echo $(INSTALL_DATA) $$p $$target; \
--         $(INSTALL_DATA) $$p $$target; \
-+         echo $(INSTALL_DATA) $$p0 $$target; \
-+         $(INSTALL_DATA) $$p0 $$target; \
-       done
-       -test -d $(DESTDIR)$(man7dir) || $(mkinstalldirs) $(DESTDIR)$(man7dir)
-       @-pages="$(MAN7)"; \
-        for p in $$pages; do \
--         target=$(DESTDIR)$(man7dir)/`basename $$p .n`.$(man7ext); \
-+        if [ "X$$p" = "Xgroff_mdoc.n" ]; then \
-+         mdocdir=$(DESTDIR)$(manroot)/man$(man7ext); \
-+         test -d $$mdocdir || $(mkinstalldirs) $$mdocdir; \
-+         target=$$mdocdir/groff_mdoc.7; \
-          rm -f $$target; \
-          echo $(INSTALL_DATA) $$p $$target; \
-          $(INSTALL_DATA) $$p $$target; \
-+        else \
-+         p0="$${p%.n}.0"; \
-+         echo "groff -t -mandoc -Tascii -P -c $$p > $$p0"; \
-+         $(top_srcdir)/test-groff -t -mandoc -Tascii -P -c $$p > $$p0; \
-+         target=$(DESTDIR)$(man7dir)/$$p0; \
-+         rm -f $$target; \
-+         echo $(INSTALL_DATA) $$p0 $$target; \
-+         $(INSTALL_DATA) $$p0 $$target; \
-+        fi; \
-       done
- 
- .PHONY: uninstall_man
Index: patches/patch-Makefile_in
===================================================================
RCS file: /cvs/ports/textproc/groff/patches/patch-Makefile_in,v
retrieving revision 1.7
diff -u -p -r1.7 patch-Makefile_in
--- patches/patch-Makefile_in   13 Sep 2016 11:17:21 -0000      1.7
+++ patches/patch-Makefile_in   25 Aug 2018 19:42:57 -0000
@@ -1,29 +1,9 @@
 $OpenBSD: patch-Makefile_in,v 1.7 2016/09/13 11:17:21 schwarze Exp $
-chunk 1: Install preformatted manuals, not source pages (local change).
-chunk 2: src/devices/gropdf depends on arch/misc.
-chunk 3: avoid bogus "is up to date" during fake.
-Regarding chunks 2 & 3, current upstream code is completely different now.
+chunk 1: src/devices/gropdf depends on arch/misc.
+chunk 2: avoid bogus "is up to date" during fake.
+Upstream code is completely different now.
 --- Makefile.in.orig   Tue Nov  4 09:38:35 2014
 +++ Makefile.in        Thu Sep  8 22:27:19 2016
-@@ -253,15 +253,15 @@ manroot=$(mandir)
- 
- # `man1ext' is the man section for user commands.
- man1ext=1
--man1dir=$(manroot)/man$(man1ext)
-+man1dir=$(manroot)/cat$(man1ext)
- 
- # `man5ext' is the man section for file formats.
- man5ext=5
--man5dir=$(manroot)/man$(man5ext)
-+man5dir=$(manroot)/cat$(man5ext)
- 
- # `man7ext' is the man section for macros.
- man7ext=7
--man7dir=$(manroot)/man$(man7ext)
-+man7dir=$(manroot)/cat$(man7ext)
- 
- # `dist' target is disallowed in some `configure' combinations.
- doc_dist_target_ok=@doc_dist_target_ok@
 @@ -896,6 +896,8 @@ $(GNULIBDIRS): FORCE
          $(MAKE) ACLOCAL=: AUTOCONF=: AUTOHEADER=: AUTOMAKE=: $(do) ;; \
        esac
Index: patches/patch-tmac_groff_www_man
===================================================================
RCS file: patches/patch-tmac_groff_www_man
diff -N patches/patch-tmac_groff_www_man
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-tmac_groff_www_man    25 Aug 2018 19:42:57 -0000
@@ -0,0 +1,21 @@
+$OpenBSD$
+
+This manual page uses the groff_www(7) macro set.
+Map that to the usual man-ext macros.
+I'm pushing a slightly more invasive fix upstream.
+
+Index: tmac/groff_www.man
+--- tmac/groff_www.man.orig
++++ tmac/groff_www.man
+@@ -1,4 +1,11 @@
+ .TH GROFF_WWW @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
++.de URL
++.  UR \\$1
++.  nop \\$2
++.  UE \\$3\\&
++..
++.als FTP URL
++.als MTO URL
+ .SH NAME
+ groff_www \- groff macros for authoring web pages
+ .
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/textproc/groff/pkg/PLIST,v
retrieving revision 1.7
diff -u -p -r1.7 PLIST
--- pkg/PLIST   6 Nov 2014 22:15:23 -0000       1.7
+++ pkg/PLIST   25 Aug 2018 19:42:57 -0000
@@ -68,71 +68,71 @@ lib/groff/grog/
 lib/groff/grog/subs.pl
 lib/groff/refer/
 lib/groff/site-tmac/
-@man man/cat1/addftinfo.0
-@man man/cat1/afmtodit.0
-@man man/cat1/chem.0
-@man man/cat1/eqn.0
-@man man/cat1/eqn2graph.0
-@man man/cat1/gdiffmk.0
-@man man/cat1/glilypond.0
-@man man/cat1/gperl.0
-@man man/cat1/gpinyin.0
-@man man/cat1/grap2graph.0
-@man man/cat1/grn.0
-@man man/cat1/grodvi.0
-@man man/cat1/groff.0
-@man man/cat1/groffer.0
-@man man/cat1/grog.0
-@man man/cat1/grohtml.0
-@man man/cat1/grolbp.0
-@man man/cat1/grolj4.0
-@man man/cat1/gropdf.0
-@man man/cat1/grops.0
-@man man/cat1/grotty.0
-@man man/cat1/hpftodit.0
-@man man/cat1/indxbib.0
-@man man/cat1/lkbib.0
-@man man/cat1/lookbib.0
-@man man/cat1/mmroff.0
-@man man/cat1/neqn.0
-@man man/cat1/nroff.0
-@man man/cat1/pdfmom.0
-@man man/cat1/pdfroff.0
-@man man/cat1/pfbtops.0
-@man man/cat1/pic.0
-@man man/cat1/pic2graph.0
-@man man/cat1/preconv.0
-@man man/cat1/refer.0
-@man man/cat1/roff2dvi.0
-@man man/cat1/roff2html.0
-@man man/cat1/roff2pdf.0
-@man man/cat1/roff2ps.0
-@man man/cat1/roff2text.0
-@man man/cat1/roff2x.0
-@man man/cat1/soelim.0
-@man man/cat1/tbl.0
-@man man/cat1/tfmtodit.0
-@man man/cat1/troff.0
-@man man/cat5/groff_font.0
-@man man/cat5/groff_out.0
-@man man/cat5/groff_tmac.0
-@man man/cat5/lj4_font.0
-@man man/cat7/ditroff.0
-@man man/cat7/groff.0
-@man man/cat7/groff_char.0
-@man man/cat7/groff_diff.0
-@man man/cat7/groff_filenames.0
-@man man/cat7/groff_hdtbl.0
-@man man/cat7/groff_man.0
-@man man/cat7/groff_me.0
-@man man/cat7/groff_mm.0
-@man man/cat7/groff_mmse.0
-@man man/cat7/groff_mom.0
-@man man/cat7/groff_ms.0
-@man man/cat7/groff_trace.0
-@man man/cat7/groff_www.0
-@man man/cat7/roff.0
+@man man/man1/addftinfo.1
+@man man/man1/afmtodit.1
+@man man/man1/chem.1
+@man man/man1/eqn.1
+@man man/man1/eqn2graph.1
+@man man/man1/gdiffmk.1
+@man man/man1/glilypond.1
+@man man/man1/gperl.1
+@man man/man1/gpinyin.1
+@man man/man1/grap2graph.1
+@man man/man1/grn.1
+@man man/man1/grodvi.1
+@man man/man1/groff.1
+@man man/man1/groffer.1
+@man man/man1/grog.1
+@man man/man1/grohtml.1
+@man man/man1/grolbp.1
+@man man/man1/grolj4.1
+@man man/man1/gropdf.1
+@man man/man1/grops.1
+@man man/man1/grotty.1
+@man man/man1/hpftodit.1
+@man man/man1/indxbib.1
+@man man/man1/lkbib.1
+@man man/man1/lookbib.1
+@man man/man1/mmroff.1
+@man man/man1/neqn.1
+@man man/man1/nroff.1
+@man man/man1/pdfmom.1
+@man man/man1/pdfroff.1
+@man man/man1/pfbtops.1
+@man man/man1/pic.1
+@man man/man1/pic2graph.1
+@man man/man1/preconv.1
+@man man/man1/refer.1
+@man man/man1/roff2dvi.1
+@man man/man1/roff2html.1
+@man man/man1/roff2pdf.1
+@man man/man1/roff2ps.1
+@man man/man1/roff2text.1
+@man man/man1/roff2x.1
+@man man/man1/soelim.1
+@man man/man1/tbl.1
+@man man/man1/tfmtodit.1
+@man man/man1/troff.1
+@man man/man5/groff_font.5
+@man man/man5/groff_out.5
+@man man/man5/groff_tmac.5
+@man man/man5/lj4_font.5
+@man man/man7/ditroff.7
+@man man/man7/groff.7
+@man man/man7/groff_char.7
+@man man/man7/groff_diff.7
+@man man/man7/groff_filenames.7
+@man man/man7/groff_hdtbl.7
+@man man/man7/groff_man.7
 @man man/man7/groff_mdoc.7
+@man man/man7/groff_me.7
+@man man/man7/groff_mm.7
+@man man/man7/groff_mmse.7
+@man man/man7/groff_mom.7
+@man man/man7/groff_ms.7
+@man man/man7/groff_trace.7
+@man man/man7/groff_www.7
+@man man/man7/roff.7
 share/doc/groff/
 share/doc/groff/html/
 share/doc/groff/html/mom/

Reply via email to