blob: 54e29dd5fd9343573b5bd7f5df43f26714244933 [file] [log] [blame]
Paul Beesley862c7642019-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 Karatotev85264722022-10-27 13:55:12 +010020For building a local copy of the |TF-A| documentation you will need:
Paul Beesley862c7642019-10-07 10:04:48 +000021
Harrison Mutai793f72c2023-02-16 10:20:48 +000022- Python 3 (3.8 or later)
Paul Beesley862c7642019-10-07 10:04:48 +000023- PlantUML (1.2017.15 or later)
Harrison Mutai95f4abe2023-04-24 09:58:17 +010024- `Poetry`_ (Python dependency manager)
Boyan Karatotev85264722022-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 Beesley862c7642019-10-07 10:04:48 +000027
Harrison Mutai793f72c2023-02-16 10:20:48 +000028
Harrison Mutai95f4abe2023-04-24 09:58:17 +010029Below is an example set of instructions to get a working environment (tested on
30Ubuntu):
Paul Beesley862c7642019-10-07 10:04:48 +000031
32.. code:: shell
33
Paul Beesley43f35ef2019-05-29 13:59:40 +010034 sudo apt install python3 python3-pip plantuml [dia]
Harrison Mutai793f72c2023-02-16 10:20:48 +000035 curl -sSL https://install.python-poetry.org | python3 -
Paul Beesley862c7642019-10-07 10:04:48 +000036
Paul Beesley862c7642019-10-07 10:04:48 +000037Building rendered documentation
38-------------------------------
39
Tamas Ban9db2b052024-09-02 15:04:51 +020040The documentation can be compiled into HTML-formatted pages from the project
41root directory by running:
Paul Beesley862c7642019-10-07 10:04:48 +000042
43.. code:: shell
44
Harrison Mutai793f72c2023-02-16 10:20:48 +000045 poetry run make doc
Paul Beesley862c7642019-10-07 10:04:48 +000046
Harrison Mutai95f4abe2023-04-24 09:58:17 +010047Output from the build process will be placed in: ``docs/build/html``.
Paul Beesley862c7642019-10-07 10:04:48 +000048
Harrison Mutai95f4abe2023-04-24 09:58:17 +010049Other Output Formats
50~~~~~~~~~~~~~~~~~~~~
Madhukar Pappireddy6de32372020-01-28 12:41:20 -060051
52We also support building documentation in other formats. From the ``docs``
53directory of the project, run the following command to see the supported
Harrison Mutai95f4abe2023-04-24 09:58:17 +010054formats.
Madhukar Pappireddy6de32372020-01-28 12:41:20 -060055
56.. code:: shell
57
Harrison Mutai95f4abe2023-04-24 09:58:17 +010058 poetry run make -C docs help
Harrison Mutai793f72c2023-02-16 10:20:48 +000059
Elizabeth Ho5ac3fdc2023-08-09 16:03:21 +010060To build the documentation in PDF format, additionally ensure that the following
61packages are installed:
62
63- FreeSerif font
64- latexmk
65- librsvg2-bin
66- xelatex
67- xindy
68
69Below is an example set of instructions to install the required packages
70(tested on Ubuntu):
71
72.. code:: shell
73
74 sudo apt install fonts-freefont-otf latexmk librsvg2-bin texlive-xetex xindy
75
76Once all the dependencies are installed, run the command ``poetry run make -C
77docs latexpdf`` to build the documentation. Output from the build process
78(``trustedfirmware-a.pdf``) can be found in ``docs/build/latex``.
79
Harrison Mutai95f4abe2023-04-24 09:58:17 +010080Building rendered documentation from Poetry's virtual environment
81~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Harrison Mutai793f72c2023-02-16 10:20:48 +000082
Harrison Mutai95f4abe2023-04-24 09:58:17 +010083The command ``poetry run`` used in the steps above executes the input command
84from inside the project's virtual environment. The easiest way to activate this
85virtual environment is with the ``poetry shell`` command.
86
87Running ``poetry shell`` from the directory containing this project, activates
88the same virtual environment. This creates a sub-shell through which you can
89build the documentation directly with ``make``.
90
91.. code:: shell
92
93 poetry shell
94 make doc
95
96Type ``exit`` to deactivate the virtual environment and exit this new shell. For
97other use cases, please see the official `Poetry`_ documentation.
Paul Beesley862c7642019-10-07 10:04:48 +000098
Leonardo Sandoval7be2b982020-06-10 18:26:28 -050099Building rendered documentation from a container
100------------------------------------------------
101
102There may be cases where you can not either install or upgrade required
103dependencies to generate the documents, so in this case, one way to
104create the documentation is through a docker container. The first step is
105to check if `docker`_ is installed in your host, otherwise check main docker
106page for installation instructions. Once installed, run the following script
107from project root directory
108
109.. code:: shell
110
Harrison Mutai95f4abe2023-04-24 09:58:17 +0100111 docker run --rm -v $PWD:/tf-a sphinxdoc/sphinx \
112 bash -c 'cd /tf-a &&
113 apt-get update && apt-get install -y curl plantuml &&
114 curl -sSL https://install.python-poetry.org | python3 - &&
Tamas Ban9db2b052024-09-02 15:04:51 +0200115 ~/.local/bin/poetry run make doc'
Leonardo Sandoval7be2b982020-06-10 18:26:28 -0500116
117The above command fetches the ``sphinxdoc/sphinx`` container from `docker
118hub`_, launches the container, installs documentation requirements and finally
119creates the documentation. Once done, exit the container and output from the
Harrison Mutai95f4abe2023-04-24 09:58:17 +0100120build process will be placed in: ``docs/build/html``.
Leonardo Sandoval7be2b982020-06-10 18:26:28 -0500121
Paul Beesley862c7642019-10-07 10:04:48 +0000122--------------
123
Tamas Ban9db2b052024-09-02 15:04:51 +0200124*Copyright (c) 2019-2024, Arm Limited. All rights reserved.*
Paul Beesley862c7642019-10-07 10:04:48 +0000125
126.. _Sphinx: http://www.sphinx-doc.org/en/master/
Harrison Mutai95f4abe2023-04-24 09:58:17 +0100127.. _Poetry: https://python-poetry.org/docs/
Paul Beesley862c7642019-10-07 10:04:48 +0000128.. _pip homepage: https://pip.pypa.io/en/stable/
Paul Beesley43f35ef2019-05-29 13:59:40 +0100129.. _Dia: https://wiki.gnome.org/Apps/Dia
Leonardo Sandoval7be2b982020-06-10 18:26:28 -0500130.. _docker: https://www.docker.com/
131.. _docker hub: https://hub.docker.com/repository/docker/sphinxdoc/sphinx