blob: 50fff5756142b040f788a88ecfa15d1cbfad37aa [file] [log] [blame]
Paul Beesley5d3799b2019-10-07 10:04:48 +00001Building Documentation
2======================
3
4To create a rendered copy of this documentation locally you can use the
5`Sphinx`_ tool to build and package the plain-text documents into HTML-formatted
6pages.
7
8If you are building the documentation for the first time then you will need to
9check that you have the required software packages, as described in the
10*Prerequisites* section that follows.
11
12.. note::
13 An online copy of the documentation is available at
14 https://www.trustedfirmware.org/docs/tf-a, if you want to view a rendered
15 copy without doing a local build.
16
17Prerequisites
18-------------
19
Boyan Karatotevdb858782022-10-27 13:55:12 +010020For building a local copy of the |TF-A| documentation you will need:
Paul Beesley5d3799b2019-10-07 10:04:48 +000021
Harrison Mutaib378ad42023-02-16 10:20:48 +000022- Python 3 (3.8 or later)
Paul Beesley5d3799b2019-10-07 10:04:48 +000023- PlantUML (1.2017.15 or later)
Harrison Mutai342f4682023-04-24 09:58:17 +010024- `Poetry`_ (Python dependency manager)
Boyan Karatotevdb858782022-10-27 13:55:12 +010025- Optionally, the `Dia`_ application can be installed if you need to edit
26 existing ``.dia`` diagram files, or create new ones.
Paul Beesley5d3799b2019-10-07 10:04:48 +000027
Harrison Mutaib378ad42023-02-16 10:20:48 +000028
Harrison Mutai342f4682023-04-24 09:58:17 +010029Below is an example set of instructions to get a working environment (tested on
30Ubuntu):
Paul Beesley5d3799b2019-10-07 10:04:48 +000031
32.. code:: shell
33
Paul Beesleyd2fcc4e2019-05-29 13:59:40 +010034 sudo apt install python3 python3-pip plantuml [dia]
Harrison Mutaib378ad42023-02-16 10:20:48 +000035 curl -sSL https://install.python-poetry.org | python3 -
Paul Beesley5d3799b2019-10-07 10:04:48 +000036
Paul Beesley5d3799b2019-10-07 10:04:48 +000037Building rendered documentation
38-------------------------------
39
Harrison Mutai342f4682023-04-24 09:58:17 +010040To install Python dependencies using Poetry:
Paul Beesley5d3799b2019-10-07 10:04:48 +000041
42.. code:: shell
43
Harrison Mutai342f4682023-04-24 09:58:17 +010044 poetry install
45
46Poetry will create a new virtual environment and install all dependencies listed
47in ``pyproject.toml``. You can get information about this environment, such as
48its location and the Python version, with the command:
49
50.. code:: shell
51
52 poetry env info
53
54If you have already sourced a virtual environment, Poetry will respect this and
55install dependencies there.
56
57Once all dependencies are installed, the documentation can be compiled into
58HTML-formatted pages from the project root directory by running:
Paul Beesley5d3799b2019-10-07 10:04:48 +000059
Harrison Mutai342f4682023-04-24 09:58:17 +010060.. code:: shell
61
62 poetry run make doc
Paul Beesley5d3799b2019-10-07 10:04:48 +000063
Harrison Mutai342f4682023-04-24 09:58:17 +010064Output from the build process will be placed in: ``docs/build/html``.
Paul Beesley5d3799b2019-10-07 10:04:48 +000065
Harrison Mutai342f4682023-04-24 09:58:17 +010066Other Output Formats
67~~~~~~~~~~~~~~~~~~~~
Madhukar Pappireddy46adb1b2020-01-28 12:41:20 -060068
69We also support building documentation in other formats. From the ``docs``
70directory of the project, run the following command to see the supported
Harrison Mutai342f4682023-04-24 09:58:17 +010071formats.
Madhukar Pappireddy46adb1b2020-01-28 12:41:20 -060072
73.. code:: shell
74
Harrison Mutai342f4682023-04-24 09:58:17 +010075 poetry run make -C docs help
76
Elizabeth Hofadfa652023-08-09 16:03:21 +010077To build the documentation in PDF format, additionally ensure that the following
78packages are installed:
79
80- FreeSerif font
81- latexmk
82- librsvg2-bin
83- xelatex
84- xindy
85
86Below is an example set of instructions to install the required packages
87(tested on Ubuntu):
88
89.. code:: shell
90
91 sudo apt install fonts-freefont-otf latexmk librsvg2-bin texlive-xetex xindy
92
93Once all the dependencies are installed, run the command ``poetry run make -C
94docs latexpdf`` to build the documentation. Output from the build process
95(``trustedfirmware-a.pdf``) can be found in ``docs/build/latex``.
96
Harrison Mutai342f4682023-04-24 09:58:17 +010097Building rendered documentation from Poetry's virtual environment
98~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
99
100The command ``poetry run`` used in the steps above executes the input command
101from inside the project's virtual environment. The easiest way to activate this
102virtual environment is with the ``poetry shell`` command.
Harrison Mutaib378ad42023-02-16 10:20:48 +0000103
Harrison Mutai342f4682023-04-24 09:58:17 +0100104Running ``poetry shell`` from the directory containing this project, activates
105the same virtual environment. This creates a sub-shell through which you can
106build the documentation directly with ``make``.
Harrison Mutaib378ad42023-02-16 10:20:48 +0000107
Harrison Mutai342f4682023-04-24 09:58:17 +0100108.. code:: shell
109
110 poetry shell
111 make doc
112
113Type ``exit`` to deactivate the virtual environment and exit this new shell. For
114other use cases, please see the official `Poetry`_ documentation.
Paul Beesley5d3799b2019-10-07 10:04:48 +0000115
Leonardo Sandoval8f9f6882020-06-10 18:26:28 -0500116Building rendered documentation from a container
117------------------------------------------------
118
119There may be cases where you can not either install or upgrade required
120dependencies to generate the documents, so in this case, one way to
121create the documentation is through a docker container. The first step is
122to check if `docker`_ is installed in your host, otherwise check main docker
123page for installation instructions. Once installed, run the following script
124from project root directory
125
126.. code:: shell
127
Harrison Mutai342f4682023-04-24 09:58:17 +0100128 docker run --rm -v $PWD:/tf-a sphinxdoc/sphinx \
129 bash -c 'cd /tf-a &&
130 apt-get update && apt-get install -y curl plantuml &&
131 curl -sSL https://install.python-poetry.org | python3 - &&
132 ~/.local/bin/poetry install && ~/.local/bin/poetry run make doc'
Leonardo Sandoval8f9f6882020-06-10 18:26:28 -0500133
134The above command fetches the ``sphinxdoc/sphinx`` container from `docker
135hub`_, launches the container, installs documentation requirements and finally
136creates the documentation. Once done, exit the container and output from the
Harrison Mutai342f4682023-04-24 09:58:17 +0100137build process will be placed in: ``docs/build/html``.
Leonardo Sandoval8f9f6882020-06-10 18:26:28 -0500138
Paul Beesley5d3799b2019-10-07 10:04:48 +0000139--------------
140
Harrison Mutaib378ad42023-02-16 10:20:48 +0000141*Copyright (c) 2019-2023, Arm Limited. All rights reserved.*
Paul Beesley5d3799b2019-10-07 10:04:48 +0000142
143.. _Sphinx: http://www.sphinx-doc.org/en/master/
Harrison Mutai342f4682023-04-24 09:58:17 +0100144.. _Poetry: https://python-poetry.org/docs/
Paul Beesley5d3799b2019-10-07 10:04:48 +0000145.. _pip homepage: https://pip.pypa.io/en/stable/
Paul Beesleyd2fcc4e2019-05-29 13:59:40 +0100146.. _Dia: https://wiki.gnome.org/Apps/Dia
Leonardo Sandoval8f9f6882020-06-10 18:26:28 -0500147.. _docker: https://www.docker.com/
148.. _docker hub: https://hub.docker.com/repository/docker/sphinxdoc/sphinx