Re: [Regression] Docs build broken by commit 51e46c7a4007

From: Kees Cook
Date: Thu Feb 20 2020 - 17:49:45 EST


On Thu, Feb 20, 2020 at 10:44:35PM +0100, Rafael J. Wysocki wrote:
> On Thu, Feb 20, 2020 at 9:05 PM Kees Cook <keescook@xxxxxxxxxxxx> wrote:
> >
> > On Thu, Feb 20, 2020 at 07:50:47PM +0100, Rafael J. Wysocki wrote:
> > > On two of my systems the docs build has been broken by commit
> > > 51e46c7a4007 ("docs, parallelism: Rearrange how jobserver reservations
> > > are made").
> > >
> > > The symptom is that the build system complains about the "output"
> > > directory not being there and returns with an error.
> > >
> > > Reverting the problematic commit makes the problem go away.
> >
> > How strange! This must be some race in the parallel build.
>
> I don't think so, I didn't use -j with htmldocs builds.

What version of Sphinx do you have?

> And you know what, adding "-j 2" to the command line actually makes it work. :-)

Without a -j argument, the Documentation build has been using -jauto on
Sphinx itself.

> > AFAICT, "output" is made in the first sub-target (Documentation/media). This
> > doesn't look entirely stable (there's no ordering implied by the "all"
> > target in there)...
> >
> > Does this work for you?
>
> No, it doesn't.

Well now I'm really baffled. What make target are you specifying? I was
assuming you were doing "make htmldocs"?

-Kees

>
> >
> > diff --git a/Documentation/Makefile b/Documentation/Makefile
> > index d77bb607aea4..5654e087ae1e 100644
> > --- a/Documentation/Makefile
> > +++ b/Documentation/Makefile
> > @@ -62,7 +62,8 @@ loop_cmd = $(echo-cmd) $(cmd_$(1)) || exit;
> > # e.g. "media" for the linux-tv book-set at ./Documentation/media
> >
> > quiet_cmd_sphinx = SPHINX $@ --> file://$(abspath $(BUILDDIR)/$3/$4)
> > - cmd_sphinx = $(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/media $2 && \
> > + cmd_sphinx = mkdir -p $(abspath $(BUILDDIR)) && \
> > + $(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/media $2 && \
> > PYTHONDONTWRITEBYTECODE=1 \
> > BUILDDIR=$(abspath $(BUILDDIR)) SPHINX_CONF=$(abspath $(srctree)/$(src)/$5/$(SPHINX_CONF)) \
> > $(PYTHON) $(srctree)/scripts/jobserver-exec \
> >
> > --

--
Kees Cook