Re: [LTP] [PATCH v4 3/5] doc/Makefile: Allow to create and use .venv

Andrea Cervesato via ltp
2025-03-28T13:05:37Z

Hi,

Reviewed-by: Andrea Cervesato <andrea.cervesato@suse.com>

On 3/28/25 10:57, Petr Vorel wrote:
> Add 'setup' target (alias to '.venv') to create virtualenv directory.
> This is an optional target (not run by default).
> If .venv exists, it's used in other targets, activation supports only
> fish and bash/zsh (known shells used by LTP developers, csh/tcsh is
> ignored atm).
>
> This helps to use virtualenv for development, but avoid using it by
> default (readthedoc uses container with virtualenv, creating it would be
> waste of time).
>
> Add 'distclean' target which removes also .venv/ directory.
>
> Signed-off-by: Petr Vorel <pvorel@suse.cz>
> ---
> Changes in v4:
> * Add setup (alias to .venv)
> * Move sphinx to requirements.txt (therefore remove handling in Makefile)
> * Add support also for fish (csh/tcsh ignored, supporting: fish, bash/zsh)
>
> doc/Makefile | 22 ++++++++++++++++++++--
> 1 file changed, 20 insertions(+), 2 deletions(-)
>
> diff --git a/doc/Makefile b/doc/Makefile
> index 3c5682ad00..2062d6e935 100644
> --- a/doc/Makefile
> +++ b/doc/Makefile
> @@ -5,15 +5,33 @@ top_srcdir ?= ..
>
> include $(top_srcdir)/include/mk/env_pre.mk
>
> +PYTHON := python3
> +VENV_DIR := .venv
> +
> +# only fish and bash/zsh supported
> +VENV_CMD := if [ "x${FISH_VERSION}" != "x" ]; then . $(VENV_DIR)/bin/activate.fish; else . $(VENV_DIR)/bin/activate; fi
> +
> +RUN_VENV := if [ -d $(VENV_DIR) ]; then $(VENV_CMD); fi
> +
> +$(VENV_DIR):
> + $(PYTHON) -m virtualenv $(VENV_DIR)
> + $(VENV_CMD) && pip install -r requirements.txt
> +
> +.PHONY: setup
> +setup: $(VENV_DIR)
> +
> ${abs_top_builddir}/metadata/ltp.json:
> $(MAKE) -C ${abs_top_builddir}/metadata
>
> all: ${abs_top_builddir}/metadata/ltp.json
> - sphinx-build -b html . html
> + $(RUN_VENV); sphinx-build -b html . html
>
> spelling:
> - sphinx-build -b spelling -d build/doctree . build/spelling
> + $(RUN_VENV); sphinx-build -b spelling -d build/doctree . build/spelling
>
> clean:
> rm -rf html/ build/ _static/syscalls.rst _static/tests.rst syscalls.tbl \
> ${abs_top_builddir}/metadata/ltp.json
> +
> +distclean: clean
> + rm -rf $(VENV_DIR)