docs, parallelism: Rearrange how jobserver reservations are made
authorKees Cook <keescook@chromium.org>
Thu, 21 Nov 2019 20:59:29 +0000 (12:59 -0800)
committerJonathan Corbet <corbet@lwn.net>
Fri, 22 Nov 2019 17:35:18 +0000 (10:35 -0700)
commit51e46c7a4007d271b2d42dbc2df953ab968577a7
tree9080a226fd6723c2c5ba3035ddf0034a3c8581dc
parentdffd011480d727a819c537edf3b90ef063731725
docs, parallelism: Rearrange how jobserver reservations are made

Rasmus correctly observed that the existing jobserver reservation only
worked if no other build targets were specified. The correct approach
is to hold the jobserver slots until sphinx has finished. To fix this,
the following changes are made:

- refactor (and rename) scripts/jobserver-exec to set an environment
  variable for the maximally reserved jobserver slots and exec a
  child, to release the slots on exit.

- create Documentation/scripts/parallel-wrapper.sh which examines both
  $PARALLELISM and the detected "-jauto" logic from Documentation/Makefile
  to decide sphinx's final -j argument.

- chain these together in Documentation/Makefile

Suggested-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Link: https://lore.kernel.org/lkml/eb25959a-9ec4-3530-2031-d9d716b40b20@rasmusvillemoes.dk
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20191121205929.40371-4-keescook@chromium.org
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Documentation/Makefile
Documentation/sphinx/parallel-wrapper.sh [new file with mode: 0644]
scripts/jobserver-count [deleted file]
scripts/jobserver-exec [new file with mode: 0755]