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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux