From: Mario Carrillo <mario.alfredo.c.arevalo@intel.com>
To: dev@dpdk.org
Cc: jos.c.venegas.munoz@intel.com
Subject: [dpdk-dev] [PATCH v6 10/10] doc: Add information about new installation rules
Date: Tue, 10 Nov 2015 11:07:40 -0600 [thread overview]
Message-ID: <1447175260-26162-11-git-send-email-mario.alfredo.c.arevalo@intel.com> (raw)
In-Reply-To: <1447175260-26162-1-git-send-email-mario.alfredo.c.arevalo@intel.com>
Information about variables and rules behaviour is added to
documentation.
Signed-off-by: Mario Carrillo <mario.alfredo.c.arevalo@intel.com>
---
doc/build-sdk-quick.txt | 22 +++++++++++++++++++-
doc/guides/freebsd_gsg/build_dpdk.rst | 39 +++++++++++++++++++++++++++++++++++
doc/guides/linux_gsg/build_dpdk.rst | 39 +++++++++++++++++++++++++++++++++++
3 files changed, 99 insertions(+), 1 deletion(-)
diff --git a/doc/build-sdk-quick.txt b/doc/build-sdk-quick.txt
index bf18b48..1c40dd7 100644
--- a/doc/build-sdk-quick.txt
+++ b/doc/build-sdk-quick.txt
@@ -5,10 +5,21 @@ Build commands
all same as build (default rule)
build build in a configured directory
clean remove files but keep configuration
- install build many targets (wildcard allowed) and install in DESTDIR
+ install if T is defined, build a target and install in DESTDIR
+ else call install-fhs target
uninstall remove all installed targets
examples build examples for given targets (T=)
examples_clean clean examples for given targets (T=)
+Install commands
+ install if T is defined, build a target and install in DESTDIR
+ else call install-fhs target
+ install-headers install headers files
+ install-bin install app files a dpdk tools
+ install-lib install libraries
+ install-doc install documentation
+ install-mod install modules
+ install-sdk install headers, makefiles, scripts,examples, tools and config files
+ install-fhs install libraries, modules, app files, nic bind files and documentation
Build variables
EXTRA_CPPFLAGS preprocessor options
EXTRA_CFLAGS compiler options
@@ -23,3 +34,12 @@ Build variables
T target template (install default: *) - used with config or install
format: <arch-machine-execenv-toolchain>
templates in config/defconfig_*
+Install variables
+ RTE_PREFIX /usr/local by default it can be overridden
+ BIN_DIR $(RTE_PREFIX)/bin by default it can be overridden
+ INCLUDE_DIR $(RTE_PREFIX)/include by default it can be overridden
+ LIB_DIR $(RTE_PREFIX)/lib by default it can be overridden
+ DOC_DIR $(RTE_PREFIX)/share/doc/dpdk by default it can be overridden
+ DATA_DIR $(RTE_PREFIX)/shareby default it can be overridden
+ KMOD_DIR /lib/modules/$(uname -r)/extra/drivers/dpdk for linux
+ /boot/modules for BSD by default, they can be overridden
diff --git a/doc/guides/freebsd_gsg/build_dpdk.rst b/doc/guides/freebsd_gsg/build_dpdk.rst
index 8eff599..7d3e098 100644
--- a/doc/guides/freebsd_gsg/build_dpdk.rst
+++ b/doc/guides/freebsd_gsg/build_dpdk.rst
@@ -136,6 +136,45 @@ The DPDK is composed of several directories:
* config, tools, scripts, mk: Framework-related makefiles, scripts and configuration
+
+Build and install DPDK using a file hierarchy
+---------------------------------------------
+
+Following the next steps is possible configure, build and install specific files
+according to a file hierarchy and a group of variables.
+
+.. code-block:: console
+
+ make config T=<config template>
+ make
+ make <install target>
+
++------------------+--------------------------------------------------------------------------------+
+| install target | Description |
++==================+================================================================================+
+|install |if T is not defined will call install-fhs install |
++------------------+--------------------------------------------------------------------------------+
+|install-headers |install headers files where INCLUDE_DIR=$(RTE_PREFIX)/include/dpdk |
++------------------+--------------------------------------------------------------------------------+
+|install-bin |install app files a dpdk tools where BIN_DIR=$(RTE_PREFIX)/bin |
++------------------+--------------------------------------------------------------------------------+
+|install-lib |install libraries LIB_DIR=$(RTE_PREFIX)/lib |
++------------------+--------------------------------------------------------------------------------+
+|install-doc |install documentation DOC_DIR=$(RTE_PREFIX)/share/doc/dpdk |
++------------------+--------------------------------------------------------------------------------+
+|install-mod |install modules if RTE_EXEC_ENV=linuxapp then |
+| |KMOD_DIR=/lib/modules/$(uname -r)/extra/drivers/dpdk else KMOD_DIR=/boot/modules|
++------------------+--------------------------------------------------------------------------------+
+|install-sdk |install headers, makefiles, scripts,examples, tools and config files |
+| |DATA_DIR=$(RTE_PREFIX)/share/dpdk |
++------------------+--------------------------------------------------------------------------------+
+|install-fhs |install libraries, modules, app files, nic bind files and documentation |
++------------------+--------------------------------------------------------------------------------+
+
+RTE_PREFIX=/usr/local by default however RTE_PREFIX and all path variables can be overridden furthermore
+all targets can use DESTDIR variable.
+
+
Installation of the DPDK Target Environments
--------------------------------------------
diff --git a/doc/guides/linux_gsg/build_dpdk.rst b/doc/guides/linux_gsg/build_dpdk.rst
index 2680e66..784c9fe 100644
--- a/doc/guides/linux_gsg/build_dpdk.rst
+++ b/doc/guides/linux_gsg/build_dpdk.rst
@@ -152,6 +152,45 @@ The user may also make modifications to the compile-time DPDK configuration by e
In addition, the make clean command can be used to remove any existing compiled files for a subsequent full, clean rebuild of the code.
+
+Build and install DPDK using a file hierarchy
+---------------------------------------------
+
+Following the next steps is possible configure, build and install specific files
+according to a file hierarchy and a group of variables.
+
+.. code-block:: console
+
+ make config T=<config template>
+ make
+ make <install target>
+
++------------------+--------------------------------------------------------------------------------+
+| install target | Description |
++==================+================================================================================+
+|install |if T is not defined will call install-fhs install |
++------------------+--------------------------------------------------------------------------------+
+|install-headers |install headers files where INCLUDE_DIR=$(RTE_PREFIX)/include/dpdk |
++------------------+--------------------------------------------------------------------------------+
+|install-bin |install app files a dpdk tools where BIN_DIR=$(RTE_PREFIX)/bin |
++------------------+--------------------------------------------------------------------------------+
+|install-lib |install libraries LIB_DIR=$(RTE_PREFIX)/lib |
++------------------+--------------------------------------------------------------------------------+
+|install-doc |install documentation DOC_DIR=$(RTE_PREFIX)/share/doc/dpdk |
++------------------+--------------------------------------------------------------------------------+
+|install-mod |install modules if RTE_EXEC_ENV=linuxapp then |
+| |KMOD_DIR=/lib/modules/$(uname -r)/extra/drivers/dpdk else KMOD_DIR=/boot/modules|
++------------------+--------------------------------------------------------------------------------+
+|install-sdk |install headers, makefiles, scripts,examples, tools and config files |
+| |DATA_DIR=$(RTE_PREFIX)/share/dpdk |
++------------------+--------------------------------------------------------------------------------+
+|install-fhs |install libraries, modules, app files, nic bind files and documentation |
++------------------+--------------------------------------------------------------------------------+
+
+RTE_PREFIX=/usr/local by default however RTE_PREFIX and all path variables can be overridden furthermore
+all targets can use DESTDIR variable.
+
+
Browsing the Installed DPDK Environment Target
----------------------------------------------
--
2.6.1.120.g24a00ef
next prev parent reply other threads:[~2015-11-10 17:07 UTC|newest]
Thread overview: 150+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-18 20:33 [dpdk-dev] [PATCH 0/7] Add hierarchical support to make install Mario Carrillo
2015-09-18 20:33 ` [dpdk-dev] [PATCH 1/7] mk: Add hierarchy-file support Mario Carrillo
2015-09-18 20:33 ` [dpdk-dev] [PATCH 2/7] mk: Add hierarchy-file support (sbin) Mario Carrillo
2015-09-18 20:33 ` [dpdk-dev] [PATCH 3/7] mk: Add hierarchy-file support (doc) Mario Carrillo
2015-09-18 20:33 ` [dpdk-dev] [PATCH 4/7] mk: Add hierarchy-file support (app) Mario Carrillo
2015-09-18 20:33 ` [dpdk-dev] [PATCH 5/7] mk: Add hierarchy-file support (include) Mario Carrillo
2015-09-22 8:03 ` Panu Matilainen
2015-09-18 20:33 ` [dpdk-dev] [PATCH 6/7] mk: Add hierarchy-file support (lib) Mario Carrillo
2015-09-22 7:46 ` Panu Matilainen
2015-09-18 20:33 ` [dpdk-dev] [PATCH 7/7] mk: Add hierarchy-file support (linux mod) Mario Carrillo
2015-09-22 6:56 ` Panu Matilainen
2015-11-27 15:40 ` Thomas Monjalon
2015-11-27 16:01 ` Ferruh Yigit
2015-11-27 16:20 ` David Marchand
2015-11-27 16:23 ` Bruce Richardson
2015-11-27 16:48 ` Ferruh Yigit
2015-11-27 21:05 ` Arevalo, Mario Alfredo C
2015-09-22 6:29 ` [dpdk-dev] [PATCH 0/7] Add hierarchical support to make install Panu Matilainen
2015-09-22 8:00 ` Olivier MATZ
2015-09-22 8:34 ` Panu Matilainen
2015-09-22 9:00 ` Olivier MATZ
2015-09-22 10:14 ` Panu Matilainen
2015-09-22 10:36 ` Panu Matilainen
2015-09-22 14:40 ` Olivier MATZ
2015-09-23 14:54 ` Arevalo, Mario Alfredo C
2015-09-22 10:39 ` Neil Horman
2015-09-22 8:16 ` Olivier MATZ
2015-09-29 0:00 ` [dpdk-dev] [PATCH v2 0/8] Add instalation rules for dpdk files Mario Carrillo
2015-09-29 0:00 ` [dpdk-dev] [PATCH v2 1/8] mk: Add rule for installing headers Mario Carrillo
2015-09-29 8:49 ` Panu Matilainen
2015-09-29 0:00 ` [dpdk-dev] [PATCH v2 2/8] mk: Add rule for installing app files Mario Carrillo
2015-09-29 0:00 ` [dpdk-dev] [PATCH v2 3/8] mk: Add rule for installing libraries Mario Carrillo
2015-09-29 9:28 ` Panu Matilainen
2015-09-29 0:00 ` [dpdk-dev] [PATCH v2 4/8] mk: Add rule for installing modules Mario Carrillo
2015-09-29 0:01 ` [dpdk-dev] [PATCH v2 5/8] mk: Add rule for installing documentation Mario Carrillo
2015-09-29 0:01 ` [dpdk-dev] [PATCH v2 6/8] mk: Add rule for installing nic bind files Mario Carrillo
2015-09-29 0:01 ` [dpdk-dev] [PATCH v2 7/8] mk: Add rule for installing sdk files Mario Carrillo
2015-09-29 0:01 ` [dpdk-dev] [PATCH v2 8/8] mk: Add rule for installing runtime files Mario Carrillo
2015-10-01 0:11 ` [dpdk-dev] [PATCH v3 0/8] Add instalation rules for dpdk files Mario Carrillo
2015-10-01 0:11 ` [dpdk-dev] [PATCH v3 1/8] mk: Add rule for installing headers Mario Carrillo
2015-10-01 0:11 ` [dpdk-dev] [PATCH v3 2/8] mk: Add rule for installing app files Mario Carrillo
2015-10-01 0:11 ` [dpdk-dev] [PATCH v3 3/8] mk: Add rule for installing libraries Mario Carrillo
2015-10-01 0:11 ` [dpdk-dev] [PATCH v3 4/8] mk: Add rule for installing modules Mario Carrillo
2015-10-02 10:38 ` Panu Matilainen
2015-10-02 16:26 ` Arevalo, Mario Alfredo C
2015-10-05 7:13 ` Panu Matilainen
2015-10-01 0:11 ` [dpdk-dev] [PATCH v3 5/8] mk: Add rule for installing documentation Mario Carrillo
2015-10-01 0:11 ` [dpdk-dev] [PATCH v3 6/8] mk: Add rule for installing nic bind files Mario Carrillo
2015-10-02 10:49 ` Panu Matilainen
2015-10-02 10:54 ` Richardson, Bruce
2015-10-02 16:27 ` Arevalo, Mario Alfredo C
2015-11-27 15:52 ` Thomas Monjalon
2015-11-27 16:10 ` Bruce Richardson
2015-10-01 0:11 ` [dpdk-dev] [PATCH v3 7/8] mk: Add rule for installing sdk files Mario Carrillo
2015-10-01 0:11 ` [dpdk-dev] [PATCH v3 8/8] mk: Add rule for installing runtime files Mario Carrillo
2015-10-02 11:15 ` Panu Matilainen
2015-10-02 11:25 ` Bruce Richardson
2015-10-02 16:29 ` Arevalo, Mario Alfredo C
2015-10-12 9:28 ` Jan Blunck
2015-10-05 20:19 ` [dpdk-dev] [PATCH v4 0/7] Add instalation rules for dpdk files Mario Carrillo
2015-10-05 20:20 ` [dpdk-dev] [PATCH v4 1/7] mk: Add rule for installing headers Mario Carrillo
2015-10-16 19:29 ` Olivier MATZ
2015-10-19 23:35 ` Arevalo, Mario Alfredo C
2015-10-05 20:20 ` [dpdk-dev] [PATCH v4 2/7] mk: Add rule for installing app files Mario Carrillo
2015-10-16 19:30 ` Olivier MATZ
2015-10-05 20:20 ` [dpdk-dev] [PATCH v4 3/7] mk: Add rule for installing libraries Mario Carrillo
2015-10-05 20:20 ` [dpdk-dev] [PATCH v4 4/7] mk: Add rule for installing modules Mario Carrillo
2015-10-05 20:20 ` [dpdk-dev] [PATCH v4 5/7] mk: Add rule for installing documentation Mario Carrillo
2015-10-16 19:30 ` Olivier MATZ
2015-10-19 23:36 ` Arevalo, Mario Alfredo C
2015-10-05 20:20 ` [dpdk-dev] [PATCH v4 6/7] mk: Add rule for installing sdk files Mario Carrillo
2015-10-16 19:31 ` Olivier MATZ
2015-10-19 14:00 ` Panu Matilainen
2015-10-05 20:20 ` [dpdk-dev] [PATCH v4 7/7] mk: Add rule for installing runtime files Mario Carrillo
2015-10-10 17:45 ` [dpdk-dev] [PATCH v4 0/7] Add instalation rules for dpdk files Arevalo, Mario Alfredo C
2015-10-15 12:32 ` Panu Matilainen
2015-10-14 15:58 ` Miguel Bernal Marin
2015-10-16 19:32 ` Olivier MATZ
2015-10-30 1:47 ` [dpdk-dev] [PATCH v5 00/10] " Mario Carrillo
2015-10-30 1:47 ` [dpdk-dev] [PATCH v5 01/10] mk: Add rule for installing headers Mario Carrillo
2015-10-30 1:47 ` [dpdk-dev] [PATCH v5 02/10] mk: Add rule for installing app files Mario Carrillo
2015-10-30 1:47 ` [dpdk-dev] [PATCH v5 03/10] mk: Add rule for installing libraries Mario Carrillo
2015-10-30 1:47 ` [dpdk-dev] [PATCH v5 04/10] mk: Add rule for installing modules Mario Carrillo
2015-10-30 1:47 ` [dpdk-dev] [PATCH v5 05/10] mk: Add rule for installing documentation Mario Carrillo
2015-10-30 1:47 ` [dpdk-dev] [PATCH v5 06/10] mk: Add rule for installing sdk files Mario Carrillo
2015-10-30 1:47 ` [dpdk-dev] [PATCH v5 07/10] mk: Add rule for installing runtime files Mario Carrillo
2015-10-30 1:47 ` [dpdk-dev] [PATCH v5 08/10] mk: Rename install rule as mbuild rule Mario Carrillo
2015-10-30 1:47 ` [dpdk-dev] [PATCH v5 09/10] mk: Add new install rule Mario Carrillo
2015-10-30 1:47 ` [dpdk-dev] [PATCH v5 10/10] doc: Add information about new installation rules Mario Carrillo
2015-11-10 17:07 ` [dpdk-dev] [PATCH v6 00/10] Add installation rules for dpdk files Mario Carrillo
2015-11-10 17:07 ` [dpdk-dev] [PATCH v6 01/10] mk: Add rule for installing headers Mario Carrillo
2015-11-10 17:07 ` [dpdk-dev] [PATCH v6 02/10] mk: Add rule for installing app files Mario Carrillo
2015-11-10 17:07 ` [dpdk-dev] [PATCH v6 03/10] mk: Add rule for installing libraries Mario Carrillo
2015-11-10 17:07 ` [dpdk-dev] [PATCH v6 04/10] mk: Add rule for installing modules Mario Carrillo
2015-11-10 17:07 ` [dpdk-dev] [PATCH v6 05/10] mk: Add rule for installing documentation Mario Carrillo
2015-11-10 17:07 ` [dpdk-dev] [PATCH v6 06/10] mk: Add rule for installing sdk files Mario Carrillo
2015-11-30 16:20 ` Thomas Monjalon
2015-11-30 16:26 ` Arevalo, Mario Alfredo C
2015-11-10 17:07 ` [dpdk-dev] [PATCH v6 07/10] mk: Add rule for installing runtime files Mario Carrillo
2015-11-10 17:07 ` [dpdk-dev] [PATCH v6 08/10] mk: Rename install rule as mbuild rule Mario Carrillo
2015-11-10 17:07 ` [dpdk-dev] [PATCH v6 09/10] mk: Add new install rule Mario Carrillo
2015-11-10 17:07 ` Mario Carrillo [this message]
2015-11-10 17:18 ` [dpdk-dev] [PATCH v6 00/10] Add installation rules for dpdk files Aaron Conole
2015-11-10 23:25 ` Arevalo, Mario Alfredo C
2015-11-11 10:48 ` Bruce Richardson
2015-11-11 17:43 ` Arevalo, Mario Alfredo C
2015-12-01 0:53 ` [dpdk-dev] [PATCH v7 00/11] " Mario Carrillo
2015-12-01 0:53 ` [dpdk-dev] [PATCH v7 01/11] mk: Add rule for installing headers Mario Carrillo
2015-12-01 0:53 ` [dpdk-dev] [PATCH v7 02/11] mk: Add rule for installing app files Mario Carrillo
2015-12-01 0:53 ` [dpdk-dev] [PATCH v7 03/11] mk: Add rule for installing libraries Mario Carrillo
2015-12-01 0:53 ` [dpdk-dev] [PATCH v7 04/11] mk: Add rule for installing modules Mario Carrillo
2015-12-01 0:53 ` [dpdk-dev] [PATCH v7 05/11] mk: Add rule for installing documentation Mario Carrillo
2015-12-01 0:53 ` [dpdk-dev] [PATCH v7 06/11] mk: Add rule for installing sdk files Mario Carrillo
2015-12-01 0:53 ` [dpdk-dev] [PATCH v7 07/11] mk: Add rule for installing runtime files Mario Carrillo
2015-12-01 0:53 ` [dpdk-dev] [PATCH v7 08/11] app: Change name to test binary Mario Carrillo
2015-12-01 0:53 ` [dpdk-dev] [PATCH v7 09/11] mk: Rename install rule as mbuild rule Mario Carrillo
2015-12-01 0:53 ` [dpdk-dev] [PATCH v7 10/11] mk: Add new install rule Mario Carrillo
2015-12-01 0:53 ` [dpdk-dev] [PATCH v7 11/11] doc: Add information about new installation rules Mario Carrillo
2015-12-01 11:11 ` Mcnamara, John
2015-12-01 12:08 ` Mcnamara, John
2015-12-01 13:36 ` Arevalo, Mario Alfredo C
2015-12-01 19:17 ` [dpdk-dev] [PATCH v7 00/11] Add installation rules for dpdk files Thomas Monjalon
2015-12-01 19:36 ` Arevalo, Mario Alfredo C
2015-12-01 19:39 ` [dpdk-dev] [PATCH v8 " Mario Carrillo
2015-12-01 19:39 ` [dpdk-dev] [PATCH v8 01/11] mk: Add rule for installing headers Mario Carrillo
2015-12-01 19:39 ` [dpdk-dev] [PATCH v8 02/11] mk: Add rule for installing app files Mario Carrillo
2015-12-01 19:39 ` [dpdk-dev] [PATCH v8 03/11] mk: Add rule for installing libraries Mario Carrillo
2015-12-01 19:39 ` [dpdk-dev] [PATCH v8 04/11] mk: Add rule for installing modules Mario Carrillo
2015-12-01 19:39 ` [dpdk-dev] [PATCH v8 05/11] mk: Add rule for installing documentation Mario Carrillo
2015-12-01 19:39 ` [dpdk-dev] [PATCH v8 06/11] mk: Add rule for installing sdk files Mario Carrillo
2015-12-01 19:39 ` [dpdk-dev] [PATCH v8 07/11] mk: Add rule for installing runtime files Mario Carrillo
2015-12-01 19:39 ` [dpdk-dev] [PATCH v8 08/11] app: Change name to test binary Mario Carrillo
2015-12-01 19:39 ` [dpdk-dev] [PATCH v8 09/11] mk: Rename install rule as mbuild rule Mario Carrillo
2015-12-01 19:39 ` [dpdk-dev] [PATCH v8 10/11] mk: Add new install rule Mario Carrillo
2015-12-01 19:39 ` [dpdk-dev] [PATCH v8 11/11] doc: Add information about new installation rules Mario Carrillo
2015-12-02 9:33 ` [dpdk-dev] [PATCH v8 00/11] Add installation rules for dpdk files Panu Matilainen
2015-12-02 23:04 ` Arevalo, Mario Alfredo C
2015-12-03 21:37 ` [dpdk-dev] [PATCH v9 " Mario Carrillo
2015-12-03 21:37 ` [dpdk-dev] [PATCH v9 01/11] mk: Add rule for installing headers Mario Carrillo
2015-12-03 21:37 ` [dpdk-dev] [PATCH v9 02/11] mk: Add rule for installing app files Mario Carrillo
2015-12-03 21:37 ` [dpdk-dev] [PATCH v9 03/11] mk: Add rule for installing libraries Mario Carrillo
2015-12-03 21:37 ` [dpdk-dev] [PATCH v9 04/11] mk: Add rule for installing modules Mario Carrillo
2015-12-03 21:37 ` [dpdk-dev] [PATCH v9 05/11] mk: Add rule for installing documentation Mario Carrillo
2015-12-03 21:37 ` [dpdk-dev] [PATCH v9 06/11] mk: Add rule for installing sdk files Mario Carrillo
2015-12-03 21:37 ` [dpdk-dev] [PATCH v9 07/11] mk: Add rule for installing runtime files Mario Carrillo
2015-12-03 21:37 ` [dpdk-dev] [PATCH v9 08/11] app: Change name to test binary Mario Carrillo
2015-12-03 21:37 ` [dpdk-dev] [PATCH v9 09/11] mk: Rename install rule as mbuild rule Mario Carrillo
2015-12-03 21:37 ` [dpdk-dev] [PATCH v9 10/11] mk: Add new install rule Mario Carrillo
2015-12-03 21:37 ` [dpdk-dev] [PATCH v9 11/11] doc: Add information about new installation rules Mario Carrillo
2015-12-04 15:38 ` [dpdk-dev] [PATCH v9 00/11] Add installation rules for dpdk files Thomas Monjalon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1447175260-26162-11-git-send-email-mario.alfredo.c.arevalo@intel.com \
--to=mario.alfredo.c.arevalo@intel.com \
--cc=dev@dpdk.org \
--cc=jos.c.venegas.munoz@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).