qemu/docs/conf.py
<<
>>
Prefs
   1# -*- coding: utf-8 -*-
   2#
   3# QEMU documentation build configuration file, created by
   4# sphinx-quickstart on Thu Jan 31 16:40:14 2019.
   5#
   6# This config file can be used in one of two ways:
   7# (1) as a common config file which is included by the conf.py
   8# for each of QEMU's manuals: in this case sphinx-build is run multiple
   9# times, once per subdirectory.
  10# (2) as a top level conf file which will result in building all
  11# the manuals into a single document: in this case sphinx-build is
  12# run once, on the top-level docs directory.
  13#
  14# QEMU's makefiles take option (1), which allows us to install
  15# only the ones the user cares about (in particular we don't want
  16# to ship the 'devel' manual to end-users).
  17# Third-party sites such as readthedocs.org will take option (2).
  18#
  19#
  20# This file is execfile()d with the current directory set to its
  21# containing dir.
  22#
  23# Note that not all possible configuration values are present in this
  24# autogenerated file.
  25#
  26# All configuration values have a default; values that are commented out
  27# serve to show the default.
  28
  29import os
  30import sys
  31import sphinx
  32from sphinx.errors import ConfigError
  33
  34# Make Sphinx fail cleanly if using an old Python, rather than obscurely
  35# failing because some code in one of our extensions doesn't work there.
  36# In newer versions of Sphinx this will display nicely; in older versions
  37# Sphinx will also produce a Python backtrace but at least the information
  38# gets printed...
  39if sys.version_info < (3,6):
  40    raise ConfigError(
  41        "QEMU requires a Sphinx that uses Python 3.6 or better\n")
  42
  43# The per-manual conf.py will set qemu_docdir for a single-manual build;
  44# otherwise set it here if this is an entire-manual-set build.
  45# This is always the absolute path of the docs/ directory in the source tree.
  46try:
  47    qemu_docdir
  48except NameError:
  49    qemu_docdir = os.path.abspath(".")
  50
  51# If extensions (or modules to document with autodoc) are in another directory,
  52# add these directories to sys.path here. If the directory is relative to the
  53# documentation root, use an absolute path starting from qemu_docdir.
  54#
  55# Our extensions are in docs/sphinx; the qapidoc extension requires
  56# the QAPI modules from scripts/.
  57sys.path.insert(0, os.path.join(qemu_docdir, "sphinx"))
  58sys.path.insert(0, os.path.join(qemu_docdir, "../scripts"))
  59
  60
  61# -- General configuration ------------------------------------------------
  62
  63# If your documentation needs a minimal Sphinx version, state it here.
  64#
  65# Sphinx 1.5 and earlier can't build our docs because they are too
  66# picky about the syntax of the argument to the option:: directive
  67# (see Sphinx bugs #646, #3366).
  68needs_sphinx = '1.6'
  69
  70# Add any Sphinx extension module names here, as strings. They can be
  71# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
  72# ones.
  73extensions = ['kerneldoc', 'qmp_lexer', 'hxtool', 'depfile', 'qapidoc']
  74
  75# Add any paths that contain templates here, relative to this directory.
  76templates_path = ['_templates']
  77
  78# The suffix(es) of source filenames.
  79# You can specify multiple suffix as a list of string:
  80#
  81# source_suffix = ['.rst', '.md']
  82source_suffix = '.rst'
  83
  84# The master toctree document.
  85master_doc = 'index'
  86
  87# General information about the project.
  88project = u'QEMU'
  89copyright = u'2020, The QEMU Project Developers'
  90author = u'The QEMU Project Developers'
  91
  92# The version info for the project you're documenting, acts as replacement for
  93# |version| and |release|, also used in various other places throughout the
  94# built documents.
  95
  96# Extract this information from the VERSION file, for the benefit of
  97# standalone Sphinx runs as used by readthedocs.org. Builds run from
  98# the Makefile will pass version and release on the sphinx-build
  99# command line, which override this.
 100try:
 101    extracted_version = None
 102    with open(os.path.join(qemu_docdir, '../VERSION')) as f:
 103        extracted_version = f.readline().strip()
 104except:
 105    pass
 106finally:
 107    if extracted_version:
 108        version = release = extracted_version
 109    else:
 110        version = release = "unknown version"
 111
 112# The language for content autogenerated by Sphinx. Refer to documentation
 113# for a list of supported languages.
 114#
 115# This is also used if you do content translation via gettext catalogs.
 116# Usually you set "language" from the command line for these cases.
 117language = None
 118
 119# List of patterns, relative to source directory, that match files and
 120# directories to ignore when looking for source files.
 121# This patterns also effect to html_static_path and html_extra_path
 122exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
 123
 124# The name of the Pygments (syntax highlighting) style to use.
 125pygments_style = 'sphinx'
 126
 127# If true, `todo` and `todoList` produce output, else they produce nothing.
 128todo_include_todos = False
 129
 130# Sphinx defaults to warning about use of :option: for options not defined
 131# with "option::" in the document being processed. Turn that off.
 132suppress_warnings = ["ref.option"]
 133
 134# The rst_epilog fragment is effectively included in every rST file.
 135# We use it to define substitutions based on build config that
 136# can then be used in the documentation. The fallback if the
 137# environment variable is not set is for the benefit of readthedocs
 138# style document building; our Makefile always sets the variable.
 139confdir = os.getenv('CONFDIR', "/etc/qemu")
 140rst_epilog = ".. |CONFDIR| replace:: ``" + confdir + "``\n"
 141# We slurp in the defs.rst.inc and literally include it into rst_epilog,
 142# because Sphinx's include:: directive doesn't work with absolute paths
 143# and there isn't any one single relative path that will work for all
 144# documents and for both via-make and direct sphinx-build invocation.
 145with open(os.path.join(qemu_docdir, 'defs.rst.inc')) as f:
 146    rst_epilog += f.read()
 147
 148# -- Options for HTML output ----------------------------------------------
 149
 150# The theme to use for HTML and HTML Help pages.  See the documentation for
 151# a list of builtin themes.
 152#
 153html_theme = 'alabaster'
 154
 155# Theme options are theme-specific and customize the look and feel of a theme
 156# further.  For a list of options available for each theme, see the
 157# documentation.
 158# We initialize this to empty here, so the per-manual conf.py can just
 159# add individual key/value entries.
 160html_theme_options = {
 161}
 162
 163# Add any paths that contain custom static files (such as style sheets) here,
 164# relative to this directory. They are copied after the builtin static files,
 165# so a file named "default.css" will overwrite the builtin "default.css".
 166# QEMU doesn't yet have any static files, so comment this out so we don't
 167# get a warning about a missing directory.
 168# If we do ever add this then it would probably be better to call the
 169# subdirectory sphinx_static, as the Linux kernel does.
 170# html_static_path = ['_static']
 171
 172# Custom sidebar templates, must be a dictionary that maps document names
 173# to template names.
 174#
 175# This is required for the alabaster theme
 176# refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars
 177html_sidebars = {
 178    '**': [
 179        'about.html',
 180        'editpage.html',
 181        'navigation.html',
 182        'searchbox.html',
 183    ]
 184}
 185
 186# Don't copy the rST source files to the HTML output directory,
 187# and don't put links to the sources into the output HTML.
 188html_copy_source = False
 189
 190# -- Options for HTMLHelp output ------------------------------------------
 191
 192# Output file base name for HTML help builder.
 193htmlhelp_basename = 'QEMUdoc'
 194
 195
 196# -- Options for LaTeX output ---------------------------------------------
 197
 198latex_elements = {
 199    # The paper size ('letterpaper' or 'a4paper').
 200    #
 201    # 'papersize': 'letterpaper',
 202
 203    # The font size ('10pt', '11pt' or '12pt').
 204    #
 205    # 'pointsize': '10pt',
 206
 207    # Additional stuff for the LaTeX preamble.
 208    #
 209    # 'preamble': '',
 210
 211    # Latex figure (float) alignment
 212    #
 213    # 'figure_align': 'htbp',
 214}
 215
 216# Grouping the document tree into LaTeX files. List of tuples
 217# (source start file, target name, title,
 218#  author, documentclass [howto, manual, or own class]).
 219latex_documents = [
 220    (master_doc, 'QEMU.tex', u'QEMU Documentation',
 221     u'The QEMU Project Developers', 'manual'),
 222]
 223
 224
 225# -- Options for manual page output ---------------------------------------
 226# Individual manual/conf.py can override this to create man pages
 227man_pages = [
 228    ('interop/qemu-ga', 'qemu-ga',
 229     'QEMU Guest Agent',
 230     ['Michael Roth <mdroth@linux.vnet.ibm.com>'], 8),
 231    ('interop/qemu-ga-ref', 'qemu-ga-ref',
 232     'QEMU Guest Agent Protocol Reference',
 233     [], 7),
 234    ('interop/qemu-qmp-ref', 'qemu-qmp-ref',
 235     'QEMU QMP Reference Manual',
 236     [], 7),
 237    ('interop/qemu-storage-daemon-qmp-ref', 'qemu-storage-daemon-qmp-ref',
 238     'QEMU Storage Daemon QMP Reference Manual',
 239     [], 7),
 240    ('system/qemu-manpage', 'qemu',
 241     'QEMU User Documentation',
 242     ['Fabrice Bellard'], 1),
 243    ('system/qemu-block-drivers', 'qemu-block-drivers',
 244     'QEMU block drivers reference',
 245     ['Fabrice Bellard and the QEMU Project developers'], 7),
 246    ('system/qemu-cpu-models', 'qemu-cpu-models',
 247     'QEMU CPU Models',
 248     ['The QEMU Project developers'], 7),
 249    ('tools/qemu-img', 'qemu-img',
 250     'QEMU disk image utility',
 251     ['Fabrice Bellard'], 1),
 252    ('tools/qemu-nbd', 'qemu-nbd',
 253     'QEMU Disk Network Block Device Server',
 254     ['Anthony Liguori <anthony@codemonkey.ws>'], 8),
 255    ('tools/qemu-pr-helper', 'qemu-pr-helper',
 256     'QEMU persistent reservation helper',
 257     [], 8),
 258    ('tools/qemu-storage-daemon', 'qemu-storage-daemon',
 259     'QEMU storage daemon',
 260     [], 1),
 261    ('tools/qemu-trace-stap', 'qemu-trace-stap',
 262     'QEMU SystemTap trace tool',
 263     [], 1),
 264    ('tools/virtfs-proxy-helper', 'virtfs-proxy-helper',
 265     'QEMU 9p virtfs proxy filesystem helper',
 266     ['M. Mohan Kumar'], 1),
 267    ('tools/virtiofsd', 'virtiofsd',
 268     'QEMU virtio-fs shared file system daemon',
 269     ['Stefan Hajnoczi <stefanha@redhat.com>',
 270      'Masayoshi Mizuma <m.mizuma@jp.fujitsu.com>'], 1),
 271]
 272
 273# -- Options for Texinfo output -------------------------------------------
 274
 275# Grouping the document tree into Texinfo files. List of tuples
 276# (source start file, target name, title, author,
 277#  dir menu entry, description, category)
 278texinfo_documents = [
 279    (master_doc, 'QEMU', u'QEMU Documentation',
 280     author, 'QEMU', 'One line description of project.',
 281     'Miscellaneous'),
 282]
 283
 284
 285
 286# We use paths starting from qemu_docdir here so that you can run
 287# sphinx-build from anywhere and the kerneldoc extension can still
 288# find everything.
 289kerneldoc_bin = ['perl', os.path.join(qemu_docdir, '../scripts/kernel-doc')]
 290kerneldoc_srctree = os.path.join(qemu_docdir, '..')
 291hxtool_srctree = os.path.join(qemu_docdir, '..')
 292qapidoc_srctree = os.path.join(qemu_docdir, '..')
 293