Skip to content
Snippets Groups Projects
  • Peter Maydell's avatar
    b93f4fbd
    docs: Build and install all the docs in a single manual · b93f4fbd
    Peter Maydell authored
    
    When we first converted our documentation to Sphinx, we split it into
    multiple manuals (system, interop, tools, etc), which are all built
    separately.  The primary driver for this was wanting to be able to
    avoid shipping the 'devel' manual to end-users.  However, this is
    working against the grain of the way Sphinx wants to be used and
    causes some annoyances:
     * Cross-references between documents become much harder or
       possibly impossible
     * There is no single index to the whole documentation
     * Within one manual there's no links or table-of-contents info
       that lets you easily navigate to the others
     * The devel manual doesn't get published on the QEMU website
       (it would be nice to able to refer to it there)
    
    Merely hiding our developer documentation from end users seems like
    it's not enough benefit for these costs.  Combine all the
    documentation into a single manual (the same way that the readthedocs
    site builds it) and install the whole thing.  The previous manual
    divisions remain as the new top level sections in the manual.
    
     * The per-manual conf.py files are no longer needed
     * The man_pages[] specifications previously in each per-manual
       conf.py move to the top level conf.py
     * docs/meson.build logic is simplified as we now only need to run
       Sphinx once for the HTML and then once for the manpages5B
     * The old index.html.in that produced the top-level page with
       links to each manual is no longer needed
    
    Unfortunately this means that we now have to build the HTML
    documentation into docs/manual in the build tree rather than directly
    into docs/; otherwise it is too awkward to ensure we install only the
    built manual and not also the dependency info, stamp file, etc.  The
    manual still ends up in the same place in the final installed
    directory, but anybody who was consulting documentation from within
    the build tree will have to adjust where they're looking.
    
    Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
    Reviewed-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Message-id: 20210115154449.4801-1-peter.maydell@linaro.org
    b93f4fbd
    History
    docs: Build and install all the docs in a single manual
    Peter Maydell authored
    
    When we first converted our documentation to Sphinx, we split it into
    multiple manuals (system, interop, tools, etc), which are all built
    separately.  The primary driver for this was wanting to be able to
    avoid shipping the 'devel' manual to end-users.  However, this is
    working against the grain of the way Sphinx wants to be used and
    causes some annoyances:
     * Cross-references between documents become much harder or
       possibly impossible
     * There is no single index to the whole documentation
     * Within one manual there's no links or table-of-contents info
       that lets you easily navigate to the others
     * The devel manual doesn't get published on the QEMU website
       (it would be nice to able to refer to it there)
    
    Merely hiding our developer documentation from end users seems like
    it's not enough benefit for these costs.  Combine all the
    documentation into a single manual (the same way that the readthedocs
    site builds it) and install the whole thing.  The previous manual
    divisions remain as the new top level sections in the manual.
    
     * The per-manual conf.py files are no longer needed
     * The man_pages[] specifications previously in each per-manual
       conf.py move to the top level conf.py
     * docs/meson.build logic is simplified as we now only need to run
       Sphinx once for the HTML and then once for the manpages5B
     * The old index.html.in that produced the top-level page with
       links to each manual is no longer needed
    
    Unfortunately this means that we now have to build the HTML
    documentation into docs/manual in the build tree rather than directly
    into docs/; otherwise it is too awkward to ensure we install only the
    built manual and not also the dependency info, stamp file, etc.  The
    manual still ends up in the same place in the final installed
    directory, but anybody who was consulting documentation from within
    the build tree will have to adjust where they're looking.
    
    Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
    Reviewed-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Message-id: 20210115154449.4801-1-peter.maydell@linaro.org