2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-22 01:59:26 +00:00
Aydın Mercan ccae13b482
Add missing files for meson built manpages
These manual entries still get built and installed but get excluded from
meson's rebuild detection.
2025-07-08 13:44:03 +03:00
..

Building the Manpage

Building from the tarball

When building BIND from the tarball, there will be pre-generated .in manpage templates. For every page relevant to the build (man_srcset), meson will generate the manpage and install it using install_man.

Sphinx can also be used like in git tree builds described below but the pages generated with sphinx will not be installed if templated ones are available.

Building from the git tree

Sphinx is required when building the manpages from the git tree. If sphinx-build didn't exist when creating the build directory, build targets for the manpage will not exist. Use the command meson configure --clearcache to force the next build to probe for sphinx again.

The source set manrst_srcset is used only to determine when a rebuild is necessary from meson's perspective and doesn't actually pass the source files. Sphinx works by handling entire directories and so meson needs to use depend_files for the task.

To find which optional manpages need to be built or not, we pass the build directory to sphinx using the environment variable BIND_BUILD_ROOT. Sphinx will then inspect the meson-generated intro-targets.json file to see which optional build components are enabled.

If an optional component like LMDB is disabled in the build directory, its corresponding manpage needs to be removed. From meson's perspective, the entire folder is the output and doesn't concern itself with the insides specifically. This is done by checking which optional targets are not built but have the page entry in the output folder.

If the BIND_BUILD_ROOT is not specified, sphinx will build every page. This is used when creating a release tarball. Meson will use the script util/meson-dist-package.sh to create the templates when runnnig the dist command. If sphinx is not available in the build directory, this step will be skipped and so the tarballs must be created on a system with sphinx-build.