DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH RFC 0/1] Add 'make pdf' target to convert guide docs to pdf.
@ 2015-01-14 17:14 John McNamara
  2015-01-14 17:14 ` [dpdk-dev] [PATCH 1/2] doc: " John McNamara
                   ` (3 more replies)
  0 siblings, 4 replies; 41+ messages in thread
From: John McNamara @ 2015-01-14 17:14 UTC (permalink / raw)
  To: dev

This patch adds support for creating PDF versions of the the user guides.
Specifically:

    * The Programmer's Guide
    * The Linux Getting Started Guide
    * The FreeBSD Getting Started Guide
    * The Sample Applications User Guide
    * The TestPMD User Guide
    * The Release Notes

The local and online Html documentation is very useful but we have had
internal and external requests from people who also liked the PDF
documentation in older releases.

The PDF generation is fully automated and uses the same Sphinx build system
and RST files used for the Html docs but uses the 'latexpdf' target. In
addition to the standard Sphinx Python modules it requires the Tex/LaTeX
toolchain. For best results it requires a Tex Live 'Full' installation.

The PDF documents are generated as follows:

    make pdf
    # or
    make doc-pdf

The PDFs aren't generated as part of the 'make doc' rule since they can take
some 1-3 minutes to build and since they have a large toolchain dependency.

This patch doesn't include PDF generation of the DPDK API document. That will
be submitted later in a separate patch.

I have omitted the 2/2 part of the patch with the PNG files from the RFC.


John McNamara (2):
  doc: Add 'make pdf' target to convert guide docs to pdf.
  doc: Add PNG files for 'make pdf' target.

 doc/api/sphinx-latex-update.pl                     |   71 ++++++++++++++++
 doc/guides/freebsd_gsg/conf.py                     |   86 ++++++++++++++++++++
 doc/guides/freebsd_gsg/img/Intel-logo.png          |  Bin 0 -> 7560 bytes
 doc/guides/linux_gsg/conf.py                       |   86 ++++++++++++++++++++
 doc/guides/linux_gsg/img/Intel-logo.png            |  Bin 0 -> 7560 bytes
 doc/guides/prog_guide/conf.py                      |   86 ++++++++++++++++++++
 doc/guides/prog_guide/img/Intel-logo.png           |  Bin 0 -> 7560 bytes
 .../prog_guide/img/architecture-overview.png       |  Bin 0 -> 69418 bytes
 doc/guides/prog_guide/img/bond-mode-0.png          |  Bin 0 -> 31581 bytes
 doc/guides/prog_guide/img/bond-mode-1.png          |  Bin 0 -> 25550 bytes
 doc/guides/prog_guide/img/bond-mode-2.png          |  Bin 0 -> 33645 bytes
 doc/guides/prog_guide/img/bond-mode-3.png          |  Bin 0 -> 33548 bytes
 doc/guides/prog_guide/img/bond-mode-4.png          |  Bin 0 -> 36763 bytes
 doc/guides/prog_guide/img/bond-mode-5.png          |  Bin 0 -> 40778 bytes
 doc/guides/prog_guide/img/bond-overview.png        |  Bin 0 -> 25065 bytes
 doc/guides/prog_guide/img/linuxapp_launch.png      |  Bin 0 -> 125118 bytes
 doc/guides/prog_guide/img/mbuf1.png                |  Bin 0 -> 37843 bytes
 doc/guides/prog_guide/img/mbuf2.png                |  Bin 0 -> 58682 bytes
 doc/guides/prog_guide/img/memory-management.png    |  Bin 0 -> 22904 bytes
 doc/guides/prog_guide/img/memory-management2.png   |  Bin 0 -> 25411 bytes
 doc/guides/prog_guide/img/mempool.png              |  Bin 0 -> 50966 bytes
 doc/guides/prog_guide/img/multi_process_memory.png |  Bin 0 -> 52930 bytes
 doc/guides/prog_guide/img/ring-dequeue1.png        |  Bin 0 -> 29169 bytes
 doc/guides/prog_guide/img/ring-dequeue2.png        |  Bin 0 -> 30334 bytes
 doc/guides/prog_guide/img/ring-dequeue3.png        |  Bin 0 -> 27677 bytes
 doc/guides/prog_guide/img/ring-enqueue1.png        |  Bin 0 -> 28386 bytes
 doc/guides/prog_guide/img/ring-enqueue2.png        |  Bin 0 -> 29329 bytes
 doc/guides/prog_guide/img/ring-enqueue3.png        |  Bin 0 -> 28907 bytes
 doc/guides/prog_guide/img/ring-modulo1.png         |  Bin 0 -> 21666 bytes
 doc/guides/prog_guide/img/ring-modulo2.png         |  Bin 0 -> 21814 bytes
 doc/guides/prog_guide/img/ring-mp-enqueue1.png     |  Bin 0 -> 35928 bytes
 doc/guides/prog_guide/img/ring-mp-enqueue2.png     |  Bin 0 -> 43924 bytes
 doc/guides/prog_guide/img/ring-mp-enqueue3.png     |  Bin 0 -> 43581 bytes
 doc/guides/prog_guide/img/ring-mp-enqueue4.png     |  Bin 0 -> 43648 bytes
 doc/guides/prog_guide/img/ring-mp-enqueue5.png     |  Bin 0 -> 29787 bytes
 doc/guides/prog_guide/img/ring1.png                |  Bin 0 -> 21466 bytes
 doc/guides/rel_notes/conf.py                       |   85 +++++++++++++++++++
 doc/guides/rel_notes/img/Intel-logo.png            |  Bin 0 -> 7560 bytes
 doc/guides/rel_notes/supported_features.rst        |    2 +-
 doc/guides/sample_app_ug/conf.py                   |   86 ++++++++++++++++++++
 doc/guides/sample_app_ug/img/Intel-logo.png        |  Bin 0 -> 7560 bytes
 doc/guides/sample_app_ug/img/dist_app.png          |  Bin 0 -> 14191 bytes
 doc/guides/sample_app_ug/img/dist_perf.png         |  Bin 0 -> 12355 bytes
 .../sample_app_ug/img/exception_path_example.png   |  Bin 0 -> 57544 bytes
 .../sample_app_ug/img/l2_fwd_benchmark_setup.png   |  Bin 0 -> 21985 bytes
 .../sample_app_ug/img/vm_power_mgr_highlevel.png   |  Bin 0 -> 192526 bytes
 .../img/vm_power_mgr_vm_request_seq.png            |  Bin 0 -> 59573 bytes
 doc/guides/sample_app_ug/img/vmdq_dcb_example.png  |  Bin 0 -> 36777 bytes
 doc/guides/sample_app_ug/test_pipeline.rst         |    6 +-
 doc/guides/testpmd_app_ug/conf.py                  |   85 +++++++++++++++++++
 doc/guides/testpmd_app_ug/img/Intel-logo.png       |  Bin 0 -> 7560 bytes
 mk/rte.sdkdoc.mk                                   |   28 +++++-
 mk/rte.sdkroot.mk                                  |    3 +-
 53 files changed, 614 insertions(+), 10 deletions(-)
 create mode 100644 doc/api/sphinx-latex-update.pl
 create mode 100644 doc/guides/freebsd_gsg/conf.py
 create mode 100644 doc/guides/freebsd_gsg/img/Intel-logo.png
 create mode 100644 doc/guides/linux_gsg/conf.py
 create mode 100644 doc/guides/linux_gsg/img/Intel-logo.png
 create mode 100644 doc/guides/prog_guide/conf.py
 create mode 100644 doc/guides/prog_guide/img/Intel-logo.png
 create mode 100644 doc/guides/prog_guide/img/architecture-overview.png
 create mode 100644 doc/guides/prog_guide/img/bond-mode-0.png
 create mode 100644 doc/guides/prog_guide/img/bond-mode-1.png
 create mode 100644 doc/guides/prog_guide/img/bond-mode-2.png
 create mode 100644 doc/guides/prog_guide/img/bond-mode-3.png
 create mode 100644 doc/guides/prog_guide/img/bond-mode-4.png
 create mode 100644 doc/guides/prog_guide/img/bond-mode-5.png
 create mode 100644 doc/guides/prog_guide/img/bond-overview.png
 create mode 100644 doc/guides/prog_guide/img/linuxapp_launch.png
 create mode 100644 doc/guides/prog_guide/img/mbuf1.png
 create mode 100644 doc/guides/prog_guide/img/mbuf2.png
 create mode 100644 doc/guides/prog_guide/img/memory-management.png
 create mode 100644 doc/guides/prog_guide/img/memory-management2.png
 create mode 100644 doc/guides/prog_guide/img/mempool.png
 create mode 100644 doc/guides/prog_guide/img/multi_process_memory.png
 create mode 100644 doc/guides/prog_guide/img/ring-dequeue1.png
 create mode 100644 doc/guides/prog_guide/img/ring-dequeue2.png
 create mode 100644 doc/guides/prog_guide/img/ring-dequeue3.png
 create mode 100644 doc/guides/prog_guide/img/ring-enqueue1.png
 create mode 100644 doc/guides/prog_guide/img/ring-enqueue2.png
 create mode 100644 doc/guides/prog_guide/img/ring-enqueue3.png
 create mode 100644 doc/guides/prog_guide/img/ring-modulo1.png
 create mode 100644 doc/guides/prog_guide/img/ring-modulo2.png
 create mode 100644 doc/guides/prog_guide/img/ring-mp-enqueue1.png
 create mode 100644 doc/guides/prog_guide/img/ring-mp-enqueue2.png
 create mode 100644 doc/guides/prog_guide/img/ring-mp-enqueue3.png
 create mode 100644 doc/guides/prog_guide/img/ring-mp-enqueue4.png
 create mode 100644 doc/guides/prog_guide/img/ring-mp-enqueue5.png
 create mode 100644 doc/guides/prog_guide/img/ring1.png
 create mode 100644 doc/guides/rel_notes/conf.py
 create mode 100644 doc/guides/rel_notes/img/Intel-logo.png
 create mode 100644 doc/guides/sample_app_ug/conf.py
 create mode 100644 doc/guides/sample_app_ug/img/Intel-logo.png
 create mode 100644 doc/guides/sample_app_ug/img/dist_app.png
 create mode 100644 doc/guides/sample_app_ug/img/dist_perf.png
 create mode 100644 doc/guides/sample_app_ug/img/exception_path_example.png
 create mode 100644 doc/guides/sample_app_ug/img/l2_fwd_benchmark_setup.png
 create mode 100644 doc/guides/sample_app_ug/img/vm_power_mgr_highlevel.png
 create mode 100644 doc/guides/sample_app_ug/img/vm_power_mgr_vm_request_seq.png
 create mode 100644 doc/guides/sample_app_ug/img/vmdq_dcb_example.png
 create mode 100644 doc/guides/testpmd_app_ug/conf.py
 create mode 100644 doc/guides/testpmd_app_ug/img/Intel-logo.png

-- 
1.7.4.1

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [dpdk-dev] [PATCH 1/2] doc: Add 'make pdf' target to convert guide docs to pdf.
  2015-01-14 17:14 [dpdk-dev] [PATCH RFC 0/1] Add 'make pdf' target to convert guide docs to pdf John McNamara
@ 2015-01-14 17:14 ` John McNamara
  2015-01-30 18:13 ` [dpdk-dev] [PATCH v2 0/4] " John McNamara
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 41+ messages in thread
From: John McNamara @ 2015-01-14 17:14 UTC (permalink / raw)
  To: dev

This patch adds a high level 'make pdf' target to generate
pdf documents from the sphinx/rst user guides.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
---
 doc/api/sphinx-latex-update.pl              |   71 ++++++++++++++++++++++
 doc/guides/freebsd_gsg/conf.py              |   86 +++++++++++++++++++++++++++
 doc/guides/linux_gsg/conf.py                |   86 +++++++++++++++++++++++++++
 doc/guides/prog_guide/conf.py               |   86 +++++++++++++++++++++++++++
 doc/guides/rel_notes/conf.py                |   85 ++++++++++++++++++++++++++
 doc/guides/rel_notes/supported_features.rst |    2 +-
 doc/guides/sample_app_ug/conf.py            |   86 +++++++++++++++++++++++++++
 doc/guides/sample_app_ug/test_pipeline.rst  |    6 +-
 doc/guides/testpmd_app_ug/conf.py           |   85 ++++++++++++++++++++++++++
 mk/rte.sdkdoc.mk                            |   28 +++++++--
 mk/rte.sdkroot.mk                           |    3 +-
 11 files changed, 614 insertions(+), 10 deletions(-)
 create mode 100644 doc/api/sphinx-latex-update.pl
 create mode 100644 doc/guides/freebsd_gsg/conf.py
 create mode 100644 doc/guides/linux_gsg/conf.py
 create mode 100644 doc/guides/prog_guide/conf.py
 create mode 100644 doc/guides/rel_notes/conf.py
 create mode 100644 doc/guides/sample_app_ug/conf.py
 create mode 100644 doc/guides/testpmd_app_ug/conf.py

diff --git a/doc/api/sphinx-latex-update.pl b/doc/api/sphinx-latex-update.pl
new file mode 100644
index 0000000..d41c695
--- /dev/null
+++ b/doc/api/sphinx-latex-update.pl
@@ -0,0 +1,71 @@
+#!/usr/bin/perl -i
+
+#   BSD LICENSE
+#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+#   All rights reserved.
+#
+#   Redistribution and use in source and binary forms, with or without
+#   modification, are permitted provided that the following conditions
+#   are met:
+#
+#   * Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in
+#   the documentation and/or other materials provided with the
+#   distribution.
+#   * Neither the name of Intel Corporation nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+# Utility program to post-process the Sphinx LaTex docs prior to
+# generating the latexpdf output.
+
+use strict;
+use warnings;
+
+
+while (<>) {
+
+    # Convert escaped single quotes back to real single quote so that
+    # the Latex upquote package has an effect.
+    s/\\PYGZsq{}/'/g;
+
+    # Remove italic form the Pygments formatting.
+    s/\\let\\PYG\@it=\\textit//g;
+
+    # Change the comments color in the Pygments formatting.
+    s/0\.25,0\.50,0\.56/0.40,0.69,0.33/;
+
+    # Use PNG instead of SVG (which isn't well supported by LaTeX).
+    if ( /\\includegraphics/ ) {
+        s/\.svg/.png/;
+    }
+
+    # Center the images.
+    if ( /^\\includegraphics/ ) {
+        print "\\begin{center}\n";
+        print;
+        print "\\end{center}\n";
+
+        next;
+    }
+
+    print;
+}
+
+
+__END__
diff --git a/doc/guides/freebsd_gsg/conf.py b/doc/guides/freebsd_gsg/conf.py
new file mode 100644
index 0000000..65a7ede
--- /dev/null
+++ b/doc/guides/freebsd_gsg/conf.py
@@ -0,0 +1,86 @@
+#   BSD LICENSE
+#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+#   All rights reserved.
+#
+#   Redistribution and use in source and binary forms, with or without
+#   modification, are permitted provided that the following conditions
+#   are met:
+#
+#   * Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in
+#   the documentation and/or other materials provided with the
+#   distribution.
+#   * Neither the name of Intel Corporation nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import sys
+import os
+
+source_suffix = '.rst'
+master_doc = 'index'
+
+project = 'DPDK FreeBSD Getting Started Guide'
+copyright = '2014, Intel'
+
+version = '2.0.0'
+release = version
+pygments_style = 'sphinx'
+
+html_theme = 'default'
+html_title = 'DPDK FreeBSD Getting Started Guide Documentation'
+html_show_sphinx = True
+html_show_copyright = True
+htmlhelp_basename = 'DPDKFreeBSDGettingStartedGuide'
+html_add_permalinks = ''
+
+latex_preamble = """
+\\usepackage{upquote}
+\usepackage[utf8]{inputenc}
+\\usepackage{DejaVuSansMono}
+\\usepackage[T1]{fontenc}
+\\usepackage{helvet}
+\\renewcommand{\\familydefault}{\\sfdefault}
+
+\\RecustomVerbatimEnvironment{Verbatim}{Verbatim}{xleftmargin=5mm}
+"""
+
+latex_elements = {
+    'papersize': 'a4paper',
+    'pointsize': '11pt',
+    'preamble': latex_preamble,
+}
+
+latex_documents = [
+  ('index',
+   'dpdk_freebsd_getting_started_guide.tex',
+   'The DPDK FreeBSD Getting Started Guide',
+   'Intel',
+   'manual')
+]
+
+latex_logo = 'img/Intel-logo.png'
+
+texinfo_documents = [
+  ('index',
+   'DPDK FreeBSD Getting Started Guide',
+   'DPDK FreeBSD Getting Started Guide Documentation',
+   'Intel',
+   'DPDK FreeBSD Getting Started Guide',
+   'One line description of project.',
+   'Miscellaneous'),
+]
diff --git a/doc/guides/linux_gsg/conf.py b/doc/guides/linux_gsg/conf.py
new file mode 100644
index 0000000..355b8bb
--- /dev/null
+++ b/doc/guides/linux_gsg/conf.py
@@ -0,0 +1,86 @@
+#   BSD LICENSE
+#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+#   All rights reserved.
+#
+#   Redistribution and use in source and binary forms, with or without
+#   modification, are permitted provided that the following conditions
+#   are met:
+#
+#   * Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in
+#   the documentation and/or other materials provided with the
+#   distribution.
+#   * Neither the name of Intel Corporation nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import sys
+import os
+
+source_suffix = '.rst'
+master_doc = 'index'
+
+project = 'DPDK Linux Getting Started Guide'
+copyright = '2014, Intel'
+
+version = '2.0.0'
+release = version
+pygments_style = 'sphinx'
+
+html_theme = 'default'
+html_title = 'DPDK Linux Getting Started Guide Documentation'
+html_show_sphinx = True
+html_show_copyright = True
+htmlhelp_basename = 'DPDKLinuxGettingStartedGuide'
+html_add_permalinks = ''
+
+latex_preamble = """
+\\usepackage{upquote}
+\usepackage[utf8]{inputenc}
+\\usepackage{DejaVuSansMono}
+\\usepackage[T1]{fontenc}
+\\usepackage{helvet}
+\\renewcommand{\\familydefault}{\\sfdefault}
+
+\\RecustomVerbatimEnvironment{Verbatim}{Verbatim}{xleftmargin=5mm}
+"""
+
+latex_elements = {
+    'papersize': 'a4paper',
+    'pointsize': '11pt',
+    'preamble': latex_preamble,
+}
+
+latex_documents = [
+  ('index',
+   'dpdk_linux_getting_started_guide.tex',
+   'The DPDK Linux Getting Started Guide',
+   'Intel',
+   'manual')
+]
+
+latex_logo = 'img/Intel-logo.png'
+
+texinfo_documents = [
+  ('index',
+   'DPDK Linux Getting Started Guide',
+   'DPDK Linux Getting Started Guide Documentation',
+   'Intel',
+   'DPDK Linux Getting Started Guide',
+   'One line description of project.',
+   'Miscellaneous'),
+]
diff --git a/doc/guides/prog_guide/conf.py b/doc/guides/prog_guide/conf.py
new file mode 100644
index 0000000..d884dac
--- /dev/null
+++ b/doc/guides/prog_guide/conf.py
@@ -0,0 +1,86 @@
+#   BSD LICENSE
+#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+#   All rights reserved.
+#
+#   Redistribution and use in source and binary forms, with or without
+#   modification, are permitted provided that the following conditions
+#   are met:
+#
+#   * Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in
+#   the documentation and/or other materials provided with the
+#   distribution.
+#   * Neither the name of Intel Corporation nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import sys
+import os
+
+source_suffix = '.rst'
+master_doc = 'index'
+
+project = 'DPDK Programmers Guide'
+copyright = '2014, Intel'
+
+version = '2.0.0'
+release = version
+pygments_style = 'sphinx'
+
+html_theme = 'default'
+html_title = 'DPDK Programmers Guide Documentation'
+html_show_sphinx = True
+html_show_copyright = True
+htmlhelp_basename = 'DPDKProgrammersGuide'
+html_add_permalinks = ''
+
+latex_preamble = """
+\\usepackage{upquote}
+\usepackage[utf8]{inputenc}
+\\usepackage{DejaVuSansMono}
+\\usepackage[T1]{fontenc}
+\\usepackage{helvet}
+\\renewcommand{\\familydefault}{\\sfdefault}
+
+\\RecustomVerbatimEnvironment{Verbatim}{Verbatim}{xleftmargin=5mm}
+"""
+
+latex_elements = {
+    'papersize': 'a4paper',
+    'pointsize': '11pt',
+    'preamble': latex_preamble,
+}
+
+latex_documents = [
+  ('index',
+   'dpdk_programmers_guide.tex',
+   "The DPDK Programmer's Guide",
+   'Intel',
+   'manual')
+]
+
+latex_logo = 'img/Intel-logo.png'
+
+texinfo_documents = [
+  ('index',
+   'DPDK Programmers Guide',
+   'DPDK Programmers Guide Documentation',
+   'Intel',
+   'DPDK Programmers Guide',
+   'One line description of project.',
+   'Miscellaneous'),
+]
diff --git a/doc/guides/rel_notes/conf.py b/doc/guides/rel_notes/conf.py
new file mode 100644
index 0000000..6f4cc70
--- /dev/null
+++ b/doc/guides/rel_notes/conf.py
@@ -0,0 +1,85 @@
+#   BSD LICENSE
+#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+#   All rights reserved.
+#
+#   Redistribution and use in source and binary forms, with or without
+#   modification, are permitted provided that the following conditions
+#   are met:
+#
+#   * Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in
+#   the documentation and/or other materials provided with the
+#   distribution.
+#   * Neither the name of Intel Corporation nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import sys
+import os
+
+source_suffix = '.rst'
+master_doc = 'index'
+
+project = 'DPDK Release Notes'
+copyright = '2014, Intel'
+
+version = '2.0.0'
+release = version
+pygments_style = 'sphinx'
+
+html_theme = 'default'
+html_title = 'DPDK Release Notes'
+html_show_sphinx = True
+html_show_copyright = True
+htmlhelp_basename = 'DPDKReleaseNotes'
+html_add_permalinks = ''
+
+latex_preamble = """
+\\usepackage{upquote}
+\\usepackage{DejaVuSansMono}
+\\usepackage[T1]{fontenc}
+\\usepackage{helvet}
+\\renewcommand{\\familydefault}{\\sfdefault}
+
+\\RecustomVerbatimEnvironment{Verbatim}{Verbatim}{xleftmargin=5mm}
+"""
+
+latex_elements = {
+    'papersize': 'a4paper',
+    'pointsize': '11pt',
+    'preamble': latex_preamble,
+}
+
+latex_documents = [
+  ('index',
+   'dpdk_release_notes.tex',
+   'The DPDK Rlease Notes',
+   'Intel',
+   'manual')
+]
+
+latex_logo = 'img/Intel-logo.png'
+
+texinfo_documents = [
+  ('index',
+   'DPDK Release Notes',
+   'DPDK Release Notes',
+   'Intel',
+   'DPDK Release Notes',
+   'One line description of project.',
+   'Miscellaneous'),
+]
diff --git a/doc/guides/rel_notes/supported_features.rst b/doc/guides/rel_notes/supported_features.rst
index 7936e93..d87fcaa 100644
--- a/doc/guides/rel_notes/supported_features.rst
+++ b/doc/guides/rel_notes/supported_features.rst
@@ -51,7 +51,7 @@ Supported Features
 
     *   Intel® X710 40 Gigabit Ethernet Controller
 
-*   Support NIC filters in addition to flow director for Intel� 1GbE and 10GbE Controllers
+*   Support NIC filters in addition to flow director for Intel® 1GbE and 10GbE Controllers
 
 *   Virtualization (KVM)
 
diff --git a/doc/guides/sample_app_ug/conf.py b/doc/guides/sample_app_ug/conf.py
new file mode 100644
index 0000000..e7d7d13
--- /dev/null
+++ b/doc/guides/sample_app_ug/conf.py
@@ -0,0 +1,86 @@
+#   BSD LICENSE
+#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+#   All rights reserved.
+#
+#   Redistribution and use in source and binary forms, with or without
+#   modification, are permitted provided that the following conditions
+#   are met:
+#
+#   * Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in
+#   the documentation and/or other materials provided with the
+#   distribution.
+#   * Neither the name of Intel Corporation nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import sys
+import os
+
+source_suffix = '.rst'
+master_doc = 'index'
+
+project = 'DPDK Sample Applications Guide'
+copyright = '2014, Intel'
+
+version = '2.0.0'
+release = version
+pygments_style = 'sphinx'
+
+html_theme = 'default'
+html_title = 'DPDK Sample Applications Guide Documentation'
+html_show_sphinx = True
+html_show_copyright = True
+htmlhelp_basename = 'DPDKSample ApplicationsGuide'
+html_add_permalinks = ''
+
+latex_preamble = """
+\\usepackage{upquote}
+\usepackage[utf8]{inputenc}
+\\usepackage{DejaVuSansMono}
+\\usepackage[T1]{fontenc}
+\\usepackage{helvet}
+\\renewcommand{\\familydefault}{\\sfdefault}
+
+\\RecustomVerbatimEnvironment{Verbatim}{Verbatim}{xleftmargin=5mm}
+"""
+
+latex_elements = {
+    'papersize': 'a4paper',
+    'pointsize': '11pt',
+    'preamble': latex_preamble,
+}
+
+latex_documents = [
+  ('index',
+   'dpdk_sample_applications_guide.tex',
+   'The DPDK Sample Applications Guide',
+   'Intel',
+   'manual')
+]
+
+latex_logo = 'img/Intel-logo.png'
+
+texinfo_documents = [
+  ('index',
+   'DPDK Sample Applications Guide',
+   'DPDK Sample Applications Guide Documentation',
+   'Intel',
+   'DPDK Sample Applications Guide',
+   'One line description of project.',
+   'Miscellaneous'),
+]
diff --git a/doc/guides/sample_app_ug/test_pipeline.rst b/doc/guides/sample_app_ug/test_pipeline.rst
index 867a7a7..07eb3bf 100644
--- a/doc/guides/sample_app_ug/test_pipeline.rst
+++ b/doc/guides/sample_app_ug/test_pipeline.rst
@@ -137,7 +137,7 @@ For hash tables, the following parameters can be selected:
 |       |                        | entries.                                                 | hash table with the following key format:             |
 |       |                        |                                                          |                                                       |
 |       |                        |                                                          | [4-byte index, 4 bytes of 0]                          |
-+-------+------------------------+----------------------------------------------------------+                                                       |
++-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
 | 4     | hash-[spec]-8-ext      |  Extendible bucket hash table with 8-byte key size       | The action configured for all table entries is        |
 |       |                        |  and 16 million entries.                                 | "Sendto output port", with the output port index      |
 |       |                        |                                                          | uniformly distributed for the range of output ports.  |
@@ -156,7 +156,7 @@ For hash tables, the following parameters can be selected:
 |       |                        | entries.                                                 | table with the following key format:                  |
 |       |                        |                                                          |                                                       |
 |       |                        |                                                          | [4-byte index, 12 bytes of 0]                         |
-+-------+------------------------+----------------------------------------------------------+                                                       |
++-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
 | 6     | hash-[spec]-ash-16-ext | Extendible bucket hash table with 16-byte key size       | The action configured for all table entries is        |
 |       |                        | and 16 million entries.                                  | "Send to output port", with the output port index     |
 |       |                        |                                                          | uniformly distributed for the range of output ports.  |
@@ -175,7 +175,7 @@ For hash tables, the following parameters can be selected:
 |       |                        | entries.                                                 |  table with the following key format:                 |
 |       |                        |                                                          |                                                       |
 |       |                        |                                                          | [4-byte index, 28 bytes of 0].                        |
-+-------+------------------------+----------------------------------------------------------+                                                       |
++-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
 | 8     | hash-[spec]-32-ext     | Extendible bucket hash table with 32-byte key size       | The action configured for all table entries is        |
 |       |                        | and 16 million entries.                                  | "Send to output port", with the output port index     |
 |       |                        |                                                          | uniformly distributed for the range of output ports.  |
diff --git a/doc/guides/testpmd_app_ug/conf.py b/doc/guides/testpmd_app_ug/conf.py
new file mode 100644
index 0000000..194571c
--- /dev/null
+++ b/doc/guides/testpmd_app_ug/conf.py
@@ -0,0 +1,85 @@
+#   BSD LICENSE
+#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+#   All rights reserved.
+#
+#   Redistribution and use in source and binary forms, with or without
+#   modification, are permitted provided that the following conditions
+#   are met:
+#
+#   * Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in
+#   the documentation and/or other materials provided with the
+#   distribution.
+#   * Neither the name of Intel Corporation nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import sys
+import os
+
+source_suffix = '.rst'
+master_doc = 'index'
+
+project = 'DPDK Testpmd Application'
+copyright = '2014, Intel'
+
+version = '2.0.0'
+release = version
+pygments_style = 'sphinx'
+
+html_theme = 'default'
+html_title = 'DPDK Testpmd Application Documentation'
+html_show_sphinx = True
+html_show_copyright = True
+htmlhelp_basename = 'DPDKTestpmdApplication'
+html_add_permalinks = ''
+
+latex_preamble = """
+\\usepackage{upquote}
+\\usepackage{DejaVuSansMono}
+\\usepackage[T1]{fontenc}
+\\usepackage{helvet}
+\\renewcommand{\\familydefault}{\\sfdefault}
+
+\\RecustomVerbatimEnvironment{Verbatim}{Verbatim}{xleftmargin=5mm}
+"""
+
+latex_elements = {
+    'papersize': 'a4paper',
+    'pointsize': '11pt',
+    'preamble': latex_preamble,
+}
+
+latex_documents = [
+  ('index',
+   'dpdk_testpmd_guide.tex',
+   'The DPDK Testpmd Application Guide',
+   'Intel',
+   'manual'),
+]
+
+latex_logo = 'img/Intel-logo.png'
+
+texinfo_documents = [
+  ('index',
+   'DPDK Testpmd Application',
+   'DPDK Testpmd Application Documentation',
+   'Intel',
+   'DPDK Testpmd Application',
+   'One line description of project.',
+   'Miscellaneous'),
+]
diff --git a/mk/rte.sdkdoc.mk b/mk/rte.sdkdoc.mk
index dabc0d6..1c4dc67 100644
--- a/mk/rte.sdkdoc.mk
+++ b/mk/rte.sdkdoc.mk
@@ -38,10 +38,12 @@ endif
 
 RTE_SPHINX_BUILD = sphinx-build
 ifndef V
-RTE_SPHINX_VERBOSE := -q
+RTE_SPHINX_VERBOSE   := -q
+RTE_PDFLATEX_VERBOSE := > /dev/null 2>&1
 endif
 ifeq '$V' '0'
-RTE_SPHINX_VERBOSE := -q
+RTE_SPHINX_VERBOSE   := -q
+RTE_PDFLATEX_VERBOSE := > /dev/null 2>&1
 endif
 
 .PHONY: help
@@ -49,11 +51,11 @@ help:
 	@cat $(RTE_SDK)/doc/build-sdk-quick.txt
 	@$(MAKE) -rR showconfigs | sed 's,^,\t\t\t\t,'
 
-.PHONY: all
+.PHONY: all pdf
 all: api-html guides-html
 
 .PHONY: clean
-clean: api-html-clean guides-html-clean
+clean: api-html-clean guides-html-clean guides-latex-clean
 
 .PHONY: api-html
 api-html: api-html-clean
@@ -82,4 +84,20 @@ guides-%-clean:
 guides-%:
 	@echo 'sphinx for guides...'
 	$(Q)$(RTE_SPHINX_BUILD) -b $* $(RTE_SPHINX_VERBOSE) \
-		-c $(RTE_SDK)/doc/guides $(RTE_SDK)/doc/guides $(RTE_OUTPUT)/doc/$*/guides
+	    -c $(RTE_SDK)/doc/guides $(RTE_SDK)/doc/guides \
+	    $(RTE_OUTPUT)/doc/$*/guides
+
+pdf: pdf-rel_notes pdf-linux_gsg pdf-freebsd_gsg pdf-prog_guide \
+     pdf-sample_app_ug pdf-testpmd_app_ug
+
+pdf-%:
+	@echo 'creating' $* 'pdf ...'
+	$(Q)$(RTE_SPHINX_BUILD) -b latex $(RTE_SPHINX_VERBOSE) \
+	    -c $(RTE_SDK)/doc/guides/$*  $(RTE_SDK)/doc/guides/$* \
+	    $(RTE_OUTPUT)/doc/latex/guides/$*
+	$(Q)cp $(RTE_SDK)/doc/guides/$*/img/*.png \
+	    $(RTE_OUTPUT)/doc/latex/guides/$*
+	$(Q)perl $(RTE_SDK)/doc/api/sphinx-latex-update.pl \
+	    $(RTE_OUTPUT)/doc/latex/guides/$*/*.tex
+	$(Q)$(MAKE) -C $(RTE_OUTPUT)/doc/latex/guides/$* \
+	    all-pdf $(RTE_PDFLATEX_VERBOSE)
diff --git a/mk/rte.sdkroot.mk b/mk/rte.sdkroot.mk
index e8423b0..68931bb 100644
--- a/mk/rte.sdkroot.mk
+++ b/mk/rte.sdkroot.mk
@@ -101,9 +101,10 @@ testall:
 install uninstall:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkinstall.mk $@
 
-.PHONY: doc help
+.PHONY: doc help pdf
 doc: doc-all
 help: doc-help
+pdf: doc-pdf
 doc-%:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkdoc.mk $*
 
-- 
1.7.4.1

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [dpdk-dev] [PATCH v2 0/4] doc: Add 'make pdf' target to convert guide docs to pdf
  2015-01-14 17:14 [dpdk-dev] [PATCH RFC 0/1] Add 'make pdf' target to convert guide docs to pdf John McNamara
  2015-01-14 17:14 ` [dpdk-dev] [PATCH 1/2] doc: " John McNamara
@ 2015-01-30 18:13 ` John McNamara
  2015-01-30 18:13   ` [dpdk-dev] [PATCH v2 1/4] mk: Add 'make doc-pdf' " John McNamara
                     ` (4 more replies)
       [not found] ` <1422882967-27060-1-git-send-email-john.mcnamara@intel.com>
  2015-02-03 14:11 ` [dpdk-dev] [PATCH v4 0/5] doc: Add 'make pdf' target to convert guide docs to pdf John McNamara
  3 siblings, 5 replies; 41+ messages in thread
From: John McNamara @ 2015-01-30 18:13 UTC (permalink / raw)
  To: dev

This patch adds support for creating PDF versions of the user guides.

Specifically:

    * The Programmer's Guide
    * The Linux Getting Started Guide
    * The FreeBSD Getting Started Guide
    * The Sample Applications User Guide
    * The TestPMD User Guide
    * The Release Notes

The local and online Html documentation is very useful but we have had
internal and external requests from people who also liked the PDF
documentation in older releases.

The PDF generation is fully automated and uses the same Sphinx build system
and RST files used for the Html docs but uses the 'latexpdf' target. In
addition to the standard Sphinx Python modules it requires the Tex/LaTeX
toolchain. For best results it requires a TexLive 'Full' installation.

The PDF documents are generated as follows:

    make pdf
    # or
    make doc-pdf

The PDFs aren't generated as part of the 'make doc' rule since they can take
some 1-3 minutes to build and since they have a large toolchain dependency.

V2 Changes:

    * Removes config file duplication
    * Converts SVG files to PNG on the fly
    * Splits the patch into distinct mk/doc parts
    * Fixes issues in the RST docs that prevent PDF generation


John McNamara (4):
  mk: Add 'make doc-pdf' target to convert guide docs to pdf
  doc: Add Sphinx config to build pdf version of guides
  doc: Fix encoding of (r) character
  doc: Refactored split cell formatting in one table

 doc/guides/conf.py                          |   51 ++++++++++++++++++++++++--
 doc/guides/freebsd_gsg/conf.py              |   41 +++++++++++++++++++++
 doc/guides/linux_gsg/conf.py                |   41 +++++++++++++++++++++
 doc/guides/prog_guide/conf.py               |   41 +++++++++++++++++++++
 doc/guides/rel_notes/conf.py                |   41 +++++++++++++++++++++
 doc/guides/rel_notes/supported_features.rst |    2 +-
 doc/guides/sample_app_ug/conf.py            |   41 +++++++++++++++++++++
 doc/guides/sample_app_ug/test_pipeline.rst  |   32 +++++++++++-----
 doc/guides/testpmd_app_ug/conf.py           |   41 +++++++++++++++++++++
 mk/rte.sdkdoc.mk                            |   33 +++++++++++++++++-
 mk/rte.sdkroot.mk                           |    3 +-
 11 files changed, 350 insertions(+), 17 deletions(-)
 create mode 100644 doc/guides/freebsd_gsg/conf.py
 create mode 100644 doc/guides/linux_gsg/conf.py
 create mode 100644 doc/guides/prog_guide/conf.py
 create mode 100644 doc/guides/rel_notes/conf.py
 create mode 100644 doc/guides/sample_app_ug/conf.py
 create mode 100644 doc/guides/testpmd_app_ug/conf.py

-- 
1.7.4.1

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [dpdk-dev] [PATCH v2 1/4] mk: Add 'make doc-pdf' target to convert guide docs to pdf
  2015-01-30 18:13 ` [dpdk-dev] [PATCH v2 0/4] " John McNamara
@ 2015-01-30 18:13   ` John McNamara
  2015-01-30 20:52     ` Thomas Monjalon
  2015-01-30 18:13   ` [dpdk-dev] [PATCH v2 2/4] doc: Add Sphinx config to build pdf version of guides John McNamara
                     ` (3 subsequent siblings)
  4 siblings, 1 reply; 41+ messages in thread
From: John McNamara @ 2015-01-30 18:13 UTC (permalink / raw)
  To: dev

Added make system support for building PDF versions of
the guides. Requires Python Sphinx and TexLive Full.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
---
 mk/rte.sdkdoc.mk  |   33 ++++++++++++++++++++++++++++++++-
 mk/rte.sdkroot.mk |    3 ++-
 2 files changed, 34 insertions(+), 2 deletions(-)

diff --git a/mk/rte.sdkdoc.mk b/mk/rte.sdkdoc.mk
index dabc0d6..fb90d41 100644
--- a/mk/rte.sdkdoc.mk
+++ b/mk/rte.sdkdoc.mk
@@ -39,11 +39,15 @@ endif
 RTE_SPHINX_BUILD = sphinx-build
 ifndef V
 RTE_SPHINX_VERBOSE := -q
+RTE_PDFLATEX_VERBOSE := > /dev/null 2>&1
 endif
 ifeq '$V' '0'
 RTE_SPHINX_VERBOSE := -q
+RTE_PDFLATEX_VERBOSE := > /dev/null 2>&1
 endif
 
+DEFAULT_DPI ?= 300
+
 .PHONY: help
 help:
 	@cat $(RTE_SDK)/doc/build-sdk-quick.txt
@@ -53,7 +57,7 @@ help:
 all: api-html guides-html
 
 .PHONY: clean
-clean: api-html-clean guides-html-clean
+clean: api-html-clean guides-html-clean guides-latex-clean
 
 .PHONY: api-html
 api-html: api-html-clean
@@ -83,3 +87,30 @@ guides-%:
 	@echo 'sphinx for guides...'
 	$(Q)$(RTE_SPHINX_BUILD) -b $* $(RTE_SPHINX_VERBOSE) \
 		-c $(RTE_SDK)/doc/guides $(RTE_SDK)/doc/guides $(RTE_OUTPUT)/doc/$*/guides
+
+pdf: pdf-rel_notes pdf-linux_gsg pdf-freebsd_gsg pdf-prog_guide \
+	pdf-sample_app_ug pdf-testpmd_app_ug
+
+pdf-%:
+	@echo 'creating' $* 'pdf ...'
+        # Generate the latex files.
+	$(Q)$(RTE_SPHINX_BUILD) -b latex $(RTE_SPHINX_VERBOSE) \
+		-c $(RTE_SDK)/doc/guides/$*  $(RTE_SDK)/doc/guides/$* \
+		$(RTE_OUTPUT)/doc/latex/guides/$*
+
+        # Convert the svg files to png.
+	$(eval svg_files=$(notdir $(wildcard $(RTE_SDK)/doc/guides/$*/img/*.svg)))
+	$(eval svg_files=$(patsubst %.svg, %, $(svg_files)))
+	@for svg in $(svg_files); do \
+		inkscape -d $(DEFAULT_DPI) -D -b ffffff  \
+			-f $(RTE_SDK)/doc/guides/$*/img/$$svg.svg \
+			-e $(RTE_OUTPUT)/doc/latex/guides/$*/$$svg.png \
+				$(RTE_PDFLATEX_VERBOSE); \
+	done
+
+        # Change the svg image includes to png in the latex docs.
+	$(Q)sed -i 's/\.svg/.png/g' $(RTE_OUTPUT)/doc/latex/guides/$*/*.tex
+
+        # Convert the latex to pdf.
+	$(Q)$(MAKE) -C $(RTE_OUTPUT)/doc/latex/guides/$* \
+		all-pdf $(RTE_PDFLATEX_VERBOSE)
diff --git a/mk/rte.sdkroot.mk b/mk/rte.sdkroot.mk
index e8423b0..68931bb 100644
--- a/mk/rte.sdkroot.mk
+++ b/mk/rte.sdkroot.mk
@@ -101,9 +101,10 @@ testall:
 install uninstall:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkinstall.mk $@
 
-.PHONY: doc help
+.PHONY: doc help pdf
 doc: doc-all
 help: doc-help
+pdf: doc-pdf
 doc-%:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkdoc.mk $*
 
-- 
1.7.4.1

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [dpdk-dev] [PATCH v2 2/4] doc: Add Sphinx config to build pdf version of guides
  2015-01-30 18:13 ` [dpdk-dev] [PATCH v2 0/4] " John McNamara
  2015-01-30 18:13   ` [dpdk-dev] [PATCH v2 1/4] mk: Add 'make doc-pdf' " John McNamara
@ 2015-01-30 18:13   ` John McNamara
  2015-01-30 21:03     ` Thomas Monjalon
  2015-01-30 18:13   ` [dpdk-dev] [PATCH v2 3/4] doc: Fix encoding of (r) character John McNamara
                     ` (2 subsequent siblings)
  4 siblings, 1 reply; 41+ messages in thread
From: John McNamara @ 2015-01-30 18:13 UTC (permalink / raw)
  To: dev

Add Python Sphinx config to allow conversion of guides
to PDF format.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
---
 doc/guides/conf.py                |   51 ++++++++++++++++++++++++++++++++++---
 doc/guides/freebsd_gsg/conf.py    |   41 +++++++++++++++++++++++++++++
 doc/guides/linux_gsg/conf.py      |   41 +++++++++++++++++++++++++++++
 doc/guides/prog_guide/conf.py     |   41 +++++++++++++++++++++++++++++
 doc/guides/rel_notes/conf.py      |   41 +++++++++++++++++++++++++++++
 doc/guides/sample_app_ug/conf.py  |   41 +++++++++++++++++++++++++++++
 doc/guides/testpmd_app_ug/conf.py |   41 +++++++++++++++++++++++++++++
 7 files changed, 293 insertions(+), 4 deletions(-)
 create mode 100644 doc/guides/freebsd_gsg/conf.py
 create mode 100644 doc/guides/linux_gsg/conf.py
 create mode 100644 doc/guides/prog_guide/conf.py
 create mode 100644 doc/guides/rel_notes/conf.py
 create mode 100644 doc/guides/sample_app_ug/conf.py
 create mode 100644 doc/guides/testpmd_app_ug/conf.py

diff --git a/doc/guides/conf.py b/doc/guides/conf.py
index 385af03..71253c5 100644
--- a/doc/guides/conf.py
+++ b/doc/guides/conf.py
@@ -28,12 +28,55 @@
 #   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 #   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-import subprocess
+from subprocess import check_output
+from sphinx.highlighting import PygmentsBridge
+from pygments.formatters.latex import LatexFormatter
 
 project = 'DPDK'
-
 copyright = '2014, Intel'
+master_doc = 'index'
 
-version = subprocess.check_output(["make","-sRrC","../../", "showversion"])
 
-master_doc = 'index'
+# Configuration for latex/pdf files.
+latex_preamble = r"""
+\usepackage[utf8]{inputenc}
+\usepackage{DejaVuSansMono}
+\usepackage[T1]{fontenc}
+\usepackage{helvet}
+\renewcommand{\familydefault}{\sfdefault}
+
+\RecustomVerbatimEnvironment{Verbatim}{Verbatim}{xleftmargin=5mm}
+"""
+
+latex_elements = {
+    'papersize': 'a4paper',
+    'pointsize': '11pt',
+    'preamble': latex_preamble}
+
+latex_documents = [
+    ('index',
+     'dpdk_docs.tex',
+     '',
+     '',
+     'manual')]
+
+texinfo_documents = [
+    ('index',
+     '',
+     '',
+     '',
+     '',
+     '',
+     'Miscellaneous')]
+
+
+# Override the dafault Latex formatter.
+class CustomLatexFormatter(LatexFormatter):
+
+    def __init__(self, **options):
+
+        super(CustomLatexFormatter, self).__init__(**options)
+
+        self.verboptions = r"formatcom=\footnotesize"
+
+PygmentsBridge.latex_formatter = CustomLatexFormatter
diff --git a/doc/guides/freebsd_gsg/conf.py b/doc/guides/freebsd_gsg/conf.py
new file mode 100644
index 0000000..fd97d69
--- /dev/null
+++ b/doc/guides/freebsd_gsg/conf.py
@@ -0,0 +1,41 @@
+#   BSD LICENSE
+#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+#   All rights reserved.
+#
+#   Redistribution and use in source and binary forms, with or without
+#   modification, are permitted provided that the following conditions
+#   are met:
+#
+#   * Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in
+#   the documentation and/or other materials provided with the
+#   distribution.
+#   * Neither the name of Intel Corporation nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+execfile('../conf.py')
+
+release = check_output(['make', '-sRrC', '../../../', 'showversion'])
+
+# Overide the latex_documents to change the output name.
+latex_documents = [
+    ('index',
+     'dpdk_freebsd_getting_started_guide.tex',
+     '',
+     '',
+     'manual')]
diff --git a/doc/guides/linux_gsg/conf.py b/doc/guides/linux_gsg/conf.py
new file mode 100644
index 0000000..8086763
--- /dev/null
+++ b/doc/guides/linux_gsg/conf.py
@@ -0,0 +1,41 @@
+#   BSD LICENSE
+#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+#   All rights reserved.
+#
+#   Redistribution and use in source and binary forms, with or without
+#   modification, are permitted provided that the following conditions
+#   are met:
+#
+#   * Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in
+#   the documentation and/or other materials provided with the
+#   distribution.
+#   * Neither the name of Intel Corporation nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+execfile('../conf.py')
+
+release = check_output(['make', '-sRrC', '../../../', 'showversion'])
+
+# Overide the latex_documents to change the output name.
+latex_documents = [
+    ('index',
+     'dpdk_linux_getting_started_guide.tex',
+     '',
+     '',
+     'manual')]
diff --git a/doc/guides/prog_guide/conf.py b/doc/guides/prog_guide/conf.py
new file mode 100644
index 0000000..6a9e74c
--- /dev/null
+++ b/doc/guides/prog_guide/conf.py
@@ -0,0 +1,41 @@
+#   BSD LICENSE
+#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+#   All rights reserved.
+#
+#   Redistribution and use in source and binary forms, with or without
+#   modification, are permitted provided that the following conditions
+#   are met:
+#
+#   * Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in
+#   the documentation and/or other materials provided with the
+#   distribution.
+#   * Neither the name of Intel Corporation nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+execfile('../conf.py')
+
+release = check_output(['make', '-sRrC', '../../../', 'showversion'])
+
+# Overide the latex_documents to change the output name.
+latex_documents = [
+    ('index',
+     'dpdk_programmers_guide.tex',
+     '',
+     '',
+     'manual')]
diff --git a/doc/guides/rel_notes/conf.py b/doc/guides/rel_notes/conf.py
new file mode 100644
index 0000000..9ddf4c2
--- /dev/null
+++ b/doc/guides/rel_notes/conf.py
@@ -0,0 +1,41 @@
+#   BSD LICENSE
+#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+#   All rights reserved.
+#
+#   Redistribution and use in source and binary forms, with or without
+#   modification, are permitted provided that the following conditions
+#   are met:
+#
+#   * Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in
+#   the documentation and/or other materials provided with the
+#   distribution.
+#   * Neither the name of Intel Corporation nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+execfile('../conf.py')
+
+release = check_output(['make', '-sRrC', '../../../', 'showversion'])
+
+# Overide the latex_documents to change the output name.
+latex_documents = [
+    ('index',
+     'dpdk_release_notes.tex',
+     '',
+     '',
+     'manual')]
diff --git a/doc/guides/sample_app_ug/conf.py b/doc/guides/sample_app_ug/conf.py
new file mode 100644
index 0000000..def3132
--- /dev/null
+++ b/doc/guides/sample_app_ug/conf.py
@@ -0,0 +1,41 @@
+#   BSD LICENSE
+#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+#   All rights reserved.
+#
+#   Redistribution and use in source and binary forms, with or without
+#   modification, are permitted provided that the following conditions
+#   are met:
+#
+#   * Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in
+#   the documentation and/or other materials provided with the
+#   distribution.
+#   * Neither the name of Intel Corporation nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+execfile('../conf.py')
+
+release = check_output(['make', '-sRrC', '../../../', 'showversion'])
+
+# Overide the latex_documents to change the output name.
+latex_documents = [
+    ('index',
+     'dpdk_sample_applications.tex',
+     '',
+     '',
+     'manual')]
diff --git a/doc/guides/testpmd_app_ug/conf.py b/doc/guides/testpmd_app_ug/conf.py
new file mode 100644
index 0000000..66d5d80
--- /dev/null
+++ b/doc/guides/testpmd_app_ug/conf.py
@@ -0,0 +1,41 @@
+#   BSD LICENSE
+#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+#   All rights reserved.
+#
+#   Redistribution and use in source and binary forms, with or without
+#   modification, are permitted provided that the following conditions
+#   are met:
+#
+#   * Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in
+#   the documentation and/or other materials provided with the
+#   distribution.
+#   * Neither the name of Intel Corporation nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+execfile('../conf.py')
+
+release = check_output(['make', '-sRrC', '../../../', 'showversion'])
+
+# Overide the latex_documents to change the output name.
+latex_documents = [
+    ('index',
+     'dpdk_testpmd_guide.tex',
+     '',
+     '',
+     'manual')]
-- 
1.7.4.1

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [dpdk-dev] [PATCH v2 3/4] doc: Fix encoding of (r) character
  2015-01-30 18:13 ` [dpdk-dev] [PATCH v2 0/4] " John McNamara
  2015-01-30 18:13   ` [dpdk-dev] [PATCH v2 1/4] mk: Add 'make doc-pdf' " John McNamara
  2015-01-30 18:13   ` [dpdk-dev] [PATCH v2 2/4] doc: Add Sphinx config to build pdf version of guides John McNamara
@ 2015-01-30 18:13   ` John McNamara
  2015-01-30 18:13   ` [dpdk-dev] [PATCH v2 4/4] doc: Refactored split cell formatting in one table John McNamara
  2015-01-30 20:25   ` [dpdk-dev] [PATCH v2 0/4] doc: Add 'make pdf' target to convert guide docs to pdf Thomas Monjalon
  4 siblings, 0 replies; 41+ messages in thread
From: John McNamara @ 2015-01-30 18:13 UTC (permalink / raw)
  To: dev

Change encoding of (r) from Latin-1 to UTF8 to match the other
symbols in the doc and to allow it to convert cleanly to PDF.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
---
 doc/guides/rel_notes/supported_features.rst |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/doc/guides/rel_notes/supported_features.rst b/doc/guides/rel_notes/supported_features.rst
index 7936e93..d87fcaa 100644
--- a/doc/guides/rel_notes/supported_features.rst
+++ b/doc/guides/rel_notes/supported_features.rst
@@ -51,7 +51,7 @@ Supported Features
 
     *   Intel® X710 40 Gigabit Ethernet Controller
 
-*   Support NIC filters in addition to flow director for Intel� 1GbE and 10GbE Controllers
+*   Support NIC filters in addition to flow director for Intel® 1GbE and 10GbE Controllers
 
 *   Virtualization (KVM)
 
-- 
1.7.4.1

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [dpdk-dev] [PATCH v2 4/4] doc: Refactored split cell formatting in one table
  2015-01-30 18:13 ` [dpdk-dev] [PATCH v2 0/4] " John McNamara
                     ` (2 preceding siblings ...)
  2015-01-30 18:13   ` [dpdk-dev] [PATCH v2 3/4] doc: Fix encoding of (r) character John McNamara
@ 2015-01-30 18:13   ` John McNamara
  2015-01-30 21:05     ` Thomas Monjalon
  2015-01-30 20:25   ` [dpdk-dev] [PATCH v2 0/4] doc: Add 'make pdf' target to convert guide docs to pdf Thomas Monjalon
  4 siblings, 1 reply; 41+ messages in thread
From: John McNamara @ 2015-01-30 18:13 UTC (permalink / raw)
  To: dev

Refactored split cell in test_pipeline table to allow it to
convert cleanly to PDF.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
---
 doc/guides/sample_app_ug/test_pipeline.rst |   32 +++++++++++++++++++--------
 1 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/doc/guides/sample_app_ug/test_pipeline.rst b/doc/guides/sample_app_ug/test_pipeline.rst
index 867a7a7..a5fed8a 100644
--- a/doc/guides/sample_app_ug/test_pipeline.rst
+++ b/doc/guides/sample_app_ug/test_pipeline.rst
@@ -137,9 +137,9 @@ For hash tables, the following parameters can be selected:
 |       |                        | entries.                                                 | hash table with the following key format:             |
 |       |                        |                                                          |                                                       |
 |       |                        |                                                          | [4-byte index, 4 bytes of 0]                          |
-+-------+------------------------+----------------------------------------------------------+                                                       |
-| 4     | hash-[spec]-8-ext      |  Extendible bucket hash table with 8-byte key size       | The action configured for all table entries is        |
-|       |                        |  and 16 million entries.                                 | "Sendto output port", with the output port index      |
+|       |                        |                                                          |                                                       |
+|       |                        |                                                          | The action configured for all table entries is        |
+|       |                        |                                                          | "Sendto output port", with the output port index      |
 |       |                        |                                                          | uniformly distributed for the range of output ports.  |
 |       |                        |                                                          |                                                       |
 |       |                        |                                                          | The default table rule (used in the case of a lookup  |
@@ -152,13 +152,17 @@ For hash tables, the following parameters can be selected:
 |       |                        |                                                          | [destination IPv4 address, 4 bytes of 0]              |
 |       |                        |                                                          |                                                       |
 +-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
+| 4     | hash-[spec]-8-ext      | Extendible bucket hash table with 8-byte key size        | Same as hash-[spec]-8-lru table entries, above.       |
+|       |                        | and 16 million entries.                                  |                                                       |
+|       |                        |                                                          |                                                       |
++-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
 | 5     | hash-[spec]-16-lru     | LRU hash table with 16-byte key size and 16 million      | 16 million entries are successfully added to the hash |
 |       |                        | entries.                                                 | table with the following key format:                  |
 |       |                        |                                                          |                                                       |
 |       |                        |                                                          | [4-byte index, 12 bytes of 0]                         |
-+-------+------------------------+----------------------------------------------------------+                                                       |
-| 6     | hash-[spec]-ash-16-ext | Extendible bucket hash table with 16-byte key size       | The action configured for all table entries is        |
-|       |                        | and 16 million entries.                                  | "Send to output port", with the output port index     |
+|       |                        |                                                          |                                                       |
+|       |                        |                                                          | The action configured for all table entries is        |
+|       |                        |                                                          | "Send to output port", with the output port index     |
 |       |                        |                                                          | uniformly distributed for the range of output ports.  |
 |       |                        |                                                          |                                                       |
 |       |                        |                                                          | The default table rule (used in the case of a lookup  |
@@ -171,13 +175,17 @@ For hash tables, the following parameters can be selected:
 |       |                        |                                                          | [destination IPv4 address, 12 bytes of 0]             |
 |       |                        |                                                          |                                                       |
 +-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
+| 6     | hash-[spec]-16-ext     | Extendible bucket hash table with 16-byte key size       | Same as hash-[spec]-16-lru table entries, above.      |
+|       |                        | and 16 million entries.                                  |                                                       |
+|       |                        |                                                          |                                                       |
++-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
 | 7     | hash-[spec]-32-lru     | LRU hash table with 32-byte key size and 16 million      | 16 million entries are successfully added to the hash |
-|       |                        | entries.                                                 |  table with the following key format:                 |
+|       |                        | entries.                                                 | table with the following key format:                  |
 |       |                        |                                                          |                                                       |
 |       |                        |                                                          | [4-byte index, 28 bytes of 0].                        |
-+-------+------------------------+----------------------------------------------------------+                                                       |
-| 8     | hash-[spec]-32-ext     | Extendible bucket hash table with 32-byte key size       | The action configured for all table entries is        |
-|       |                        | and 16 million entries.                                  | "Send to output port", with the output port index     |
+|       |                        |                                                          |                                                       |
+|       |                        |                                                          | The action configured for all table entries is        |
+|       |                        |                                                          | "Send to output port", with the output port index     |
 |       |                        |                                                          | uniformly distributed for the range of output ports.  |
 |       |                        |                                                          |                                                       |
 |       |                        |                                                          | The default table rule (used in the case of a lookup  |
@@ -190,6 +198,10 @@ For hash tables, the following parameters can be selected:
 |       |                        |                                                          | [destination IPv4 address, 28 bytes of 0]             |
 |       |                        |                                                          |                                                       |
 +-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
+| 8     | hash-[spec]-32-ext     | Extendible bucket hash table with 32-byte key size       | Same as hash-[spec]-32-lru table entries, above.      |
+|       |                        | and 16 million entries.                                  |                                                       |
+|       |                        |                                                          |                                                       |
++-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
 | 9     | lpm                    | Longest Prefix Match (LPM) IPv4 table.                   | In the case of two ports, two routes                  |
 |       |                        |                                                          | are added to the table:                               |
 |       |                        |                                                          |                                                       |
-- 
1.7.4.1

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [dpdk-dev] [PATCH v2 0/4] doc: Add 'make pdf' target to convert guide docs to pdf
  2015-01-30 18:13 ` [dpdk-dev] [PATCH v2 0/4] " John McNamara
                     ` (3 preceding siblings ...)
  2015-01-30 18:13   ` [dpdk-dev] [PATCH v2 4/4] doc: Refactored split cell formatting in one table John McNamara
@ 2015-01-30 20:25   ` Thomas Monjalon
  4 siblings, 0 replies; 41+ messages in thread
From: Thomas Monjalon @ 2015-01-30 20:25 UTC (permalink / raw)
  To: John McNamara; +Cc: dev

Hi John,

2015-01-30 18:13, John McNamara:
> This patch adds support for creating PDF versions of the user guides.
> 
> Specifically:
> 
>     * The Programmer's Guide
>     * The Linux Getting Started Guide
>     * The FreeBSD Getting Started Guide
>     * The Sample Applications User Guide
>     * The TestPMD User Guide
>     * The Release Notes
> 
> The local and online Html documentation is very useful but we have had
> internal and external requests from people who also liked the PDF
> documentation in older releases.
> 
> The PDF generation is fully automated and uses the same Sphinx build system
> and RST files used for the Html docs but uses the 'latexpdf' target. In
> addition to the standard Sphinx Python modules it requires the Tex/LaTeX
> toolchain. For best results it requires a TexLive 'Full' installation.
> 
> The PDF documents are generated as follows:
> 
>     make pdf
>     # or
>     make doc-pdf
> 
> The PDFs aren't generated as part of the 'make doc' rule since they can take
> some 1-3 minutes to build and since they have a large toolchain dependency.
> 
> V2 Changes:
> 
>     * Removes config file duplication
>     * Converts SVG files to PNG on the fly
>     * Splits the patch into distinct mk/doc parts
>     * Fixes issues in the RST docs that prevent PDF generation

It seems a lot better.
I still have some comments but I feel we are not far of the simplest code ;)

-- 
Thomas

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [dpdk-dev] [PATCH v2 1/4] mk: Add 'make doc-pdf' target to convert guide docs to pdf
  2015-01-30 18:13   ` [dpdk-dev] [PATCH v2 1/4] mk: Add 'make doc-pdf' " John McNamara
@ 2015-01-30 20:52     ` Thomas Monjalon
       [not found]       ` <B27915DBBA3421428155699D51E4CFE2EAC4D2@IRSMSX103.ger.corp.intel.com>
  0 siblings, 1 reply; 41+ messages in thread
From: Thomas Monjalon @ 2015-01-30 20:52 UTC (permalink / raw)
  To: John McNamara; +Cc: dev

2015-01-30 18:13, John McNamara:
> Added make system support for building PDF versions of
> the guides. Requires Python Sphinx and TexLive Full.
> 
> Signed-off-by: John McNamara <john.mcnamara@intel.com>

>  ifndef V
>  RTE_SPHINX_VERBOSE := -q
> +RTE_PDFLATEX_VERBOSE := > /dev/null 2>&1

By redirecting everything in /dev/null, you won't see any error.
But pdflatex is an horrible software.
If I remember well, it's very difficult to filter only errors.
You could try "-interaction batchmode" for quiet mode and
"-interaction nonstopmode" for verbose mode.

> +DEFAULT_DPI ?= 300

It's better to prefix this global variable with RTE_ or DPDK_

> -clean: api-html-clean guides-html-clean
> +clean: api-html-clean guides-html-clean guides-latex-clean

Why not guides-pdf-clean?

> +pdf: pdf-rel_notes pdf-linux_gsg pdf-freebsd_gsg pdf-prog_guide \
> +	pdf-sample_app_ug pdf-testpmd_app_ug

In general, it's a bad idea to create virtual targets where it could
be a file. Example: the real file $(RTE_OUTPUT)/doc/.../rel_notes.pdf
would be a better target than pdf-rel_notes.
But maybe it's too difficult to have the full dependency chain to make
it able of recompiling only needed parts when needed.

> +pdf-%:
> +	@echo 'creating' $* 'pdf ...'
> +        # Generate the latex files.
> +	$(Q)$(RTE_SPHINX_BUILD) -b latex $(RTE_SPHINX_VERBOSE) \
> +		-c $(RTE_SDK)/doc/guides/$*  $(RTE_SDK)/doc/guides/$* \
> +		$(RTE_OUTPUT)/doc/latex/guides/$*
> +
> +        # Convert the svg files to png.
> +	$(eval svg_files=$(notdir $(wildcard $(RTE_SDK)/doc/guides/$*/img/*.svg)))
> +	$(eval svg_files=$(patsubst %.svg, %, $(svg_files)))
> +	@for svg in $(svg_files); do \

You could use $(svg_files:.svg=) instead of doing a patsubst above.

> +		inkscape -d $(DEFAULT_DPI) -D -b ffffff  \
> +			-f $(RTE_SDK)/doc/guides/$*/img/$$svg.svg \
> +			-e $(RTE_OUTPUT)/doc/latex/guides/$*/$$svg.png \
> +				$(RTE_PDFLATEX_VERBOSE); \
> +	done
> +
> +        # Change the svg image includes to png in the latex docs.
> +	$(Q)sed -i 's/\.svg/.png/g' $(RTE_OUTPUT)/doc/latex/guides/$*/*.tex

No, you could avoid that if every image references where x.* instead of x.svg or x.png.
The image extension should always be .* in rst to be format agnostic.
Then there is a (configurable) rule to choose the best format.

> +
> +        # Convert the latex to pdf.
> +	$(Q)$(MAKE) -C $(RTE_OUTPUT)/doc/latex/guides/$* \
> +		all-pdf $(RTE_PDFLATEX_VERBOSE)

Indentation is broken in this whole rule.

> --- a/mk/rte.sdkroot.mk
> +++ b/mk/rte.sdkroot.mk
> @@ -101,9 +101,10 @@ testall:
>  install uninstall:
>  	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkinstall.mk $@
>  
> -.PHONY: doc help
> +.PHONY: doc help pdf
>  doc: doc-all
>  help: doc-help
> +pdf: doc-pdf
>  doc-%:
>  	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkdoc.mk $*

Why having a pdf rule? It seems not consistent. doc-pdf is enough.

Thanks
-- 
Thomas

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [dpdk-dev] [PATCH v2 2/4] doc: Add Sphinx config to build pdf version of guides
  2015-01-30 18:13   ` [dpdk-dev] [PATCH v2 2/4] doc: Add Sphinx config to build pdf version of guides John McNamara
@ 2015-01-30 21:03     ` Thomas Monjalon
  0 siblings, 0 replies; 41+ messages in thread
From: Thomas Monjalon @ 2015-01-30 21:03 UTC (permalink / raw)
  To: John McNamara; +Cc: dev

2015-01-30 18:13, John McNamara:
> Add Python Sphinx config to allow conversion of guides
> to PDF format.
> 
> Signed-off-by: John McNamara <john.mcnamara@intel.com>
> ---
>  doc/guides/conf.py                |   51 ++++++++++++++++++++++++++++++++++---
>  doc/guides/freebsd_gsg/conf.py    |   41 +++++++++++++++++++++++++++++
>  doc/guides/linux_gsg/conf.py      |   41 +++++++++++++++++++++++++++++
>  doc/guides/prog_guide/conf.py     |   41 +++++++++++++++++++++++++++++
>  doc/guides/rel_notes/conf.py      |   41 +++++++++++++++++++++++++++++
>  doc/guides/sample_app_ug/conf.py  |   41 +++++++++++++++++++++++++++++
>  doc/guides/testpmd_app_ug/conf.py |   41 +++++++++++++++++++++++++++++
>  7 files changed, 293 insertions(+), 4 deletions(-)
>  create mode 100644 doc/guides/freebsd_gsg/conf.py
>  create mode 100644 doc/guides/linux_gsg/conf.py
>  create mode 100644 doc/guides/prog_guide/conf.py
>  create mode 100644 doc/guides/rel_notes/conf.py
>  create mode 100644 doc/guides/sample_app_ug/conf.py
>  create mode 100644 doc/guides/testpmd_app_ug/conf.py

I think it is possible to use the existing conf.py.
The only thing different in all these files is the generated filename
which could be computed from the title or extracted from an rst comment.

> --- a/doc/guides/conf.py
> +++ b/doc/guides/conf.py
> +texinfo_documents = [
> +    ('index',
> +     '',
> +     '',
> +     '',
> +     '',
> +     '',
> +     'Miscellaneous')]

Why texinfo?

> +
> +# Override the dafault Latex formatter.

Typo: default

> +class CustomLatexFormatter(LatexFormatter):
> +
> +    def __init__(self, **options):
> +
> +        super(CustomLatexFormatter, self).__init__(**options)
> +
> +        self.verboptions = r"formatcom=\footnotesize"

Please comment this line. I don't understand.

> +
> +PygmentsBridge.latex_formatter = CustomLatexFormatter

-- 
Thomas

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [dpdk-dev] [PATCH v2 4/4] doc: Refactored split cell formatting in one table
  2015-01-30 18:13   ` [dpdk-dev] [PATCH v2 4/4] doc: Refactored split cell formatting in one table John McNamara
@ 2015-01-30 21:05     ` Thomas Monjalon
  0 siblings, 0 replies; 41+ messages in thread
From: Thomas Monjalon @ 2015-01-30 21:05 UTC (permalink / raw)
  To: John McNamara; +Cc: dev

2015-01-30 18:13, John McNamara:
> Refactored split cell in test_pipeline table to allow it to
> convert cleanly to PDF.
> 
> Signed-off-by: John McNamara <john.mcnamara@intel.com>

The diff output is impossible to read.
You should explain what you changed and why. So it would give a reference
for future table writers.

Thanks
-- 
Thomas

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [dpdk-dev] [PATCH v3 2/4] doc: Add Sphinx config to build pdf version of guides
       [not found]   ` <1422882967-27060-3-git-send-email-john.mcnamara@intel.com>
@ 2015-02-03 10:30     ` Iremonger, Bernard
  0 siblings, 0 replies; 41+ messages in thread
From: Iremonger, Bernard @ 2015-02-03 10:30 UTC (permalink / raw)
  To: Mcnamara, John, dev

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of John McNamara
> Sent: Monday, February 2, 2015 1:16 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH v3 2/4] doc: Add Sphinx config to build pdf version of guides
> 
> Add Python Sphinx config to allow conversion of guides to Latex and then PDF format.
> 
> This mainly adds metadata but also includes an override to the Latex formatter to control the font size
> in code blocks.
> 
> Signed-off-by: John McNamara <john.mcnamara@intel.com>
> ---
>  doc/guides/conf.py |   44 +++++++++++++++++++++++++++++++++++++++++++-
>  1 files changed, 43 insertions(+), 1 deletions(-)
> 
> diff --git a/doc/guides/conf.py b/doc/guides/conf.py index 385af03..9f546bd 100644
> --- a/doc/guides/conf.py
> +++ b/doc/guides/conf.py
> @@ -29,11 +29,53 @@
>  #   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> 
>  import subprocess
> +from sphinx.highlighting import PygmentsBridge from
> +pygments.formatters.latex import LatexFormatter
> 
>  project = 'DPDK'
> 
>  copyright = '2014, Intel'

Hi John,

2014 should be 2015.

Regards,

Bernard.

> 
> -version = subprocess.check_output(["make","-sRrC","../../", "showversion"])
> +version = subprocess.check_output(['make', '-sRrC', '../../',
> +'showversion']) release = version
> 
>  master_doc = 'index'
> +
> +# Latex directives to be included directly in the latex/pdf docs.
> +latex_preamble = r"""
> +\usepackage[utf8]{inputenc}
> +\usepackage{DejaVuSansMono}
> +\usepackage[T1]{fontenc}
> +\usepackage{helvet}
> +\renewcommand{\familydefault}{\sfdefault}
> +
> +\RecustomVerbatimEnvironment{Verbatim}{Verbatim}{xleftmargin=5mm}
> +"""
> +
> +# Configuration for the latex/pdf docs.
> +latex_elements = {
> +    'papersize': 'a4paper',
> +    'pointsize': '11pt',
> +    'preamble': latex_preamble}
> +
> +latex_documents = [
> +    ('index',
> +     'dpdk_doc.tex',
> +     '',
> +     '',
> +     'manual')]
> +
> +
> +# Temp class to override the default Latex formatter in order to modify
> +the # font size in the code/verbatim blocks.
> +class CustomLatexFormatter(LatexFormatter):
> +
> +    def __init__(self, **options):
> +
> +        super(CustomLatexFormatter, self).__init__(**options)
> +
> +        # Use the second smallest font size for code/verbatim blocks.
> +        self.verboptions = r'formatcom=\footnotesize'
> +
> +# Replace the default latex formatter.
> +PygmentsBridge.latex_formatter = CustomLatexFormatter
> --
> 1.7.4.1

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [dpdk-dev] [PATCH v2 1/4] mk: Add 'make doc-pdf' target to convert guide docs to pdf
       [not found]         ` <2564393.TY2qeNvaqR@xps13>
@ 2015-02-03 13:24           ` Mcnamara, John
  0 siblings, 0 replies; 41+ messages in thread
From: Mcnamara, John @ 2015-02-03 13:24 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev

> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]
> Sent: Monday, February 2, 2015 1:35 PM
> To: Mcnamara, John
> Cc: dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v2 1/4] mk: Add 'make doc-pdf' target to
> convert guide docs to pdf
> 
> I think it's possible. Look at this link:
> http://stackoverflow.com/questions/6473660/using-sphinx-docs-how-can-i-
> specify-png-image-formats-for-html-builds-and-pdf-im
> In this example, SVG files are converted into PDF files, not PNG.

Hi Thomas,

Using image.* will work for latex/pdf but only if the pngs are converted in the source directory (as opposed to the build directory) since Sphinx requires them to be available at the latex compile time.

I'll modify the patch to work that way.

Regards,

John
-- 

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [dpdk-dev] [PATCH v4 0/5] doc: Add 'make pdf' target to convert guide docs to pdf
  2015-01-14 17:14 [dpdk-dev] [PATCH RFC 0/1] Add 'make pdf' target to convert guide docs to pdf John McNamara
                   ` (2 preceding siblings ...)
       [not found] ` <1422882967-27060-1-git-send-email-john.mcnamara@intel.com>
@ 2015-02-03 14:11 ` John McNamara
  2015-02-03 14:11   ` [dpdk-dev] [PATCH v4 1/5] mk: Add 'make doc-pdf' " John McNamara
                     ` (5 more replies)
  3 siblings, 6 replies; 41+ messages in thread
From: John McNamara @ 2015-02-03 14:11 UTC (permalink / raw)
  To: dev


This patch adds support for creating PDF versions of the user guides.

Specifically:

    * The Programmer's Guide
    * The Linux Getting Started Guide
    * The FreeBSD Getting Started Guide
    * The Sample Applications User Guide
    * The TestPMD User Guide
    * The Release Notes

The local and online Html documentation is very useful but we have had
internal and external requests from people who also liked the PDF
documentation in older releases.

The PDF generation is fully automated and uses the same Sphinx build system
and RST files used for the Html docs but uses the 'latexpdf' target. In
addition to the standard Sphinx Python modules it requires the Tex/LaTeX
toolchain. For best results it requires a TexLive 'Full' installation.

The PDF documents are generated as follows:

    make pdf
    # or
    make doc-pdf

The PDFs aren't generated as part of the 'make doc' rule since they can take
some 1-3 minutes to build and since they have a large toolchain dependency.

V4 Changes:
    * Changed RST image types to wildcard to allow Sphinx to decide
      the appropriate type.
    * Changed back to calling Sphinx generated makefile to ensure that
      the pdf files are created by Sphinx make rules.

V3 Changes:
    * Remove sub-directory config.py files and replaced them with metadata
      in the main doc/guides/conf.py file and a more generic make rule.
    * Added *.pdf targets with *.rst dependencies.
    * Call pdflatex directly (instead of from Sphinx) to control the
      verbosity of the output.

V2 Changes:
    * Removes config file duplication
    * Converts SVG files to PNG on the fly
    * Splits the patch into distinct mk/doc parts
    * Fixes issues in the RST docs that prevent PDF generation


John McNamara (5):
  mk: Add 'make doc-pdf' target to convert guide docs to pdf
  doc: Add Sphinx config to build pdf version of guides
  doc: Fix encoding of (r) character
  doc: Refactored split cell formatting in one table
  doc: Convert image extensions to wildcard

 doc/guides/conf.py                                 |   48 ++++++++++++++++++-
 doc/guides/prog_guide/env_abstraction_layer.rst    |    2 +-
 .../prog_guide/i40e_ixgbe_igb_virt_func_drv.rst    |    8 ++--
 .../intel_dpdk_xen_based_packet_switch_sol.rst     |    6 +-
 doc/guides/prog_guide/ivshmem_lib.rst              |    2 +-
 doc/guides/prog_guide/kernel_nic_interface.rst     |    8 ++--
 .../libpcap_ring_based_poll_mode_drv.rst           |    2 +-
 .../prog_guide/link_bonding_poll_mode_drv_lib.rst  |   14 +++---
 doc/guides/prog_guide/lpm6_lib.rst                 |    2 +-
 doc/guides/prog_guide/lpm_lib.rst                  |    2 +-
 doc/guides/prog_guide/malloc_lib.rst               |    2 +-
 doc/guides/prog_guide/mbuf_lib.rst                 |    4 +-
 doc/guides/prog_guide/mempool_lib.rst              |    6 +-
 doc/guides/prog_guide/multi_proc_support.rst       |    2 +-
 doc/guides/prog_guide/overview.rst                 |    2 +-
 doc/guides/prog_guide/packet_distrib_lib.rst       |    4 +-
 doc/guides/prog_guide/packet_framework.rst         |   14 +++---
 .../poll_mode_drv_emulated_virtio_nic.rst          |    6 +-
 .../poll_mode_drv_paravirtual_vmxnets_nic.rst      |    6 +-
 doc/guides/prog_guide/qos_framework.rst            |   36 +++++++-------
 doc/guides/prog_guide/ring_lib.rst                 |   28 ++++++------
 doc/guides/rel_notes/supported_features.rst        |    2 +-
 doc/guides/sample_app_ug/dist_app.rst              |    4 +-
 doc/guides/sample_app_ug/exception_path.rst        |    2 +-
 doc/guides/sample_app_ug/intel_quickassist.rst     |    2 +-
 doc/guides/sample_app_ug/kernel_nic_interface.rst  |    4 +-
 .../sample_app_ug/l2_forward_real_virtual.rst      |    4 +-
 .../sample_app_ug/l3_forward_access_ctrl.rst       |    4 +-
 doc/guides/sample_app_ug/load_balancer.rst         |    2 +-
 doc/guides/sample_app_ug/multi_process.rst         |    8 ++--
 doc/guides/sample_app_ug/qos_scheduler.rst         |    2 +-
 doc/guides/sample_app_ug/quota_watermark.rst       |    6 +-
 doc/guides/sample_app_ug/test_pipeline.rst         |   34 +++++++++-----
 doc/guides/sample_app_ug/vhost.rst                 |   10 ++--
 doc/guides/sample_app_ug/vm_power_management.rst   |    4 +-
 doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst   |    2 +-
 mk/rte.sdkdoc.mk                                   |   43 +++++++++++++++++-
 37 files changed, 216 insertions(+), 121 deletions(-)

-- 
1.7.4.1

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [dpdk-dev] [PATCH v4 1/5] mk: Add 'make doc-pdf' target to convert guide docs to pdf
  2015-02-03 14:11 ` [dpdk-dev] [PATCH v4 0/5] doc: Add 'make pdf' target to convert guide docs to pdf John McNamara
@ 2015-02-03 14:11   ` John McNamara
  2015-02-16 12:19     ` Iremonger, Bernard
  2015-02-03 14:11   ` [dpdk-dev] [PATCH v4 2/5] doc: Add Sphinx config to build pdf version of guides John McNamara
                     ` (4 subsequent siblings)
  5 siblings, 1 reply; 41+ messages in thread
From: John McNamara @ 2015-02-03 14:11 UTC (permalink / raw)
  To: dev

Added make system support for building PDF versions of
the guides. Requires Python Sphinx and TexLive Full.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
---
 mk/rte.sdkdoc.mk |   43 ++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 42 insertions(+), 1 deletions(-)

diff --git a/mk/rte.sdkdoc.mk b/mk/rte.sdkdoc.mk
index dabc0d6..e09628f 100644
--- a/mk/rte.sdkdoc.mk
+++ b/mk/rte.sdkdoc.mk
@@ -37,13 +37,24 @@ endif
 endif
 
 RTE_SPHINX_BUILD = sphinx-build
+RTE_PDFLATEX_VERBOSE := --interaction=nonstopmode
+
 ifndef V
 RTE_SPHINX_VERBOSE := -q
+RTE_PDFLATEX_VERBOSE := --interaction=batchmode
+RTE_INKSCAPE_VERBOSE := > /dev/null 2>&1
 endif
 ifeq '$V' '0'
 RTE_SPHINX_VERBOSE := -q
+RTE_PDFLATEX_VERBOSE := --interaction=batchmode
+RTE_INKSCAPE_VERBOSE := > /dev/null 2>&1
 endif
 
+RTE_GUIDE_PDFS := $(filter %/, $(wildcard $(RTE_SDK)/doc/guides/*/))
+RTE_GUIDE_PDFS := $(RTE_GUIDE_PDFS:$(RTE_SDK)/doc/guides%=$(RTE_OUTPUT)/doc/latex/guides%)
+RTE_GUIDE_PDFS := $(RTE_GUIDE_PDFS:%/=%.pdf)
+RTE_DEFAULT_DPI ?= 300
+
 .PHONY: help
 help:
 	@cat $(RTE_SDK)/doc/build-sdk-quick.txt
@@ -53,7 +64,7 @@ help:
 all: api-html guides-html
 
 .PHONY: clean
-clean: api-html-clean guides-html-clean
+clean: api-html-clean guides-html-clean guides-latex-clean
 
 .PHONY: api-html
 api-html: api-html-clean
@@ -83,3 +94,33 @@ guides-%:
 	@echo 'sphinx for guides...'
 	$(Q)$(RTE_SPHINX_BUILD) -b $* $(RTE_SPHINX_VERBOSE) \
 		-c $(RTE_SDK)/doc/guides $(RTE_SDK)/doc/guides $(RTE_OUTPUT)/doc/$*/guides
+
+
+pdf: $(RTE_GUIDE_PDFS)
+
+.SECONDEXPANSION:
+# Use wildcard expansion to avoid * expansion issue with make 3.82.
+$(RTE_OUTPUT)/doc/latex/guides/%.pdf: $$(wildcard $(RTE_SDK)/doc/guides/%/*.rst)
+	@echo 'creating' $* 'pdf ...'
+
+	@# Convert the svg files to png for pdflatex.
+	$(eval tmp_images = $(wildcard $(RTE_SDK)/doc/guides/$*/img/*.svg))
+	$(Q)for image in $(tmp_images:.svg=); do \
+		inkscape -d $(RTE_DEFAULT_DPI) -D -b ffffff \
+			-f $$image.svg -e $$image.png $(RTE_INKSCAPE_VERBOSE); \
+	done
+
+	@# Generate the latex files.
+	$(Q)$(RTE_SPHINX_BUILD) -b latex $(RTE_SPHINX_VERBOSE) \
+		-c $(RTE_SDK)/doc/guides  $(RTE_SDK)/doc/guides/$* \
+		$(RTE_OUTPUT)/doc/latex/guides/$*
+
+	@# Remove the generated png files.
+	$(Q)rm -f $(tmp_images:.svg=.png)
+
+	@# Generate the pdf files.
+	$(Q)sed -i 's/LATEXOPTS =/LATEXOPTS = $(RTE_PDFLATEX_VERBOSE)/' \
+		$(RTE_OUTPUT)/doc/latex/guides/$*/Makefile
+	$(Q)make all-pdf -s -C $(RTE_OUTPUT)/doc/latex/guides/$*
+
+	$(Q)mv $(RTE_OUTPUT)/doc/latex/guides/$*/dpdk_doc.pdf $@
-- 
1.7.4.1

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [dpdk-dev] [PATCH v4 2/5] doc: Add Sphinx config to build pdf version of guides
  2015-02-03 14:11 ` [dpdk-dev] [PATCH v4 0/5] doc: Add 'make pdf' target to convert guide docs to pdf John McNamara
  2015-02-03 14:11   ` [dpdk-dev] [PATCH v4 1/5] mk: Add 'make doc-pdf' " John McNamara
@ 2015-02-03 14:11   ` John McNamara
  2015-02-16 14:20     ` Iremonger, Bernard
  2015-02-03 14:11   ` [dpdk-dev] [PATCH v4 3/5] doc: Fix encoding of (r) character John McNamara
                     ` (3 subsequent siblings)
  5 siblings, 1 reply; 41+ messages in thread
From: John McNamara @ 2015-02-03 14:11 UTC (permalink / raw)
  To: dev

Add Python Sphinx config to allow conversion of guides
to Latex and then PDF format.

This mainly adds metadata but also includes an override to the
Latex formatter to control the font size in code blocks.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
---
 doc/guides/conf.py |   48 +++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 45 insertions(+), 3 deletions(-)

diff --git a/doc/guides/conf.py b/doc/guides/conf.py
index 385af03..1c03b50 100644
--- a/doc/guides/conf.py
+++ b/doc/guides/conf.py
@@ -1,5 +1,5 @@
 #   BSD LICENSE
-#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+#   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
 #   All rights reserved.
 #
 #   Redistribution and use in source and binary forms, with or without
@@ -29,11 +29,53 @@
 #   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 import subprocess
+from sphinx.highlighting import PygmentsBridge
+from pygments.formatters.latex import LatexFormatter
 
 project = 'DPDK'
 
-copyright = '2014, Intel'
+copyright = '2015, Intel'
 
-version = subprocess.check_output(["make","-sRrC","../../", "showversion"])
+version = subprocess.check_output(['make', '-sRrC', '../../', 'showversion'])
+release = version
 
 master_doc = 'index'
+
+# Latex directives to be included directly in the latex/pdf docs.
+latex_preamble = r"""
+\usepackage[utf8]{inputenc}
+\usepackage{DejaVuSansMono}
+\usepackage[T1]{fontenc}
+\usepackage{helvet}
+\renewcommand{\familydefault}{\sfdefault}
+
+\RecustomVerbatimEnvironment{Verbatim}{Verbatim}{xleftmargin=5mm}
+"""
+
+# Configuration for the latex/pdf docs.
+latex_elements = {
+    'papersize': 'a4paper',
+    'pointsize': '11pt',
+    'preamble': latex_preamble}
+
+latex_documents = [
+    ('index',
+     'dpdk_doc.tex',
+     '',
+     '',
+     'manual')]
+
+
+# Temp class to override the default Latex formatter in order to modify the
+# code/verbatim blocks.
+class CustomLatexFormatter(LatexFormatter):
+
+    def __init__(self, **options):
+
+        super(CustomLatexFormatter, self).__init__(**options)
+
+        # Use the second smallest font size for code/verbatim blocks.
+        self.verboptions = r'formatcom=\footnotesize'
+
+# Replace the default latex formatter.
+PygmentsBridge.latex_formatter = CustomLatexFormatter
-- 
1.7.4.1

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [dpdk-dev] [PATCH v4 3/5] doc: Fix encoding of (r) character
  2015-02-03 14:11 ` [dpdk-dev] [PATCH v4 0/5] doc: Add 'make pdf' target to convert guide docs to pdf John McNamara
  2015-02-03 14:11   ` [dpdk-dev] [PATCH v4 1/5] mk: Add 'make doc-pdf' " John McNamara
  2015-02-03 14:11   ` [dpdk-dev] [PATCH v4 2/5] doc: Add Sphinx config to build pdf version of guides John McNamara
@ 2015-02-03 14:11   ` John McNamara
  2015-02-13 14:29     ` Iremonger, Bernard
  2015-02-16 14:22     ` Iremonger, Bernard
  2015-02-03 14:11   ` [dpdk-dev] [PATCH v4 4/5] doc: Refactored split cell formatting in one table John McNamara
                     ` (2 subsequent siblings)
  5 siblings, 2 replies; 41+ messages in thread
From: John McNamara @ 2015-02-03 14:11 UTC (permalink / raw)
  To: dev

Change encoding of (r) from Latin-1 to UTF8 to match the other
symbols in the doc and to allow it to convert cleanly to PDF.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
---
 doc/guides/rel_notes/supported_features.rst |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/doc/guides/rel_notes/supported_features.rst b/doc/guides/rel_notes/supported_features.rst
index 7936e93..d87fcaa 100644
--- a/doc/guides/rel_notes/supported_features.rst
+++ b/doc/guides/rel_notes/supported_features.rst
@@ -51,7 +51,7 @@ Supported Features
 
     *   Intel® X710 40 Gigabit Ethernet Controller
 
-*   Support NIC filters in addition to flow director for Intel� 1GbE and 10GbE Controllers
+*   Support NIC filters in addition to flow director for Intel® 1GbE and 10GbE Controllers
 
 *   Virtualization (KVM)
 
-- 
1.7.4.1

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [dpdk-dev] [PATCH v4 4/5] doc: Refactored split cell formatting in one table
  2015-02-03 14:11 ` [dpdk-dev] [PATCH v4 0/5] doc: Add 'make pdf' target to convert guide docs to pdf John McNamara
                     ` (2 preceding siblings ...)
  2015-02-03 14:11   ` [dpdk-dev] [PATCH v4 3/5] doc: Fix encoding of (r) character John McNamara
@ 2015-02-03 14:11   ` John McNamara
  2015-02-16 14:23     ` Iremonger, Bernard
  2015-02-03 14:11   ` [dpdk-dev] [PATCH v4 5/5] doc: Convert image extensions to wildcard John McNamara
  2015-03-19 11:23   ` [dpdk-dev] [PATCH v5 0/7] add doc-guides-pdf target Thomas Monjalon
  5 siblings, 1 reply; 41+ messages in thread
From: John McNamara @ 2015-02-03 14:11 UTC (permalink / raw)
  To: dev

Refactored split cell in test_pipeline table to allow it to
convert cleanly to PDF.

The Sphinx/Latex converter doesn't handle split cells like the
following:

  +-------------+--------------+
  | Header 1    | Header 2     |
  +=============+==============+
  |             |              |
  |             |              |
  +-------------+              |
  |             |              |
  |             |              |
  +-------------+--------------+

Instead the table was refactored to a simpler format:

  +-------------+--------------+
  | Header 1    | Header 2     |
  +=============+==============+
  |             |              |
  |             |              |
  +-------------+--------------+
  |             |              |
  |             |              |
  +-------------+--------------+

The same information was retained in the table.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
---
 doc/guides/sample_app_ug/test_pipeline.rst |   32 +++++++++++++++++++--------
 1 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/doc/guides/sample_app_ug/test_pipeline.rst b/doc/guides/sample_app_ug/test_pipeline.rst
index 867a7a7..a5fed8a 100644
--- a/doc/guides/sample_app_ug/test_pipeline.rst
+++ b/doc/guides/sample_app_ug/test_pipeline.rst
@@ -137,9 +137,9 @@ For hash tables, the following parameters can be selected:
 |       |                        | entries.                                                 | hash table with the following key format:             |
 |       |                        |                                                          |                                                       |
 |       |                        |                                                          | [4-byte index, 4 bytes of 0]                          |
-+-------+------------------------+----------------------------------------------------------+                                                       |
-| 4     | hash-[spec]-8-ext      |  Extendible bucket hash table with 8-byte key size       | The action configured for all table entries is        |
-|       |                        |  and 16 million entries.                                 | "Sendto output port", with the output port index      |
+|       |                        |                                                          |                                                       |
+|       |                        |                                                          | The action configured for all table entries is        |
+|       |                        |                                                          | "Sendto output port", with the output port index      |
 |       |                        |                                                          | uniformly distributed for the range of output ports.  |
 |       |                        |                                                          |                                                       |
 |       |                        |                                                          | The default table rule (used in the case of a lookup  |
@@ -152,13 +152,17 @@ For hash tables, the following parameters can be selected:
 |       |                        |                                                          | [destination IPv4 address, 4 bytes of 0]              |
 |       |                        |                                                          |                                                       |
 +-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
+| 4     | hash-[spec]-8-ext      | Extendible bucket hash table with 8-byte key size        | Same as hash-[spec]-8-lru table entries, above.       |
+|       |                        | and 16 million entries.                                  |                                                       |
+|       |                        |                                                          |                                                       |
++-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
 | 5     | hash-[spec]-16-lru     | LRU hash table with 16-byte key size and 16 million      | 16 million entries are successfully added to the hash |
 |       |                        | entries.                                                 | table with the following key format:                  |
 |       |                        |                                                          |                                                       |
 |       |                        |                                                          | [4-byte index, 12 bytes of 0]                         |
-+-------+------------------------+----------------------------------------------------------+                                                       |
-| 6     | hash-[spec]-ash-16-ext | Extendible bucket hash table with 16-byte key size       | The action configured for all table entries is        |
-|       |                        | and 16 million entries.                                  | "Send to output port", with the output port index     |
+|       |                        |                                                          |                                                       |
+|       |                        |                                                          | The action configured for all table entries is        |
+|       |                        |                                                          | "Send to output port", with the output port index     |
 |       |                        |                                                          | uniformly distributed for the range of output ports.  |
 |       |                        |                                                          |                                                       |
 |       |                        |                                                          | The default table rule (used in the case of a lookup  |
@@ -171,13 +175,17 @@ For hash tables, the following parameters can be selected:
 |       |                        |                                                          | [destination IPv4 address, 12 bytes of 0]             |
 |       |                        |                                                          |                                                       |
 +-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
+| 6     | hash-[spec]-16-ext     | Extendible bucket hash table with 16-byte key size       | Same as hash-[spec]-16-lru table entries, above.      |
+|       |                        | and 16 million entries.                                  |                                                       |
+|       |                        |                                                          |                                                       |
++-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
 | 7     | hash-[spec]-32-lru     | LRU hash table with 32-byte key size and 16 million      | 16 million entries are successfully added to the hash |
-|       |                        | entries.                                                 |  table with the following key format:                 |
+|       |                        | entries.                                                 | table with the following key format:                  |
 |       |                        |                                                          |                                                       |
 |       |                        |                                                          | [4-byte index, 28 bytes of 0].                        |
-+-------+------------------------+----------------------------------------------------------+                                                       |
-| 8     | hash-[spec]-32-ext     | Extendible bucket hash table with 32-byte key size       | The action configured for all table entries is        |
-|       |                        | and 16 million entries.                                  | "Send to output port", with the output port index     |
+|       |                        |                                                          |                                                       |
+|       |                        |                                                          | The action configured for all table entries is        |
+|       |                        |                                                          | "Send to output port", with the output port index     |
 |       |                        |                                                          | uniformly distributed for the range of output ports.  |
 |       |                        |                                                          |                                                       |
 |       |                        |                                                          | The default table rule (used in the case of a lookup  |
@@ -190,6 +198,10 @@ For hash tables, the following parameters can be selected:
 |       |                        |                                                          | [destination IPv4 address, 28 bytes of 0]             |
 |       |                        |                                                          |                                                       |
 +-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
+| 8     | hash-[spec]-32-ext     | Extendible bucket hash table with 32-byte key size       | Same as hash-[spec]-32-lru table entries, above.      |
+|       |                        | and 16 million entries.                                  |                                                       |
+|       |                        |                                                          |                                                       |
++-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
 | 9     | lpm                    | Longest Prefix Match (LPM) IPv4 table.                   | In the case of two ports, two routes                  |
 |       |                        |                                                          | are added to the table:                               |
 |       |                        |                                                          |                                                       |
-- 
1.7.4.1

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [dpdk-dev] [PATCH v4 5/5] doc: Convert image extensions to wildcard
  2015-02-03 14:11 ` [dpdk-dev] [PATCH v4 0/5] doc: Add 'make pdf' target to convert guide docs to pdf John McNamara
                     ` (3 preceding siblings ...)
  2015-02-03 14:11   ` [dpdk-dev] [PATCH v4 4/5] doc: Refactored split cell formatting in one table John McNamara
@ 2015-02-03 14:11   ` John McNamara
  2015-02-16 12:09     ` Iremonger, Bernard
  2015-02-16 14:25     ` Iremonger, Bernard
  2015-03-19 11:23   ` [dpdk-dev] [PATCH v5 0/7] add doc-guides-pdf target Thomas Monjalon
  5 siblings, 2 replies; 41+ messages in thread
From: John McNamara @ 2015-02-03 14:11 UTC (permalink / raw)
  To: dev

Changed all image.svg and image.png extensions to image.*
This allows Sphinx to decide the appropriate image type
from the available image options.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
---
 doc/guides/prog_guide/env_abstraction_layer.rst    |    2 +-
 .../prog_guide/i40e_ixgbe_igb_virt_func_drv.rst    |    8 ++--
 .../intel_dpdk_xen_based_packet_switch_sol.rst     |    6 ++--
 doc/guides/prog_guide/ivshmem_lib.rst              |    2 +-
 doc/guides/prog_guide/kernel_nic_interface.rst     |    8 ++--
 .../libpcap_ring_based_poll_mode_drv.rst           |    2 +-
 .../prog_guide/link_bonding_poll_mode_drv_lib.rst  |   14 ++++----
 doc/guides/prog_guide/lpm6_lib.rst                 |    2 +-
 doc/guides/prog_guide/lpm_lib.rst                  |    2 +-
 doc/guides/prog_guide/malloc_lib.rst               |    2 +-
 doc/guides/prog_guide/mbuf_lib.rst                 |    4 +-
 doc/guides/prog_guide/mempool_lib.rst              |    6 ++--
 doc/guides/prog_guide/multi_proc_support.rst       |    2 +-
 doc/guides/prog_guide/overview.rst                 |    2 +-
 doc/guides/prog_guide/packet_distrib_lib.rst       |    4 +-
 doc/guides/prog_guide/packet_framework.rst         |   14 ++++----
 .../poll_mode_drv_emulated_virtio_nic.rst          |    6 ++--
 .../poll_mode_drv_paravirtual_vmxnets_nic.rst      |    6 ++--
 doc/guides/prog_guide/qos_framework.rst            |   36 ++++++++++----------
 doc/guides/prog_guide/ring_lib.rst                 |   28 ++++++++--------
 doc/guides/sample_app_ug/dist_app.rst              |    4 +-
 doc/guides/sample_app_ug/exception_path.rst        |    2 +-
 doc/guides/sample_app_ug/intel_quickassist.rst     |    2 +-
 doc/guides/sample_app_ug/kernel_nic_interface.rst  |    4 +-
 .../sample_app_ug/l2_forward_real_virtual.rst      |    4 +-
 .../sample_app_ug/l3_forward_access_ctrl.rst       |    4 +-
 doc/guides/sample_app_ug/load_balancer.rst         |    2 +-
 doc/guides/sample_app_ug/multi_process.rst         |    8 ++--
 doc/guides/sample_app_ug/qos_scheduler.rst         |    2 +-
 doc/guides/sample_app_ug/quota_watermark.rst       |    6 ++--
 doc/guides/sample_app_ug/test_pipeline.rst         |    2 +-
 doc/guides/sample_app_ug/vhost.rst                 |   10 +++---
 doc/guides/sample_app_ug/vm_power_management.rst   |    4 +-
 doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst   |    2 +-
 34 files changed, 106 insertions(+), 106 deletions(-)

diff --git a/doc/guides/prog_guide/env_abstraction_layer.rst b/doc/guides/prog_guide/env_abstraction_layer.rst
index 231e266..45791b6 100644
--- a/doc/guides/prog_guide/env_abstraction_layer.rst
+++ b/doc/guides/prog_guide/env_abstraction_layer.rst
@@ -212,4 +212,4 @@ Memory zones can be reserved with specific start address alignment by supplying
 The alignment value should be a power of two and not less than the cache line size (64 bytes).
 Memory zones can also be reserved from either 2 MB or 1 GB hugepages, provided that both are available on the system.
 
-.. |linuxapp_launch| image:: img/linuxapp_launch.svg
+.. |linuxapp_launch| image:: img/linuxapp_launch.*
diff --git a/doc/guides/prog_guide/i40e_ixgbe_igb_virt_func_drv.rst b/doc/guides/prog_guide/i40e_ixgbe_igb_virt_func_drv.rst
index 41e316e..a984379 100755
--- a/doc/guides/prog_guide/i40e_ixgbe_igb_virt_func_drv.rst
+++ b/doc/guides/prog_guide/i40e_ixgbe_igb_virt_func_drv.rst
@@ -542,10 +542,10 @@ which belongs to the destination VF on the VM.
 
 |inter_vm_comms|
 
-.. |perf_benchmark| image:: img/perf_benchmark.png
+.. |perf_benchmark| image:: img/perf_benchmark.*
 
-.. |single_port_nic| image:: img/single_port_nic.png
+.. |single_port_nic| image:: img/single_port_nic.*
 
-.. |inter_vm_comms| image:: img/inter_vm_comms.png
+.. |inter_vm_comms| image:: img/inter_vm_comms.*
 
-.. |fast_pkt_proc| image:: img/fast_pkt_proc.png
+.. |fast_pkt_proc| image:: img/fast_pkt_proc.*
diff --git a/doc/guides/prog_guide/intel_dpdk_xen_based_packet_switch_sol.rst b/doc/guides/prog_guide/intel_dpdk_xen_based_packet_switch_sol.rst
index 1f1e04f..47841cd 100644
--- a/doc/guides/prog_guide/intel_dpdk_xen_based_packet_switch_sol.rst
+++ b/doc/guides/prog_guide/intel_dpdk_xen_based_packet_switch_sol.rst
@@ -457,8 +457,8 @@ The packet flow is:
 
 packet generator->Virtio in guest VM1->switching backend->Virtio in guest VM2->switching backend->wire
 
-.. |grant_table| image:: img/grant_table.png
+.. |grant_table| image:: img/grant_table.*
 
-.. |grant_refs| image:: img/grant_refs.png
+.. |grant_refs| image:: img/grant_refs.*
 
-.. |dpdk_xen_pkt_switch| image:: img/dpdk_xen_pkt_switch.png
+.. |dpdk_xen_pkt_switch| image:: img/dpdk_xen_pkt_switch.*
diff --git a/doc/guides/prog_guide/ivshmem_lib.rst b/doc/guides/prog_guide/ivshmem_lib.rst
index cd2f595..c76d2b3 100644
--- a/doc/guides/prog_guide/ivshmem_lib.rst
+++ b/doc/guides/prog_guide/ivshmem_lib.rst
@@ -155,4 +155,4 @@ As a result, if the user wishes to shut down or restart the IVSHMEM host applica
 it is not enough to simply shut the application down.
 The virtual machine must also be shut down (if not, it will hold onto outdated host data).
 
-.. |ivshmem| image:: img/ivshmem.png
+.. |ivshmem| image:: img/ivshmem.*
diff --git a/doc/guides/prog_guide/kernel_nic_interface.rst b/doc/guides/prog_guide/kernel_nic_interface.rst
index 0276019..6b1a16f 100644
--- a/doc/guides/prog_guide/kernel_nic_interface.rst
+++ b/doc/guides/prog_guide/kernel_nic_interface.rst
@@ -281,10 +281,10 @@ Even if the option is turned on, kni-vhost will ignore the information that the
 When working with legacy virtio on the guest, it is better to turn off unsupported offload features using ethtool -K.
 Otherwise, there may be problems such as an incorrect L4 checksum error.
 
-.. |kni_traffic_flow| image:: img/kni_traffic_flow.png
+.. |kni_traffic_flow| image:: img/kni_traffic_flow.*
 
-.. |vhost_net_arch| image:: img/vhost_net_arch.png
+.. |vhost_net_arch| image:: img/vhost_net_arch.*
 
-.. |pkt_flow_kni| image:: img/pkt_flow_kni.png
+.. |pkt_flow_kni| image:: img/pkt_flow_kni.*
 
-.. |kernel_nic_intf| image:: img/kernel_nic_intf.png
+.. |kernel_nic_intf| image:: img/kernel_nic_intf.*
diff --git a/doc/guides/prog_guide/libpcap_ring_based_poll_mode_drv.rst b/doc/guides/prog_guide/libpcap_ring_based_poll_mode_drv.rst
index 249a2e0..6e14fd1 100644
--- a/doc/guides/prog_guide/libpcap_ring_based_poll_mode_drv.rst
+++ b/doc/guides/prog_guide/libpcap_ring_based_poll_mode_drv.rst
@@ -268,4 +268,4 @@ while the rte_ring specific functions are direct function calls in the code and
    then calling rte_eth_rx_queue_setup() / tx_queue_setup() for each of those queues and
    finally calling rte_eth_dev_start() to allow transmission and reception of packets to begin.
 
-.. |forward_stats| image:: img/forward_stats.png
+.. |forward_stats| image:: img/forward_stats.*
diff --git a/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst b/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst
index cf6a6fa..24a1a36 100644
--- a/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst
+++ b/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst
@@ -434,10 +434,10 @@ Create a bonded device in balance mode with two slaves specified by their PCI ad
 
     $RTE_TARGET/app/testpmd -c '0xf' -n 4 --vdev 'eth_bond0,mode=2, slave=0000:00a:00.01,slave=0000:004:00.00,xmit_policy=l34' -- --port-topology=chained
 
-.. |bond-overview| image:: img/bond-overview.svg
-.. |bond-mode-0| image:: img/bond-mode-0.svg
-.. |bond-mode-1| image:: img/bond-mode-1.svg
-.. |bond-mode-2| image:: img/bond-mode-2.svg
-.. |bond-mode-3| image:: img/bond-mode-3.svg
-.. |bond-mode-4| image:: img/bond-mode-4.svg
-.. |bond-mode-5| image:: img/bond-mode-5.svg
+.. |bond-overview| image:: img/bond-overview.*
+.. |bond-mode-0| image:: img/bond-mode-0.*
+.. |bond-mode-1| image:: img/bond-mode-1.*
+.. |bond-mode-2| image:: img/bond-mode-2.*
+.. |bond-mode-3| image:: img/bond-mode-3.*
+.. |bond-mode-4| image:: img/bond-mode-4.*
+.. |bond-mode-5| image:: img/bond-mode-5.*
diff --git a/doc/guides/prog_guide/lpm6_lib.rst b/doc/guides/prog_guide/lpm6_lib.rst
index dd5d064..abc5adb 100644
--- a/doc/guides/prog_guide/lpm6_lib.rst
+++ b/doc/guides/prog_guide/lpm6_lib.rst
@@ -232,4 +232,4 @@ Use Case: IPv6 Forwarding
 
 The LPM algorithm is used to implement the Classless Inter-Domain Routing (CIDR) strategy used by routers implementing IP forwarding.
 
-.. |tbl24_tbl8_tbl8| image:: img/tbl24_tbl8_tbl8.png
+.. |tbl24_tbl8_tbl8| image:: img/tbl24_tbl8_tbl8.*
diff --git a/doc/guides/prog_guide/lpm_lib.rst b/doc/guides/prog_guide/lpm_lib.rst
index d1de87a..692e37f 100644
--- a/doc/guides/prog_guide/lpm_lib.rst
+++ b/doc/guides/prog_guide/lpm_lib.rst
@@ -220,4 +220,4 @@ References
 *   Pankaj Gupta, Algorithms for Routing Lookups and Packet Classification, PhD Thesis, Stanford University,
     2000  (`http://klamath.stanford.edu/~pankaj/thesis/ thesis_1sided.pdf <http://klamath.stanford.edu/~pankaj/thesis/%20thesis_1sided.pdf>`_ )
 
-.. |tbl24_tbl8| image:: img/tbl24_tbl8.png
+.. |tbl24_tbl8| image:: img/tbl24_tbl8.*
diff --git a/doc/guides/prog_guide/malloc_lib.rst b/doc/guides/prog_guide/malloc_lib.rst
index 63d87d9..b9298f8 100644
--- a/doc/guides/prog_guide/malloc_lib.rst
+++ b/doc/guides/prog_guide/malloc_lib.rst
@@ -233,4 +233,4 @@ and if so, they are merged with the current elements.
 This means that we can never have two free memory blocks adjacent to one another,
 they are always merged into a single block.
 
-.. |malloc_heap| image:: img/malloc_heap.png
+.. |malloc_heap| image:: img/malloc_heap.*
diff --git a/doc/guides/prog_guide/mbuf_lib.rst b/doc/guides/prog_guide/mbuf_lib.rst
index 3d59e96..43e6f3a 100644
--- a/doc/guides/prog_guide/mbuf_lib.rst
+++ b/doc/guides/prog_guide/mbuf_lib.rst
@@ -189,6 +189,6 @@ Use Cases
 
 All networking application should use mbufs to transport network packets.
 
-.. |mbuf1| image:: img/mbuf1.svg
+.. |mbuf1| image:: img/mbuf1.*
 
-.. |mbuf2| image:: img/mbuf2.svg
+.. |mbuf2| image:: img/mbuf2.*
diff --git a/doc/guides/prog_guide/mempool_lib.rst b/doc/guides/prog_guide/mempool_lib.rst
index b4704a7..f9b7cfe 100644
--- a/doc/guides/prog_guide/mempool_lib.rst
+++ b/doc/guides/prog_guide/mempool_lib.rst
@@ -141,8 +141,8 @@ Below are some examples:
 
 *   Any application that needs to allocate fixed-sized objects in the data plane and that will be continuously utilized by the system.
 
-.. |memory-management| image:: img/memory-management.svg
+.. |memory-management| image:: img/memory-management.*
 
-.. |memory-management2| image:: img/memory-management2.svg
+.. |memory-management2| image:: img/memory-management2.*
 
-.. |mempool| image:: img/mempool.svg
+.. |mempool| image:: img/mempool.*
diff --git a/doc/guides/prog_guide/multi_proc_support.rst b/doc/guides/prog_guide/multi_proc_support.rst
index deaae47..25a6056 100644
--- a/doc/guides/prog_guide/multi_proc_support.rst
+++ b/doc/guides/prog_guide/multi_proc_support.rst
@@ -200,4 +200,4 @@ instead of the functions which do the hashing internally, such as rte_hash_add()
     If the number of required DPDK processes exceeds that of the number of available HPET comparators,
     the TSC (which is the default timer in this release) must be used as a time source across all processes instead of the HPET.
 
-.. |multi_process_memory| image:: img/multi_process_memory.svg
+.. |multi_process_memory| image:: img/multi_process_memory.*
diff --git a/doc/guides/prog_guide/overview.rst b/doc/guides/prog_guide/overview.rst
index 6603409..062d923 100644
--- a/doc/guides/prog_guide/overview.rst
+++ b/doc/guides/prog_guide/overview.rst
@@ -204,4 +204,4 @@ The librte_net library is a collection of IP protocol definitions and convenienc
 It is based on code from the FreeBSD* IP stack and contains protocol numbers (for use in IP headers),
 IP-related macros, IPv4/IPv6 header structures and TCP, UDP and SCTP header structures.
 
-.. |architecture-overview| image:: img/architecture-overview.svg
+.. |architecture-overview| image:: img/architecture-overview.*
diff --git a/doc/guides/prog_guide/packet_distrib_lib.rst b/doc/guides/prog_guide/packet_distrib_lib.rst
index 18baf55..767accc 100644
--- a/doc/guides/prog_guide/packet_distrib_lib.rst
+++ b/doc/guides/prog_guide/packet_distrib_lib.rst
@@ -111,6 +111,6 @@ i.e. to save power at times of lighter load,
 it is possible to have a worker stop processing packets by calling "rte_distributor_return_pkt()" to indicate that
 it has finished the current packet and does not want a new one.
 
-.. |packet_distributor1| image:: img/packet_distributor1.png
+.. |packet_distributor1| image:: img/packet_distributor1.*
 
-.. |packet_distributor2| image:: img/packet_distributor2.png
+.. |packet_distributor2| image:: img/packet_distributor2.*
diff --git a/doc/guides/prog_guide/packet_framework.rst b/doc/guides/prog_guide/packet_framework.rst
index 537811b..8e8e32f 100644
--- a/doc/guides/prog_guide/packet_framework.rst
+++ b/doc/guides/prog_guide/packet_framework.rst
@@ -1168,16 +1168,16 @@ with all the implementations sharing the same API: pure SW implementation (no ac
 The selection between these implementations could be done at build time or at run-time (recommended), based on which accelerators are present in the system,
 with no application changes required.
 
-.. |figure33| image:: img/figure33.png
+.. |figure33| image:: img/figure33.*
 
-.. |figure35| image:: img/figure35.png
+.. |figure35| image:: img/figure35.*
 
-.. |figure39| image:: img/figure39.png
+.. |figure39| image:: img/figure39.*
 
-.. |figure34| image:: img/figure34.png
+.. |figure34| image:: img/figure34.*
 
-.. |figure32| image:: img/figure32.png
+.. |figure32| image:: img/figure32.*
 
-.. |figure37| image:: img/figure37.png
+.. |figure37| image:: img/figure37.*
 
-.. |figure38| image:: img/figure38.png
+.. |figure38| image:: img/figure38.*
diff --git a/doc/guides/prog_guide/poll_mode_drv_emulated_virtio_nic.rst b/doc/guides/prog_guide/poll_mode_drv_emulated_virtio_nic.rst
index 86f4f60..1daf280 100644
--- a/doc/guides/prog_guide/poll_mode_drv_emulated_virtio_nic.rst
+++ b/doc/guides/prog_guide/poll_mode_drv_emulated_virtio_nic.rst
@@ -205,8 +205,8 @@ The packet transmission flow is:
 
     IXIA packet generator-> Guest VM 82599 VF port1 rx burst-> Guest VM virtio port 0 tx burst-> tap -> Linux Bridge->82599 PF-> IXIA packet generator
 
-.. |host_vm_comms| image:: img/host_vm_comms.png
+.. |host_vm_comms| image:: img/host_vm_comms.*
 
-.. |console| image:: img/console.png
+.. |console| image:: img/console.*
 
-.. |host_vm_comms_qemu| image:: img/host_vm_comms_qemu.png
+.. |host_vm_comms_qemu| image:: img/host_vm_comms_qemu.*
diff --git a/doc/guides/prog_guide/poll_mode_drv_paravirtual_vmxnets_nic.rst b/doc/guides/prog_guide/poll_mode_drv_paravirtual_vmxnets_nic.rst
index e48bc13..fe4d6f1 100644
--- a/doc/guides/prog_guide/poll_mode_drv_paravirtual_vmxnets_nic.rst
+++ b/doc/guides/prog_guide/poll_mode_drv_paravirtual_vmxnets_nic.rst
@@ -177,8 +177,8 @@ In this example, the packet flow path is:
     Packet generator -> 82599 VF -> Guest VM 82599 port 0 rx burst -> Guest VM VMXNET3 port 1 tx burst -> VMXNET3
     device -> VMware ESXi vSwitch -> VMXNET3 device -> Guest VM VMXNET3 port 0 rx burst -> Guest VM 82599 VF port 1 tx burst -> 82599 VF -> Packet generator
 
-.. |vm_vm_comms| image:: img/vm_vm_comms.png
+.. |vm_vm_comms| image:: img/vm_vm_comms.*
 
-.. |vmxnet3_int| image:: img/vmxnet3_int.png
+.. |vmxnet3_int| image:: img/vmxnet3_int.*
 
-.. |vswitch_vm| image:: img/vswitch_vm.png
+.. |vswitch_vm| image:: img/vswitch_vm.*
diff --git a/doc/guides/prog_guide/qos_framework.rst b/doc/guides/prog_guide/qos_framework.rst
index 087f3c4..b609841 100644
--- a/doc/guides/prog_guide/qos_framework.rst
+++ b/doc/guides/prog_guide/qos_framework.rst
@@ -1728,38 +1728,38 @@ For each input packet, the steps for the srTCM / trTCM algorithms are:
     When the output color is not red, a number of tokens equal to the length of the IP packet are
     subtracted from the C or E /P or both buckets, depending on the algorithm and the output color of the packet.
 
-.. |flow_tru_droppper| image:: img/flow_tru_droppper.png
+.. |flow_tru_droppper| image:: img/flow_tru_droppper.*
 
-.. |drop_probability_graph| image:: img/drop_probability_graph.png
+.. |drop_probability_graph| image:: img/drop_probability_graph.*
 
-.. |drop_probability_eq3| image:: img/drop_probability_eq3.png
+.. |drop_probability_eq3| image:: img/drop_probability_eq3.*
 
-.. |eq2_expression| image:: img/eq2_expression.png
+.. |eq2_expression| image:: img/eq2_expression.*
 
-.. |drop_probability_eq4| image:: img/drop_probability_eq4.png
+.. |drop_probability_eq4| image:: img/drop_probability_eq4.*
 
-.. |pkt_drop_probability| image:: img/pkt_drop_probability.png
+.. |pkt_drop_probability| image:: img/pkt_drop_probability.*
 
-.. |pkt_proc_pipeline_qos| image:: img/pkt_proc_pipeline_qos.png
+.. |pkt_proc_pipeline_qos| image:: img/pkt_proc_pipeline_qos.*
 
-.. |ex_data_flow_tru_dropper| image:: img/ex_data_flow_tru_dropper.png
+.. |ex_data_flow_tru_dropper| image:: img/ex_data_flow_tru_dropper.*
 
-.. |ewma_filter_eq_1| image:: img/ewma_filter_eq_1.png
+.. |ewma_filter_eq_1| image:: img/ewma_filter_eq_1.*
 
-.. |ewma_filter_eq_2| image:: img/ewma_filter_eq_2.png
+.. |ewma_filter_eq_2| image:: img/ewma_filter_eq_2.*
 
-.. |data_struct_per_port| image:: img/data_struct_per_port.png
+.. |data_struct_per_port| image:: img/data_struct_per_port.*
 
-.. |prefetch_pipeline| image:: img/prefetch_pipeline.png
+.. |prefetch_pipeline| image:: img/prefetch_pipeline.*
 
-.. |pipe_prefetch_sm| image:: img/pipe_prefetch_sm.png
+.. |pipe_prefetch_sm| image:: img/pipe_prefetch_sm.*
 
-.. |blk_diag_dropper| image:: img/blk_diag_dropper.png
+.. |blk_diag_dropper| image:: img/blk_diag_dropper.*
 
-.. |m_definition| image:: img/m_definition.png
+.. |m_definition| image:: img/m_definition.*
 
-.. |eq2_factor| image:: img/eq2_factor.png
+.. |eq2_factor| image:: img/eq2_factor.*
 
-.. |sched_hier_per_port| image:: img/sched_hier_per_port.png
+.. |sched_hier_per_port| image:: img/sched_hier_per_port.*
 
-.. |hier_sched_blk| image:: img/hier_sched_blk.png
+.. |hier_sched_blk| image:: img/hier_sched_blk.*
diff --git a/doc/guides/prog_guide/ring_lib.rst b/doc/guides/prog_guide/ring_lib.rst
index 95f773e..8547b38 100644
--- a/doc/guides/prog_guide/ring_lib.rst
+++ b/doc/guides/prog_guide/ring_lib.rst
@@ -347,30 +347,30 @@ References
 
     *   `Linux Lockless Ring Buffer Design <http://lwn.net/Articles/340400/>`_
 
-.. |ring1| image:: img/ring1.svg
+.. |ring1| image:: img/ring1.*
 
-.. |ring-enqueue1| image:: img/ring-enqueue1.svg
+.. |ring-enqueue1| image:: img/ring-enqueue1.*
 
-.. |ring-enqueue2| image:: img/ring-enqueue2.svg
+.. |ring-enqueue2| image:: img/ring-enqueue2.*
 
-.. |ring-enqueue3| image:: img/ring-enqueue3.svg
+.. |ring-enqueue3| image:: img/ring-enqueue3.*
 
-.. |ring-dequeue1| image:: img/ring-dequeue1.svg
+.. |ring-dequeue1| image:: img/ring-dequeue1.*
 
-.. |ring-dequeue2| image:: img/ring-dequeue2.svg
+.. |ring-dequeue2| image:: img/ring-dequeue2.*
 
-.. |ring-dequeue3| image:: img/ring-dequeue3.svg
+.. |ring-dequeue3| image:: img/ring-dequeue3.*
 
-.. |ring-mp-enqueue1| image:: img/ring-mp-enqueue1.svg
+.. |ring-mp-enqueue1| image:: img/ring-mp-enqueue1.*
 
-.. |ring-mp-enqueue2| image:: img/ring-mp-enqueue2.svg
+.. |ring-mp-enqueue2| image:: img/ring-mp-enqueue2.*
 
-.. |ring-mp-enqueue3| image:: img/ring-mp-enqueue3.svg
+.. |ring-mp-enqueue3| image:: img/ring-mp-enqueue3.*
 
-.. |ring-mp-enqueue4| image:: img/ring-mp-enqueue4.svg
+.. |ring-mp-enqueue4| image:: img/ring-mp-enqueue4.*
 
-.. |ring-mp-enqueue5| image:: img/ring-mp-enqueue5.svg
+.. |ring-mp-enqueue5| image:: img/ring-mp-enqueue5.*
 
-.. |ring-modulo1| image:: img/ring-modulo1.svg
+.. |ring-modulo1| image:: img/ring-modulo1.*
 
-.. |ring-modulo2| image:: img/ring-modulo2.svg
+.. |ring-modulo2| image:: img/ring-modulo2.*
diff --git a/doc/guides/sample_app_ug/dist_app.rst b/doc/guides/sample_app_ug/dist_app.rst
index 5767e3f..bcff0dd 100644
--- a/doc/guides/sample_app_ug/dist_app.rst
+++ b/doc/guides/sample_app_ug/dist_app.rst
@@ -172,6 +172,6 @@ Sample Application. See Section 9.4.4, "RX Queue Initialization".
 TX queue initialization is done in the same way as it is done in the L2 Forwarding
 Sample Application. See Section 9.4.5, "TX Queue Initialization".
 
-.. |dist_perf| image:: img/dist_perf.svg
+.. |dist_perf| image:: img/dist_perf.*
 
-.. |dist_app| image:: img/dist_app.svg
+.. |dist_app| image:: img/dist_app.*
diff --git a/doc/guides/sample_app_ug/exception_path.rst b/doc/guides/sample_app_ug/exception_path.rst
index 0b71f9e..6c06959 100644
--- a/doc/guides/sample_app_ug/exception_path.rst
+++ b/doc/guides/sample_app_ug/exception_path.rst
@@ -327,4 +327,4 @@ To remove bridges and persistent TAP interfaces, the following commands are used
     brctl delbr br0
     openvpn --rmtun --dev tap_dpdk_00
 
-.. |exception_path_example| image:: img/exception_path_example.svg
+.. |exception_path_example| image:: img/exception_path_example.*
diff --git a/doc/guides/sample_app_ug/intel_quickassist.rst b/doc/guides/sample_app_ug/intel_quickassist.rst
index d063f08..7f55282 100644
--- a/doc/guides/sample_app_ug/intel_quickassist.rst
+++ b/doc/guides/sample_app_ug/intel_quickassist.rst
@@ -221,4 +221,4 @@ performing AES-CBC-128 encryption with AES-XCBC-MAC-96 hash, the following setti
 Refer to the *DPDK Test Report* for more examples of traffic generator setup and the application startup command lines.
 If no errors are generated in response to the startup commands, the application is running correctly.
 
-.. |quickassist_block_diagram| image:: img/quickassist_block_diagram.png
+.. |quickassist_block_diagram| image:: img/quickassist_block_diagram.*
diff --git a/doc/guides/sample_app_ug/kernel_nic_interface.rst b/doc/guides/sample_app_ug/kernel_nic_interface.rst
index e32fbbf..d6876e2 100644
--- a/doc/guides/sample_app_ug/kernel_nic_interface.rst
+++ b/doc/guides/sample_app_ug/kernel_nic_interface.rst
@@ -75,7 +75,7 @@ The packet flow through the Kernel NIC Interface application is as shown in the
 
 **Figure 2. Kernel NIC Application Packet Flow**
 
-.. image3_png has been renamed to kernel_nic.png
+.. image3_png has been renamed to kernel_nic.*
 
 |kernel_nic|
 
@@ -617,4 +617,4 @@ Currently, setting a new MTU and configuring the network interface (up/ down) ar
         return ret;
     }
 
-.. |kernel_nic| image:: img/kernel_nic.png
+.. |kernel_nic| image:: img/kernel_nic.*
diff --git a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
index f9360c4..234d71d 100644
--- a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
+++ b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
@@ -527,6 +527,6 @@ however it improves performance:
         prev_tsc = cur_tsc;
     }
 
-.. |l2_fwd_benchmark_setup| image:: img/l2_fwd_benchmark_setup.svg
+.. |l2_fwd_benchmark_setup| image:: img/l2_fwd_benchmark_setup.*
 
-.. |l2_fwd_virtenv_benchmark_setup| image:: img/l2_fwd_virtenv_benchmark_setup.png
+.. |l2_fwd_virtenv_benchmark_setup| image:: img/l2_fwd_virtenv_benchmark_setup.*
diff --git a/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst b/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
index 79ba24d..73fa4df 100644
--- a/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
+++ b/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
@@ -398,6 +398,6 @@ adds rules parsed from the file into the database and build an ACL trie.
 It is important to note that the application creates an independent copy of each database for each socket CPU
 involved in the task to reduce the time for remote memory access.
 
-.. |ipv4_acl_rule| image:: img/ipv4_acl_rule.png
+.. |ipv4_acl_rule| image:: img/ipv4_acl_rule.*
 
-.. |example_rules| image:: img/example_rules.png
+.. |example_rules| image:: img/example_rules.*
diff --git a/doc/guides/sample_app_ug/load_balancer.rst b/doc/guides/sample_app_ug/load_balancer.rst
index 8ec47ae..6237633 100644
--- a/doc/guides/sample_app_ug/load_balancer.rst
+++ b/doc/guides/sample_app_ug/load_balancer.rst
@@ -242,4 +242,4 @@ are on the same or different CPU sockets, the following run-time scenarios are p
     then it has to be transmitted out by a NIC connected to socket C.
     The performance price for crossing the CPU socket boundary is paid twice for this packet.
 
-.. |load_bal_app_arch| image:: img/load_bal_app_arch.png
+.. |load_bal_app_arch| image:: img/load_bal_app_arch.*
diff --git a/doc/guides/sample_app_ug/multi_process.rst b/doc/guides/sample_app_ug/multi_process.rst
index 9797cc9..7ca71ca 100644
--- a/doc/guides/sample_app_ug/multi_process.rst
+++ b/doc/guides/sample_app_ug/multi_process.rst
@@ -775,10 +775,10 @@ so it remaps the resource to the new core ID slot.
         return 0;
     }
 
-.. |sym_multi_proc_app| image:: img/sym_multi_proc_app.png
+.. |sym_multi_proc_app| image:: img/sym_multi_proc_app.*
 
-.. |client_svr_sym_multi_proc_app| image:: img/client_svr_sym_multi_proc_app.png
+.. |client_svr_sym_multi_proc_app| image:: img/client_svr_sym_multi_proc_app.*
 
-.. |master_slave_proc| image:: img/master_slave_proc.png
+.. |master_slave_proc| image:: img/master_slave_proc.*
 
-.. |slave_proc_recov| image:: img/slave_proc_recov.png
+.. |slave_proc_recov| image:: img/slave_proc_recov.*
diff --git a/doc/guides/sample_app_ug/qos_scheduler.rst b/doc/guides/sample_app_ug/qos_scheduler.rst
index 8611eae..56326df 100644
--- a/doc/guides/sample_app_ug/qos_scheduler.rst
+++ b/doc/guides/sample_app_ug/qos_scheduler.rst
@@ -348,4 +348,4 @@ This application classifies based on the QinQ double VLAN tags and the IP destin
 
 Please refer to the "QoS Scheduler" chapter in the *DPDK Programmer's Guide* for more information about these parameters.
 
-.. |qos_sched_app_arch| image:: img/qos_sched_app_arch.png
+.. |qos_sched_app_arch| image:: img/qos_sched_app_arch.*
diff --git a/doc/guides/sample_app_ug/quota_watermark.rst b/doc/guides/sample_app_ug/quota_watermark.rst
index 7115635..e091ad9 100644
--- a/doc/guides/sample_app_ug/quota_watermark.rst
+++ b/doc/guides/sample_app_ug/quota_watermark.rst
@@ -499,8 +499,8 @@ low_watermark from the rte_memzone previously created by qw.
         low_watermark = (unsigned int *) qw_memzone->addr + sizeof(int);
     }
 
-.. |pipeline_overview| image:: img/pipeline_overview.png
+.. |pipeline_overview| image:: img/pipeline_overview.*
 
-.. |ring_pipeline_perf_setup| image:: img/ring_pipeline_perf_setup.png
+.. |ring_pipeline_perf_setup| image:: img/ring_pipeline_perf_setup.*
 
-.. |threads_pipelines| image:: img/threads_pipelines.png
+.. |threads_pipelines| image:: img/threads_pipelines.*
diff --git a/doc/guides/sample_app_ug/test_pipeline.rst b/doc/guides/sample_app_ug/test_pipeline.rst
index a5fed8a..0432942 100644
--- a/doc/guides/sample_app_ug/test_pipeline.rst
+++ b/doc/guides/sample_app_ug/test_pipeline.rst
@@ -282,4 +282,4 @@ The profile for input traffic is TCP/IPv4 packets with:
 
 *   source TCP port fixed to 0
 
-.. |test_pipeline_app| image:: img/test_pipeline_app.png
+.. |test_pipeline_app| image:: img/test_pipeline_app.*
diff --git a/doc/guides/sample_app_ug/vhost.rst b/doc/guides/sample_app_ug/vhost.rst
index fa53db6..4a6d434 100644
--- a/doc/guides/sample_app_ug/vhost.rst
+++ b/doc/guides/sample_app_ug/vhost.rst
@@ -747,12 +747,12 @@ The above message indicates that device 0 has been registered with MAC address c
 Any packets received on the NIC with these values is placed on the devices receive queue.
 When a virtio-net device transmits packets, the VLAN tag is added to the packet by the DPDK vhost sample code.
 
-.. |vhost_net_arch| image:: img/vhost_net_arch.png
+.. |vhost_net_arch| image:: img/vhost_net_arch.*
 
-.. |qemu_virtio_net| image:: img/qemu_virtio_net.png
+.. |qemu_virtio_net| image:: img/qemu_virtio_net.*
 
-.. |tx_dpdk_testpmd| image:: img/tx_dpdk_testpmd.png
+.. |tx_dpdk_testpmd| image:: img/tx_dpdk_testpmd.*
 
-.. |vhost_net_sample_app| image:: img/vhost_net_sample_app.png
+.. |vhost_net_sample_app| image:: img/vhost_net_sample_app.*
 
-.. |virtio_linux_vhost| image:: img/virtio_linux_vhost.png
+.. |virtio_linux_vhost| image:: img/virtio_linux_vhost.*
diff --git a/doc/guides/sample_app_ug/vm_power_management.rst b/doc/guides/sample_app_ug/vm_power_management.rst
index 16f44c4..2a923d8 100644
--- a/doc/guides/sample_app_ug/vm_power_management.rst
+++ b/doc/guides/sample_app_ug/vm_power_management.rst
@@ -356,6 +356,6 @@ Where {core_num} is the lcore and channel to change frequency by scaling up/down
 
   set_cpu_freq {core_num} up|down|min|max
 
-.. |vm_power_mgr_highlevel| image:: img/vm_power_mgr_highlevel.svg
+.. |vm_power_mgr_highlevel| image:: img/vm_power_mgr_highlevel.*
 
-.. |vm_power_mgr_vm_request_seq| image:: img/vm_power_mgr_vm_request_seq.svg
+.. |vm_power_mgr_vm_request_seq| image:: img/vm_power_mgr_vm_request_seq.*
diff --git a/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst b/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
index 15c783a..e5d34e1 100644
--- a/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
+++ b/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
@@ -248,4 +248,4 @@ To generate the statistics output, use the following command:
 Please note that the statistics output will appear on the terminal where the vmdq_dcb_app is running,
 rather than the terminal from which the HUP signal was sent.
 
-.. |vmdq_dcb_example| image:: img/vmdq_dcb_example.svg
+.. |vmdq_dcb_example| image:: img/vmdq_dcb_example.*
-- 
1.7.4.1

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [dpdk-dev] [PATCH v4 3/5] doc: Fix encoding of (r) character
  2015-02-03 14:11   ` [dpdk-dev] [PATCH v4 3/5] doc: Fix encoding of (r) character John McNamara
@ 2015-02-13 14:29     ` Iremonger, Bernard
  2015-02-13 15:59       ` Mcnamara, John
  2015-02-16 14:22     ` Iremonger, Bernard
  1 sibling, 1 reply; 41+ messages in thread
From: Iremonger, Bernard @ 2015-02-13 14:29 UTC (permalink / raw)
  To: Mcnamara, John, dev



> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of John McNamara
> Sent: Tuesday, February 3, 2015 2:11 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH v4 3/5] doc: Fix encoding of (r) character
> 
> Change encoding of (r) from Latin-1 to UTF8 to match the other symbols in the doc and to allow it to
> convert cleanly to PDF.
> 
> Signed-off-by: John McNamara <john.mcnamara@intel.com>
> ---
>  doc/guides/rel_notes/supported_features.rst |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/doc/guides/rel_notes/supported_features.rst
> b/doc/guides/rel_notes/supported_features.rst
> index 7936e93..d87fcaa 100644
> --- a/doc/guides/rel_notes/supported_features.rst
> +++ b/doc/guides/rel_notes/supported_features.rst
> @@ -51,7 +51,7 @@ Supported Features
> 
>      *   Intel® X710 40 Gigabit Ethernet Controller
> 
> -*   Support NIC filters in addition to flow director for Intel  1GbE and 10GbE Controllers
> +*   Support NIC filters in addition to flow director for Intel® 1GbE and 10GbE Controllers
> 
>  *   Virtualization (KVM)
> 
> --
> 1.7.4.1
Hi John,

The following error occurs  when applying this patch:

:Applying: doc: Fix encoding of (r) character
error: patch failed: doc/guides/rel_notes/supported_features.rst:51
error: doc/guides/rel_notes/supported_features.rst: patch does not apply
Patch failed at 0001 doc: Fix encoding of (r) character

There is normally an escape chararacter before the(r) character,  ®

Regards,

Bernard


^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [dpdk-dev] [PATCH v4 3/5] doc: Fix encoding of (r) character
  2015-02-13 14:29     ` Iremonger, Bernard
@ 2015-02-13 15:59       ` Mcnamara, John
  2015-02-13 16:42         ` Iremonger, Bernard
  0 siblings, 1 reply; 41+ messages in thread
From: Mcnamara, John @ 2015-02-13 15:59 UTC (permalink / raw)
  To: Iremonger, Bernard, dev

> -----Original Message-----
> From: Iremonger, Bernard
> Sent: Friday, February 13, 2015 2:30 PM
> To: Mcnamara, John; dev@dpdk.org
> Subject: RE: [dpdk-dev] [PATCH v4 3/5] doc: Fix encoding of (r) character
> 
> The following error occurs  when applying this patch:
> 
> :Applying: doc: Fix encoding of (r) character
> error: patch failed: doc/guides/rel_notes/supported_features.rst:51
> error: doc/guides/rel_notes/supported_features.rst: patch does not apply
> Patch failed at 0001 doc: Fix encoding of (r) character
> 

Hi Bernard,

That part of the patchset contains a fix for an non-UTF8 character so it probably needs to saved/transferred carefully. Email clients may well mess it up.

It should apply cleanly though. I just tried it with a clean clone and the pwcient patchwork client:

    $ git clone http://dpdk.org/git/dpdk
    Cloning into 'dpdk'...

    $ cd dpdk

    $ pwclient search encoding
    ID      State        Name
    --      -----        ----
    2852    Superseded   [dpdk-dev,v2,3/4] doc: Fix encoding of (r) character
    2914    Superseded   [dpdk-dev,v3,3/4] doc: Fix encoding of (r) character
    2930    New          [dpdk-dev,v4,3/5] doc: Fix encoding of (r) character
   
    $ pwclient git-am 2930
    Applying patch #2930 using 'git am'
    Description: [dpdk-dev,v4,3/5] doc: Fix encoding of (r) character
    Applying: doc: Fix encoding of (r) character

    $ git log -1 --oneline
    eca8a8c doc: Fix encoding of (r) character

John.
-- 





^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [dpdk-dev] [PATCH v4 3/5] doc: Fix encoding of (r) character
  2015-02-13 15:59       ` Mcnamara, John
@ 2015-02-13 16:42         ` Iremonger, Bernard
  0 siblings, 0 replies; 41+ messages in thread
From: Iremonger, Bernard @ 2015-02-13 16:42 UTC (permalink / raw)
  To: Mcnamara, John, dev



> -----Original Message-----
> From: Mcnamara, John
> Sent: Friday, February 13, 2015 3:59 PM
> To: Iremonger, Bernard; dev@dpdk.org
> Subject: RE: [dpdk-dev] [PATCH v4 3/5] doc: Fix encoding of (r) character
> 
> > -----Original Message-----
> > From: Iremonger, Bernard
> > Sent: Friday, February 13, 2015 2:30 PM
> > To: Mcnamara, John; dev@dpdk.org
> > Subject: RE: [dpdk-dev] [PATCH v4 3/5] doc: Fix encoding of (r)
> > character
> >
> > The following error occurs  when applying this patch:
> >
> > :Applying: doc: Fix encoding of (r) character
> > error: patch failed: doc/guides/rel_notes/supported_features.rst:51
> > error: doc/guides/rel_notes/supported_features.rst: patch does not
> > apply Patch failed at 0001 doc: Fix encoding of (r) character
> >
> 
> Hi Bernard,
> 
> That part of the patchset contains a fix for an non-UTF8 character so it probably needs to
> saved/transferred carefully. Email clients may well mess it up.
> 
> It should apply cleanly though. I just tried it with a clean clone and the pwcient patchwork client:
> 
>     $ git clone http://dpdk.org/git/dpdk
>     Cloning into 'dpdk'...
> 
>     $ cd dpdk
> 
>     $ pwclient search encoding
>     ID      State        Name
>     --      -----        ----
>     2852    Superseded   [dpdk-dev,v2,3/4] doc: Fix encoding of (r) character
>     2914    Superseded   [dpdk-dev,v3,3/4] doc: Fix encoding of (r) character
>     2930    New          [dpdk-dev,v4,3/5] doc: Fix encoding of (r) character
> 
>     $ pwclient git-am 2930
>     Applying patch #2930 using 'git am'
>     Description: [dpdk-dev,v4,3/5] doc: Fix encoding of (r) character
>     Applying: doc: Fix encoding of (r) character
> 
>     $ git log -1 --oneline
>     eca8a8c doc: Fix encoding of (r) character
> 
> John.
> --
> 
Hi John,
I have downloaded the patch from patchwork and it applies cleanly.
The problem seems to have been caused by my mutt email client.

Regards,

Bernard
 


^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [dpdk-dev] [PATCH v4 5/5] doc: Convert image extensions to wildcard
  2015-02-03 14:11   ` [dpdk-dev] [PATCH v4 5/5] doc: Convert image extensions to wildcard John McNamara
@ 2015-02-16 12:09     ` Iremonger, Bernard
  2015-02-16 12:43       ` Mcnamara, John
  2015-02-16 14:25     ` Iremonger, Bernard
  1 sibling, 1 reply; 41+ messages in thread
From: Iremonger, Bernard @ 2015-02-16 12:09 UTC (permalink / raw)
  To: Mcnamara, John, dev



> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of John McNamara
> Sent: Tuesday, February 3, 2015 2:11 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH v4 5/5] doc: Convert image extensions to wildcard
> 
> Changed all image.svg and image.png extensions to image.* This allows Sphinx to decide the
> appropriate image type from the available image options.
> 
> Signed-off-by: John McNamara <john.mcnamara@intel.com>
> ---
>  doc/guides/prog_guide/env_abstraction_layer.rst    |    2 +-
>  .../prog_guide/i40e_ixgbe_igb_virt_func_drv.rst    |    8 ++--
>  .../intel_dpdk_xen_based_packet_switch_sol.rst     |    6 ++--
>  doc/guides/prog_guide/ivshmem_lib.rst              |    2 +-
>  doc/guides/prog_guide/kernel_nic_interface.rst     |    8 ++--
>  .../libpcap_ring_based_poll_mode_drv.rst           |    2 +-
>  .../prog_guide/link_bonding_poll_mode_drv_lib.rst  |   14 ++++----
>  doc/guides/prog_guide/lpm6_lib.rst                 |    2 +-
>  doc/guides/prog_guide/lpm_lib.rst                  |    2 +-
>  doc/guides/prog_guide/malloc_lib.rst               |    2 +-
>  doc/guides/prog_guide/mbuf_lib.rst                 |    4 +-
>  doc/guides/prog_guide/mempool_lib.rst              |    6 ++--
>  doc/guides/prog_guide/multi_proc_support.rst       |    2 +-
>  doc/guides/prog_guide/overview.rst                 |    2 +-
>  doc/guides/prog_guide/packet_distrib_lib.rst       |    4 +-
>  doc/guides/prog_guide/packet_framework.rst         |   14 ++++----
>  .../poll_mode_drv_emulated_virtio_nic.rst          |    6 ++--
>  .../poll_mode_drv_paravirtual_vmxnets_nic.rst      |    6 ++--
>  doc/guides/prog_guide/qos_framework.rst            |   36 ++++++++++----------
>  doc/guides/prog_guide/ring_lib.rst                 |   28 ++++++++--------
>  doc/guides/sample_app_ug/dist_app.rst              |    4 +-
>  doc/guides/sample_app_ug/exception_path.rst        |    2 +-
>  doc/guides/sample_app_ug/intel_quickassist.rst     |    2 +-
>  doc/guides/sample_app_ug/kernel_nic_interface.rst  |    4 +-
>  .../sample_app_ug/l2_forward_real_virtual.rst      |    4 +-
>  .../sample_app_ug/l3_forward_access_ctrl.rst       |    4 +-
>  doc/guides/sample_app_ug/load_balancer.rst         |    2 +-
>  doc/guides/sample_app_ug/multi_process.rst         |    8 ++--
>  doc/guides/sample_app_ug/qos_scheduler.rst         |    2 +-
>  doc/guides/sample_app_ug/quota_watermark.rst       |    6 ++--
>  doc/guides/sample_app_ug/test_pipeline.rst         |    2 +-
>  doc/guides/sample_app_ug/vhost.rst                 |   10 +++---
>  doc/guides/sample_app_ug/vm_power_management.rst   |    4 +-
>  doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst   |    2 +-
>  34 files changed, 106 insertions(+), 106 deletions(-)
> 
> diff --git a/doc/guides/prog_guide/env_abstraction_layer.rst
> b/doc/guides/prog_guide/env_abstraction_layer.rst
> index 231e266..45791b6 100644
> --- a/doc/guides/prog_guide/env_abstraction_layer.rst
> +++ b/doc/guides/prog_guide/env_abstraction_layer.rst
> @@ -212,4 +212,4 @@ Memory zones can be reserved with specific start address alignment by
> supplying  The alignment value should be a power of two and not less than the cache line size (64
> bytes).
>  Memory zones can also be reserved from either 2 MB or 1 GB hugepages, provided that both are
> available on the system.
> 
> -.. |linuxapp_launch| image:: img/linuxapp_launch.svg
> +.. |linuxapp_launch| image:: img/linuxapp_launch.*
> diff --git a/doc/guides/prog_guide/i40e_ixgbe_igb_virt_func_drv.rst
> b/doc/guides/prog_guide/i40e_ixgbe_igb_virt_func_drv.rst
> index 41e316e..a984379 100755
> --- a/doc/guides/prog_guide/i40e_ixgbe_igb_virt_func_drv.rst
> +++ b/doc/guides/prog_guide/i40e_ixgbe_igb_virt_func_drv.rst
> @@ -542,10 +542,10 @@ which belongs to the destination VF on the VM.
> 
>  |inter_vm_comms|
> 
> -.. |perf_benchmark| image:: img/perf_benchmark.png
> +.. |perf_benchmark| image:: img/perf_benchmark.*
> 
> -.. |single_port_nic| image:: img/single_port_nic.png
> +.. |single_port_nic| image:: img/single_port_nic.*
> 
> -.. |inter_vm_comms| image:: img/inter_vm_comms.png
> +.. |inter_vm_comms| image:: img/inter_vm_comms.*
> 
> -.. |fast_pkt_proc| image:: img/fast_pkt_proc.png
> +.. |fast_pkt_proc| image:: img/fast_pkt_proc.*
> diff --git a/doc/guides/prog_guide/intel_dpdk_xen_based_packet_switch_sol.rst
> b/doc/guides/prog_guide/intel_dpdk_xen_based_packet_switch_sol.rst
> index 1f1e04f..47841cd 100644
> --- a/doc/guides/prog_guide/intel_dpdk_xen_based_packet_switch_sol.rst
> +++ b/doc/guides/prog_guide/intel_dpdk_xen_based_packet_switch_sol.rst
> @@ -457,8 +457,8 @@ The packet flow is:
> 
>  packet generator->Virtio in guest VM1->switching backend->Virtio in guest VM2->switching backend-
> >wire
> 
> -.. |grant_table| image:: img/grant_table.png
> +.. |grant_table| image:: img/grant_table.*
> 
> -.. |grant_refs| image:: img/grant_refs.png
> +.. |grant_refs| image:: img/grant_refs.*
> 
> -.. |dpdk_xen_pkt_switch| image:: img/dpdk_xen_pkt_switch.png
> +.. |dpdk_xen_pkt_switch| image:: img/dpdk_xen_pkt_switch.*
> diff --git a/doc/guides/prog_guide/ivshmem_lib.rst b/doc/guides/prog_guide/ivshmem_lib.rst
> index cd2f595..c76d2b3 100644
> --- a/doc/guides/prog_guide/ivshmem_lib.rst
> +++ b/doc/guides/prog_guide/ivshmem_lib.rst
> @@ -155,4 +155,4 @@ As a result, if the user wishes to shut down or restart the IVSHMEM host
> applica  it is not enough to simply shut the application down.
>  The virtual machine must also be shut down (if not, it will hold onto outdated host data).
> 
> -.. |ivshmem| image:: img/ivshmem.png
> +.. |ivshmem| image:: img/ivshmem.*
> diff --git a/doc/guides/prog_guide/kernel_nic_interface.rst
> b/doc/guides/prog_guide/kernel_nic_interface.rst
> index 0276019..6b1a16f 100644
> --- a/doc/guides/prog_guide/kernel_nic_interface.rst
> +++ b/doc/guides/prog_guide/kernel_nic_interface.rst
> @@ -281,10 +281,10 @@ Even if the option is turned on, kni-vhost will ignore the information that the
> When working with legacy virtio on the guest, it is better to turn off unsupported offload features
> using ethtool -K.
>  Otherwise, there may be problems such as an incorrect L4 checksum error.
> 
> -.. |kni_traffic_flow| image:: img/kni_traffic_flow.png
> +.. |kni_traffic_flow| image:: img/kni_traffic_flow.*
> 
> -.. |vhost_net_arch| image:: img/vhost_net_arch.png
> +.. |vhost_net_arch| image:: img/vhost_net_arch.*
> 
> -.. |pkt_flow_kni| image:: img/pkt_flow_kni.png
> +.. |pkt_flow_kni| image:: img/pkt_flow_kni.*
> 
> -.. |kernel_nic_intf| image:: img/kernel_nic_intf.png
> +.. |kernel_nic_intf| image:: img/kernel_nic_intf.*
> diff --git a/doc/guides/prog_guide/libpcap_ring_based_poll_mode_drv.rst
> b/doc/guides/prog_guide/libpcap_ring_based_poll_mode_drv.rst
> index 249a2e0..6e14fd1 100644
> --- a/doc/guides/prog_guide/libpcap_ring_based_poll_mode_drv.rst
> +++ b/doc/guides/prog_guide/libpcap_ring_based_poll_mode_drv.rst
> @@ -268,4 +268,4 @@ while the rte_ring specific functions are direct function calls in the code and
>     then calling rte_eth_rx_queue_setup() / tx_queue_setup() for each of those queues and
>     finally calling rte_eth_dev_start() to allow transmission and reception of packets to begin.
> 
> -.. |forward_stats| image:: img/forward_stats.png
> +.. |forward_stats| image:: img/forward_stats.*
> diff --git a/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst
> b/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst
> index cf6a6fa..24a1a36 100644
> --- a/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst
> +++ b/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst
> @@ -434,10 +434,10 @@ Create a bonded device in balance mode with two slaves specified by their
> PCI ad
> 
>      $RTE_TARGET/app/testpmd -c '0xf' -n 4 --vdev 'eth_bond0,mode=2,
> slave=0000:00a:00.01,slave=0000:004:00.00,xmit_policy=l34' -- --port-topology=chained
> 
> -.. |bond-overview| image:: img/bond-overview.svg -.. |bond-mode-0| image:: img/bond-mode-
> 0.svg -.. |bond-mode-1| image:: img/bond-mode-1.svg -.. |bond-mode-2| image:: img/bond-mode-
> 2.svg -.. |bond-mode-3| image:: img/bond-mode-3.svg -.. |bond-mode-4| image:: img/bond-mode-
> 4.svg -.. |bond-mode-5| image:: img/bond-mode-5.svg
> +.. |bond-overview| image:: img/bond-overview.* .. |bond-mode-0| image::
> +img/bond-mode-0.* .. |bond-mode-1| image:: img/bond-mode-1.* ..
> +|bond-mode-2| image:: img/bond-mode-2.* .. |bond-mode-3| image::
> +img/bond-mode-3.* .. |bond-mode-4| image:: img/bond-mode-4.* ..
> +|bond-mode-5| image:: img/bond-mode-5.*
> diff --git a/doc/guides/prog_guide/lpm6_lib.rst b/doc/guides/prog_guide/lpm6_lib.rst
> index dd5d064..abc5adb 100644
> --- a/doc/guides/prog_guide/lpm6_lib.rst
> +++ b/doc/guides/prog_guide/lpm6_lib.rst
> @@ -232,4 +232,4 @@ Use Case: IPv6 Forwarding
> 
>  The LPM algorithm is used to implement the Classless Inter-Domain Routing (CIDR) strategy used by
> routers implementing IP forwarding.
> 
> -.. |tbl24_tbl8_tbl8| image:: img/tbl24_tbl8_tbl8.png
> +.. |tbl24_tbl8_tbl8| image:: img/tbl24_tbl8_tbl8.*
> diff --git a/doc/guides/prog_guide/lpm_lib.rst b/doc/guides/prog_guide/lpm_lib.rst
> index d1de87a..692e37f 100644
> --- a/doc/guides/prog_guide/lpm_lib.rst
> +++ b/doc/guides/prog_guide/lpm_lib.rst
> @@ -220,4 +220,4 @@ References
>  *   Pankaj Gupta, Algorithms for Routing Lookups and Packet Classification, PhD Thesis, Stanford
> University,
>      2000  (`http://klamath.stanford.edu/~pankaj/thesis/ thesis_1sided.pdf
> <http://klamath.stanford.edu/~pankaj/thesis/%20thesis_1sided.pdf>`_ )
> 
> -.. |tbl24_tbl8| image:: img/tbl24_tbl8.png
> +.. |tbl24_tbl8| image:: img/tbl24_tbl8.*
> diff --git a/doc/guides/prog_guide/malloc_lib.rst b/doc/guides/prog_guide/malloc_lib.rst
> index 63d87d9..b9298f8 100644
> --- a/doc/guides/prog_guide/malloc_lib.rst
> +++ b/doc/guides/prog_guide/malloc_lib.rst
> @@ -233,4 +233,4 @@ and if so, they are merged with the current elements.
>  This means that we can never have two free memory blocks adjacent to one another,  they are
> always merged into a single block.
> 
> -.. |malloc_heap| image:: img/malloc_heap.png
> +.. |malloc_heap| image:: img/malloc_heap.*
> diff --git a/doc/guides/prog_guide/mbuf_lib.rst b/doc/guides/prog_guide/mbuf_lib.rst
> index 3d59e96..43e6f3a 100644
> --- a/doc/guides/prog_guide/mbuf_lib.rst
> +++ b/doc/guides/prog_guide/mbuf_lib.rst
> @@ -189,6 +189,6 @@ Use Cases
> 
>  All networking application should use mbufs to transport network packets.
> 
> -.. |mbuf1| image:: img/mbuf1.svg
> +.. |mbuf1| image:: img/mbuf1.*
> 
> -.. |mbuf2| image:: img/mbuf2.svg
> +.. |mbuf2| image:: img/mbuf2.*
> diff --git a/doc/guides/prog_guide/mempool_lib.rst b/doc/guides/prog_guide/mempool_lib.rst
> index b4704a7..f9b7cfe 100644
> --- a/doc/guides/prog_guide/mempool_lib.rst
> +++ b/doc/guides/prog_guide/mempool_lib.rst
> @@ -141,8 +141,8 @@ Below are some examples:
> 
>  *   Any application that needs to allocate fixed-sized objects in the data plane and that will be
> continuously utilized by the system.
> 
> -.. |memory-management| image:: img/memory-management.svg
> +.. |memory-management| image:: img/memory-management.*
> 
> -.. |memory-management2| image:: img/memory-management2.svg
> +.. |memory-management2| image:: img/memory-management2.*
> 
> -.. |mempool| image:: img/mempool.svg
> +.. |mempool| image:: img/mempool.*
> diff --git a/doc/guides/prog_guide/multi_proc_support.rst
> b/doc/guides/prog_guide/multi_proc_support.rst
> index deaae47..25a6056 100644
> --- a/doc/guides/prog_guide/multi_proc_support.rst
> +++ b/doc/guides/prog_guide/multi_proc_support.rst
> @@ -200,4 +200,4 @@ instead of the functions which do the hashing internally, such as
> rte_hash_add()
>      If the number of required DPDK processes exceeds that of the number of available HPET
> comparators,
>      the TSC (which is the default timer in this release) must be used as a time source across all
> processes instead of the HPET.
> 
> -.. |multi_process_memory| image:: img/multi_process_memory.svg
> +.. |multi_process_memory| image:: img/multi_process_memory.*
> diff --git a/doc/guides/prog_guide/overview.rst b/doc/guides/prog_guide/overview.rst
> index 6603409..062d923 100644
> --- a/doc/guides/prog_guide/overview.rst
> +++ b/doc/guides/prog_guide/overview.rst
> @@ -204,4 +204,4 @@ The librte_net library is a collection of IP protocol definitions and convenienc  It
> is based on code from the FreeBSD* IP stack and contains protocol numbers (for use in IP headers),
> IP-related macros, IPv4/IPv6 header structures and TCP, UDP and SCTP header structures.
> 
> -.. |architecture-overview| image:: img/architecture-overview.svg
> +.. |architecture-overview| image:: img/architecture-overview.*
> diff --git a/doc/guides/prog_guide/packet_distrib_lib.rst
> b/doc/guides/prog_guide/packet_distrib_lib.rst
> index 18baf55..767accc 100644
> --- a/doc/guides/prog_guide/packet_distrib_lib.rst
> +++ b/doc/guides/prog_guide/packet_distrib_lib.rst
> @@ -111,6 +111,6 @@ i.e. to save power at times of lighter load,  it is possible to have a worker stop
> processing packets by calling "rte_distributor_return_pkt()" to indicate that  it has finished the current
> packet and does not want a new one.
> 
> -.. |packet_distributor1| image:: img/packet_distributor1.png
> +.. |packet_distributor1| image:: img/packet_distributor1.*
> 
> -.. |packet_distributor2| image:: img/packet_distributor2.png
> +.. |packet_distributor2| image:: img/packet_distributor2.*
> diff --git a/doc/guides/prog_guide/packet_framework.rst
> b/doc/guides/prog_guide/packet_framework.rst
> index 537811b..8e8e32f 100644
> --- a/doc/guides/prog_guide/packet_framework.rst
> +++ b/doc/guides/prog_guide/packet_framework.rst
> @@ -1168,16 +1168,16 @@ with all the implementations sharing the same API: pure SW
> implementation (no ac  The selection between these implementations could be done at build time or
> at run-time (recommended), based on which accelerators are present in the system,  with no
> application changes required.
> 
> -.. |figure33| image:: img/figure33.png
> +.. |figure33| image:: img/figure33.*
> 
> -.. |figure35| image:: img/figure35.png
> +.. |figure35| image:: img/figure35.*
> 
> -.. |figure39| image:: img/figure39.png
> +.. |figure39| image:: img/figure39.*
> 
> -.. |figure34| image:: img/figure34.png
> +.. |figure34| image:: img/figure34.*
> 
> -.. |figure32| image:: img/figure32.png
> +.. |figure32| image:: img/figure32.*
> 
> -.. |figure37| image:: img/figure37.png
> +.. |figure37| image:: img/figure37.*
> 
> -.. |figure38| image:: img/figure38.png
> +.. |figure38| image:: img/figure38.*
> diff --git a/doc/guides/prog_guide/poll_mode_drv_emulated_virtio_nic.rst
> b/doc/guides/prog_guide/poll_mode_drv_emulated_virtio_nic.rst
> index 86f4f60..1daf280 100644
> --- a/doc/guides/prog_guide/poll_mode_drv_emulated_virtio_nic.rst
> +++ b/doc/guides/prog_guide/poll_mode_drv_emulated_virtio_nic.rst
> @@ -205,8 +205,8 @@ The packet transmission flow is:
> 
>      IXIA packet generator-> Guest VM 82599 VF port1 rx burst-> Guest VM virtio port 0 tx burst-> tap ->
> Linux Bridge->82599 PF-> IXIA packet generator
> 
> -.. |host_vm_comms| image:: img/host_vm_comms.png
> +.. |host_vm_comms| image:: img/host_vm_comms.*
> 
> -.. |console| image:: img/console.png
> +.. |console| image:: img/console.*
> 
> -.. |host_vm_comms_qemu| image:: img/host_vm_comms_qemu.png
> +.. |host_vm_comms_qemu| image:: img/host_vm_comms_qemu.*
> diff --git a/doc/guides/prog_guide/poll_mode_drv_paravirtual_vmxnets_nic.rst
> b/doc/guides/prog_guide/poll_mode_drv_paravirtual_vmxnets_nic.rst
> index e48bc13..fe4d6f1 100644
> --- a/doc/guides/prog_guide/poll_mode_drv_paravirtual_vmxnets_nic.rst
> +++ b/doc/guides/prog_guide/poll_mode_drv_paravirtual_vmxnets_nic.rst
> @@ -177,8 +177,8 @@ In this example, the packet flow path is:
>      Packet generator -> 82599 VF -> Guest VM 82599 port 0 rx burst -> Guest VM VMXNET3 port 1 tx
> burst -> VMXNET3
>      device -> VMware ESXi vSwitch -> VMXNET3 device -> Guest VM VMXNET3 port 0 rx burst -> Guest
> VM 82599 VF port 1 tx burst -> 82599 VF -> Packet generator
> 
> -.. |vm_vm_comms| image:: img/vm_vm_comms.png
> +.. |vm_vm_comms| image:: img/vm_vm_comms.*
> 
> -.. |vmxnet3_int| image:: img/vmxnet3_int.png
> +.. |vmxnet3_int| image:: img/vmxnet3_int.*
> 
> -.. |vswitch_vm| image:: img/vswitch_vm.png
> +.. |vswitch_vm| image:: img/vswitch_vm.*
> diff --git a/doc/guides/prog_guide/qos_framework.rst b/doc/guides/prog_guide/qos_framework.rst
> index 087f3c4..b609841 100644
> --- a/doc/guides/prog_guide/qos_framework.rst
> +++ b/doc/guides/prog_guide/qos_framework.rst
> @@ -1728,38 +1728,38 @@ For each input packet, the steps for the srTCM / trTCM algorithms are:
>      When the output color is not red, a number of tokens equal to the length of the IP packet are
>      subtracted from the C or E /P or both buckets, depending on the algorithm and the output color of
> the packet.
> 
> -.. |flow_tru_droppper| image:: img/flow_tru_droppper.png
> +.. |flow_tru_droppper| image:: img/flow_tru_droppper.*
> 
> -.. |drop_probability_graph| image:: img/drop_probability_graph.png
> +.. |drop_probability_graph| image:: img/drop_probability_graph.*
> 
> -.. |drop_probability_eq3| image:: img/drop_probability_eq3.png
> +.. |drop_probability_eq3| image:: img/drop_probability_eq3.*
> 
> -.. |eq2_expression| image:: img/eq2_expression.png
> +.. |eq2_expression| image:: img/eq2_expression.*
> 
> -.. |drop_probability_eq4| image:: img/drop_probability_eq4.png
> +.. |drop_probability_eq4| image:: img/drop_probability_eq4.*
> 
> -.. |pkt_drop_probability| image:: img/pkt_drop_probability.png
> +.. |pkt_drop_probability| image:: img/pkt_drop_probability.*
> 
> -.. |pkt_proc_pipeline_qos| image:: img/pkt_proc_pipeline_qos.png
> +.. |pkt_proc_pipeline_qos| image:: img/pkt_proc_pipeline_qos.*
> 
> -.. |ex_data_flow_tru_dropper| image:: img/ex_data_flow_tru_dropper.png
> +.. |ex_data_flow_tru_dropper| image:: img/ex_data_flow_tru_dropper.*
> 
> -.. |ewma_filter_eq_1| image:: img/ewma_filter_eq_1.png
> +.. |ewma_filter_eq_1| image:: img/ewma_filter_eq_1.*
> 
> -.. |ewma_filter_eq_2| image:: img/ewma_filter_eq_2.png
> +.. |ewma_filter_eq_2| image:: img/ewma_filter_eq_2.*
> 
> -.. |data_struct_per_port| image:: img/data_struct_per_port.png
> +.. |data_struct_per_port| image:: img/data_struct_per_port.*
> 
> -.. |prefetch_pipeline| image:: img/prefetch_pipeline.png
> +.. |prefetch_pipeline| image:: img/prefetch_pipeline.*
> 
> -.. |pipe_prefetch_sm| image:: img/pipe_prefetch_sm.png
> +.. |pipe_prefetch_sm| image:: img/pipe_prefetch_sm.*
> 
> -.. |blk_diag_dropper| image:: img/blk_diag_dropper.png
> +.. |blk_diag_dropper| image:: img/blk_diag_dropper.*
> 
> -.. |m_definition| image:: img/m_definition.png
> +.. |m_definition| image:: img/m_definition.*
> 
> -.. |eq2_factor| image:: img/eq2_factor.png
> +.. |eq2_factor| image:: img/eq2_factor.*
> 
> -.. |sched_hier_per_port| image:: img/sched_hier_per_port.png
> +.. |sched_hier_per_port| image:: img/sched_hier_per_port.*
> 
> -.. |hier_sched_blk| image:: img/hier_sched_blk.png
> +.. |hier_sched_blk| image:: img/hier_sched_blk.*
> diff --git a/doc/guides/prog_guide/ring_lib.rst b/doc/guides/prog_guide/ring_lib.rst
> index 95f773e..8547b38 100644
> --- a/doc/guides/prog_guide/ring_lib.rst
> +++ b/doc/guides/prog_guide/ring_lib.rst
> @@ -347,30 +347,30 @@ References
> 
>      *   `Linux Lockless Ring Buffer Design <http://lwn.net/Articles/340400/>`_
> 
> -.. |ring1| image:: img/ring1.svg
> +.. |ring1| image:: img/ring1.*
> 
> -.. |ring-enqueue1| image:: img/ring-enqueue1.svg
> +.. |ring-enqueue1| image:: img/ring-enqueue1.*
> 
> -.. |ring-enqueue2| image:: img/ring-enqueue2.svg
> +.. |ring-enqueue2| image:: img/ring-enqueue2.*
> 
> -.. |ring-enqueue3| image:: img/ring-enqueue3.svg
> +.. |ring-enqueue3| image:: img/ring-enqueue3.*
> 
> -.. |ring-dequeue1| image:: img/ring-dequeue1.svg
> +.. |ring-dequeue1| image:: img/ring-dequeue1.*
> 
> -.. |ring-dequeue2| image:: img/ring-dequeue2.svg
> +.. |ring-dequeue2| image:: img/ring-dequeue2.*
> 
> -.. |ring-dequeue3| image:: img/ring-dequeue3.svg
> +.. |ring-dequeue3| image:: img/ring-dequeue3.*
> 
> -.. |ring-mp-enqueue1| image:: img/ring-mp-enqueue1.svg
> +.. |ring-mp-enqueue1| image:: img/ring-mp-enqueue1.*
> 
> -.. |ring-mp-enqueue2| image:: img/ring-mp-enqueue2.svg
> +.. |ring-mp-enqueue2| image:: img/ring-mp-enqueue2.*
> 
> -.. |ring-mp-enqueue3| image:: img/ring-mp-enqueue3.svg
> +.. |ring-mp-enqueue3| image:: img/ring-mp-enqueue3.*
> 
> -.. |ring-mp-enqueue4| image:: img/ring-mp-enqueue4.svg
> +.. |ring-mp-enqueue4| image:: img/ring-mp-enqueue4.*
> 
> -.. |ring-mp-enqueue5| image:: img/ring-mp-enqueue5.svg
> +.. |ring-mp-enqueue5| image:: img/ring-mp-enqueue5.*
> 
> -.. |ring-modulo1| image:: img/ring-modulo1.svg
> +.. |ring-modulo1| image:: img/ring-modulo1.*
> 
> -.. |ring-modulo2| image:: img/ring-modulo2.svg
> +.. |ring-modulo2| image:: img/ring-modulo2.*
> diff --git a/doc/guides/sample_app_ug/dist_app.rst b/doc/guides/sample_app_ug/dist_app.rst
> index 5767e3f..bcff0dd 100644
> --- a/doc/guides/sample_app_ug/dist_app.rst
> +++ b/doc/guides/sample_app_ug/dist_app.rst
> @@ -172,6 +172,6 @@ Sample Application. See Section 9.4.4, "RX Queue Initialization".
>  TX queue initialization is done in the same way as it is done in the L2 Forwarding  Sample Application.
> See Section 9.4.5, "TX Queue Initialization".
> 
> -.. |dist_perf| image:: img/dist_perf.svg
> +.. |dist_perf| image:: img/dist_perf.*
> 
> -.. |dist_app| image:: img/dist_app.svg
> +.. |dist_app| image:: img/dist_app.*
> diff --git a/doc/guides/sample_app_ug/exception_path.rst
> b/doc/guides/sample_app_ug/exception_path.rst
> index 0b71f9e..6c06959 100644
> --- a/doc/guides/sample_app_ug/exception_path.rst
> +++ b/doc/guides/sample_app_ug/exception_path.rst
> @@ -327,4 +327,4 @@ To remove bridges and persistent TAP interfaces, the following commands are
> used
>      brctl delbr br0
>      openvpn --rmtun --dev tap_dpdk_00
> 
> -.. |exception_path_example| image:: img/exception_path_example.svg
> +.. |exception_path_example| image:: img/exception_path_example.*
> diff --git a/doc/guides/sample_app_ug/intel_quickassist.rst
> b/doc/guides/sample_app_ug/intel_quickassist.rst
> index d063f08..7f55282 100644
> --- a/doc/guides/sample_app_ug/intel_quickassist.rst
> +++ b/doc/guides/sample_app_ug/intel_quickassist.rst
> @@ -221,4 +221,4 @@ performing AES-CBC-128 encryption with AES-XCBC-MAC-96 hash, the
> following setti  Refer to the *DPDK Test Report* for more examples of traffic generator setup and the
> application startup command lines.
>  If no errors are generated in response to the startup commands, the application is running correctly.
> 
> -.. |quickassist_block_diagram| image:: img/quickassist_block_diagram.png
> +.. |quickassist_block_diagram| image:: img/quickassist_block_diagram.*
> diff --git a/doc/guides/sample_app_ug/kernel_nic_interface.rst
> b/doc/guides/sample_app_ug/kernel_nic_interface.rst
> index e32fbbf..d6876e2 100644
> --- a/doc/guides/sample_app_ug/kernel_nic_interface.rst
> +++ b/doc/guides/sample_app_ug/kernel_nic_interface.rst
> @@ -75,7 +75,7 @@ The packet flow through the Kernel NIC Interface application is as shown in the
> 
>  **Figure 2. Kernel NIC Application Packet Flow**
> 
> -.. image3_png has been renamed to kernel_nic.png
> +.. image3_png has been renamed to kernel_nic.*
> 
>  |kernel_nic|
> 
> @@ -617,4 +617,4 @@ Currently, setting a new MTU and configuring the network interface (up/
> down) ar
>          return ret;
>      }
> 
> -.. |kernel_nic| image:: img/kernel_nic.png
> +.. |kernel_nic| image:: img/kernel_nic.*
> diff --git a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
> b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
> index f9360c4..234d71d 100644
> --- a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
> +++ b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
> @@ -527,6 +527,6 @@ however it improves performance:
>          prev_tsc = cur_tsc;
>      }
> 
> -.. |l2_fwd_benchmark_setup| image:: img/l2_fwd_benchmark_setup.svg
> +.. |l2_fwd_benchmark_setup| image:: img/l2_fwd_benchmark_setup.*
> 
> -.. |l2_fwd_virtenv_benchmark_setup| image:: img/l2_fwd_virtenv_benchmark_setup.png
> +.. |l2_fwd_virtenv_benchmark_setup| image::
> +img/l2_fwd_virtenv_benchmark_setup.*
> diff --git a/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
> b/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
> index 79ba24d..73fa4df 100644
> --- a/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
> +++ b/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
> @@ -398,6 +398,6 @@ adds rules parsed from the file into the database and build an ACL trie.
>  It is important to note that the application creates an independent copy of each database for each
> socket CPU  involved in the task to reduce the time for remote memory access.
> 
> -.. |ipv4_acl_rule| image:: img/ipv4_acl_rule.png
> +.. |ipv4_acl_rule| image:: img/ipv4_acl_rule.*
> 
> -.. |example_rules| image:: img/example_rules.png
> +.. |example_rules| image:: img/example_rules.*
> diff --git a/doc/guides/sample_app_ug/load_balancer.rst
> b/doc/guides/sample_app_ug/load_balancer.rst
> index 8ec47ae..6237633 100644
> --- a/doc/guides/sample_app_ug/load_balancer.rst
> +++ b/doc/guides/sample_app_ug/load_balancer.rst
> @@ -242,4 +242,4 @@ are on the same or different CPU sockets, the following run-time scenarios are
> p
>      then it has to be transmitted out by a NIC connected to socket C.
>      The performance price for crossing the CPU socket boundary is paid twice for this packet.
> 
> -.. |load_bal_app_arch| image:: img/load_bal_app_arch.png
> +.. |load_bal_app_arch| image:: img/load_bal_app_arch.*
> diff --git a/doc/guides/sample_app_ug/multi_process.rst
> b/doc/guides/sample_app_ug/multi_process.rst
> index 9797cc9..7ca71ca 100644
> --- a/doc/guides/sample_app_ug/multi_process.rst
> +++ b/doc/guides/sample_app_ug/multi_process.rst
> @@ -775,10 +775,10 @@ so it remaps the resource to the new core ID slot.
>          return 0;
>      }
> 
> -.. |sym_multi_proc_app| image:: img/sym_multi_proc_app.png
> +.. |sym_multi_proc_app| image:: img/sym_multi_proc_app.*
> 
> -.. |client_svr_sym_multi_proc_app| image:: img/client_svr_sym_multi_proc_app.png
> +.. |client_svr_sym_multi_proc_app| image::
> +img/client_svr_sym_multi_proc_app.*
> 
> -.. |master_slave_proc| image:: img/master_slave_proc.png
> +.. |master_slave_proc| image:: img/master_slave_proc.*
> 
> -.. |slave_proc_recov| image:: img/slave_proc_recov.png
> +.. |slave_proc_recov| image:: img/slave_proc_recov.*
> diff --git a/doc/guides/sample_app_ug/qos_scheduler.rst
> b/doc/guides/sample_app_ug/qos_scheduler.rst
> index 8611eae..56326df 100644
> --- a/doc/guides/sample_app_ug/qos_scheduler.rst
> +++ b/doc/guides/sample_app_ug/qos_scheduler.rst
> @@ -348,4 +348,4 @@ This application classifies based on the QinQ double VLAN tags and the IP
> destin
> 
>  Please refer to the "QoS Scheduler" chapter in the *DPDK Programmer's Guide* for more information
> about these parameters.
> 
> -.. |qos_sched_app_arch| image:: img/qos_sched_app_arch.png
> +.. |qos_sched_app_arch| image:: img/qos_sched_app_arch.*
> diff --git a/doc/guides/sample_app_ug/quota_watermark.rst
> b/doc/guides/sample_app_ug/quota_watermark.rst
> index 7115635..e091ad9 100644
> --- a/doc/guides/sample_app_ug/quota_watermark.rst
> +++ b/doc/guides/sample_app_ug/quota_watermark.rst
> @@ -499,8 +499,8 @@ low_watermark from the rte_memzone previously created by qw.
>          low_watermark = (unsigned int *) qw_memzone->addr + sizeof(int);
>      }
> 
> -.. |pipeline_overview| image:: img/pipeline_overview.png
> +.. |pipeline_overview| image:: img/pipeline_overview.*
> 
> -.. |ring_pipeline_perf_setup| image:: img/ring_pipeline_perf_setup.png
> +.. |ring_pipeline_perf_setup| image:: img/ring_pipeline_perf_setup.*
> 
> -.. |threads_pipelines| image:: img/threads_pipelines.png
> +.. |threads_pipelines| image:: img/threads_pipelines.*
> diff --git a/doc/guides/sample_app_ug/test_pipeline.rst
> b/doc/guides/sample_app_ug/test_pipeline.rst
> index a5fed8a..0432942 100644
> --- a/doc/guides/sample_app_ug/test_pipeline.rst
> +++ b/doc/guides/sample_app_ug/test_pipeline.rst
> @@ -282,4 +282,4 @@ The profile for input traffic is TCP/IPv4 packets with:
> 
>  *   source TCP port fixed to 0
> 
> -.. |test_pipeline_app| image:: img/test_pipeline_app.png
> +.. |test_pipeline_app| image:: img/test_pipeline_app.*
> diff --git a/doc/guides/sample_app_ug/vhost.rst b/doc/guides/sample_app_ug/vhost.rst
> index fa53db6..4a6d434 100644
> --- a/doc/guides/sample_app_ug/vhost.rst
> +++ b/doc/guides/sample_app_ug/vhost.rst
> @@ -747,12 +747,12 @@ The above message indicates that device 0 has been registered with MAC
> address c  Any packets received on the NIC with these values is placed on the devices receive queue.
>  When a virtio-net device transmits packets, the VLAN tag is added to the packet by the DPDK vhost
> sample code.
> 
> -.. |vhost_net_arch| image:: img/vhost_net_arch.png
> +.. |vhost_net_arch| image:: img/vhost_net_arch.*
> 
> -.. |qemu_virtio_net| image:: img/qemu_virtio_net.png
> +.. |qemu_virtio_net| image:: img/qemu_virtio_net.*
> 
> -.. |tx_dpdk_testpmd| image:: img/tx_dpdk_testpmd.png
> +.. |tx_dpdk_testpmd| image:: img/tx_dpdk_testpmd.*
> 
> -.. |vhost_net_sample_app| image:: img/vhost_net_sample_app.png
> +.. |vhost_net_sample_app| image:: img/vhost_net_sample_app.*
> 
> -.. |virtio_linux_vhost| image:: img/virtio_linux_vhost.png
> +.. |virtio_linux_vhost| image:: img/virtio_linux_vhost.*
> diff --git a/doc/guides/sample_app_ug/vm_power_management.rst
> b/doc/guides/sample_app_ug/vm_power_management.rst
> index 16f44c4..2a923d8 100644
> --- a/doc/guides/sample_app_ug/vm_power_management.rst
> +++ b/doc/guides/sample_app_ug/vm_power_management.rst
> @@ -356,6 +356,6 @@ Where {core_num} is the lcore and channel to change frequency by scaling
> up/down
> 
>    set_cpu_freq {core_num} up|down|min|max
> 
> -.. |vm_power_mgr_highlevel| image:: img/vm_power_mgr_highlevel.svg
> +.. |vm_power_mgr_highlevel| image:: img/vm_power_mgr_highlevel.*
> 
> -.. |vm_power_mgr_vm_request_seq| image:: img/vm_power_mgr_vm_request_seq.svg
> +.. |vm_power_mgr_vm_request_seq| image::
> +img/vm_power_mgr_vm_request_seq.*
> diff --git a/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
> b/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
> index 15c783a..e5d34e1 100644
> --- a/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
> +++ b/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
> @@ -248,4 +248,4 @@ To generate the statistics output, use the following command:
>  Please note that the statistics output will appear on the terminal where the vmdq_dcb_app is
> running,  rather than the terminal from which the HUP signal was sent.
> 
> -.. |vmdq_dcb_example| image:: img/vmdq_dcb_example.svg
> +.. |vmdq_dcb_example| image:: img/vmdq_dcb_example.*
> --
> 1.7.4.1

Hi John,

Not sure why this is  necessary.
The rte.sdkdoc.mk  file  seems to be looking for *.svg files.

Regards,

Bernard.

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [dpdk-dev] [PATCH v4 1/5] mk: Add 'make doc-pdf' target to convert guide docs to pdf
  2015-02-03 14:11   ` [dpdk-dev] [PATCH v4 1/5] mk: Add 'make doc-pdf' " John McNamara
@ 2015-02-16 12:19     ` Iremonger, Bernard
  2015-02-16 12:55       ` Mcnamara, John
  2015-02-16 14:16       ` Iremonger, Bernard
  0 siblings, 2 replies; 41+ messages in thread
From: Iremonger, Bernard @ 2015-02-16 12:19 UTC (permalink / raw)
  To: Mcnamara, John, dev



> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of John McNamara
> Sent: Tuesday, February 3, 2015 2:11 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH v4 1/5] mk: Add 'make doc-pdf' target to convert guide docs to pdf
> 
> Added make system support for building PDF versions of the guides. Requires Python Sphinx and
> TexLive Full.
> 
> Signed-off-by: John McNamara <john.mcnamara@intel.com>
> ---
>  mk/rte.sdkdoc.mk |   43 ++++++++++++++++++++++++++++++++++++++++++-
>  1 files changed, 42 insertions(+), 1 deletions(-)
> 
> diff --git a/mk/rte.sdkdoc.mk b/mk/rte.sdkdoc.mk index dabc0d6..e09628f 100644
> --- a/mk/rte.sdkdoc.mk
> +++ b/mk/rte.sdkdoc.mk
> @@ -37,13 +37,24 @@ endif
>  endif
> 
>  RTE_SPHINX_BUILD = sphinx-build
> +RTE_PDFLATEX_VERBOSE := --interaction=nonstopmode
> +
>  ifndef V
>  RTE_SPHINX_VERBOSE := -q
> +RTE_PDFLATEX_VERBOSE := --interaction=batchmode RTE_INKSCAPE_VERBOSE :=
> +> /dev/null 2>&1
>  endif
>  ifeq '$V' '0'
>  RTE_SPHINX_VERBOSE := -q
> +RTE_PDFLATEX_VERBOSE := --interaction=batchmode RTE_INKSCAPE_VERBOSE :=
> +> /dev/null 2>&1
>  endif
> 
> +RTE_GUIDE_PDFS := $(filter %/, $(wildcard $(RTE_SDK)/doc/guides/*/))
> +RTE_GUIDE_PDFS :=
> +$(RTE_GUIDE_PDFS:$(RTE_SDK)/doc/guides%=$(RTE_OUTPUT)/doc/latex/guides%
> +) RTE_GUIDE_PDFS := $(RTE_GUIDE_PDFS:%/=%.pdf) RTE_DEFAULT_DPI ?= 300
> +
>  .PHONY: help
>  help:
>  	@cat $(RTE_SDK)/doc/build-sdk-quick.txt
> @@ -53,7 +64,7 @@ help:
>  all: api-html guides-html
> 
>  .PHONY: clean
> -clean: api-html-clean guides-html-clean
> +clean: api-html-clean guides-html-clean guides-latex-clean

Hi John,

Would it be clearer to have a  guides-pdf-clean target  instead of guides-latex-clean given that there is a doc-pdf target?

Regards,

Bernard.



> 
>  .PHONY: api-html
>  api-html: api-html-clean
> @@ -83,3 +94,33 @@ guides-%:
>  	@echo 'sphinx for guides...'
>  	$(Q)$(RTE_SPHINX_BUILD) -b $* $(RTE_SPHINX_VERBOSE) \
>  		-c $(RTE_SDK)/doc/guides $(RTE_SDK)/doc/guides $(RTE_OUTPUT)/doc/$*/guides
> +
> +
> +pdf: $(RTE_GUIDE_PDFS)
> +
> +.SECONDEXPANSION:
> +# Use wildcard expansion to avoid * expansion issue with make 3.82.
> +$(RTE_OUTPUT)/doc/latex/guides/%.pdf: $$(wildcard $(RTE_SDK)/doc/guides/%/*.rst)
> +	@echo 'creating' $* 'pdf ...'
> +
> +	@# Convert the svg files to png for pdflatex.
> +	$(eval tmp_images = $(wildcard $(RTE_SDK)/doc/guides/$*/img/*.svg))
> +	$(Q)for image in $(tmp_images:.svg=); do \
> +		inkscape -d $(RTE_DEFAULT_DPI) -D -b ffffff \
> +			-f $$image.svg -e $$image.png $(RTE_INKSCAPE_VERBOSE); \
> +	done
> +
> +	@# Generate the latex files.
> +	$(Q)$(RTE_SPHINX_BUILD) -b latex $(RTE_SPHINX_VERBOSE) \
> +		-c $(RTE_SDK)/doc/guides  $(RTE_SDK)/doc/guides/$* \
> +		$(RTE_OUTPUT)/doc/latex/guides/$*
> +
> +	@# Remove the generated png files.
> +	$(Q)rm -f $(tmp_images:.svg=.png)
> +
> +	@# Generate the pdf files.
> +	$(Q)sed -i 's/LATEXOPTS =/LATEXOPTS = $(RTE_PDFLATEX_VERBOSE)/' \
> +		$(RTE_OUTPUT)/doc/latex/guides/$*/Makefile
> +	$(Q)make all-pdf -s -C $(RTE_OUTPUT)/doc/latex/guides/$*
> +
> +	$(Q)mv $(RTE_OUTPUT)/doc/latex/guides/$*/dpdk_doc.pdf $@
> --
> 1.7.4.1

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [dpdk-dev] [PATCH v4 5/5] doc: Convert image extensions to wildcard
  2015-02-16 12:09     ` Iremonger, Bernard
@ 2015-02-16 12:43       ` Mcnamara, John
  0 siblings, 0 replies; 41+ messages in thread
From: Mcnamara, John @ 2015-02-16 12:43 UTC (permalink / raw)
  To: Iremonger, Bernard, dev

> -----Original Message-----
> From: Iremonger, Bernard
> Sent: Monday, February 16, 2015 12:09 PM
> To: Mcnamara, John; dev@dpdk.org
> Subject: RE: [dpdk-dev] [PATCH v4 5/5] doc: Convert image extensions to
> wildcard
> >
> > -.. |vmdq_dcb_example| image:: img/vmdq_dcb_example.svg
> > +.. |vmdq_dcb_example| image:: img/vmdq_dcb_example.*
> > --
> > 1.7.4.1
> 
> Hi John,
> 
> Not sure why this is  necessary.
> The rte.sdkdoc.mk  file  seems to be looking for *.svg files.

Hi Bernard,

This change was is in response to Thomas's comment on the V3 version of the patch.

    http://dpdk.org/ml/archives/dev/2015-February/012249.html

Personally I preferred the V3 solution which left the RST sources untouched and fixed the SVG extensions in the Tex docs via sed.

This part of the patch has a lot of churn as a result.

John

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [dpdk-dev] [PATCH v4 1/5] mk: Add 'make doc-pdf' target to convert guide docs to pdf
  2015-02-16 12:19     ` Iremonger, Bernard
@ 2015-02-16 12:55       ` Mcnamara, John
  2015-02-16 14:16       ` Iremonger, Bernard
  1 sibling, 0 replies; 41+ messages in thread
From: Mcnamara, John @ 2015-02-16 12:55 UTC (permalink / raw)
  To: Iremonger, Bernard, dev

> -----Original Message-----
> From: Iremonger, Bernard
> Sent: Monday, February 16, 2015 12:20 PM
> To: Mcnamara, John; dev@dpdk.org
> Subject: RE: [dpdk-dev] [PATCH v4 1/5] mk: Add 'make doc-pdf' target to
> convert guide docs to pdf
> 
> >
> >  .PHONY: clean
> > -clean: api-html-clean guides-html-clean
> > +clean: api-html-clean guides-html-clean guides-latex-clean
> 
> Hi John,
> 
> Would it be clearer to have a  guides-pdf-clean target  instead of guides-
> latex-clean given that there is a doc-pdf target?

Hi Bernard,

Thomas made the same comment on an earlier patch so clearly it isn't obvious where the rule comes from:

    http://dpdk.org/ml/archives/dev/2015-January/012099.html

The eason is that it is re-using the existing clean rule. My reply is here:

    http://dpdk.org/ml/archives/dev/2015-February/012241.html

    > Sphinx creates build/doc/html and build/doc/latex directories (not /build/doc/pdf) so this just reuses the existing guides-%-clean rule.

John

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [dpdk-dev] [PATCH v4 1/5] mk: Add 'make doc-pdf' target to convert guide docs to pdf
  2015-02-16 12:19     ` Iremonger, Bernard
  2015-02-16 12:55       ` Mcnamara, John
@ 2015-02-16 14:16       ` Iremonger, Bernard
  1 sibling, 0 replies; 41+ messages in thread
From: Iremonger, Bernard @ 2015-02-16 14:16 UTC (permalink / raw)
  To: Mcnamara, John, dev

> > -----Original Message-----
> > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of John McNamara
> > Sent: Tuesday, February 3, 2015 2:11 PM
> > To: dev@dpdk.org
> > Subject: [dpdk-dev] [PATCH v4 1/5] mk: Add 'make doc-pdf' target to
> > convert guide docs to pdf
> >
> > Added make system support for building PDF versions of the guides.
> > Requires Python Sphinx and TexLive Full.
> >
> > Signed-off-by: John McNamara <john.mcnamara@intel.com>

Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [dpdk-dev] [PATCH v4 2/5] doc: Add Sphinx config to build pdf version of guides
  2015-02-03 14:11   ` [dpdk-dev] [PATCH v4 2/5] doc: Add Sphinx config to build pdf version of guides John McNamara
@ 2015-02-16 14:20     ` Iremonger, Bernard
  0 siblings, 0 replies; 41+ messages in thread
From: Iremonger, Bernard @ 2015-02-16 14:20 UTC (permalink / raw)
  To: Mcnamara, John, dev

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of John McNamara
> Sent: Tuesday, February 3, 2015 2:11 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH v4 2/5] doc: Add Sphinx config to build pdf version of guides
> 
> Add Python Sphinx config to allow conversion of guides to Latex and then PDF format.
> 
> This mainly adds metadata but also includes an override to the Latex formatter to control the font size
> in code blocks.
> 
> Signed-off-by: John McNamara <john.mcnamara@intel.com>

Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [dpdk-dev] [PATCH v4 3/5] doc: Fix encoding of (r) character
  2015-02-03 14:11   ` [dpdk-dev] [PATCH v4 3/5] doc: Fix encoding of (r) character John McNamara
  2015-02-13 14:29     ` Iremonger, Bernard
@ 2015-02-16 14:22     ` Iremonger, Bernard
  1 sibling, 0 replies; 41+ messages in thread
From: Iremonger, Bernard @ 2015-02-16 14:22 UTC (permalink / raw)
  To: Mcnamara, John, dev

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of John McNamara
> Sent: Tuesday, February 3, 2015 2:11 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH v4 3/5] doc: Fix encoding of (r) character
> 
> Change encoding of (r) from Latin-1 to UTF8 to match the other symbols in the doc and to allow it to
> convert cleanly to PDF.
> 
> Signed-off-by: John McNamara <john.mcnamara@intel.com>

Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [dpdk-dev] [PATCH v4 4/5] doc: Refactored split cell formatting in one table
  2015-02-03 14:11   ` [dpdk-dev] [PATCH v4 4/5] doc: Refactored split cell formatting in one table John McNamara
@ 2015-02-16 14:23     ` Iremonger, Bernard
  0 siblings, 0 replies; 41+ messages in thread
From: Iremonger, Bernard @ 2015-02-16 14:23 UTC (permalink / raw)
  To: Mcnamara, John, dev

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of John McNamara
> Sent: Tuesday, February 3, 2015 2:11 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH v4 4/5] doc: Refactored split cell formatting in one table
> 
> Refactored split cell in test_pipeline table to allow it to convert cleanly to PDF.
> 
> The Sphinx/Latex converter doesn't handle split cells like the
> following:
> 
>   +-------------+--------------+
>   | Header 1    | Header 2     |
>   +=============+==============+
>   |             |              |
>   |             |              |
>   +-------------+              |
>   |             |              |
>   |             |              |
>   +-------------+--------------+
> 
> Instead the table was refactored to a simpler format:
> 
>   +-------------+--------------+
>   | Header 1    | Header 2     |
>   +=============+==============+
>   |             |              |
>   |             |              |
>   +-------------+--------------+
>   |             |              |
>   |             |              |
>   +-------------+--------------+
> 
> The same information was retained in the table.
> 
> Signed-off-by: John McNamara <john.mcnamara@intel.com>

Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [dpdk-dev] [PATCH v4 5/5] doc: Convert image extensions to wildcard
  2015-02-03 14:11   ` [dpdk-dev] [PATCH v4 5/5] doc: Convert image extensions to wildcard John McNamara
  2015-02-16 12:09     ` Iremonger, Bernard
@ 2015-02-16 14:25     ` Iremonger, Bernard
  1 sibling, 0 replies; 41+ messages in thread
From: Iremonger, Bernard @ 2015-02-16 14:25 UTC (permalink / raw)
  To: Mcnamara, John, dev

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of John McNamara
> Sent: Tuesday, February 3, 2015 2:11 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH v4 5/5] doc: Convert image extensions to wildcard
> 
> Changed all image.svg and image.png extensions to image.* This allows Sphinx to decide the
> appropriate image type from the available image options.
> 
> Signed-off-by: John McNamara <john.mcnamara@intel.com>

Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [dpdk-dev] [PATCH v5 0/7] add doc-guides-pdf target
  2015-02-03 14:11 ` [dpdk-dev] [PATCH v4 0/5] doc: Add 'make pdf' target to convert guide docs to pdf John McNamara
                     ` (4 preceding siblings ...)
  2015-02-03 14:11   ` [dpdk-dev] [PATCH v4 5/5] doc: Convert image extensions to wildcard John McNamara
@ 2015-03-19 11:23   ` Thomas Monjalon
  2015-03-19 11:23     ` [dpdk-dev] [PATCH v5 1/7] doc: fix encoding of (r) character Thomas Monjalon
                       ` (7 more replies)
  5 siblings, 8 replies; 41+ messages in thread
From: Thomas Monjalon @ 2015-03-19 11:23 UTC (permalink / raw)
  To: john.mcnamara; +Cc: dev

First versions were written by John. I suggest this v5 for last changes.

This patchset adds support for creating PDF versions of the user guides.

Specifically:

    * The Programmer's Guide
    * The Linux Getting Started Guide
    * The FreeBSD Getting Started Guide
    * The Sample Applications User Guide
    * The TestPMD User Guide
    * The Release Notes

The local and online HTML documentation is very useful but we have had
internal and external requests from people who also liked the PDF
documentation in older releases.

The PDF generation is fully automated and uses the same Sphinx build system
and RST files used for the HTML docs but uses the 'latexpdf' target. In
addition to the standard Sphinx Python modules it requires the Tex/LaTeX
toolchain. For best results it requires a TexLive 'Full' installation.

The PDF documents are generated as follows:

    make doc
    # or more specifically
    make doc-guides-pdf

If you desire only HTML doc, use
    make doc-guides-html doc-api-html

V5 Changes:
    * Build PDF with HTML in generic "doc" target (not so long to build with -j)
    * Rename rules and build directory from latex to pdf
    * Split basic PDF build and tuning patches
    * Refactor rte.sdkdoc.mk changes to be aligned with HTML rules
    * Fix for Python 3
    * Remove blank pages

V4 Changes:
    * Changed RST image types to wildcard to allow Sphinx to decide
      the appropriate type.
    * Changed back to calling Sphinx generated makefile to ensure that
      the pdf files are created by Sphinx make rules.

V3 Changes:
    * Remove sub-directory config.py files and replaced them with metadata
      in the main doc/guides/conf.py file and a more generic make rule.
    * Added *.pdf targets with *.rst dependencies.
    * Call pdflatex directly (instead of from Sphinx) to control the
      verbosity of the output.

V2 Changes:
    * Removes config file duplication
    * Converts SVG files to PNG on the fly
    * Splits the patch into distinct mk/doc parts
    * Fixes issues in the RST docs that prevent PDF generation

John McNamara (5):
  doc: fix encoding of (r) character
  doc: refactor split cell formatting in table
  doc: convert image extensions to wildcard
  doc: add pdf output
  doc: tune pdf fonts

Thomas Monjalon (2):
  doc: fix version for python 3
  doc: remove blank pages in pdf

 doc/guides/conf.py                                 | 47 +++++++++++++++++++++-
 doc/guides/prog_guide/env_abstraction_layer.rst    |  2 +-
 .../prog_guide/i40e_ixgbe_igb_virt_func_drv.rst    |  8 ++--
 .../intel_dpdk_xen_based_packet_switch_sol.rst     |  6 +--
 doc/guides/prog_guide/ivshmem_lib.rst              |  2 +-
 doc/guides/prog_guide/kernel_nic_interface.rst     |  8 ++--
 .../libpcap_ring_based_poll_mode_drv.rst           |  2 +-
 .../prog_guide/link_bonding_poll_mode_drv_lib.rst  | 14 +++----
 doc/guides/prog_guide/lpm6_lib.rst                 |  2 +-
 doc/guides/prog_guide/lpm_lib.rst                  |  2 +-
 doc/guides/prog_guide/malloc_lib.rst               |  2 +-
 doc/guides/prog_guide/mbuf_lib.rst                 |  4 +-
 doc/guides/prog_guide/mempool_lib.rst              |  6 +--
 doc/guides/prog_guide/multi_proc_support.rst       |  2 +-
 doc/guides/prog_guide/overview.rst                 |  2 +-
 doc/guides/prog_guide/packet_distrib_lib.rst       |  4 +-
 doc/guides/prog_guide/packet_framework.rst         | 14 +++----
 .../poll_mode_drv_emulated_virtio_nic.rst          |  6 +--
 .../poll_mode_drv_paravirtual_vmxnets_nic.rst      |  6 +--
 doc/guides/prog_guide/qos_framework.rst            | 36 ++++++++---------
 doc/guides/prog_guide/ring_lib.rst                 | 28 ++++++-------
 doc/guides/rel_notes/supported_features.rst        |  2 +-
 doc/guides/sample_app_ug/dist_app.rst              |  4 +-
 doc/guides/sample_app_ug/exception_path.rst        |  2 +-
 doc/guides/sample_app_ug/intel_quickassist.rst     |  2 +-
 doc/guides/sample_app_ug/kernel_nic_interface.rst  |  4 +-
 .../sample_app_ug/l2_forward_real_virtual.rst      |  4 +-
 .../sample_app_ug/l3_forward_access_ctrl.rst       |  4 +-
 doc/guides/sample_app_ug/load_balancer.rst         |  2 +-
 doc/guides/sample_app_ug/multi_process.rst         |  8 ++--
 doc/guides/sample_app_ug/qos_scheduler.rst         |  2 +-
 doc/guides/sample_app_ug/quota_watermark.rst       |  6 +--
 doc/guides/sample_app_ug/test_pipeline.rst         | 34 +++++++++++-----
 doc/guides/sample_app_ug/vhost.rst                 | 10 ++---
 doc/guides/sample_app_ug/vm_power_management.rst   |  4 +-
 doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst   |  2 +-
 mk/rte.sdkdoc.mk                                   | 46 ++++++++++++++++++---
 37 files changed, 214 insertions(+), 125 deletions(-)

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [dpdk-dev] [PATCH v5 1/7] doc: fix encoding of (r) character
  2015-03-19 11:23   ` [dpdk-dev] [PATCH v5 0/7] add doc-guides-pdf target Thomas Monjalon
@ 2015-03-19 11:23     ` Thomas Monjalon
  2015-03-19 11:23     ` [dpdk-dev] [PATCH v5 2/7] doc: refactor split cell formatting in table Thomas Monjalon
                       ` (6 subsequent siblings)
  7 siblings, 0 replies; 41+ messages in thread
From: Thomas Monjalon @ 2015-03-19 11:23 UTC (permalink / raw)
  To: john.mcnamara; +Cc: dev

From: John McNamara <john.mcnamara@intel.com>

Change encoding of (r) from Latin-1 to UTF8 to match the other
symbols in the doc and to allow it to convert cleanly to PDF.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 doc/guides/rel_notes/supported_features.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/guides/rel_notes/supported_features.rst b/doc/guides/rel_notes/supported_features.rst
index 7936e93..d87fcaa 100644
--- a/doc/guides/rel_notes/supported_features.rst
+++ b/doc/guides/rel_notes/supported_features.rst
@@ -51,7 +51,7 @@ Supported Features
 
     *   Intel® X710 40 Gigabit Ethernet Controller
 
-*   Support NIC filters in addition to flow director for Intel� 1GbE and 10GbE Controllers
+*   Support NIC filters in addition to flow director for Intel® 1GbE and 10GbE Controllers
 
 *   Virtualization (KVM)
 
-- 
2.2.2

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [dpdk-dev] [PATCH v5 2/7] doc: refactor split cell formatting in table
  2015-03-19 11:23   ` [dpdk-dev] [PATCH v5 0/7] add doc-guides-pdf target Thomas Monjalon
  2015-03-19 11:23     ` [dpdk-dev] [PATCH v5 1/7] doc: fix encoding of (r) character Thomas Monjalon
@ 2015-03-19 11:23     ` Thomas Monjalon
  2015-03-19 11:23     ` [dpdk-dev] [PATCH v5 3/7] doc: convert image extensions to wildcard Thomas Monjalon
                       ` (5 subsequent siblings)
  7 siblings, 0 replies; 41+ messages in thread
From: Thomas Monjalon @ 2015-03-19 11:23 UTC (permalink / raw)
  To: john.mcnamara; +Cc: dev

From: John McNamara <john.mcnamara@intel.com>

Refactored split cell in test_pipeline table to allow it to
convert cleanly to PDF.

The Sphinx/Latex converter doesn't handle split cells like the
following:

  +-------------+--------------+
  | Header 1    | Header 2     |
  +=============+==============+
  |             |              |
  |             |              |
  +-------------+              |
  |             |              |
  |             |              |
  +-------------+--------------+

Instead the table was refactored to a simpler format:

  +-------------+--------------+
  | Header 1    | Header 2     |
  +=============+==============+
  |             |              |
  |             |              |
  +-------------+--------------+
  |             |              |
  |             |              |
  +-------------+--------------+

The same information was retained in the table.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 doc/guides/sample_app_ug/test_pipeline.rst | 32 ++++++++++++++++++++----------
 1 file changed, 22 insertions(+), 10 deletions(-)

diff --git a/doc/guides/sample_app_ug/test_pipeline.rst b/doc/guides/sample_app_ug/test_pipeline.rst
index 867a7a7..a5fed8a 100644
--- a/doc/guides/sample_app_ug/test_pipeline.rst
+++ b/doc/guides/sample_app_ug/test_pipeline.rst
@@ -137,9 +137,9 @@ For hash tables, the following parameters can be selected:
 |       |                        | entries.                                                 | hash table with the following key format:             |
 |       |                        |                                                          |                                                       |
 |       |                        |                                                          | [4-byte index, 4 bytes of 0]                          |
-+-------+------------------------+----------------------------------------------------------+                                                       |
-| 4     | hash-[spec]-8-ext      |  Extendible bucket hash table with 8-byte key size       | The action configured for all table entries is        |
-|       |                        |  and 16 million entries.                                 | "Sendto output port", with the output port index      |
+|       |                        |                                                          |                                                       |
+|       |                        |                                                          | The action configured for all table entries is        |
+|       |                        |                                                          | "Sendto output port", with the output port index      |
 |       |                        |                                                          | uniformly distributed for the range of output ports.  |
 |       |                        |                                                          |                                                       |
 |       |                        |                                                          | The default table rule (used in the case of a lookup  |
@@ -152,13 +152,17 @@ For hash tables, the following parameters can be selected:
 |       |                        |                                                          | [destination IPv4 address, 4 bytes of 0]              |
 |       |                        |                                                          |                                                       |
 +-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
+| 4     | hash-[spec]-8-ext      | Extendible bucket hash table with 8-byte key size        | Same as hash-[spec]-8-lru table entries, above.       |
+|       |                        | and 16 million entries.                                  |                                                       |
+|       |                        |                                                          |                                                       |
++-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
 | 5     | hash-[spec]-16-lru     | LRU hash table with 16-byte key size and 16 million      | 16 million entries are successfully added to the hash |
 |       |                        | entries.                                                 | table with the following key format:                  |
 |       |                        |                                                          |                                                       |
 |       |                        |                                                          | [4-byte index, 12 bytes of 0]                         |
-+-------+------------------------+----------------------------------------------------------+                                                       |
-| 6     | hash-[spec]-ash-16-ext | Extendible bucket hash table with 16-byte key size       | The action configured for all table entries is        |
-|       |                        | and 16 million entries.                                  | "Send to output port", with the output port index     |
+|       |                        |                                                          |                                                       |
+|       |                        |                                                          | The action configured for all table entries is        |
+|       |                        |                                                          | "Send to output port", with the output port index     |
 |       |                        |                                                          | uniformly distributed for the range of output ports.  |
 |       |                        |                                                          |                                                       |
 |       |                        |                                                          | The default table rule (used in the case of a lookup  |
@@ -171,13 +175,17 @@ For hash tables, the following parameters can be selected:
 |       |                        |                                                          | [destination IPv4 address, 12 bytes of 0]             |
 |       |                        |                                                          |                                                       |
 +-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
+| 6     | hash-[spec]-16-ext     | Extendible bucket hash table with 16-byte key size       | Same as hash-[spec]-16-lru table entries, above.      |
+|       |                        | and 16 million entries.                                  |                                                       |
+|       |                        |                                                          |                                                       |
++-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
 | 7     | hash-[spec]-32-lru     | LRU hash table with 32-byte key size and 16 million      | 16 million entries are successfully added to the hash |
-|       |                        | entries.                                                 |  table with the following key format:                 |
+|       |                        | entries.                                                 | table with the following key format:                  |
 |       |                        |                                                          |                                                       |
 |       |                        |                                                          | [4-byte index, 28 bytes of 0].                        |
-+-------+------------------------+----------------------------------------------------------+                                                       |
-| 8     | hash-[spec]-32-ext     | Extendible bucket hash table with 32-byte key size       | The action configured for all table entries is        |
-|       |                        | and 16 million entries.                                  | "Send to output port", with the output port index     |
+|       |                        |                                                          |                                                       |
+|       |                        |                                                          | The action configured for all table entries is        |
+|       |                        |                                                          | "Send to output port", with the output port index     |
 |       |                        |                                                          | uniformly distributed for the range of output ports.  |
 |       |                        |                                                          |                                                       |
 |       |                        |                                                          | The default table rule (used in the case of a lookup  |
@@ -190,6 +198,10 @@ For hash tables, the following parameters can be selected:
 |       |                        |                                                          | [destination IPv4 address, 28 bytes of 0]             |
 |       |                        |                                                          |                                                       |
 +-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
+| 8     | hash-[spec]-32-ext     | Extendible bucket hash table with 32-byte key size       | Same as hash-[spec]-32-lru table entries, above.      |
+|       |                        | and 16 million entries.                                  |                                                       |
+|       |                        |                                                          |                                                       |
++-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
 | 9     | lpm                    | Longest Prefix Match (LPM) IPv4 table.                   | In the case of two ports, two routes                  |
 |       |                        |                                                          | are added to the table:                               |
 |       |                        |                                                          |                                                       |
-- 
2.2.2

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [dpdk-dev] [PATCH v5 3/7] doc: convert image extensions to wildcard
  2015-03-19 11:23   ` [dpdk-dev] [PATCH v5 0/7] add doc-guides-pdf target Thomas Monjalon
  2015-03-19 11:23     ` [dpdk-dev] [PATCH v5 1/7] doc: fix encoding of (r) character Thomas Monjalon
  2015-03-19 11:23     ` [dpdk-dev] [PATCH v5 2/7] doc: refactor split cell formatting in table Thomas Monjalon
@ 2015-03-19 11:23     ` Thomas Monjalon
  2015-03-19 11:23     ` [dpdk-dev] [PATCH v5 4/7] doc: add pdf output Thomas Monjalon
                       ` (4 subsequent siblings)
  7 siblings, 0 replies; 41+ messages in thread
From: Thomas Monjalon @ 2015-03-19 11:23 UTC (permalink / raw)
  To: john.mcnamara; +Cc: dev

From: John McNamara <john.mcnamara@intel.com>

Changed all image.svg and image.png extensions to image.*
This allows Sphinx to decide the appropriate image type
from the available image options.

In case of PDF, SVG images are converted and Sphinx must pick
the converted version.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 doc/guides/prog_guide/env_abstraction_layer.rst    |  2 +-
 .../prog_guide/i40e_ixgbe_igb_virt_func_drv.rst    |  8 ++---
 .../intel_dpdk_xen_based_packet_switch_sol.rst     |  6 ++--
 doc/guides/prog_guide/ivshmem_lib.rst              |  2 +-
 doc/guides/prog_guide/kernel_nic_interface.rst     |  8 ++---
 .../libpcap_ring_based_poll_mode_drv.rst           |  2 +-
 .../prog_guide/link_bonding_poll_mode_drv_lib.rst  | 14 ++++-----
 doc/guides/prog_guide/lpm6_lib.rst                 |  2 +-
 doc/guides/prog_guide/lpm_lib.rst                  |  2 +-
 doc/guides/prog_guide/malloc_lib.rst               |  2 +-
 doc/guides/prog_guide/mbuf_lib.rst                 |  4 +--
 doc/guides/prog_guide/mempool_lib.rst              |  6 ++--
 doc/guides/prog_guide/multi_proc_support.rst       |  2 +-
 doc/guides/prog_guide/overview.rst                 |  2 +-
 doc/guides/prog_guide/packet_distrib_lib.rst       |  4 +--
 doc/guides/prog_guide/packet_framework.rst         | 14 ++++-----
 .../poll_mode_drv_emulated_virtio_nic.rst          |  6 ++--
 .../poll_mode_drv_paravirtual_vmxnets_nic.rst      |  6 ++--
 doc/guides/prog_guide/qos_framework.rst            | 36 +++++++++++-----------
 doc/guides/prog_guide/ring_lib.rst                 | 28 ++++++++---------
 doc/guides/sample_app_ug/dist_app.rst              |  4 +--
 doc/guides/sample_app_ug/exception_path.rst        |  2 +-
 doc/guides/sample_app_ug/intel_quickassist.rst     |  2 +-
 doc/guides/sample_app_ug/kernel_nic_interface.rst  |  4 +--
 .../sample_app_ug/l2_forward_real_virtual.rst      |  4 +--
 .../sample_app_ug/l3_forward_access_ctrl.rst       |  4 +--
 doc/guides/sample_app_ug/load_balancer.rst         |  2 +-
 doc/guides/sample_app_ug/multi_process.rst         |  8 ++---
 doc/guides/sample_app_ug/qos_scheduler.rst         |  2 +-
 doc/guides/sample_app_ug/quota_watermark.rst       |  6 ++--
 doc/guides/sample_app_ug/test_pipeline.rst         |  2 +-
 doc/guides/sample_app_ug/vhost.rst                 | 10 +++---
 doc/guides/sample_app_ug/vm_power_management.rst   |  4 +--
 doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst   |  2 +-
 34 files changed, 106 insertions(+), 106 deletions(-)

diff --git a/doc/guides/prog_guide/env_abstraction_layer.rst b/doc/guides/prog_guide/env_abstraction_layer.rst
index 170deec..61a1da9 100644
--- a/doc/guides/prog_guide/env_abstraction_layer.rst
+++ b/doc/guides/prog_guide/env_abstraction_layer.rst
@@ -369,4 +369,4 @@ We expect only 50% of CPU spend on packet IO.
     echo  50000 > pkt_io/cpu.cfs_quota_us
 
 
-.. |linuxapp_launch| image:: img/linuxapp_launch.svg
+.. |linuxapp_launch| image:: img/linuxapp_launch.*
diff --git a/doc/guides/prog_guide/i40e_ixgbe_igb_virt_func_drv.rst b/doc/guides/prog_guide/i40e_ixgbe_igb_virt_func_drv.rst
index 7771d93..68d7107 100755
--- a/doc/guides/prog_guide/i40e_ixgbe_igb_virt_func_drv.rst
+++ b/doc/guides/prog_guide/i40e_ixgbe_igb_virt_func_drv.rst
@@ -574,10 +574,10 @@ which belongs to the destination VF on the VM.
 
 |inter_vm_comms|
 
-.. |perf_benchmark| image:: img/perf_benchmark.png
+.. |perf_benchmark| image:: img/perf_benchmark.*
 
-.. |single_port_nic| image:: img/single_port_nic.png
+.. |single_port_nic| image:: img/single_port_nic.*
 
-.. |inter_vm_comms| image:: img/inter_vm_comms.png
+.. |inter_vm_comms| image:: img/inter_vm_comms.*
 
-.. |fast_pkt_proc| image:: img/fast_pkt_proc.png
+.. |fast_pkt_proc| image:: img/fast_pkt_proc.*
diff --git a/doc/guides/prog_guide/intel_dpdk_xen_based_packet_switch_sol.rst b/doc/guides/prog_guide/intel_dpdk_xen_based_packet_switch_sol.rst
index a0dd959..a9eca52 100644
--- a/doc/guides/prog_guide/intel_dpdk_xen_based_packet_switch_sol.rst
+++ b/doc/guides/prog_guide/intel_dpdk_xen_based_packet_switch_sol.rst
@@ -457,8 +457,8 @@ The packet flow is:
 
 packet generator->Virtio in guest VM1->switching backend->Virtio in guest VM2->switching backend->wire
 
-.. |grant_table| image:: img/grant_table.png
+.. |grant_table| image:: img/grant_table.*
 
-.. |grant_refs| image:: img/grant_refs.png
+.. |grant_refs| image:: img/grant_refs.*
 
-.. |dpdk_xen_pkt_switch| image:: img/dpdk_xen_pkt_switch.png
+.. |dpdk_xen_pkt_switch| image:: img/dpdk_xen_pkt_switch.*
diff --git a/doc/guides/prog_guide/ivshmem_lib.rst b/doc/guides/prog_guide/ivshmem_lib.rst
index cd2f595..c76d2b3 100644
--- a/doc/guides/prog_guide/ivshmem_lib.rst
+++ b/doc/guides/prog_guide/ivshmem_lib.rst
@@ -155,4 +155,4 @@ As a result, if the user wishes to shut down or restart the IVSHMEM host applica
 it is not enough to simply shut the application down.
 The virtual machine must also be shut down (if not, it will hold onto outdated host data).
 
-.. |ivshmem| image:: img/ivshmem.png
+.. |ivshmem| image:: img/ivshmem.*
diff --git a/doc/guides/prog_guide/kernel_nic_interface.rst b/doc/guides/prog_guide/kernel_nic_interface.rst
index 9ed7688..bac2215 100644
--- a/doc/guides/prog_guide/kernel_nic_interface.rst
+++ b/doc/guides/prog_guide/kernel_nic_interface.rst
@@ -281,10 +281,10 @@ Even if the option is turned on, kni-vhost will ignore the information that the
 When working with legacy virtio on the guest, it is better to turn off unsupported offload features using ethtool -K.
 Otherwise, there may be problems such as an incorrect L4 checksum error.
 
-.. |kni_traffic_flow| image:: img/kni_traffic_flow.png
+.. |kni_traffic_flow| image:: img/kni_traffic_flow.*
 
-.. |vhost_net_arch| image:: img/vhost_net_arch.png
+.. |vhost_net_arch| image:: img/vhost_net_arch.*
 
-.. |pkt_flow_kni| image:: img/pkt_flow_kni.png
+.. |pkt_flow_kni| image:: img/pkt_flow_kni.*
 
-.. |kernel_nic_intf| image:: img/kernel_nic_intf.png
+.. |kernel_nic_intf| image:: img/kernel_nic_intf.*
diff --git a/doc/guides/prog_guide/libpcap_ring_based_poll_mode_drv.rst b/doc/guides/prog_guide/libpcap_ring_based_poll_mode_drv.rst
index 249a2e0..6e14fd1 100644
--- a/doc/guides/prog_guide/libpcap_ring_based_poll_mode_drv.rst
+++ b/doc/guides/prog_guide/libpcap_ring_based_poll_mode_drv.rst
@@ -268,4 +268,4 @@ while the rte_ring specific functions are direct function calls in the code and
    then calling rte_eth_rx_queue_setup() / tx_queue_setup() for each of those queues and
    finally calling rte_eth_dev_start() to allow transmission and reception of packets to begin.
 
-.. |forward_stats| image:: img/forward_stats.png
+.. |forward_stats| image:: img/forward_stats.*
diff --git a/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst b/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst
index cf6a6fa..24a1a36 100644
--- a/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst
+++ b/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst
@@ -434,10 +434,10 @@ Create a bonded device in balance mode with two slaves specified by their PCI ad
 
     $RTE_TARGET/app/testpmd -c '0xf' -n 4 --vdev 'eth_bond0,mode=2, slave=0000:00a:00.01,slave=0000:004:00.00,xmit_policy=l34' -- --port-topology=chained
 
-.. |bond-overview| image:: img/bond-overview.svg
-.. |bond-mode-0| image:: img/bond-mode-0.svg
-.. |bond-mode-1| image:: img/bond-mode-1.svg
-.. |bond-mode-2| image:: img/bond-mode-2.svg
-.. |bond-mode-3| image:: img/bond-mode-3.svg
-.. |bond-mode-4| image:: img/bond-mode-4.svg
-.. |bond-mode-5| image:: img/bond-mode-5.svg
+.. |bond-overview| image:: img/bond-overview.*
+.. |bond-mode-0| image:: img/bond-mode-0.*
+.. |bond-mode-1| image:: img/bond-mode-1.*
+.. |bond-mode-2| image:: img/bond-mode-2.*
+.. |bond-mode-3| image:: img/bond-mode-3.*
+.. |bond-mode-4| image:: img/bond-mode-4.*
+.. |bond-mode-5| image:: img/bond-mode-5.*
diff --git a/doc/guides/prog_guide/lpm6_lib.rst b/doc/guides/prog_guide/lpm6_lib.rst
index dd5d064..abc5adb 100644
--- a/doc/guides/prog_guide/lpm6_lib.rst
+++ b/doc/guides/prog_guide/lpm6_lib.rst
@@ -232,4 +232,4 @@ Use Case: IPv6 Forwarding
 
 The LPM algorithm is used to implement the Classless Inter-Domain Routing (CIDR) strategy used by routers implementing IP forwarding.
 
-.. |tbl24_tbl8_tbl8| image:: img/tbl24_tbl8_tbl8.png
+.. |tbl24_tbl8_tbl8| image:: img/tbl24_tbl8_tbl8.*
diff --git a/doc/guides/prog_guide/lpm_lib.rst b/doc/guides/prog_guide/lpm_lib.rst
index d1de87a..692e37f 100644
--- a/doc/guides/prog_guide/lpm_lib.rst
+++ b/doc/guides/prog_guide/lpm_lib.rst
@@ -220,4 +220,4 @@ References
 *   Pankaj Gupta, Algorithms for Routing Lookups and Packet Classification, PhD Thesis, Stanford University,
     2000  (`http://klamath.stanford.edu/~pankaj/thesis/ thesis_1sided.pdf <http://klamath.stanford.edu/~pankaj/thesis/%20thesis_1sided.pdf>`_ )
 
-.. |tbl24_tbl8| image:: img/tbl24_tbl8.png
+.. |tbl24_tbl8| image:: img/tbl24_tbl8.*
diff --git a/doc/guides/prog_guide/malloc_lib.rst b/doc/guides/prog_guide/malloc_lib.rst
index 63d87d9..b9298f8 100644
--- a/doc/guides/prog_guide/malloc_lib.rst
+++ b/doc/guides/prog_guide/malloc_lib.rst
@@ -233,4 +233,4 @@ and if so, they are merged with the current elements.
 This means that we can never have two free memory blocks adjacent to one another,
 they are always merged into a single block.
 
-.. |malloc_heap| image:: img/malloc_heap.png
+.. |malloc_heap| image:: img/malloc_heap.*
diff --git a/doc/guides/prog_guide/mbuf_lib.rst b/doc/guides/prog_guide/mbuf_lib.rst
index 3d59e96..43e6f3a 100644
--- a/doc/guides/prog_guide/mbuf_lib.rst
+++ b/doc/guides/prog_guide/mbuf_lib.rst
@@ -189,6 +189,6 @@ Use Cases
 
 All networking application should use mbufs to transport network packets.
 
-.. |mbuf1| image:: img/mbuf1.svg
+.. |mbuf1| image:: img/mbuf1.*
 
-.. |mbuf2| image:: img/mbuf2.svg
+.. |mbuf2| image:: img/mbuf2.*
diff --git a/doc/guides/prog_guide/mempool_lib.rst b/doc/guides/prog_guide/mempool_lib.rst
index b4704a7..f9b7cfe 100644
--- a/doc/guides/prog_guide/mempool_lib.rst
+++ b/doc/guides/prog_guide/mempool_lib.rst
@@ -141,8 +141,8 @@ Below are some examples:
 
 *   Any application that needs to allocate fixed-sized objects in the data plane and that will be continuously utilized by the system.
 
-.. |memory-management| image:: img/memory-management.svg
+.. |memory-management| image:: img/memory-management.*
 
-.. |memory-management2| image:: img/memory-management2.svg
+.. |memory-management2| image:: img/memory-management2.*
 
-.. |mempool| image:: img/mempool.svg
+.. |mempool| image:: img/mempool.*
diff --git a/doc/guides/prog_guide/multi_proc_support.rst b/doc/guides/prog_guide/multi_proc_support.rst
index deaae47..25a6056 100644
--- a/doc/guides/prog_guide/multi_proc_support.rst
+++ b/doc/guides/prog_guide/multi_proc_support.rst
@@ -200,4 +200,4 @@ instead of the functions which do the hashing internally, such as rte_hash_add()
     If the number of required DPDK processes exceeds that of the number of available HPET comparators,
     the TSC (which is the default timer in this release) must be used as a time source across all processes instead of the HPET.
 
-.. |multi_process_memory| image:: img/multi_process_memory.svg
+.. |multi_process_memory| image:: img/multi_process_memory.*
diff --git a/doc/guides/prog_guide/overview.rst b/doc/guides/prog_guide/overview.rst
index 6603409..062d923 100644
--- a/doc/guides/prog_guide/overview.rst
+++ b/doc/guides/prog_guide/overview.rst
@@ -204,4 +204,4 @@ The librte_net library is a collection of IP protocol definitions and convenienc
 It is based on code from the FreeBSD* IP stack and contains protocol numbers (for use in IP headers),
 IP-related macros, IPv4/IPv6 header structures and TCP, UDP and SCTP header structures.
 
-.. |architecture-overview| image:: img/architecture-overview.svg
+.. |architecture-overview| image:: img/architecture-overview.*
diff --git a/doc/guides/prog_guide/packet_distrib_lib.rst b/doc/guides/prog_guide/packet_distrib_lib.rst
index 18baf55..767accc 100644
--- a/doc/guides/prog_guide/packet_distrib_lib.rst
+++ b/doc/guides/prog_guide/packet_distrib_lib.rst
@@ -111,6 +111,6 @@ i.e. to save power at times of lighter load,
 it is possible to have a worker stop processing packets by calling "rte_distributor_return_pkt()" to indicate that
 it has finished the current packet and does not want a new one.
 
-.. |packet_distributor1| image:: img/packet_distributor1.png
+.. |packet_distributor1| image:: img/packet_distributor1.*
 
-.. |packet_distributor2| image:: img/packet_distributor2.png
+.. |packet_distributor2| image:: img/packet_distributor2.*
diff --git a/doc/guides/prog_guide/packet_framework.rst b/doc/guides/prog_guide/packet_framework.rst
index 537811b..8e8e32f 100644
--- a/doc/guides/prog_guide/packet_framework.rst
+++ b/doc/guides/prog_guide/packet_framework.rst
@@ -1168,16 +1168,16 @@ with all the implementations sharing the same API: pure SW implementation (no ac
 The selection between these implementations could be done at build time or at run-time (recommended), based on which accelerators are present in the system,
 with no application changes required.
 
-.. |figure33| image:: img/figure33.png
+.. |figure33| image:: img/figure33.*
 
-.. |figure35| image:: img/figure35.png
+.. |figure35| image:: img/figure35.*
 
-.. |figure39| image:: img/figure39.png
+.. |figure39| image:: img/figure39.*
 
-.. |figure34| image:: img/figure34.png
+.. |figure34| image:: img/figure34.*
 
-.. |figure32| image:: img/figure32.png
+.. |figure32| image:: img/figure32.*
 
-.. |figure37| image:: img/figure37.png
+.. |figure37| image:: img/figure37.*
 
-.. |figure38| image:: img/figure38.png
+.. |figure38| image:: img/figure38.*
diff --git a/doc/guides/prog_guide/poll_mode_drv_emulated_virtio_nic.rst b/doc/guides/prog_guide/poll_mode_drv_emulated_virtio_nic.rst
index aae32b6..113a0cb 100644
--- a/doc/guides/prog_guide/poll_mode_drv_emulated_virtio_nic.rst
+++ b/doc/guides/prog_guide/poll_mode_drv_emulated_virtio_nic.rst
@@ -214,8 +214,8 @@ The packet transmission flow is:
 
     IXIA packet generator-> Guest VM 82599 VF port1 rx burst-> Guest VM virtio port 0 tx burst-> tap -> Linux Bridge->82599 PF-> IXIA packet generator
 
-.. |host_vm_comms| image:: img/host_vm_comms.png
+.. |host_vm_comms| image:: img/host_vm_comms.*
 
-.. |console| image:: img/console.png
+.. |console| image:: img/console.*
 
-.. |host_vm_comms_qemu| image:: img/host_vm_comms_qemu.png
+.. |host_vm_comms_qemu| image:: img/host_vm_comms_qemu.*
diff --git a/doc/guides/prog_guide/poll_mode_drv_paravirtual_vmxnets_nic.rst b/doc/guides/prog_guide/poll_mode_drv_paravirtual_vmxnets_nic.rst
index 769723e..04842c9 100644
--- a/doc/guides/prog_guide/poll_mode_drv_paravirtual_vmxnets_nic.rst
+++ b/doc/guides/prog_guide/poll_mode_drv_paravirtual_vmxnets_nic.rst
@@ -177,8 +177,8 @@ In this example, the packet flow path is:
     Packet generator -> 82599 VF -> Guest VM 82599 port 0 rx burst -> Guest VM VMXNET3 port 1 tx burst -> VMXNET3
     device -> VMware ESXi vSwitch -> VMXNET3 device -> Guest VM VMXNET3 port 0 rx burst -> Guest VM 82599 VF port 1 tx burst -> 82599 VF -> Packet generator
 
-.. |vm_vm_comms| image:: img/vm_vm_comms.png
+.. |vm_vm_comms| image:: img/vm_vm_comms.*
 
-.. |vmxnet3_int| image:: img/vmxnet3_int.png
+.. |vmxnet3_int| image:: img/vmxnet3_int.*
 
-.. |vswitch_vm| image:: img/vswitch_vm.png
+.. |vswitch_vm| image:: img/vswitch_vm.*
diff --git a/doc/guides/prog_guide/qos_framework.rst b/doc/guides/prog_guide/qos_framework.rst
index 087f3c4..b609841 100644
--- a/doc/guides/prog_guide/qos_framework.rst
+++ b/doc/guides/prog_guide/qos_framework.rst
@@ -1728,38 +1728,38 @@ For each input packet, the steps for the srTCM / trTCM algorithms are:
     When the output color is not red, a number of tokens equal to the length of the IP packet are
     subtracted from the C or E /P or both buckets, depending on the algorithm and the output color of the packet.
 
-.. |flow_tru_droppper| image:: img/flow_tru_droppper.png
+.. |flow_tru_droppper| image:: img/flow_tru_droppper.*
 
-.. |drop_probability_graph| image:: img/drop_probability_graph.png
+.. |drop_probability_graph| image:: img/drop_probability_graph.*
 
-.. |drop_probability_eq3| image:: img/drop_probability_eq3.png
+.. |drop_probability_eq3| image:: img/drop_probability_eq3.*
 
-.. |eq2_expression| image:: img/eq2_expression.png
+.. |eq2_expression| image:: img/eq2_expression.*
 
-.. |drop_probability_eq4| image:: img/drop_probability_eq4.png
+.. |drop_probability_eq4| image:: img/drop_probability_eq4.*
 
-.. |pkt_drop_probability| image:: img/pkt_drop_probability.png
+.. |pkt_drop_probability| image:: img/pkt_drop_probability.*
 
-.. |pkt_proc_pipeline_qos| image:: img/pkt_proc_pipeline_qos.png
+.. |pkt_proc_pipeline_qos| image:: img/pkt_proc_pipeline_qos.*
 
-.. |ex_data_flow_tru_dropper| image:: img/ex_data_flow_tru_dropper.png
+.. |ex_data_flow_tru_dropper| image:: img/ex_data_flow_tru_dropper.*
 
-.. |ewma_filter_eq_1| image:: img/ewma_filter_eq_1.png
+.. |ewma_filter_eq_1| image:: img/ewma_filter_eq_1.*
 
-.. |ewma_filter_eq_2| image:: img/ewma_filter_eq_2.png
+.. |ewma_filter_eq_2| image:: img/ewma_filter_eq_2.*
 
-.. |data_struct_per_port| image:: img/data_struct_per_port.png
+.. |data_struct_per_port| image:: img/data_struct_per_port.*
 
-.. |prefetch_pipeline| image:: img/prefetch_pipeline.png
+.. |prefetch_pipeline| image:: img/prefetch_pipeline.*
 
-.. |pipe_prefetch_sm| image:: img/pipe_prefetch_sm.png
+.. |pipe_prefetch_sm| image:: img/pipe_prefetch_sm.*
 
-.. |blk_diag_dropper| image:: img/blk_diag_dropper.png
+.. |blk_diag_dropper| image:: img/blk_diag_dropper.*
 
-.. |m_definition| image:: img/m_definition.png
+.. |m_definition| image:: img/m_definition.*
 
-.. |eq2_factor| image:: img/eq2_factor.png
+.. |eq2_factor| image:: img/eq2_factor.*
 
-.. |sched_hier_per_port| image:: img/sched_hier_per_port.png
+.. |sched_hier_per_port| image:: img/sched_hier_per_port.*
 
-.. |hier_sched_blk| image:: img/hier_sched_blk.png
+.. |hier_sched_blk| image:: img/hier_sched_blk.*
diff --git a/doc/guides/prog_guide/ring_lib.rst b/doc/guides/prog_guide/ring_lib.rst
index 95f773e..8547b38 100644
--- a/doc/guides/prog_guide/ring_lib.rst
+++ b/doc/guides/prog_guide/ring_lib.rst
@@ -347,30 +347,30 @@ References
 
     *   `Linux Lockless Ring Buffer Design <http://lwn.net/Articles/340400/>`_
 
-.. |ring1| image:: img/ring1.svg
+.. |ring1| image:: img/ring1.*
 
-.. |ring-enqueue1| image:: img/ring-enqueue1.svg
+.. |ring-enqueue1| image:: img/ring-enqueue1.*
 
-.. |ring-enqueue2| image:: img/ring-enqueue2.svg
+.. |ring-enqueue2| image:: img/ring-enqueue2.*
 
-.. |ring-enqueue3| image:: img/ring-enqueue3.svg
+.. |ring-enqueue3| image:: img/ring-enqueue3.*
 
-.. |ring-dequeue1| image:: img/ring-dequeue1.svg
+.. |ring-dequeue1| image:: img/ring-dequeue1.*
 
-.. |ring-dequeue2| image:: img/ring-dequeue2.svg
+.. |ring-dequeue2| image:: img/ring-dequeue2.*
 
-.. |ring-dequeue3| image:: img/ring-dequeue3.svg
+.. |ring-dequeue3| image:: img/ring-dequeue3.*
 
-.. |ring-mp-enqueue1| image:: img/ring-mp-enqueue1.svg
+.. |ring-mp-enqueue1| image:: img/ring-mp-enqueue1.*
 
-.. |ring-mp-enqueue2| image:: img/ring-mp-enqueue2.svg
+.. |ring-mp-enqueue2| image:: img/ring-mp-enqueue2.*
 
-.. |ring-mp-enqueue3| image:: img/ring-mp-enqueue3.svg
+.. |ring-mp-enqueue3| image:: img/ring-mp-enqueue3.*
 
-.. |ring-mp-enqueue4| image:: img/ring-mp-enqueue4.svg
+.. |ring-mp-enqueue4| image:: img/ring-mp-enqueue4.*
 
-.. |ring-mp-enqueue5| image:: img/ring-mp-enqueue5.svg
+.. |ring-mp-enqueue5| image:: img/ring-mp-enqueue5.*
 
-.. |ring-modulo1| image:: img/ring-modulo1.svg
+.. |ring-modulo1| image:: img/ring-modulo1.*
 
-.. |ring-modulo2| image:: img/ring-modulo2.svg
+.. |ring-modulo2| image:: img/ring-modulo2.*
diff --git a/doc/guides/sample_app_ug/dist_app.rst b/doc/guides/sample_app_ug/dist_app.rst
index 5767e3f..bcff0dd 100644
--- a/doc/guides/sample_app_ug/dist_app.rst
+++ b/doc/guides/sample_app_ug/dist_app.rst
@@ -172,6 +172,6 @@ Sample Application. See Section 9.4.4, "RX Queue Initialization".
 TX queue initialization is done in the same way as it is done in the L2 Forwarding
 Sample Application. See Section 9.4.5, "TX Queue Initialization".
 
-.. |dist_perf| image:: img/dist_perf.svg
+.. |dist_perf| image:: img/dist_perf.*
 
-.. |dist_app| image:: img/dist_app.svg
+.. |dist_app| image:: img/dist_app.*
diff --git a/doc/guides/sample_app_ug/exception_path.rst b/doc/guides/sample_app_ug/exception_path.rst
index 0b71f9e..6c06959 100644
--- a/doc/guides/sample_app_ug/exception_path.rst
+++ b/doc/guides/sample_app_ug/exception_path.rst
@@ -327,4 +327,4 @@ To remove bridges and persistent TAP interfaces, the following commands are used
     brctl delbr br0
     openvpn --rmtun --dev tap_dpdk_00
 
-.. |exception_path_example| image:: img/exception_path_example.svg
+.. |exception_path_example| image:: img/exception_path_example.*
diff --git a/doc/guides/sample_app_ug/intel_quickassist.rst b/doc/guides/sample_app_ug/intel_quickassist.rst
index d063f08..7f55282 100644
--- a/doc/guides/sample_app_ug/intel_quickassist.rst
+++ b/doc/guides/sample_app_ug/intel_quickassist.rst
@@ -221,4 +221,4 @@ performing AES-CBC-128 encryption with AES-XCBC-MAC-96 hash, the following setti
 Refer to the *DPDK Test Report* for more examples of traffic generator setup and the application startup command lines.
 If no errors are generated in response to the startup commands, the application is running correctly.
 
-.. |quickassist_block_diagram| image:: img/quickassist_block_diagram.png
+.. |quickassist_block_diagram| image:: img/quickassist_block_diagram.*
diff --git a/doc/guides/sample_app_ug/kernel_nic_interface.rst b/doc/guides/sample_app_ug/kernel_nic_interface.rst
index e32fbbf..d6876e2 100644
--- a/doc/guides/sample_app_ug/kernel_nic_interface.rst
+++ b/doc/guides/sample_app_ug/kernel_nic_interface.rst
@@ -75,7 +75,7 @@ The packet flow through the Kernel NIC Interface application is as shown in the
 
 **Figure 2. Kernel NIC Application Packet Flow**
 
-.. image3_png has been renamed to kernel_nic.png
+.. image3_png has been renamed to kernel_nic.*
 
 |kernel_nic|
 
@@ -617,4 +617,4 @@ Currently, setting a new MTU and configuring the network interface (up/ down) ar
         return ret;
     }
 
-.. |kernel_nic| image:: img/kernel_nic.png
+.. |kernel_nic| image:: img/kernel_nic.*
diff --git a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
index f9360c4..234d71d 100644
--- a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
+++ b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
@@ -527,6 +527,6 @@ however it improves performance:
         prev_tsc = cur_tsc;
     }
 
-.. |l2_fwd_benchmark_setup| image:: img/l2_fwd_benchmark_setup.svg
+.. |l2_fwd_benchmark_setup| image:: img/l2_fwd_benchmark_setup.*
 
-.. |l2_fwd_virtenv_benchmark_setup| image:: img/l2_fwd_virtenv_benchmark_setup.png
+.. |l2_fwd_virtenv_benchmark_setup| image:: img/l2_fwd_virtenv_benchmark_setup.*
diff --git a/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst b/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
index 79ba24d..73fa4df 100644
--- a/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
+++ b/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
@@ -398,6 +398,6 @@ adds rules parsed from the file into the database and build an ACL trie.
 It is important to note that the application creates an independent copy of each database for each socket CPU
 involved in the task to reduce the time for remote memory access.
 
-.. |ipv4_acl_rule| image:: img/ipv4_acl_rule.png
+.. |ipv4_acl_rule| image:: img/ipv4_acl_rule.*
 
-.. |example_rules| image:: img/example_rules.png
+.. |example_rules| image:: img/example_rules.*
diff --git a/doc/guides/sample_app_ug/load_balancer.rst b/doc/guides/sample_app_ug/load_balancer.rst
index 8ec47ae..6237633 100644
--- a/doc/guides/sample_app_ug/load_balancer.rst
+++ b/doc/guides/sample_app_ug/load_balancer.rst
@@ -242,4 +242,4 @@ are on the same or different CPU sockets, the following run-time scenarios are p
     then it has to be transmitted out by a NIC connected to socket C.
     The performance price for crossing the CPU socket boundary is paid twice for this packet.
 
-.. |load_bal_app_arch| image:: img/load_bal_app_arch.png
+.. |load_bal_app_arch| image:: img/load_bal_app_arch.*
diff --git a/doc/guides/sample_app_ug/multi_process.rst b/doc/guides/sample_app_ug/multi_process.rst
index 9797cc9..7ca71ca 100644
--- a/doc/guides/sample_app_ug/multi_process.rst
+++ b/doc/guides/sample_app_ug/multi_process.rst
@@ -775,10 +775,10 @@ so it remaps the resource to the new core ID slot.
         return 0;
     }
 
-.. |sym_multi_proc_app| image:: img/sym_multi_proc_app.png
+.. |sym_multi_proc_app| image:: img/sym_multi_proc_app.*
 
-.. |client_svr_sym_multi_proc_app| image:: img/client_svr_sym_multi_proc_app.png
+.. |client_svr_sym_multi_proc_app| image:: img/client_svr_sym_multi_proc_app.*
 
-.. |master_slave_proc| image:: img/master_slave_proc.png
+.. |master_slave_proc| image:: img/master_slave_proc.*
 
-.. |slave_proc_recov| image:: img/slave_proc_recov.png
+.. |slave_proc_recov| image:: img/slave_proc_recov.*
diff --git a/doc/guides/sample_app_ug/qos_scheduler.rst b/doc/guides/sample_app_ug/qos_scheduler.rst
index 8611eae..56326df 100644
--- a/doc/guides/sample_app_ug/qos_scheduler.rst
+++ b/doc/guides/sample_app_ug/qos_scheduler.rst
@@ -348,4 +348,4 @@ This application classifies based on the QinQ double VLAN tags and the IP destin
 
 Please refer to the "QoS Scheduler" chapter in the *DPDK Programmer's Guide* for more information about these parameters.
 
-.. |qos_sched_app_arch| image:: img/qos_sched_app_arch.png
+.. |qos_sched_app_arch| image:: img/qos_sched_app_arch.*
diff --git a/doc/guides/sample_app_ug/quota_watermark.rst b/doc/guides/sample_app_ug/quota_watermark.rst
index 7115635..e091ad9 100644
--- a/doc/guides/sample_app_ug/quota_watermark.rst
+++ b/doc/guides/sample_app_ug/quota_watermark.rst
@@ -499,8 +499,8 @@ low_watermark from the rte_memzone previously created by qw.
         low_watermark = (unsigned int *) qw_memzone->addr + sizeof(int);
     }
 
-.. |pipeline_overview| image:: img/pipeline_overview.png
+.. |pipeline_overview| image:: img/pipeline_overview.*
 
-.. |ring_pipeline_perf_setup| image:: img/ring_pipeline_perf_setup.png
+.. |ring_pipeline_perf_setup| image:: img/ring_pipeline_perf_setup.*
 
-.. |threads_pipelines| image:: img/threads_pipelines.png
+.. |threads_pipelines| image:: img/threads_pipelines.*
diff --git a/doc/guides/sample_app_ug/test_pipeline.rst b/doc/guides/sample_app_ug/test_pipeline.rst
index a5fed8a..0432942 100644
--- a/doc/guides/sample_app_ug/test_pipeline.rst
+++ b/doc/guides/sample_app_ug/test_pipeline.rst
@@ -282,4 +282,4 @@ The profile for input traffic is TCP/IPv4 packets with:
 
 *   source TCP port fixed to 0
 
-.. |test_pipeline_app| image:: img/test_pipeline_app.png
+.. |test_pipeline_app| image:: img/test_pipeline_app.*
diff --git a/doc/guides/sample_app_ug/vhost.rst b/doc/guides/sample_app_ug/vhost.rst
index fa53db6..4a6d434 100644
--- a/doc/guides/sample_app_ug/vhost.rst
+++ b/doc/guides/sample_app_ug/vhost.rst
@@ -747,12 +747,12 @@ The above message indicates that device 0 has been registered with MAC address c
 Any packets received on the NIC with these values is placed on the devices receive queue.
 When a virtio-net device transmits packets, the VLAN tag is added to the packet by the DPDK vhost sample code.
 
-.. |vhost_net_arch| image:: img/vhost_net_arch.png
+.. |vhost_net_arch| image:: img/vhost_net_arch.*
 
-.. |qemu_virtio_net| image:: img/qemu_virtio_net.png
+.. |qemu_virtio_net| image:: img/qemu_virtio_net.*
 
-.. |tx_dpdk_testpmd| image:: img/tx_dpdk_testpmd.png
+.. |tx_dpdk_testpmd| image:: img/tx_dpdk_testpmd.*
 
-.. |vhost_net_sample_app| image:: img/vhost_net_sample_app.png
+.. |vhost_net_sample_app| image:: img/vhost_net_sample_app.*
 
-.. |virtio_linux_vhost| image:: img/virtio_linux_vhost.png
+.. |virtio_linux_vhost| image:: img/virtio_linux_vhost.*
diff --git a/doc/guides/sample_app_ug/vm_power_management.rst b/doc/guides/sample_app_ug/vm_power_management.rst
index 16f44c4..2a923d8 100644
--- a/doc/guides/sample_app_ug/vm_power_management.rst
+++ b/doc/guides/sample_app_ug/vm_power_management.rst
@@ -356,6 +356,6 @@ Where {core_num} is the lcore and channel to change frequency by scaling up/down
 
   set_cpu_freq {core_num} up|down|min|max
 
-.. |vm_power_mgr_highlevel| image:: img/vm_power_mgr_highlevel.svg
+.. |vm_power_mgr_highlevel| image:: img/vm_power_mgr_highlevel.*
 
-.. |vm_power_mgr_vm_request_seq| image:: img/vm_power_mgr_vm_request_seq.svg
+.. |vm_power_mgr_vm_request_seq| image:: img/vm_power_mgr_vm_request_seq.*
diff --git a/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst b/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
index 15c783a..e5d34e1 100644
--- a/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
+++ b/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
@@ -248,4 +248,4 @@ To generate the statistics output, use the following command:
 Please note that the statistics output will appear on the terminal where the vmdq_dcb_app is running,
 rather than the terminal from which the HUP signal was sent.
 
-.. |vmdq_dcb_example| image:: img/vmdq_dcb_example.svg
+.. |vmdq_dcb_example| image:: img/vmdq_dcb_example.*
-- 
2.2.2

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [dpdk-dev] [PATCH v5 4/7] doc: add pdf output
  2015-03-19 11:23   ` [dpdk-dev] [PATCH v5 0/7] add doc-guides-pdf target Thomas Monjalon
                       ` (2 preceding siblings ...)
  2015-03-19 11:23     ` [dpdk-dev] [PATCH v5 3/7] doc: convert image extensions to wildcard Thomas Monjalon
@ 2015-03-19 11:23     ` Thomas Monjalon
  2015-03-19 11:23     ` [dpdk-dev] [PATCH v5 5/7] doc: fix version for python 3 Thomas Monjalon
                       ` (3 subsequent siblings)
  7 siblings, 0 replies; 41+ messages in thread
From: Thomas Monjalon @ 2015-03-19 11:23 UTC (permalink / raw)
  To: john.mcnamara; +Cc: dev

From: John McNamara <john.mcnamara@intel.com>

Add make system support for building PDF versions of
the guides. Requires Python Sphinx and TexLive Full.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
---
 doc/guides/conf.py | 13 +++++++++++--
 mk/rte.sdkdoc.mk   | 46 ++++++++++++++++++++++++++++++++++++++++------
 2 files changed, 51 insertions(+), 8 deletions(-)

diff --git a/doc/guides/conf.py b/doc/guides/conf.py
index fba34a6..264b0cd 100644
--- a/doc/guides/conf.py
+++ b/doc/guides/conf.py
@@ -1,5 +1,5 @@
 #   BSD LICENSE
-#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+#   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
 #   All rights reserved.
 #
 #   Redistribution and use in source and binary forms, with or without
@@ -34,6 +34,15 @@ project = 'DPDK'
 
 html_show_copyright = False
 
-version = subprocess.check_output(["make","-sRrC","../../", "showversion"])
+version = subprocess.check_output(['make', '-sRrC', '../../', 'showversion'])
+release = version
 
 master_doc = 'index'
+
+latex_documents = [
+    ('index',
+     'doc.tex',
+     '',
+     '',
+     'manual')
+]
diff --git a/mk/rte.sdkdoc.mk b/mk/rte.sdkdoc.mk
index dabc0d6..5b44083 100644
--- a/mk/rte.sdkdoc.mk
+++ b/mk/rte.sdkdoc.mk
@@ -1,7 +1,7 @@
 #   BSD LICENSE
 #
-#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
-#   Copyright(c) 2013 6WIND S.A.
+#   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
+#   Copyright(c) 2013-2015 6WIND S.A.
 #   All rights reserved.
 #
 #   Redistribution and use in source and binary forms, with or without
@@ -37,23 +37,33 @@ endif
 endif
 
 RTE_SPHINX_BUILD = sphinx-build
+RTE_PDFLATEX_VERBOSE := --interaction=nonstopmode
+
 ifndef V
 RTE_SPHINX_VERBOSE := -q
+RTE_PDFLATEX_VERBOSE := --interaction=batchmode
+RTE_INKSCAPE_VERBOSE := >/dev/null 2>&1
 endif
 ifeq '$V' '0'
 RTE_SPHINX_VERBOSE := -q
+RTE_PDFLATEX_VERBOSE := --interaction=batchmode
+RTE_INKSCAPE_VERBOSE := >/dev/null 2>&1
 endif
 
+RTE_PDF_DPI ?= 300
+
+RTE_GUIDES := $(filter %/, $(wildcard $(RTE_SDK)/doc/guides/*/))
+
 .PHONY: help
 help:
 	@cat $(RTE_SDK)/doc/build-sdk-quick.txt
 	@$(MAKE) -rR showconfigs | sed 's,^,\t\t\t\t,'
 
 .PHONY: all
-all: api-html guides-html
+all: api-html guides-html guides-pdf
 
 .PHONY: clean
-clean: api-html-clean guides-html-clean
+clean: api-html-clean guides-html-clean guides-pdf-clean
 
 .PHONY: api-html
 api-html: api-html-clean
@@ -79,7 +89,31 @@ guides-%-clean:
 	$(Q)rm -rf $(RTE_OUTPUT)/doc/$*/guides
 	$(Q)rmdir -p --ignore-fail-on-non-empty $(RTE_OUTPUT)/doc/$* 2>&- || true
 
+guides-pdf-clean: guides-pdf-img-clean
+guides-pdf-img-clean:
+	$(Q)rm -f $(RTE_SDK)/doc/guides/*/img/*.pdf
+
+guides-pdf: $(addprefix guides-pdf-, $(notdir $(RTE_GUIDES:/=))) ;
 guides-%:
-	@echo 'sphinx for guides...'
+	@echo 'sphinx processing $@...'
 	$(Q)$(RTE_SPHINX_BUILD) -b $* $(RTE_SPHINX_VERBOSE) \
-		-c $(RTE_SDK)/doc/guides $(RTE_SDK)/doc/guides $(RTE_OUTPUT)/doc/$*/guides
+		-c $(RTE_SDK)/doc/guides $(RTE_SDK)/doc/guides \
+		$(RTE_OUTPUT)/doc/$*/guides
+
+guides-pdf-%:
+	@echo 'sphinx processing $@...'
+	$(Q)$(RTE_SPHINX_BUILD) -b latex $(RTE_SPHINX_VERBOSE) \
+		-c $(RTE_SDK)/doc/guides $(RTE_SDK)/doc/guides/$* \
+		$(RTE_OUTPUT)/doc/pdf/guides/$*
+	$(Q)rm -f $^
+	@echo 'pdflatex processing $@...'
+	$(Q)$(MAKE) all-pdf -sC $(RTE_OUTPUT)/doc/pdf/guides/$* \
+		LATEXOPTS=$(RTE_PDFLATEX_VERBOSE)
+	$(Q)mv $(RTE_OUTPUT)/doc/pdf/guides/$*/doc.pdf \
+		$(RTE_OUTPUT)/doc/pdf/guides/$*.pdf
+
+# Each PDF depends on generated images *.pdf from *.svg
+$(foreach guide, $(RTE_GUIDES), $(foreach img, $(wildcard $(guide)img/*.svg), \
+	$(eval guides-pdf-$(notdir $(guide:/=)): $(img:svg=pdf))))
+%.pdf: %.svg
+	$(Q)inkscape -d $(RTE_PDF_DPI) -D -f $< -A $@ $(RTE_INKSCAPE_VERBOSE)
-- 
2.2.2

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [dpdk-dev] [PATCH v5 5/7] doc: fix version for python 3
  2015-03-19 11:23   ` [dpdk-dev] [PATCH v5 0/7] add doc-guides-pdf target Thomas Monjalon
                       ` (3 preceding siblings ...)
  2015-03-19 11:23     ` [dpdk-dev] [PATCH v5 4/7] doc: add pdf output Thomas Monjalon
@ 2015-03-19 11:23     ` Thomas Monjalon
  2015-03-19 11:23     ` [dpdk-dev] [PATCH v5 6/7] doc: tune pdf fonts Thomas Monjalon
                       ` (2 subsequent siblings)
  7 siblings, 0 replies; 41+ messages in thread
From: Thomas Monjalon @ 2015-03-19 11:23 UTC (permalink / raw)
  To: john.mcnamara; +Cc: dev

When generating Latex for PDF, this error occurs:
    ! Undefined control sequence.
    \version ->b'2.0.0-rc2\n
Decoding bytes stream into UTF-8 fixes the issue.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
---
 doc/guides/conf.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/guides/conf.py b/doc/guides/conf.py
index 264b0cd..7151dfd 100644
--- a/doc/guides/conf.py
+++ b/doc/guides/conf.py
@@ -34,7 +34,7 @@ project = 'DPDK'
 
 html_show_copyright = False
 
-version = subprocess.check_output(['make', '-sRrC', '../../', 'showversion'])
+version = subprocess.check_output(['make', '-sRrC', '../../', 'showversion']).decode('utf-8')
 release = version
 
 master_doc = 'index'
-- 
2.2.2

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [dpdk-dev] [PATCH v5 6/7] doc: tune pdf fonts
  2015-03-19 11:23   ` [dpdk-dev] [PATCH v5 0/7] add doc-guides-pdf target Thomas Monjalon
                       ` (4 preceding siblings ...)
  2015-03-19 11:23     ` [dpdk-dev] [PATCH v5 5/7] doc: fix version for python 3 Thomas Monjalon
@ 2015-03-19 11:23     ` Thomas Monjalon
  2015-03-19 11:23     ` [dpdk-dev] [PATCH v5 7/7] doc: remove blank pages in pdf Thomas Monjalon
  2015-03-19 13:47     ` [dpdk-dev] [PATCH v5 0/7] add doc-guides-pdf target Mcnamara, John
  7 siblings, 0 replies; 41+ messages in thread
From: Thomas Monjalon @ 2015-03-19 11:23 UTC (permalink / raw)
  To: john.mcnamara; +Cc: dev

From: John McNamara <john.mcnamara@intel.com>

This mainly adds metadata but also includes an override to the
Latex formatter to control the font size in code blocks.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 doc/guides/conf.py | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/doc/guides/conf.py b/doc/guides/conf.py
index 7151dfd..168efa6 100644
--- a/doc/guides/conf.py
+++ b/doc/guides/conf.py
@@ -29,6 +29,8 @@
 #   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 import subprocess
+from sphinx.highlighting import PygmentsBridge
+from pygments.formatters.latex import LatexFormatter
 
 project = 'DPDK'
 
@@ -46,3 +48,32 @@ latex_documents = [
      '',
      'manual')
 ]
+
+# Latex directives to be included directly in the latex/pdf docs.
+latex_preamble = r"""
+\usepackage[utf8]{inputenc}
+\usepackage{DejaVuSansMono}
+\usepackage[T1]{fontenc}
+\usepackage{helvet}
+\renewcommand{\familydefault}{\sfdefault}
+\RecustomVerbatimEnvironment{Verbatim}{Verbatim}{xleftmargin=5mm}
+"""
+
+# Configuration for the latex/pdf docs.
+latex_elements = {
+    'papersize': 'a4paper',
+    'pointsize': '11pt',
+    # customize Latex formatting
+    'preamble': latex_preamble
+}
+
+# Override the default Latex formatter in order to modify the
+# code/verbatim blocks.
+class CustomLatexFormatter(LatexFormatter):
+    def __init__(self, **options):
+        super(CustomLatexFormatter, self).__init__(**options)
+        # Use the second smallest font size for code/verbatim blocks.
+        self.verboptions = r'formatcom=\footnotesize'
+
+# Replace the default latex formatter.
+PygmentsBridge.latex_formatter = CustomLatexFormatter
-- 
2.2.2

^ permalink raw reply	[flat|nested] 41+ messages in thread

* [dpdk-dev] [PATCH v5 7/7] doc: remove blank pages in pdf
  2015-03-19 11:23   ` [dpdk-dev] [PATCH v5 0/7] add doc-guides-pdf target Thomas Monjalon
                       ` (5 preceding siblings ...)
  2015-03-19 11:23     ` [dpdk-dev] [PATCH v5 6/7] doc: tune pdf fonts Thomas Monjalon
@ 2015-03-19 11:23     ` Thomas Monjalon
  2015-03-19 13:47     ` [dpdk-dev] [PATCH v5 0/7] add doc-guides-pdf target Mcnamara, John
  7 siblings, 0 replies; 41+ messages in thread
From: Thomas Monjalon @ 2015-03-19 11:23 UTC (permalink / raw)
  To: john.mcnamara; +Cc: dev

The "manual" Latex template provided by Sphinx introduce a lot
of useless and confusing blank pages.
Let's remove them.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
---
 doc/guides/conf.py | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/doc/guides/conf.py b/doc/guides/conf.py
index 168efa6..b1ef323 100644
--- a/doc/guides/conf.py
+++ b/doc/guides/conf.py
@@ -63,6 +63,9 @@ latex_preamble = r"""
 latex_elements = {
     'papersize': 'a4paper',
     'pointsize': '11pt',
+    # remove blank pages
+    'classoptions': ',openany,oneside',
+    'babel': '\\usepackage[english]{babel}',
     # customize Latex formatting
     'preamble': latex_preamble
 }
-- 
2.2.2

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [dpdk-dev] [PATCH v5 0/7] add doc-guides-pdf target
  2015-03-19 11:23   ` [dpdk-dev] [PATCH v5 0/7] add doc-guides-pdf target Thomas Monjalon
                       ` (6 preceding siblings ...)
  2015-03-19 11:23     ` [dpdk-dev] [PATCH v5 7/7] doc: remove blank pages in pdf Thomas Monjalon
@ 2015-03-19 13:47     ` Mcnamara, John
  2015-03-19 17:04       ` Thomas Monjalon
  7 siblings, 1 reply; 41+ messages in thread
From: Mcnamara, John @ 2015-03-19 13:47 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev

> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]
> Sent: Thursday, March 19, 2015 11:23 AM
> To: Mcnamara, John
> Cc: Iremonger, Bernard; dev@dpdk.org
> Subject: [PATCH v5 0/7] add doc-guides-pdf target
> 
> First versions were written by John. I suggest this v5 for last changes.

Hi Thomas,

I reviewed and tested the patch updates and they look good to me.

I ack the new additions.

John


Acked-by: John McNamara <john.mcnamara@intel.com>

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [dpdk-dev] [PATCH v5 0/7] add doc-guides-pdf target
  2015-03-19 13:47     ` [dpdk-dev] [PATCH v5 0/7] add doc-guides-pdf target Mcnamara, John
@ 2015-03-19 17:04       ` Thomas Monjalon
  0 siblings, 0 replies; 41+ messages in thread
From: Thomas Monjalon @ 2015-03-19 17:04 UTC (permalink / raw)
  To: Mcnamara, John; +Cc: dev

2015-03-19 13:47, Mcnamara, John:
> > -----Original Message-----
> > From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]
> > Sent: Thursday, March 19, 2015 11:23 AM
> > To: Mcnamara, John
> > Cc: Iremonger, Bernard; dev@dpdk.org
> > Subject: [PATCH v5 0/7] add doc-guides-pdf target
> > 
> > First versions were written by John. I suggest this v5 for last changes.
> 
> Hi Thomas,
> 
> I reviewed and tested the patch updates and they look good to me.
> 
> I ack the new additions.
> 
> John
> 
> 
> Acked-by: John McNamara <john.mcnamara@intel.com>

Applied, thanks

PDF documents will be generated and hosted after each major release
as for HTML. A page will provide access to archives.

^ permalink raw reply	[flat|nested] 41+ messages in thread

end of thread, other threads:[~2015-03-19 17:05 UTC | newest]

Thread overview: 41+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-01-14 17:14 [dpdk-dev] [PATCH RFC 0/1] Add 'make pdf' target to convert guide docs to pdf John McNamara
2015-01-14 17:14 ` [dpdk-dev] [PATCH 1/2] doc: " John McNamara
2015-01-30 18:13 ` [dpdk-dev] [PATCH v2 0/4] " John McNamara
2015-01-30 18:13   ` [dpdk-dev] [PATCH v2 1/4] mk: Add 'make doc-pdf' " John McNamara
2015-01-30 20:52     ` Thomas Monjalon
     [not found]       ` <B27915DBBA3421428155699D51E4CFE2EAC4D2@IRSMSX103.ger.corp.intel.com>
     [not found]         ` <2564393.TY2qeNvaqR@xps13>
2015-02-03 13:24           ` Mcnamara, John
2015-01-30 18:13   ` [dpdk-dev] [PATCH v2 2/4] doc: Add Sphinx config to build pdf version of guides John McNamara
2015-01-30 21:03     ` Thomas Monjalon
2015-01-30 18:13   ` [dpdk-dev] [PATCH v2 3/4] doc: Fix encoding of (r) character John McNamara
2015-01-30 18:13   ` [dpdk-dev] [PATCH v2 4/4] doc: Refactored split cell formatting in one table John McNamara
2015-01-30 21:05     ` Thomas Monjalon
2015-01-30 20:25   ` [dpdk-dev] [PATCH v2 0/4] doc: Add 'make pdf' target to convert guide docs to pdf Thomas Monjalon
     [not found] ` <1422882967-27060-1-git-send-email-john.mcnamara@intel.com>
     [not found]   ` <1422882967-27060-3-git-send-email-john.mcnamara@intel.com>
2015-02-03 10:30     ` [dpdk-dev] [PATCH v3 2/4] doc: Add Sphinx config to build pdf version of guides Iremonger, Bernard
2015-02-03 14:11 ` [dpdk-dev] [PATCH v4 0/5] doc: Add 'make pdf' target to convert guide docs to pdf John McNamara
2015-02-03 14:11   ` [dpdk-dev] [PATCH v4 1/5] mk: Add 'make doc-pdf' " John McNamara
2015-02-16 12:19     ` Iremonger, Bernard
2015-02-16 12:55       ` Mcnamara, John
2015-02-16 14:16       ` Iremonger, Bernard
2015-02-03 14:11   ` [dpdk-dev] [PATCH v4 2/5] doc: Add Sphinx config to build pdf version of guides John McNamara
2015-02-16 14:20     ` Iremonger, Bernard
2015-02-03 14:11   ` [dpdk-dev] [PATCH v4 3/5] doc: Fix encoding of (r) character John McNamara
2015-02-13 14:29     ` Iremonger, Bernard
2015-02-13 15:59       ` Mcnamara, John
2015-02-13 16:42         ` Iremonger, Bernard
2015-02-16 14:22     ` Iremonger, Bernard
2015-02-03 14:11   ` [dpdk-dev] [PATCH v4 4/5] doc: Refactored split cell formatting in one table John McNamara
2015-02-16 14:23     ` Iremonger, Bernard
2015-02-03 14:11   ` [dpdk-dev] [PATCH v4 5/5] doc: Convert image extensions to wildcard John McNamara
2015-02-16 12:09     ` Iremonger, Bernard
2015-02-16 12:43       ` Mcnamara, John
2015-02-16 14:25     ` Iremonger, Bernard
2015-03-19 11:23   ` [dpdk-dev] [PATCH v5 0/7] add doc-guides-pdf target Thomas Monjalon
2015-03-19 11:23     ` [dpdk-dev] [PATCH v5 1/7] doc: fix encoding of (r) character Thomas Monjalon
2015-03-19 11:23     ` [dpdk-dev] [PATCH v5 2/7] doc: refactor split cell formatting in table Thomas Monjalon
2015-03-19 11:23     ` [dpdk-dev] [PATCH v5 3/7] doc: convert image extensions to wildcard Thomas Monjalon
2015-03-19 11:23     ` [dpdk-dev] [PATCH v5 4/7] doc: add pdf output Thomas Monjalon
2015-03-19 11:23     ` [dpdk-dev] [PATCH v5 5/7] doc: fix version for python 3 Thomas Monjalon
2015-03-19 11:23     ` [dpdk-dev] [PATCH v5 6/7] doc: tune pdf fonts Thomas Monjalon
2015-03-19 11:23     ` [dpdk-dev] [PATCH v5 7/7] doc: remove blank pages in pdf Thomas Monjalon
2015-03-19 13:47     ` [dpdk-dev] [PATCH v5 0/7] add doc-guides-pdf target Mcnamara, John
2015-03-19 17:04       ` Thomas Monjalon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).