plperl version on the meson setup summary screen

Started by Zharkov Romanabout 1 year ago10 messages
#1Zharkov Roman
r.zharkov@postgrespro.ru
1 attachment(s)

Hello,

Would it be convinient to show the plperl version on the meson setup
summary
screen? Now it displays only 'YES' or 'NO'. This is the expected
behavior of
the meson build system and explains in its source code:
https://github.com/mesonbuild/meson/blob/5f0bd8ff1e7fc43199d4b371fc4625f80baba810/mesonbuild/dependencies/base.py#L311C15-L311C27
With the attached patch we can see the "perlversion" in the summary
information table. But without a beautiful console colorize.

Additionaly, we found out that "perlversion" gets from the perl
"api_versionstring" config variable. When the configure script parses
the
"perl -v" output:

pgac_perl_version=`$PERL -v 2>/dev/null | sed -n 's/This is
perl.*v[a-...

Is this behavior correct?

--
Roman Zharkov

Attachments:

0001-show-plperl-version-in-the-meson-setup-summary.patchtext/x-diff; name=0001-show-plperl-version-in-the-meson-setup-summary.patchDownload
diff --git a/meson.build b/meson.build
index 58e67975e85..cdee5880efa 100644
--- a/meson.build
+++ b/meson.build
@@ -990,6 +990,7 @@ endif
 
 perlopt = get_option('plperl')
 perl_dep = not_found_dep
+perlversion = ''
 if not perlopt.disabled()
   perl_may_work = true
 
@@ -3716,7 +3717,7 @@ if meson.version().version_compare('>=0.57')
       'nls': libintl,
       'openssl': ssl,
       'pam': pam,
-      'plperl': perl_dep,
+      'plperl': [perl_dep, perlversion],
       'plpython': python3_dep,
       'pltcl': tcl_dep,
       'readline': readline,
@@ -3727,6 +3728,7 @@ if meson.version().version_compare('>=0.57')
       'zstd': zstd,
     },
     section: 'External libraries',
+    list_sep: ' ',
   )
 
 endif
#2Andrew Dunstan
andrew@dunslane.net
In reply to: Zharkov Roman (#1)
Re: plperl version on the meson setup summary screen

On 2024-10-17 Th 10:02 PM, Zharkov Roman wrote:

Hello,

Would it be convinient to show the plperl version on the meson setup
summary
screen? Now it displays only 'YES' or 'NO'. This is the expected
behavior of
the meson build system and explains in its source code:
https://github.com/mesonbuild/meson/blob/5f0bd8ff1e7fc43199d4b371fc4625f80baba810/mesonbuild/dependencies/base.py#L311C15-L311C27

With the attached patch we can see the "perlversion" in the summary
information table. But without a beautiful console colorize.

Yeah, the lack of version number has mildly annoyed me too, so let's fix
it. I haven't found the right secret sauce to make the version number
appear colorized, either. Maybe some meson guru can tell us how.

Additionaly, we found out that "perlversion" gets from the perl
"api_versionstring" config variable. When the configure script parses the
"perl -v" output:

pgac_perl_version=`$PERL -v 2>/dev/null | sed -n 's/This is
perl.*v[a-...

Is this behavior correct?

I think it's ok, it should give the same answer AFAIK. Using sed like
this to parse the output of 'perl -v' is somewhat hacky, so the meson
recipe is arguably an improvement.

cheers

andrew

--
Andrew Dunstan
EDB: https://www.enterprisedb.com

#3Zharkov Roman
r.zharkov@postgrespro.ru
In reply to: Andrew Dunstan (#2)
Re: plperl version on the meson setup summary screen

Hello,

On 2024-11-27 21:50, Andrew Dunstan wrote:

it should give the same answer

Sometimes "version" and "api_versionstring" are different. Here are two
simple examples from my windows system and from a linux system of one of
my colleagues:

C:\Temp>perl -MConfig -e "print \"$Config{api_versionstring}\n\"; print
\"$Config{version}\n\""
5.32.0
5.32.1
C:\Temp>perl -v
This is perl 5, version 32, subversion 1 (v5.32.1) built for
MSWin32-x64-multi-thread

perl -MConfig -e 'print "$Config{api_versionstring}\n"; print
"$Config{version}\n"'
5.38.0
5.38.2
perl -v
This is perl 5, version 38, subversion 2 (v5.38.2)

--
Best regards, Roman Zharkov.

#4Nazir Bilal Yavuz
byavuz81@gmail.com
In reply to: Zharkov Roman (#3)
Re: plperl version on the meson setup summary screen

Hi,

On Fri, 29 Nov 2024 at 08:40, Zharkov Roman <r.zharkov@postgrespro.ru> wrote:

Hello,

On 2024-11-27 21:50, Andrew Dunstan wrote:

it should give the same answer

Sometimes "version" and "api_versionstring" are different. Here are two
simple examples from my windows system and from a linux system of one of
my colleagues:

C:\Temp>perl -MConfig -e "print \"$Config{api_versionstring}\n\"; print
\"$Config{version}\n\""
5.32.0
5.32.1
C:\Temp>perl -v
This is perl 5, version 32, subversion 1 (v5.32.1) built for
MSWin32-x64-multi-thread

perl -MConfig -e 'print "$Config{api_versionstring}\n"; print
"$Config{version}\n"'
5.38.0
5.38.2
perl -v
This is perl 5, version 38, subversion 2 (v5.38.2)

It is different for me too:

$ perl -MConfig -e 'print "$Config{api_versionstring}\n";
print"$Config{version}\n"'
5.38.0
5.38.2
$ perl -v
This is perl 5, version 38, subversion 2 (v5.38.2)

On Wed, 27 Nov 2024 at 17:51, Andrew Dunstan <andrew@dunslane.net> wrote:

On 2024-10-17 Th 10:02 PM, Zharkov Roman wrote:

With the attached patch we can see the "perlversion" in the summary
information table. But without a beautiful console colorize.

Yeah, the lack of version number has mildly annoyed me too, so let's fix
it. I haven't found the right secret sauce to make the version number
appear colorized, either. Maybe some meson guru can tell us how.

It seems that we can force ANSI colors:

- 'plperl': [perl_dep, perlversion],
+ 'plperl': [perl_dep, '\033[1;36m@0@\033[0m'.format(perlversion)],

But I think this is too hacky. I am not sure if that is the best way
or worth it.

--
Regards,
Nazir Bilal Yavuz
Microsoft

#5Andrew Dunstan
andrew@dunslane.net
In reply to: Nazir Bilal Yavuz (#4)
Re: plperl version on the meson setup summary screen

On 2024-11-29 Fr 3:26 AM, Nazir Bilal Yavuz wrote:

Hi,

On Fri, 29 Nov 2024 at 08:40, Zharkov Roman <r.zharkov@postgrespro.ru> wrote:

Hello,

On 2024-11-27 21:50, Andrew Dunstan wrote:

it should give the same answer

Sometimes "version" and "api_versionstring" are different. Here are two
simple examples from my windows system and from a linux system of one of
my colleagues:

C:\Temp>perl -MConfig -e "print \"$Config{api_versionstring}\n\"; print
\"$Config{version}\n\""
5.32.0
5.32.1
C:\Temp>perl -v
This is perl 5, version 32, subversion 1 (v5.32.1) built for
MSWin32-x64-multi-thread

perl -MConfig -e 'print "$Config{api_versionstring}\n"; print
"$Config{version}\n"'
5.38.0
5.38.2
perl -v
This is perl 5, version 38, subversion 2 (v5.38.2)

It is different for me too:

$ perl -MConfig -e 'print "$Config{api_versionstring}\n";
print"$Config{version}\n"'
5.38.0
5.38.2
$ perl -v
This is perl 5, version 38, subversion 2 (v5.38.2)

On Wed, 27 Nov 2024 at 17:51, Andrew Dunstan <andrew@dunslane.net> wrote:

On 2024-10-17 Th 10:02 PM, Zharkov Roman wrote:

With the attached patch we can see the "perlversion" in the summary
information table. But without a beautiful console colorize.

Yeah, the lack of version number has mildly annoyed me too, so let's fix
it. I haven't found the right secret sauce to make the version number
appear colorized, either. Maybe some meson guru can tell us how.

It seems that we can force ANSI colors:

- 'plperl': [perl_dep, perlversion],
+ 'plperl': [perl_dep, '\033[1;36m@0@\033[0m'.format(perlversion)],

But I think this is too hacky. I am not sure if that is the best way
or worth it.

Yes, way too hacky. If we can't find a better way I'm good with Roman's
idea in principle.

cheers

andrew

--
Andrew Dunstan
EDB: https://www.enterprisedb.com

#6Zharkov Roman
r.zharkov@postgrespro.ru
In reply to: Andrew Dunstan (#5)
1 attachment(s)
Re: plperl version on the meson setup summary screen

Hello,

Here is a new patch version.
I tried to use perl 'version' instead of 'api_versionstring' to sync
with configure script.

--
Roman Zharkov

Attachments:

v2-0001-Show-plperl-version-in-the-meson-setup.patchtext/x-diff; name=v2-0001-Show-plperl-version-in-the-meson-setup.patchDownload
From: Zharkov Roman <r.zharkov@postgrespro.ru>
Date: Thu, 17 Oct 2024 13:09:51 +0700
Subject: [PATCH] Show plperl version in the meson setup summary.

Use perl 'version' instead of 'api_versionstring' to sync with configure script.
---
 meson.build | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/meson.build b/meson.build
index 8e128f4982a..436df7bb592 100644
--- a/meson.build
+++ b/meson.build
@@ -996,6 +996,7 @@ endif
 
 perlopt = get_option('plperl')
 perl_dep = not_found_dep
+perlversion = ''
 if not perlopt.disabled()
   perl_may_work = true
 
@@ -1013,7 +1014,7 @@ if not perlopt.disabled()
   # Then inquire perl about its configuration
   if perl_may_work
     perl_conf_cmd = [perl, '-MConfig', '-e', 'print $Config{$ARGV[0]}']
-    perlversion = run_command(perl_conf_cmd, 'api_versionstring', check: true).stdout()
+    perlversion = run_command(perl_conf_cmd, 'version', check: true).stdout()
     archlibexp = run_command(perl_conf_cmd, 'archlibexp', check: true).stdout()
     privlibexp = run_command(perl_conf_cmd, 'privlibexp', check: true).stdout()
     useshrplib = run_command(perl_conf_cmd, 'useshrplib', check: true).stdout()
@@ -3711,7 +3712,7 @@ if meson.version().version_compare('>=0.57')
       'nls': libintl,
       'openssl': ssl,
       'pam': pam,
-      'plperl': perl_dep,
+      'plperl': [perl_dep, perlversion],
       'plpython': python3_dep,
       'pltcl': tcl_dep,
       'readline': readline,
@@ -3722,6 +3723,7 @@ if meson.version().version_compare('>=0.57')
       'zstd': zstd,
     },
     section: 'External libraries',
+    list_sep: ' ',
   )
 
 endif
-- 
2.34.0.windows.1

#7vignesh C
vignesh21@gmail.com
In reply to: Zharkov Roman (#6)
Re: plperl version on the meson setup summary screen

On Tue, 4 Feb 2025 at 12:07, Zharkov Roman <r.zharkov@postgrespro.ru> wrote:

Hello,

Here is a new patch version.
I tried to use perl 'version' instead of 'api_versionstring' to sync
with configure script.

Thanks for the patch, this looks good to me.

Regards,
Vignesh

#8vignesh C
vignesh21@gmail.com
In reply to: Zharkov Roman (#6)
Re: plperl version on the meson setup summary screen

On Tue, 4 Feb 2025 at 12:07, Zharkov Roman <r.zharkov@postgrespro.ru> wrote:

Hello,

Here is a new patch version.
I tried to use perl 'version' instead of 'api_versionstring' to sync
with configure script.

One suggestion, there are many other external libraries for which we
don't display the version, can we include the version for them too:
@@ -3711,7 +3712,7 @@ if meson.version().version_compare('>=0.57')
       'nls': libintl,
       'openssl': ssl,
       'pam': pam,
-      'plperl': perl_dep,
+      'plperl': [perl_dep, perlversion],
       'plpython': python3_dep,

Regards,
Vignesh

#9Zharkov Roman
r.zharkov@postgrespro.ru
In reply to: vignesh C (#8)
Re: plperl version on the meson setup summary screen

On 2025-03-14 13:08, vignesh C wrote:

One suggestion, there are many other external libraries for which we
don't display the version, can we include the version for them too:

Hello,
We have seven "libraries" whose versions meson does not show: bonjour,
bsd_auth, docs, docs_pdf, nls, pam, plperl. And only plperl has a known
version.
bonjour, bsd_auth produces by declare_dependency() function, and I don't
know where to find their versions.
docs, docs_pdf are the complex of libraries: xmllint_bin, xsltproc_bin
and fop. Which version do we need?
nls can be formed in two ways: by declare_dependency() or by
cc.find_library(). It is not clear to me where to get a version.
pam also can be produced by dependency() or cc.find_library().

Best regards, Roman Zharkov

#10Andrew Dunstan
andrew@dunslane.net
In reply to: Zharkov Roman (#9)
Re: plperl version on the meson setup summary screen

On 2025-03-17 Mo 4:43 AM, Zharkov Roman wrote:

On 2025-03-14 13:08, vignesh C wrote:

One suggestion, there are many other external libraries for which we
don't display the version, can we include the version for them too:

Hello,
We have seven "libraries" whose versions meson does not show: bonjour,
bsd_auth, docs, docs_pdf, nls, pam, plperl. And only plperl has a
known version.
bonjour, bsd_auth produces by declare_dependency() function, and I
don't know where to find their versions.
docs, docs_pdf are the complex of libraries: xmllint_bin, xsltproc_bin
and fop. Which version do we need?
nls can be formed in two ways: by declare_dependency() or by
cc.find_library(). It is not clear to me where to get a version.
pam also can be produced by dependency() or cc.find_library().

Yeah. I'm planning to commit your patch shortly.

cheers

andrew

--
Andrew Dunstan
EDB: https://www.enterprisedb.com