Re: [PATCH] Documentation: fix build with Asciidoctor 2
- From
SZEDER Gábor <szeder.dev@gmail.com>
- Date
- Sep 8, 2019, 14:13 UTC
- Message-ID
- <20190908141308.GA7255@szeder.dev>
- In-Reply-To
- <20190907170746.273984-1-sandals@crustytoothpaste.net>
On Sat, Sep 07, 2019 at 05:07:46PM +0000, brian m. carlson wrote:
Show 30 quoted lines
> Our documentation toolchain has traditionally been built around DocBook > 4.5. This version of DocBook is the last DTD-based version of DocBook. > In 2009, DocBook 5 was introduced using namespaces and its syntax is > expressed in RELAX-NG, which is more expressive and allows a wider > variety of syntax forms. > > Asciidoctor, one of the alternatives for building our documentation, > dropped support for DocBook 4.5 in its recent 2.0 release and now only > supports DocBook 5. This would not be a problem but for the fact that > we use xmlto, which is still stuck in the DocBook 4.5 era. > > xmlto performs DTD validation as part of the build process. This is not > problematic for DocBook 4.5, which has a valid DTD, but it clearly > cannot work for DocBook 5, since no DTD can adequately express its full > syntax. In addition, even if xmlto did support RELAX-NG validation, > that wouldn't be sufficient because it uses the libxml2-based xmllint to > do so, which has known problems with validating interleaves in RELAX-NG. > > Fortunately, there's an easy way forward: ask Asciidoctor to use its > DocBook 5 backend and tell xmlto to skip validation. Asciidoctor has > supported DocBook 5 since v0.1.4 in 2013 and xmlto has supported > skipping validation for probably longer than that. > > xmlto will still use the non-namespaced DocBook XSL stylesheets (which > are designed for DocBook 4.5) for building the documentation instead of > the namespaced ones (which are designed for DocBook 5). This isn't > really a problem, since both forms are built from the same source and > can handle both versions, but it does mean that an ugly message about > the stylesheets stripping the namespace will be printed to standard > error.
These messages from 'xmlto' look like these, and there are a lot of them:
Note: namesp. cut : stripped namespace before processing Git User Manual Note: namesp. cut : stripped namespace before processing git-sh-setup(1) Note: namesp. cut : stripped namespace before processing git-get-tar-commit-id(1)
Unfortunately, these messages to standard error cause our CI builds to fail [1].
In the Documentation build job we check that there was nothing printed to standard error during 'make doc', in order to catch warnings that are potential signs of a mis-rendered documentation, but do not cause any asciidoc/asciidoctor/xmlto commands (and thus 'make doc') to fail.
Now, a few recent messages to standard error that indeed were signs of mis-rendered docs [2] looked like this:
asciidoctor: WARNING: api-config.txt: line 232: unterminated listing block
i.e. they came from Asciidoctor and were all-caps warnings.
OTOH, these "stripped namespace" messages come from 'xmlto', are not warnings but have that "Note:" prefix, and, trusting that you did check the results thoroughly, are apparently not a sign of any rendering issues. So I think it's safe to ignore them and this patch should strip them from 'make doc's output in 'ci/test-documentation.sh'.
Related: after this patch we might want to update the CI builds to use Asciidoctor 2 instead of sticking with 1.5.8.
[1] With Asciidoctor 1.5.8:
https://travis-ci.org/szeder/git/jobs/582294090#L2085
With an additional patch on top to use Asciidoctor 2:
https://travis-ci.org/szeder/git/jobs/582294243#L2066
[2] See 'git log -3 b373e4d29b'