source: rtems-docs/README.txt @ 7193f09

5
Last change on this file since 7193f09 was 9330bfb, checked in by Chris Johns <chrisj@…>, on 11/09/16 at 06:08:05

waf: Users without the extra fonts need to use '--disable-extra-fonts' to build PDF.

  • Property mode set to 100644
File size: 11.7 KB
Line 
1RTEMS Project Documentation
2===========================
3
4The documents are written in ReST and built using Sphinx. The build system will
5check the version of Sphinx and ensure you have a suitable version
6available. If your host does not provide a packaged version use PIP to fetch a
7recent version. The Sphinx website provides details on doing this.
8
9ReST is the Re-Structed-Text format. It is a simple markup language that allows
10us to create quality documentaion. It is flexible and powerful however do not
11attempt to train it to create a specific format. You need to test any new way
12of presenting something on all output formats. What may look great in one
13format may not translate with the same clarity to another output format.
14
15The RTEMS Documentation output formats are:
16
17 HTML        - Multi-page HTML with files in a single directory per manual.
18 PDF         - Single PDF per manual.
19 SIngle HTML - Single HTML, one file per manual.
20
21The PDF format is created using Latex and that uses texlive packages. This
22exposes us to the complex world of Latex however the quality of the documents
23created is worth it.
24
25Production Quality Hosts
26------------------------
27
28We allow the building of PDF documentation on hosts that do not have a fully
29suitable texlive environment and this results in quality that is not at the
30production level.
31
32The hosts which produce production quality is:
33
34 FreeBSD
35 CentOS 6 and 7 (if using texlive, not RPMs of texlive)
36
37Host Setup
38----------
39
40HTML builds directly with Sphinx, PDF requires a full Latex (texlive) install,
41and building a Single HTML page requires the 'inliner' tool.
42
43Please add your host as you set it up.
44
45Sphinx Per User Install
46~~~~~~~~~~~~~~~~~~~~~~~
47
48You can use this method to install a personal version of Sphinx if your host
49does not provide a suitable package:
50
51 $ pip install -U sphinx
52
53On some hosts, this may complain that a newer version of pip is available.
54If so, then upgrade pip into your personal area.
55
56 $ pip install --upgrade --user pip
57
58The personal area for these tools is ${HOME}/.local/bin. It should
59be PREPENDED to your path. On a 32-bit install of CentOS 6, these
60were the PATH modifications to use the local install of Texlive
61and sphinx:
62
63  export PATH=/usr/local/texlive/2016/bin/i386-linux/:${PATH}
64  export PATH=${HOME}/.local/bin:${PATH}
65
66FreeBSD
67~~~~~~~
68
69PDF Quality: production
70
71Sphinx:
72
73  # pkg install py27-sphinx
74
75PDF:
76
77  # pkg install texlive-full
78
79Single HTML:
80
81  # pkg install npm
82  # npm install -g inliner
83
84CentOS 6 and 7
85~~~~~~~~~~~~~~
86
87PDF Quality: production
88
89Sphinx:
90
91  $ pip install -U sphinx
92
93PDF:
94
95  WARNING: Do NOT use the RPMs for texlive. They are incomplete and, in
96           the best case, result in ugly PDFs.
97
98  As root, install texlive per the instructions at
99  http://tug.org/texlive/acquire-netinstall.html
100
101  # wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
102  # tar xf install-tl-unx.tar.gz
103  # cd install-tl-20161106
104    NOTE: The date in the name of the directory will change.
105  # ./install-tl
106    - Use the command line system. Select "O" for options if you want to
107      change from A4 to US letter paper size by default.
108    - Select "I" to install
109    - The tools will be installed into a directory like the following:
110      /usr/local/texlive/2016/bin/i386-linux/
111
112     NOTE: The year (2016) and host OS (i386-linux) will change to
113           reflect 32 or 64 bit and OS name.
114
115Single HTML:
116
117  # yum install npm
118  # npm install -g inliner
119
120PATH:
121
122  Ensure the appropriate directories are PREPENDED to your PATH before
123  building the documentation. Examples are shown below:
124
125  export PATH=/usr/local/texlive/2016/bin/i386-linux/:${PATH}
126  export PATH=${HOME}/.local/bin:${PATH}
127
128
129Arch Linux
130~~~~~~~~~~
131
132Sphinx:
133
134  # pacman -S python-sphinx
135
136PDF:
137
138  # pacman -S texlive-bin texlive-core texlive-latexextra texlive-fontsextra \
139
140openSUSE
141~~~~~~~~
142
143Packages:
144
145  # zypper in python-pip 'texlive*'
146
147Sphinx:
148
149  # pip install -U Sphinx
150
151Using pip to install Sphinx destroys the python-Sphinx package if installed via
152RPM.
153
154Latex Setup
155~~~~~~~~~~~
156
157Latex is used to create the PDF document.  The setup of Latex varies from host
158to host operating system due to the way each host packages the texlive
159packages. There is no common naming and no real way to figure what texlive
160package is present in a host's packaging. It seems not all of texlive is
161available.
162
163The RTEMS Documentation waf configure phase check for each texlive package used
164in the generated output and the styles. If you complete configure with the
165--pdf option you should be able to build PDF documentation.
166
167The texlive package requirments come from the Latex styles we are using and
168Sphinx.
169
170An example of failures are:
171
172  Checking for Tex package 'Bjarne'        : ok
173  Checking for Tex package 'alltt'         : ok
174  Checking for Tex package 'amsmath'       : ok
175  Checking for Tex package 'amssymb'       : ok
176  Checking for Tex package 'amstext'       : ok
177  Checking for Tex package 'array'         : ok
178  Checking for Tex package 'atbegshi'      : ok
179  Checking for Tex package 'babel'         : ok
180  Checking for Tex package 'calc'          : ok
181  Checking for Tex package 'capt-of'       : not found (please install)
182  Checking for Tex package 'charter'       : ok
183  Checking for Tex package 'cmap'          : ok
184  Checking for Tex package 'color'         : ok
185  Checking for Tex package 'eqparbox'      : not found (please install)
186  Checking for Tex package 'etoolbox'      : ok
187  Checking for Tex package 'fancybox'      : ok
188  Checking for Tex package 'fancyhdr'      : ok
189  Checking for Tex package 'fancyvrb'      : ok
190  Checking for Tex package 'float'         : ok
191  Checking for Tex package 'fncychap'      : ok
192  Checking for Tex package 'fontenc'       : ok
193  Checking for Tex package 'footnote'      : ok
194  Checking for Tex package 'framed'        : ok
195  Checking for Tex package 'graphicx'      : ok
196  Checking for Tex package 'hypcap'        : ok
197  Checking for Tex package 'hyperref'      : ok
198  Checking for Tex package 'ifplatform'    : not found (please install)
199  Checking for Tex package 'ifthen'        : ok
200  Checking for Tex package 'inconsolata'   : not found (please install)
201  Checking for Tex package 'inputenc'      : ok
202  Checking for Tex package 'keyval'        : ok
203  Checking for Tex package 'kvoptions'     : ok
204  Checking for Tex package 'lato'          : not found (please install)
205  Checking for Tex package 'lineno'        : ok
206  Checking for Tex package 'longtable'     : ok
207  Checking for Tex package 'makeidx'       : ok
208  Checking for Tex package 'multirow'      : ok
209  Checking for Tex package 'parskip'       : ok
210  Checking for Tex package 'pdftexcmds'    : ok
211  Checking for Tex package 'textcomp'      : ok
212  Checking for Tex package 'threeparttable' : ok
213  Checking for Tex package 'times'          : ok
214  Checking for Tex package 'titlesec'       : ok
215  Checking for Tex package 'upquote'        : not found (please install)
216  Checking for Tex package 'utf8'           : ok
217  Checking for Tex package 'wrapfig'        : ok
218  Checking for Tex package 'xcolor'         : ok
219  Checking for Tex package 'xstring'        : ok
220  There are 6 Tex package failures. Please fix.
221
222If you find there is an issue please post the developers list.
223
224Building
225--------
226
227Note: waf-1.9.5 is a little noisy when running tex builds and tests. I hope
228      to have this resolved soon.
229
230To build enter in the top directory:
231
232  $ ./waf configure [--pdf] [--singlehtml] [--prefix] \
233                    [--sphinx-verbose] [--disable-extra-fonts]
234  $ ./waf
235
236The '--pdf' and '--singlehtml' options can be added to configure to build those
237output formats.
238
239The '--disable-extra-fonts' allows you to build PDF documents with out the
240fonts we use for a better quality document. Use this option to build without
241needing the extra fonts accepting you will get poor quality documents.
242
243To build and install to a specific location:
244
245  $ ./waf configure --prefix=/foo/my/location
246  $ ./waf build install
247
248If you need to debug what is happening use configure with a suitable Sphinx
249version level:
250
251  $ ./waf configure --sphinx-verbose=-v
252  $ ./waf clean build
253
254You can enter a manual's directory and run the same configure command and build
255just that manual.
256
257Documentation Standard
258----------------------
259
260This following details the documentation standard. If in doubt first search the
261existing documentation for an example and if unsure ask.
262
2631. All text is to be formatted to wrap at 80 columns. Do not manually line feed
264   before 80.
265
2662. Do not insert tab characters, use spaces, no trailing white space.
267
2683. Pasted text such as console output can exceed 80 columns however it is
269   preferred even this text is wrapped at 80 columns. Long lines in code block
270   text causes issues with the PDF output.
271
2724. The headings use the following:
273
274      Heading   Description
275      1  ###### Part
276      2  ****** Section
277      3  ====== Sub-ection
278      4  ------ Sub-sub-section
279      5  ^^^^^^ Sub-sub-sub-section
280      6  ~~~~~~ Sub-sub-sub-sub-section
281
2825. For literal output, such as shell commands and code use '::' at the trailing
283   edge of the previous paragraph. If the '.. code-block::' with
284   'c' for C code and 'shell' for shell code and terminal output. If you need
285   line number use:
286
287    .. code-block:: shell
288       :linenos:
289
2906. Use the directives for 'note', 'warning', and 'topic'. Do not add 'TIP',
291   'Important' or 'Warning' to the text. Let the mark-up language handle
292   this. The supported directives are:
293
294     .. warning::
295     .. note::
296     .. topic::
297
298   These directives reference specific CSS sytle support.
299
3007. Images are placed in the 'images' directory. Do not place images in the
301   source directories. Using a common 'images' tree of images promotes sharing
302   of images. To add an image use:
303
304    .. figure:: ../images/my-image.png
305       :wdith: 75%
306       :align: center
307       :alt: This is the alt text for some output types.
308
3098. Callouts can be implement manually using a liternal block which can using
310   '::' or a code block and topic block is used for the items. For
311   example:
312
313     .. code-block: c
314
315        #include <stdio.h>  <1>
316        int main(int argc, char** argv)  <2>
317        {
318           printf("Hello world\n");  <3>
319           return 0;   <4>
320        }
321
322     .. topic:: Items:
323
324       1. Include the standard input/output header file.
325
326       2. The program starts here.
327
328       3. Print something to the standard output device.
329
330       4. Exit with an exit code of 0. This is value can be checked by the
331          caller of this program.
332
333   Note, the topic items are manually number. This makes is easier to see which
334   item matches the text. Use <> for the number and align at a position that
335   works and makes the number as visible as possible. Use hanging indents if an
336   items extends over a single line.
337
3389. Use the RTEMS domain references for URLs and mailing lists. For example to
339   insert the RTEMS developers list use:
340
341     :r:list:`devel`
342     :r:url:`git`
343
344   The valid lists are:
345
346     announce     : Announce Mailing List
347     bugs         : Bugs Mailing List
348     devel        : Developers Mailing List
349     build        : Build Logs
350     users        : Users Mailing List
351     vc           : Version Control Mailing List
352
353  The valif URLs are:
354
355     trac         : https://devel.rtems.org/
356     devel        : https://devel.rtems.org/
357     www          : https://www.rtems.org/
358     buildbot     : https://buildbot.rtems.org/
359     builder      : https://builder.rtems.org/
360     docs         : https://docs.rtems.org/
361     lists        : https://lists.rtems.org/
362     git          : https://git.rtems.org/
363     ftp          : https://ftp.rtems.org/
364     review       : https://review.rtems.org/
365     bugs         : https://devel.rtems.org/wiki/Bugs/
366     gsoc         : https://devel.rtems.org/wiki/GSoC/
367     socis        : https://devel.rtems.org/wiki/SOCIS/
Note: See TracBrowser for help on using the repository browser.