Re: [PATCH 4/5] docs: by default, build docs a lot faster with Sphinx >= 1.7

From: Mauro Carvalho Chehab
Date: Wed May 29 2019 - 19:23:43 EST


Em Wed, 29 May 2019 17:02:02 -0600
Jonathan Corbet <corbet@xxxxxxx> escreveu:

> On Mon, 27 May 2019 08:07:40 -0300
> Mauro Carvalho Chehab <mchehab+samsung@xxxxxxxxxx> wrote:
>
> > Since Sphinx version 1.7, it is possible to use "-jauto" in
> > order to speedup documentation builds. On older versions,
> > while -j was already supported, one would need to set the
> > number of threads manually.
> >
> > So, if SPHINXOPTS is not provided, add -jauto, in order to
> > speed up the build. That makes it *a lot* times faster than
> > without -j.
> >
> > If one really wants to slow things down, it can just use:
> >
> > make SPHINXOPTS=-j1 htmldocs
> >
> > Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@xxxxxxxxxx>
> > ---
> > Documentation/Makefile | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/Documentation/Makefile b/Documentation/Makefile
> > index 380e24053d6f..794233d05789 100644
> > --- a/Documentation/Makefile
> > +++ b/Documentation/Makefile
> > @@ -28,6 +28,8 @@ ifeq ($(HAVE_SPHINX),0)
> >
> > else # HAVE_SPHINX
> >
> > +SPHINXOPTS = $(shell perl -e 'open IN,"sphinx-build --version |"; while (<IN>) { if (m/([\d\.]+)/) { print "-jauto" if ($$1 >= "1.7") } ;} close IN')
> > +
>
> So this totally fails to work for me with any version of sphinx, and I'm
> not enough of a Perl person to figure it out. Sometimes I'll see the
> sphinx-build output, i.e.:
>
> sphinx-build 1.8.4
>
> and sometimes (like with 2.0) I don't, but I never get -jauto regardless.

Hmm... with 2.0.0 --version prints the version.

$ sphinx-build --version
sphinx-build 2.0.0

Afaikt, only too old versions will output it with a different format:


$ sphinx-build --version
Sphinx (sphinx-build) 1.2


> Not sure what's going on here?

Do you have SPHINXOPTS already set on your environment? If so, Makefile
will not override the existing environment.

Here, if I call it by hand (replacing $$1 by $1), it does the right
thing. For example:

1.8.4:

$ sphinx-build --version
sphinx-build 1.8.4
$ perl -e 'open IN,"sphinx-build --version |"; while (<IN>) { if (m/([\d\.]+)/) { print "-jauto\n" if ($1 >= "1.7") } ;} close IN'
-jauto

2.0.0:
$ sphinx-build --version
sphinx-build 2.0.0
(sphinx_2.0) $ perl -e 'open IN,"sphinx-build --version |"; while (<IN>) { if (m/([\d\.]+)/) { print "-jauto\n" if ($1 >= "1.7") } ;} close IN'
-jauto


Thanks,
Mauro