Merge topic 'sphinx-domain-parallel'

ac89f9ec86 Merge branch 'backport-3.26-sphinx-domain-parallel'
f546ebfecc Utilities/Sphinx: Fix parallel documentation builds
4e11859e0e Utilities/Sphinx: Fix parallel documentation builds for 3.26

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: technocolordreamcoder <j_grant5@u.pacific.edu>
Merge-request: !8575
This commit is contained in:
Brad King 2023-06-23 14:40:33 +00:00 committed by Kitware Robot
commit 080e269f62

View File

@ -668,7 +668,7 @@ class CMakeDomain(Domain):
'manual': CMakeXRefRole(), 'manual': CMakeXRefRole(),
} }
initial_data = { initial_data = {
'objects': {}, # fullname -> docname, objtype 'objects': {}, # fullname -> ObjectEntry
} }
def clear_doc(self, docname): def clear_doc(self, docname):
@ -679,6 +679,20 @@ class CMakeDomain(Domain):
for fullname in to_clear: for fullname in to_clear:
del self.data['objects'][fullname] del self.data['objects'][fullname]
def merge_domaindata(self, docnames, otherdata):
"""Merge domaindata from the workers/chunks when they return.
Called once per parallelization chunk.
Only used when sphinx is run in parallel mode.
:param docnames: a Set of the docnames that are part of the current
chunk to merge
:param otherdata: the partial data calculated by the current chunk
"""
for refname, obj in otherdata['objects'].items():
if obj.docname in docnames:
self.data['objects'][refname] = obj
def resolve_xref(self, env, fromdocname, builder, def resolve_xref(self, env, fromdocname, builder,
typ, target, node, contnode): typ, target, node, contnode):
targetid = f'{typ}:{target}' targetid = f'{typ}:{target}'