meson: Pass -j option to sphinx
Save a bit of build time by passing the number of jobs option to sphinx. We cannot use the -j option from make because meson does not support setting build time parameters for custom targets. Use nproc instead or the equivalent sphinx option "-j auto", if that is available (version >=1.7.0). Also make sure our plugins support parallelism and report it properly to sphinx. Particularly, implement the merge_domaindata method in DBusDomain that is used to merge in data from other subprocesses. Tested-by: Daniel P. Berrangé <berrange@redhat.com> Signed-off-by: Fabiano Rosas <farosas@suse.de> Message-Id: <20230503203947.3417-2-farosas@suse.de> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
8bf171c2d1
commit
ed8d95182b
@ -10,6 +10,18 @@ if sphinx_build.found()
|
||||
SPHINX_ARGS += [ '-W', '-Dkerneldoc_werror=1' ]
|
||||
endif
|
||||
|
||||
sphinx_version = run_command(SPHINX_ARGS + ['--version'],
|
||||
check: true).stdout().split()[1]
|
||||
if sphinx_version.version_compare('>=1.7.0')
|
||||
SPHINX_ARGS += ['-j', 'auto']
|
||||
else
|
||||
nproc = find_program('nproc')
|
||||
if nproc.found()
|
||||
jobs = run_command(nproc, check: true).stdout()
|
||||
SPHINX_ARGS += ['-j', jobs]
|
||||
endif
|
||||
endif
|
||||
|
||||
# This is a bit awkward but works: create a trivial document and
|
||||
# try to run it with our configuration file (which enforces a
|
||||
# version requirement). This will fail if sphinx-build is too old.
|
||||
|
@ -400,6 +400,10 @@ class DBusDomain(Domain):
|
||||
for refname, obj in self.objects.items():
|
||||
yield (refname, refname, obj.objtype, obj.docname, obj.node_id, 1)
|
||||
|
||||
def merge_domaindata(self, docnames, otherdata):
|
||||
for name, obj in otherdata['objects'].items():
|
||||
if obj.docname in docnames:
|
||||
self.data['objects'][name] = obj
|
||||
|
||||
def setup(app):
|
||||
app.add_domain(DBusDomain)
|
||||
|
@ -23,3 +23,8 @@ class FakeDBusDocDirective(Directive):
|
||||
def setup(app: Sphinx) -> Dict[str, Any]:
|
||||
"""Register a fake dbus-doc directive with Sphinx"""
|
||||
app.add_directive("dbus-doc", FakeDBusDocDirective)
|
||||
|
||||
return dict(
|
||||
parallel_read_safe = True,
|
||||
parallel_write_safe = True
|
||||
)
|
||||
|
@ -41,3 +41,8 @@ def setup(sphinx):
|
||||
sphinx.add_lexer('QMP', QMPExampleLexer)
|
||||
except errors.VersionRequirementError:
|
||||
sphinx.add_lexer('QMP', QMPExampleLexer())
|
||||
|
||||
return dict(
|
||||
parallel_read_safe = True,
|
||||
parallel_write_safe = True
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user