summaryrefslogtreecommitdiffstats
path: root/doc/rst_source/relay/build_this.rst
blob: c8b29bc8627b1652231cbef8ef773baf1733dfa5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
How to build this documentation from the source
==================================================

Pre-requisites:

  - Sphinx 1.0.4 or higher (See http://sphinx.pocoo.org) with “autodoc” extension installed.


How to build the Sphinx based documentation without references to API documentation
---------------------------------------------------------------------------------------

To generate documentation in the *html* format, from the *trunk/doc/rst_source*  run::

      sphinx-build .  output_dir

To produce manpages run::

      sphinx-build -b man  .  output_dir

.. note::   The manpages output is controled by *man_pages* tag in the Sphinx configuration file 
            *trunk/doc/rst_source/conf.py*.

How to deploy the Doxygen output in Sphinx project.
----------------------------------------------------

The text below is meant to give the instructions on how to incorporate MIT Kerberos API reference 
documentation into Sphinx document hierarchy.  
The Sphinx API documentation can be constructed without (:ref:`Part_A`) or with (:ref:`Part_B`) the bridge 
to the original Doxygen HTML output.

Pre-requisites:

   - python 2.5+ with *Cheetah, lxml* and  *xml* extension modules installed;
   - Doxygen documentation generator (http://www.doxygen.org) installed;
   - For "Part B" only:
       -    Sphinx “doxylink” extension;
       -    Doxygen HTML output

.. _Part_A:

Part A:    Transforming Doxygen XML output into reStructuredText (rst)  without the bridge to Doxygen HTML output.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


1.    Delete lines containing text "Doxygen reference" from the template files 
      *func_document.tmpl* and *type_document.tmpl* located in trunk/doc/rst_tools directory;

2.    In the Doxygen configuration file (trunk/src/Doxyfile) set *GENERATE_XML* flag  to YES. 
      Generate Doxygen XML output. 
      To do so from the command line from the source directory (trunk/src) run::

         doxygen

      The *XML_OUTPUT* tag specifies the location of the Doxygen XML output. 
      The default location for this setup is *trunk/out/xml*.

3.    Suppose the Doxygen XML output is located in *trunk/out/xml* directory and
      the desired name for the reStructuredText  output directory is *rst_dir*. 
      From *trunk/doc/rst_tools* run::

           python doxy.py –i  ../../out/xml –o rst_dir –t func

      This will result in the storing the API function documentation files in *rst* format in the *rst_dir*. 

      .. note:: The file names are constructed based on the function name. 
                For example, the file for krb5_build_principal() will be krb5_build_principal.rst

      Run::

           python doxy.py –i ../../out/xml –o rst_dir –t typedef

      It is similar to the API function conversion, but for data types. The result will be stored under *rst_dir/types* directory

      Alternatively, running::

         python doxy.py –i  ../../out/xml  –o rst_dir

         or
 
         python doxy.py –i  ../../out/xml  –o rst_dir -t all

      converts Doxygen XML output into reStructuredText format files both for API functions and data types;

4.    In *trunk/doc/krb_appldev/index.rst* add the following section to point to the API references::

         .. toctree::
             :maxdepth: 1

             refs/index.rst

5.    Copy the content of 

         - *rst_dir* into *krb_appldev/refs/api* directory, and 
        
         - *rst_dir/types* into *krb_appldev/refs/types* directory;

6.    Rebuild Sphinx source. From the *trunk/doc/rst_source*  run::

      sphinx-build .  output_dir


.. _Part_B:


Part B:    Bridge to Doxygen HTML output.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1. Transform Doxygen XML output into reStructuredText.
   In src/Doxygen configuration file request generation of the tag file and XML output::

       GENERATE_TAGFILE       = krb5doxy.tag
       GENERATE_XML           = YES

2. Modify Sphinx conf.py file to point to the “doxylink” extension and Doxygen tag file::

      extensions = ['sphinx.ext.autodoc', 'sphinxcontrib.doxylink']
      doxylink = { ' krb5doxy' : ('/tmp/krb5doxy.tag, ' doxy_html_dir ') }

   where *doxy_html_dir* is the location of the Doxygen HTML output

3.  Continue with steps 3 - 6 of Part A.