Message ID | 20250120160301.121245-2-git@mavit.org.uk (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [1/2] Check for Perl 5.26.0 from Meson build | expand |
On Mon, Jan 20, 2025 at 04:03:01PM +0000, Peter Oliver wrote: > Command `perl --version` says, e.g., “This is perl 5, version 26, > subversion 0 (v5.26.0)”, which Meson interprets as version 26. Yeah, I've also discovered this issue, but decided to improve it upstream in Meson [1]. Meson now prefers version numbers with dots when scanning through the output, which makes it match the "v5.26.0" part instead of the "version 26" part. This will be released with Meson 1.7.0, which should be released soonish. I'm a little torn whether it still makes sense to fix the issue in that light. If we do, we should use a fix that properly fixes the underlying issue instead of adapting to the misdetected version, as that will stop working once the mentioned fix is released. One way would be to use `perl -V:version` instead of `perl --version`, which will print the following: version='5.40.0'; The support of overriding the version argument has only been added recently with Meson 1.5.0 though. We can still make it work though by making this conditional: diff --git a/meson.build b/meson.build index 07744c73b1..c452a79e37 100644 --- a/meson.build +++ b/meson.build @@ -754,7 +754,11 @@ endif # Note that we only set NO_PERL if the Perl features were disabled by the user. # It may not be set when we have found Perl, but only use it to run tests. -perl = find_program('perl', version: '>=5.8.1', dirs: program_path, required: perl_required) +if meson.version().version_compare('>=1.5.0') + perl = find_program('perl', version: '>=5.8.1', dirs: program_path, required: perl_required, version_argument: '-V:version') +else + perl = find_program('perl', version: '>=5.8.1', dirs: program_path, required: perl_required) +endif perl_features_enabled = perl.found() and get_option('perl').allowed() if perl_features_enabled build_options_config.set('NO_PERL', '') Is it worth it? I dunno. But also doesn't hurt if you want to go down that path. Thanks! Patrick [1]: https://github.com/mesonbuild/meson/commit/a3679a64eec7c312c81d657880f34f015426c7db
diff --git a/meson.build b/meson.build index f01d81b39f..bf129205ad 100644 --- a/meson.build +++ b/meson.build @@ -755,7 +755,11 @@ endif # Note that we only set NO_PERL if the Perl features were disabled by the user. # It may not be set when we have found Perl, but only use it to run tests. -perl = find_program('perl', version: '>=5.26.0', dirs: program_path, required: perl_required) +# +# When checking here, it would be better to say, +# version: '>=5.26.0', version_argument: '-eprint "$^V"' +# but that requires Meson 1.5.0, which at the time of writing is rather new. +perl = find_program('perl', version: '>=26', dirs: program_path, required: perl_required) perl_features_enabled = perl.found() and get_option('perl').allowed() if perl_features_enabled build_options_config.set('NO_PERL', '')
Command `perl --version` says, e.g., “This is perl 5, version 26, subversion 0 (v5.26.0)”, which Meson interprets as version 26. Signed-off-by: Peter Oliver <git@mavit.org.uk> --- meson.build | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)