Просмотр исходного кода

Utilities/Sphinx: Fix parallel documentation builds for 3.26

In commit d78bfa1ecc (Utilities/Sphinx: support cmakedomain running in
parallel, 2022-10-24, v3.26.0-rc1~495^2) we declared the domain as
parallel-safe without actually implementing the required
`merge_domaindata` method.

Issue: #24076
Jared Dillard 2 лет назад
Родитель
Сommit
4e11859e0e
1 измененных файлов с 13 добавлено и 0 удалено
  1. 13 0
      Utilities/Sphinx/cmake.py

+ 13 - 0
Utilities/Sphinx/cmake.py

@@ -457,6 +457,19 @@ class CMakeDomain(Domain):
         for fullname in to_clear:
             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, (docname, objtype) in otherdata['objects'].items():
+            if docname in docnames:
+                self.data['objects'][refname] = (docname, objtype)
+
     def resolve_xref(self, env, fromdocname, builder,
                      typ, target, node, contnode):
         targetid = '%s:%s' % (typ, target)