Subject: Re: [PATCH 3/4] meson: require Perl when building docs

From: Junio C Hamano <[email-masked]>
Date: Sat, 29 Mar 2025 10:56:45 -0700

Patrick Steinhardt <[email-masked]> writes:

> From: Eli Schwartz <[email-masked]>
>
> When building our documentation we require Perl to generate the list of
> commands via "cmd-list.perl". Having a Perl interpreter available is
> thus mandatory when building documentation, but Meson does not enforce
> this prerequisite. Thus, when all optional features that depend on Perl
> are disabled, we won't look up the Perl interpreter, which will in the
> end lead to an error at setup time:
>
> ```
> $ meson setup builddir/ -Ddocs=man -Dperl=disabled -Dtests=false
> [...]
> Documentation/meson.build:308:22: ERROR: Tried to use not-found external program in "command"
> ```
>
> There is already a list of other cases where we do need the Perl
> interpreter. Building documentation should be one of those cases, but
> is missing from the list. Add it to fix the issue.
>
> Signed-off-by: Eli Schwartz <[email-masked]>
> Commit-message-edited-by: Patrick Steinhardt <[email-masked]>
> Signed-off-by: Patrick Steinhardt <[email-masked]>
> ---
>  meson.build | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Two puzzling things.

 * How is this different from 7c8cd9c1 (meson: fix perl detection
   when docs are enabled, but perl bindings aren't, 2025-03-16)?

 * This uses get_options('docs'); shouldn't it be
   get_option('docs')?  With that changed, the patch becomes
   identical to the patch from May 16th, but the proposed log
   message seems to be vastly different.

I'll drop this step from the series for now, as the other one
already has been in 'next'.

Thanks.

> diff --git a/meson.build b/meson.build
> index a8d1e63ccc6..51013c70de9 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -772,7 +772,7 @@ endif
>  # features. It is optional if you want to neither execute tests nor use any of
>  # these optional features.
>  perl_required = get_option('perl')
> -if get_option('tests') or get_option('gitweb').enabled() or 'netrc' in get_option('credential_helpers')
> +if get_option('tests') or get_option('gitweb').enabled() or 'netrc' in get_option('credential_helpers') or get_options('docs') != []
>    perl_required = true
>  endif