Re: [PATCH v3 1/8] meson: stop discovering native version of Python
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jul 9, 2025, 15:09 UTC
- Message-ID
- <xmqqikk1pfiz.fsf@gitster.g>
- In-Reply-To
- <20250709-b4-pks-meson-cleanups-v3-1-29ab15b9ab85@pks.im>
Patrick Steinhardt <ps@pks.im> writes:
Show 17 quoted lines
> When Python features are enabled we search both for a native and > non-native version of Python. This is wrong though: we don't use Python > in our build process, so there is no need to search for it in the first > place. > > There is one location where we use the native version of Python, namely > when deciding whether or not we want to wire up git-p4(1). This check is > invalid though, as we shouldn't check for the build host to have Python, > but for the target host. > > Fix this invalid check to use the non-native version of Python and stop > searching for a native version of Python altogether. > > Signed-off-by: Patrick Steinhardt <ps@pks.im> > --- > meson.build | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-)
The above explains the reasoning very nicely.
Show 11 quoted lines
> -python = import('python').find_installation('python3', required: get_option('python'))
> -target_python = find_program('python3', native: false, required: python.found())
> -if python.found()
> +# Python is not used for our build system, but exclusively for git-p4.
> +# Consequently we only need to determine whether Python is available for the
> +# build target.
> +target_python = find_program('python3', native: false, required: get_option('python'))
> +if target_python.found()
> build_options_config.set('NO_PYTHON', '')
> else
> libgit_c_args += '-DNO_PYTHON'We ask explicitly for Python 3 here.
Does find_program() have some magic to deal with installations where Python3 is simply called /usr/bin/python (and worse yet, not as a symbolic link to /usr/bin/python3)?
I found
"Since 0.50.0 if the "python3" program is requested and it is
not found in the system, Meson will return its current
interpreter",which I suspect refers to the path to python3 used during the build and is not what we want, at
https://mesonbuild.com/Reference-manual_functions.html#find_program
which got me a bit worried.
Perhaps everybody with Python3 has it at /usr/bin/python3 these days, and my worries are unfounded? ;-)
Thanks.
Show 18 quoted lines
> @@ -1979,7 +1981,7 @@ if perl_features_enabled
> subdir('perl')
> endif
>
> -if python.found()
> +if target_python.found()
> scripts_python = [
> 'git-p4.py'
> ]
> @@ -2202,7 +2204,7 @@ summary({
> 'iconv': iconv.found(),
> 'pcre2': pcre2.found(),
> 'perl': perl_features_enabled,
> - 'python': python.found(),
> + 'python': target_python.found(),
> }, section: 'Auto-detected features')
>
> summary({