Man Page Source Files
=====================

This directory contains the source files used to build LVM2 and
device-mapper man pages.  The final installable man pages (e.g.
lvcreate.8, lvm.conf.5) are generated at build time and are not
stored in the repository.

File suffixes
-------------

*_main
    Hand-written, complete man page source in nroff format.
    Used for pages whose content is entirely static: conceptual
    topics (lvmraid.7_main, lvmcache.7_main, ...), configuration
    files (lvm.conf.5_main), daemons (dmeventd.8_main, ...),
    and tools whose option set is not auto-generated (dmsetup.8_main,
    fsadm.8_main, ...).

*_des
    Short description text for commands whose man page is partially
    auto-generated.  Contains an introductory paragraph that appears
    after the auto-generated SYNOPSIS section.  Every _des file has
    a matching _end file.

*_end
    Trailing content (typically an EXAMPLES section) appended after
    the auto-generated option descriptions.  Paired 1:1 with _des
    files.

see_also.end
    Common "SEE ALSO" section shared by all auto-generated command
    pages.  Appended after the _end content.

*_meta
    Metadata about a man page used for index and category generation.
    Contains key=value pairs:
      category = <name>    Category for the categorized index.
      conditional = yes    Optional.  Marks the entry as conditional.
                           When pregenerated pages are used (cross-
                           compilation), entries for man pages not
                           enabled by the current configure are
                           filtered out.
    Every man page has a _meta file, including builtin commands that
    have no dedicated man page of their own (e.g. config.8_meta,
    help.8_meta).

*_gen
    Intermediate generated files produced during the build.  Created
    by the man-generator tool (or copied from _pregen fallbacks).
    Not stored in the repository.

*_pregen
    Pre-generated fallback content committed to the repository.
    Used when the man-generator tool cannot be built or fails to
    run (the Makefile checks for this via the test.gen probe).
    Regenerated with "make generate" and should be kept in sync
    with any source changes.

test.gen
    Build-time probe file.  The Makefile runs man-generator once
    at the start and writes the output to test.gen.  If the file
    has content, the generator is functional and is used to produce
    _gen files.  If it is empty, the build falls back to the
    committed _pregen files instead.  Not stored in the repository.

.5, .7, .8
    Final installable man pages.  Built from _main or _gen files
    by substituting version/path placeholders (SUBSTVARS) and
    escaping hyphens (ESCAPEHYPHENS).  These are build artifacts,
    listed in CLEAN_TARGETS, and not stored in the repository.

Build pipeline
--------------

Static pages (_main based):

    *_main  -->  SUBSTVARS  -->  ESCAPEHYPHENS  -->  *.5 / *.7 / *.8

Auto-generated command pages (_des + _end based):

    *_des + *_end + see_also.end
        --> man-generator --primary / --secondary
        --> *_gen
        --> SUBSTVARS  -->  ESCAPEHYPHENS  -->  *.8

    If the generator is unavailable, *_pregen is used in place
    of the generation step.

Index and category pages (_meta based):

    *_meta files
        --> man-generator --index / --categories
        --> *_gen
        --> SUBSTVARS  -->  ESCAPEHYPHENS  -->  *.7

    If the generator is unavailable, *_pregen is used in place
    of the generation step.  The pregenerated index and category
    files contain all possible entries (full configuration) with
    condition markers around optional entries.  At build time,
    entries for man pages not enabled by configure are filtered
    out.
