summaryrefslogtreecommitdiff
path: root/rules
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2015-10-10 15:12:59 +0200
committerBen Gamari <ben@smart-cactus.org>2015-10-10 15:41:05 +0200
commitfa5eabec43a71546afba6dec7508ae5afb23b805 (patch)
tree8166b32bcb05923c75d9428dc5f45d07353b629c /rules
parent840df33685e8c746ade4b9d4d0eb7c764a773e48 (diff)
downloadhaskell-fa5eabec43a71546afba6dec7508ae5afb23b805.tar.gz
sphinx: Don't share doctrees between targets
Sphinx may trip over itself when multiple instances are run in parallel. Fixes #10950.
Diffstat (limited to 'rules')
-rw-r--r--rules/sphinx.mk9
1 files changed, 6 insertions, 3 deletions
diff --git a/rules/sphinx.mk b/rules/sphinx.mk
index 87b57d6e07..5a3c7ce747 100644
--- a/rules/sphinx.mk
+++ b/rules/sphinx.mk
@@ -13,13 +13,16 @@
# Build Sphinx documentation
+# We are careful not to use the same directory the doctree files for the
+# various Sphinx targets as make may run them in parallel (see #10950).
+
define sphinx
$(call trace, sphinx($1,$2))
$(call profStart, sphinx($1,$2))
# $1 = dir
# $2 = docname
-$(call clean-target,$1,sphinx,$1/.doctrees $1/build-html/ $1/build-pdf $1/$2.pdf)
+$(call clean-target,$1,sphinx,$1/.doctrees-html/ $1/.doctrees-pdf/ $1/build-html/ $1/build-pdf/ $1/$2.pdf)
# empty "all_$1" target just in case we're not building docs at all
$(call all-target,$1,)
@@ -37,7 +40,7 @@ html : html_$1
ifneq "$$(BINDIST)" "YES"
$1/build-html/$2/index.html: $1/conf.py $$($1_RST_SOURCES)
- $(SPHINXBUILD) -b html -d $1/.doctrees $(SPHINXOPTS) $1 $1/build-html/$2
+ $(SPHINXBUILD) -b html -d $1/.doctrees-html $(SPHINXOPTS) $1 $1/build-html/$2
endif
@@ -54,7 +57,7 @@ pdf : pdf_$1
ifneq "$$(BINDIST)" "YES"
$1/$2.pdf: $$($1_RST_SOURCES)
- $(SPHINXBUILD) -b latex -d $1/.doctrees $(SPHINXOPTS) $1 $1/build-pdf/$2
+ $(SPHINXBUILD) -b latex -d $1/.doctrees-pdf $(SPHINXOPTS) $1 $1/build-pdf/$2
cd $1/build-pdf/$2 ; xelatex $2.tex
cd $1/build-pdf/$2 ; xelatex $2.tex
cp $1/build-pdf/$2/$2.pdf $1/$2.pdf