diff mbox series

[04/11] doc: use asciidoctor to build man pages directly

Message ID 20210514121435.504423-5-felipe.contreras@gmail.com (mailing list archive)
State Superseded
Headers show
Series doc: asciidoctor: direct man page creation and fixes | expand

Commit Message

Felipe Contreras May 14, 2021, 12:14 p.m. UTC
There's no need to use xmlto to build the man pages when modern
asciidoctor can do it by itself.

This new mode will be active only when USE_ASCIIDOCTOR is set.

Suggested-by: Bagas Sanjaya <bagasdotme@gmail.com>
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---
 Documentation/Makefile | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Martin Ågren May 14, 2021, 3:38 p.m. UTC | #1
On Fri, 14 May 2021 at 14:14, Felipe Contreras
<felipe.contreras@gmail.com> wrote:
>
> There's no need to use xmlto to build the man pages when modern
> asciidoctor can do it by itself.
>
> This new mode will be active only when USE_ASCIIDOCTOR is set.

May I suggest incorporating something more like brian's patch here [1],
so that there's a separate knob for this thing?

The commit message is short on details and makes it sound like this is
it, we're done. But then there are several patches to fix up things.
Which is a good approach, so that this patch doesn't need to do several
things at once. This commit message could say something about it, e.g.,

  The doc-diff here [which doc-diff? see below] is a XYZ-line diff.
  Large parts of this difference will be addressed in the following
  patches.

About the use of doc-diff: If this commit introduces a new knob rather
than taking over USE_ASCIIDOCTOR=Yes, the next patch could be Peff's
patch to doc-diff that compares the two asciidoctor approaches [2], and
then the next few patches could diff between them. That would get the
asciidoc-vs-asciidoctor differences out of the way, so you can focus on
asciidoctor-vs-asciidoctor.

With a separate knob, it would feel like a lot easier decision to take
something like this. There are over 11000 lines in the doc-diff after
applying your series, and there's the missing boldness for literals.
Maybe those differences are all great (I would be missing the bold
literals, though). If this series doesn't affect someone using
"vanilla" USE_ASCIIDOCTOR=Yes, we could let this thing cook in master
and work incrementally on top.

[1] https://lore.kernel.org/git/20210514003104.94644-2-sandals@crustytoothpaste.net/

[2] https://lore.kernel.org/git/YJt81neO7zsGz2ah@coredump.intra.peff.net/


Martin
Felipe Contreras May 14, 2021, 8:26 p.m. UTC | #2
Martin Ågren wrote:
> On Fri, 14 May 2021 at 14:14, Felipe Contreras
> <felipe.contreras@gmail.com> wrote:
> >
> > There's no need to use xmlto to build the man pages when modern
> > asciidoctor can do it by itself.
> >
> > This new mode will be active only when USE_ASCIIDOCTOR is set.
> 
> May I suggest incorporating something more like brian's patch here [1],
> so that there's a separate knob for this thing?

Sure. Do you agree with the name? (USE_ASCIIDOCTOR_MANPAGE)

> The commit message is short on details and makes it sound like this is
> it, we're done. But then there are several patches to fix up things.
> Which is a good approach, so that this patch doesn't need to do several
> things at once. This commit message could say something about it, e.g.,
> 
>   The doc-diff here [which doc-diff? see below] is a XYZ-line diff.
>   Large parts of this difference will be addressed in the following
>   patches.

Right. I'll include that.

> About the use of doc-diff: If this commit introduces a new knob rather
> than taking over USE_ASCIIDOCTOR=Yes, the next patch could be Peff's
> patch to doc-diff that compares the two asciidoctor approaches [2], and
> then the next few patches could diff between them. That would get the
> asciidoc-vs-asciidoctor differences out of the way, so you can focus on
> asciidoctor-vs-asciidoctor.

You mean [1]. I think that belongs on the same patch. It's important
that if we do have a new switch, doc-diff is able to use it.

However, I personally don't need such switch, I want to compare
asciidoc-vs-asciidoctor-manpage wholesale.

I want to see *all* the diffs.

> With a separate knob, it would feel like a lot easier decision to take
> something like this. There are over 11000 lines in the doc-diff after
> applying your series, and there's the missing boldness for literals.
> Maybe those differences are all great (I would be missing the bold
> literals, though). If this series doesn't affect someone using
> "vanilla" USE_ASCIIDOCTOR=Yes, we could let this thing cook in master
> and work incrementally on top.

I did notice the missing boldness for literals, and I know how to fix
it. It's a small hack. I also noticed a few small rendering issues.

But from my point of view after my patches this is 98% done. Most of the
remaining diffs are fine, for example:

-GIT-CHECK-REF-FOR(1)              Git Manual              GIT-CHECK-REF-FOR(1)
+GIT-CHECK-REF-FORMAT(1)           Git Manual           GIT-CHECK-REF-FORMAT(1)

That's clearly a bug in asciidoc+docbook. Others are things asciidoctor
renders better, and most are whitespace noise.

Cheers.

[1] https://lore.kernel.org/git/YJt1%2FDO1cXNTRNxK@coredump.intra.peff.net/
diff mbox series

Patch

diff --git a/Documentation/Makefile b/Documentation/Makefile
index 981e322f18..ce9cea0817 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -198,6 +198,7 @@  ASCIIDOC_DEPS = asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS
 DBLATEX_COMMON =
 XMLTO_EXTRA += --skip-validation
 XMLTO_EXTRA += -x manpage.xsl
+TXT_TO_MAN = $(ASCIIDOC_COMMON) -b manpage
 endif
 
 SHELL_PATH ?= $(SHELL)
@@ -362,8 +363,13 @@  $(OBSOLETE_HTML): %.html : %.txto $(ASCIIDOC_DEPS)
 manpage-base-url.xsl: manpage-base-url.xsl.in
 	$(QUIET_GEN)sed "s|@@MAN_BASE_URL@@|$(MAN_BASE_URL)|" $< > $@
 
+ifdef TXT_TO_MAN
+%.1 %.5 %.7 : %.txt $(ASCIIDOC_DEPS)
+	$(QUIET_ASCIIDOC)$(TXT_TO_MAN) -o $@ $<
+else
 %.1 %.5 %.7 : %.xml manpage-base-url.xsl $(wildcard manpage*.xsl)
 	$(QUIET_XMLTO)$(XMLTO) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $<
+endif
 
 %.xml : %.txt $(ASCIIDOC_DEPS)
 	$(QUIET_ASCIIDOC)$(TXT_TO_XML) -d manpage -o $@ $<