doc: Generate PlantUML diagrams automatically

Currently we have some pre-rendered versions of certain diagrams
in SVG format. These diagrams have corresponding PlantUML source
that can be rendered automatically as part of the documentation
build, removing the need for any intermediate files.

This patch adds the Sphinx "plantuml" extension, replaces
references to the pre-rendered SVG files within the documents,
and finally removes the SVG files and helper script.

New requirements for building the docs are the
"sphinxcontrib-plantuml" Python module (added to the pip
requirements.txt file) and the Graphviz package (provides the
"dot" binary) which is in the Ubuntu package repositories.

Change-Id: I24b52ee40ff79676212ed7cff350294945f1b50d
Signed-off-by: Paul Beesley <paul.beesley@arm.com>
This commit is contained in:
Paul Beesley 2019-07-12 11:56:58 +01:00
parent 3ce3ce0738
commit 7cb68807fb
6 changed files with 10 additions and 20 deletions

View File

@ -26,7 +26,7 @@ The following figure depicts a general sequence involving SDEI client executing
at EL2 and an event dispatch resulting from the triggering of a bound interrupt.
A commentary is provided below:
.. image:: ../resources/diagrams/plantuml/sdei_general.svg
.. uml:: ../resources/diagrams/plantuml/sdei_general.puml
As part of initialisation, the SDEI client binds a Non-secure interrupt [1], and
the SDEI dispatcher returns a platform dynamic event number [2]. The client then
@ -234,7 +234,7 @@ on success, or ``-1`` on failure.
The following figure depicts a scenario involving explicit dispatch of SDEI
event. A commentary is provided below:
.. image:: ../resources/diagrams/plantuml/sdei_explicit_dispatch.svg
.. uml:: ../resources/diagrams/plantuml/sdei_explicit_dispatch.puml
As part of initialisation, the SDEI client registers a handler for a platform
event [1], enables the event [3], and unmasks the current PE [5]. Note that,

View File

@ -23,7 +23,7 @@ release = version # We don't need these to be distinct
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = ['sphinx.ext.autosectionlabel']
extensions = ['sphinx.ext.autosectionlabel', 'sphinxcontrib.plantuml']
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
@ -82,4 +82,8 @@ html_theme_options = {
# -- Options for autosectionlabel --------------------------------------------
# Only generate automatic section labels for document titles
autosectionlabel_maxdepth = 1
autosectionlabel_maxdepth = 1
# -- Options for plantuml ----------------------------------------------------
plantuml_output_format = 'svg_img'

View File

@ -1,2 +1,3 @@
sphinx>=2.0.0
sphinx-rtd-theme>=0.4.3
sphinx-rtd-theme>=0.4.3
sphinxcontrib-plantuml>=0.15

View File

@ -1,13 +0,0 @@
#!/bin/bash
# Convert all PlantUML files in this directory to SVG files. The plantuml_jar
# environment variable must be set to the path to PlantUML JAR file.
if [ -z "$plantuml_jar" ]; then
echo "Usage: plantuml_jar=/path/to/plantuml.jar $0 *.puml" >&2
exit 1
fi
java -jar "$plantuml_jar" -nometadata -tsvg "$@"
# vim:set noet sts=8 tw=80:

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 19 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 17 KiB