git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 2/2] Fix Meson Perl version check

From
Patrick Steinhardt <ps@pks.im>
Date
Jan 21, 2025, 06:44 UTC
Message-ID
<Z49CTa-wconHakMs@pks.im>
In-Reply-To
<20250120160301.121245-2-git@mavit.org.uk>
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
Previous: Peter OliverNext: Patrick Steinhardt
Message 3 of 16 in “Check for Perl 5.26.0 from Meson build”
  1. 1/2 Check for Perl 5.26.0 from Meson buildPeter Oliver, Jan 20, 2025
  2. 2/2 Fix Meson Perl version checkPeter Oliver, Jan 20, 2025
  3. Patrick SteinhardtJan 21, 2025
  4. Patrick SteinhardtJan 21, 2025
  5. 0/2 Fix Meson Perl version checkPeter Oliver, Jan 24, 2025
  6. 1/2 meson: bump minimum required Perl version to 5.26.0Peter Oliver, Jan 24, 2025
  7. 2/2 meson: fix Perl version check for Meson versions before 1.7.0Peter Oliver, Jan 24, 2025
  8. Patrick SteinhardtJan 27, 2025
  9. 0/2 Fix Meson Perl version checkPeter Oliver, Feb 18, 2025
  10. 1/2 meson: bump minimum required Perl version to 5.26.0Peter Oliver, Feb 18, 2025
  11. 2/2 meson: fix Perl version check for Meson versions before 1.7.0Peter Oliver, Feb 18, 2025
  12. Junio C HamanoFeb 18, 2025
  13. Patrick SteinhardtFeb 19, 2025
  14. Junio C HamanoFeb 19, 2025
  15. Peter OliverFeb 25, 2025
  16. Junio C HamanoFeb 25, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.