doc: fix Meson warning about install_subdir

../../git/weston/doc/sphinx/meson.build:97: WARNING:
Project targets '>= 0.63.0' but uses feature deprecated since '0.60.0':
install_subdir with empty directory. It worked by accident and is buggy.
Use install_emptydir instead.

I get the above warning on a clean build, because the directory in
question is empty at configure time. It gets populated at compile time.

Having to exclude one file from the build complicated fixing this.
custom_target() does not support install-excludes, and it looks like
Sphinx does not allow locating the buildfile elsewhere. One option would
be to use a meson.add_install_script() to delete the unwanted file after
it has been installed, but this seemed more complicated than the
solution I chose.

The intermediate build directory name needs to change from 'doc' to
'weston', so that I don't need to strip_directory which custom_target
does not support. The 'output' array in custom_target() also does not
allow outputs to be speficied in sub-directories.

The sh script is tidied up a little bit with set -e, otherwise it would
have become unreadable.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
This commit is contained in:
Pekka Paalanen 2025-12-15 15:23:23 +02:00 committed by Marius Vlad
parent c0a6b7c1c9
commit 6955752b95
2 changed files with 16 additions and 10 deletions

View file

@ -48,7 +48,7 @@ doxygen_conf_weston = configure_file(
script_data = configuration_data() script_data = configuration_data()
script_data.set('SRCDIR', meson.current_build_dir()) script_data.set('SRCDIR', meson.current_build_dir())
script_data.set('OUTDIR', meson.current_build_dir() + '/doc') script_data.set('OUTDIR', meson.current_build_dir() / 'weston')
# Set a different directory for doctrees to avoid installing them # Set a different directory for doctrees to avoid installing them
script_data.set('DOCTREES_DIR', meson.current_build_dir() + '/doctrees') script_data.set('DOCTREES_DIR', meson.current_build_dir() + '/doctrees')
@ -82,9 +82,11 @@ endif
sphinx_doc = custom_target( sphinx_doc = custom_target(
'weston-doc-breathe', 'weston-doc-breathe',
command: script_doxy_sphinx, command: script_doxy_sphinx,
output: 'doc', output: 'weston',
build_by_default: true, build_by_default: true,
env: sphinx_env, env: sphinx_env,
install: true,
install_dir: dir_data / 'doc',
) )
# we need this because we will have a stale 'doc' directory # we need this because we will have a stale 'doc' directory
@ -93,10 +95,3 @@ docs = run_target(
'docs', 'docs',
command: script_doxy_sphinx, command: script_doxy_sphinx,
) )
install_subdir(
sphinx_doc.full_path(),
install_dir: dir_data / 'doc' / 'weston',
exclude_files: '.buildinfo',
strip_directory: true,
)

View file

@ -6,4 +6,15 @@ else
SPHINX_WERROR="" SPHINX_WERROR=""
fi fi
@DOXYGEN_CMD@ @DOXYGEN_CONF@ && @SPHINX_CMD@ $SPHINX_WERROR -E -q -j auto -d @DOCTREES_DIR@ @SRCDIR@ @OUTDIR@ set -e
BUILDINFO_ORIG="@OUTDIR@/.buildinfo"
BUILDINFO_SAVE="@SRCDIR@/buildinfo.save"
[ -f "$BUILDINFO_SAVE" ] && mv -f "$BUILDINFO_SAVE" "$BUILDINFO_ORIG"
@DOXYGEN_CMD@ @DOXYGEN_CONF@
@SPHINX_CMD@ $SPHINX_WERROR -E -q -j auto -d @DOCTREES_DIR@ @SRCDIR@ @OUTDIR@
mv -f "$BUILDINFO_ORIG" "$BUILDINFO_SAVE"