Обсуждение: meson: Stop using deprecated way getting path of files

Поиск
Список
Период
Сортировка

meson: Stop using deprecated way getting path of files

От
Andres Freund
Дата:
Hi,

The just released meson 1.3 strongly deprecated a hack we were using, emitting
a noisy warning (the hack basically depended on an implementation detail to
work). Turns out there has been a better way available for a while, I just
hadn't found it. 1.4 added a more convenient approach, but we can't rely on
that.

Everything continues to work, but the warning is annoying.

The warning:

Message: checking for file conflicts between source and build directory
../home/andres/src/postgresql/meson.build:2972: DEPRECATION: Project uses feature that was always broken, and is now
deprecatedsince '1.3.0': str.format: Value other than strings, integers, bools, options, dictionaries and lists
thereof..
[...]
WARNING: Broken features used:
 * 1.3.0: {'str.format: Value other than strings, integers, bools, options, dictionaries and lists thereof.'}

I plan to apply this soon, unless I hear some opposition / better ideas / ....

Greetings,

Andres Freund

Вложения

Re: meson: Stop using deprecated way getting path of files

От
"Tristan Partin"
Дата:
This looks good to me. What is our limiting factor on bumping the
minimum Meson version?

While we are on the topic of Meson, it would be great if you could take
a look at this thread[0], where I am trying to compile Postgres with
-fsanitize=address,undefined (-Db_sanitize=address,undefined).

[0]: https://www.postgresql.org/message-id/CWTM35CAUKRT.1733OSMXUZW7%40neon.tech

--
Tristan Partin
Neon (https://neon.tech)



Re: meson: Stop using deprecated way getting path of files

От
Andres Freund
Дата:
Hi,

On 2023-11-29 13:11:23 -0600, Tristan Partin wrote:
> This looks good to me.

Cool.


> What is our limiting factor on bumping the minimum Meson version?

Old distro versions, particularly ones where the distro just has an older
python. It's one thing to require installing meson but quite another to also
require building python. There's some other ongoing discussion about
establishing the minimum baseline in a somewhat more, uh, formalized way:
https://postgr.es/m/CA%2BhUKGLhNs5geZaVNj2EJ79Dx9W8fyWUU3HxcpZy55sMGcY%3DiA%40mail.gmail.com

> While we are on the topic of Meson, it would be great if you could take a
> look at this thread[0], where I am trying to compile Postgres with
> -fsanitize=address,undefined (-Db_sanitize=address,undefined).

Done. Not sure it helps you much though :)

Greetings,

Andres Freund



Re: meson: Stop using deprecated way getting path of files

От
"Tristan Partin"
Дата:
On Wed Nov 29, 2023 at 1:42 PM CST, Andres Freund wrote:
> Hi,
>
> On 2023-11-29 13:11:23 -0600, Tristan Partin wrote:
> > What is our limiting factor on bumping the minimum Meson version?
>
> Old distro versions, particularly ones where the distro just has an older
> python. It's one thing to require installing meson but quite another to also
> require building python. There's some other ongoing discussion about
> establishing the minimum baseline in a somewhat more, uh, formalized way:
> https://postgr.es/m/CA%2BhUKGLhNs5geZaVNj2EJ79Dx9W8fyWUU3HxcpZy55sMGcY%3DiA%40mail.gmail.com

I'll take a look there. According to Meson, the following versions had
Python version bumps:

0.61.5: 3.6
0.56.2: 3.5
0.45.1: 3.4

Taking a look at pkgs.org, Debian 10, Ubuntu 20.04, and Oracle Linux
7 (a RHEL re-spin), and CentOS 7, all have >= Python 3.6.8. Granted,
this isn't the whole picture of what Postgres supports from version 16+.
To put things in perspective, Python 3.6 was released on December 23,
2016, which is coming up on 7 years. Python 3.6 reached end of life on
the same date in 2021.

Is there a complete list somewhere that talks about what platforms each
version of Postgres supports?

--
Tristan Partin
Neon (https://neon.tech)



Re: meson: Stop using deprecated way getting path of files

От
Andrew Dunstan
Дата:
On 2023-11-30 Th 16:00, Tristan Partin wrote:
> On Wed Nov 29, 2023 at 1:42 PM CST, Andres Freund wrote:
>> Hi,
>>
>> On 2023-11-29 13:11:23 -0600, Tristan Partin wrote:
>> > What is our limiting factor on bumping the minimum Meson version?
>>
>> Old distro versions, particularly ones where the distro just has an 
>> older
>> python. It's one thing to require installing meson but quite another 
>> to also
>> require building python. There's some other ongoing discussion about
>> establishing the minimum baseline in a somewhat more, uh, formalized 
>> way:
>> https://postgr.es/m/CA%2BhUKGLhNs5geZaVNj2EJ79Dx9W8fyWUU3HxcpZy55sMGcY%3DiA%40mail.gmail.com 
>>
>
> I'll take a look there. According to Meson, the following versions had 
> Python version bumps:
>
> 0.61.5: 3.6
> 0.56.2: 3.5
> 0.45.1: 3.4
>
> Taking a look at pkgs.org, Debian 10, Ubuntu 20.04, and Oracle Linux 7 
> (a RHEL re-spin), and CentOS 7, all have >= Python 3.6.8. Granted, 
> this isn't the whole picture of what Postgres supports from version 
> 16+. To put things in perspective, Python 3.6 was released on December 
> 23, 2016, which is coming up on 7 years. Python 3.6 reached end of 
> life on the same date in 2021.
>
> Is there a complete list somewhere that talks about what platforms 
> each version of Postgres supports?


You can look at animals in the buildfarm. For meson only release 16 and 
up matter.


cheers


andrew

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




Re: meson: Stop using deprecated way getting path of files

От
Andres Freund
Дата:
On 2023-11-29 10:50:53 -0800, Andres Freund wrote:
> I plan to apply this soon, unless I hear some opposition / better ideas / ....

Pushed.



Re: meson: Stop using deprecated way getting path of files

От
"Tristan Partin"
Дата:
On Thu Nov 30, 2023 at 3:46 PM CST, Andrew Dunstan wrote:
>
> On 2023-11-30 Th 16:00, Tristan Partin wrote:
> > On Wed Nov 29, 2023 at 1:42 PM CST, Andres Freund wrote:
> >> Hi,
> >>
> >> On 2023-11-29 13:11:23 -0600, Tristan Partin wrote:
> >> > What is our limiting factor on bumping the minimum Meson version?
> >>
> >> Old distro versions, particularly ones where the distro just has an
> >> older
> >> python. It's one thing to require installing meson but quite another
> >> to also
> >> require building python. There's some other ongoing discussion about
> >> establishing the minimum baseline in a somewhat more, uh, formalized
> >> way:
> >> https://postgr.es/m/CA%2BhUKGLhNs5geZaVNj2EJ79Dx9W8fyWUU3HxcpZy55sMGcY%3DiA%40mail.gmail.com
> >>
> >
> > I'll take a look there. According to Meson, the following versions had
> > Python version bumps:
> >
> > 0.61.5: 3.6
> > 0.56.2: 3.5
> > 0.45.1: 3.4
> >
> > Taking a look at pkgs.org, Debian 10, Ubuntu 20.04, and Oracle Linux 7
> > (a RHEL re-spin), and CentOS 7, all have >= Python 3.6.8. Granted,
> > this isn't the whole picture of what Postgres supports from version
> > 16+. To put things in perspective, Python 3.6 was released on December
> > 23, 2016, which is coming up on 7 years. Python 3.6 reached end of
> > life on the same date in 2021.
> >
> > Is there a complete list somewhere that talks about what platforms
> > each version of Postgres supports?
>
>
> You can look at animals in the buildfarm. For meson only release 16 and
> up matter.

On the buildfarm page[0], it would be nice if more than just the
compiler versions were stated. It would be nice to have all
build/runtime dependencies listed. For instance, it would be interesting
if there was a json document for each build animal, and perhaps a root
json document which was an amalgomation of the individual documents.
Then I could use a tool like jq to query all the information rather
easily. As-is, I don't know where to search for package versions for
some of the archaic operating systems in the farm. Perhaps other people
have had similar problems in the past. Having a full write-up of every
build machine would also be good for debugging purposes. If I see
openssl tests suddenly failing on one machine, then I can just check the
openssl version, and try to reproduce locally.

I know the buildfarm seems to be a volunteer thing, so asking more of
them seems like a hard ask. Just wanted to throw my thoughts into the
void.

[0]: https://buildfarm.postgresql.org/cgi-bin/show_members.pl

--
Tristan Partin
Neon (https://neon.tech)



Re: meson: Stop using deprecated way getting path of files

От
Tom Lane
Дата:
"Tristan Partin" <tristan@neon.tech> writes:
> On the buildfarm page[0], it would be nice if more than just the 
> compiler versions were stated. It would be nice to have all 
> build/runtime dependencies listed.

By and large, we've attempted to address such concerns by extending
the configure script to emit info about versions of things it finds.
So you should look into the configure step's log to see what version
of bison, openssl, etc is in use.

> I know the buildfarm seems to be a volunteer thing, so asking more of 
> them seems like a hard ask.

We certainly aren't going to ask owners to maintain such information
manually.  Even if they tried, it'd soon be impossibly out-of-date.
The logging method has the additional advantage that it's accurate
for historical runs as well as whatever the machine has installed
today.

            regards, tom lane



Re: meson: Stop using deprecated way getting path of files

От
"Tristan Partin"
Дата:
On Fri Dec 1, 2023 at 12:07 PM CST, Tom Lane wrote:
> "Tristan Partin" <tristan@neon.tech> writes:
> > On the buildfarm page[0], it would be nice if more than just the
> > compiler versions were stated. It would be nice to have all
> > build/runtime dependencies listed.
>
> By and large, we've attempted to address such concerns by extending
> the configure script to emit info about versions of things it finds.
> So you should look into the configure step's log to see what version
> of bison, openssl, etc is in use.

Good point. For some reason that slipped my mind. Off into the weeds
I go...

--
Tristan Partin
Neon (https://neon.tech)



Re: meson: Stop using deprecated way getting path of files

От
"Tristan Partin"
Дата:
On Fri Dec 1, 2023 at 12:16 PM CST, Tristan Partin wrote:
> On Fri Dec 1, 2023 at 12:07 PM CST, Tom Lane wrote:
> > "Tristan Partin" <tristan@neon.tech> writes:
> > > On the buildfarm page[0], it would be nice if more than just the
> > > compiler versions were stated. It would be nice to have all
> > > build/runtime dependencies listed.
> >
> > By and large, we've attempted to address such concerns by extending
> > the configure script to emit info about versions of things it finds.
> > So you should look into the configure step's log to see what version
> > of bison, openssl, etc is in use.
>
> Good point. For some reason that slipped my mind. Off into the weeds
> I go...

Ok, so what I found is that we still have build farm animals using
Python 3.4, specifically the AIX machines. There was also at least one
Python 3.5 user too. Note that this was a manual check.

I think I'll probably work on a tool for querying information out of the
build farm tonight to make tasks like this much more automated.

--
Tristan Partin
Neon (https://neon.tech)



Re: meson: Stop using deprecated way getting path of files

От
Tom Lane
Дата:
"Tristan Partin" <tristan@neon.tech> writes:
> On Fri Dec 1, 2023 at 12:16 PM CST, Tristan Partin wrote:
>>> Ok, so what I found is that we still have build farm animals using 
>>> Python 3.4, specifically the AIX machines. There was also at least one 
>>> Python 3.5 user too. Note that this was a manual check.

> I think I'll probably work on a tool for querying information out of the 
> build farm tonight to make tasks like this much more automated.

Not sure what you were using, but are you aware that SQL access to the
buildfarm database is available to project members?  My own stock
approach to checking on this sort of thing is like

select * from
(select sysname, snapshot, unnest(string_to_array(log_text, E'\n')) as l
    from build_status_log join snapshots using (sysname, snapshot)
    where log_stage = 'configure.log') ss
where l like 'checking for builtin %'

            regards, tom lane



Re: meson: Stop using deprecated way getting path of files

От
"Tristan Partin"
Дата:
On Mon Dec 4, 2023 at 2:10 PM CST, Tom Lane wrote:
> "Tristan Partin" <tristan@neon.tech> writes:
> > On Fri Dec 1, 2023 at 12:16 PM CST, Tristan Partin wrote:
> >>> Ok, so what I found is that we still have build farm animals using
> >>> Python 3.4, specifically the AIX machines. There was also at least one
> >>> Python 3.5 user too. Note that this was a manual check.
>
> > I think I'll probably work on a tool for querying information out of the
> > build farm tonight to make tasks like this much more automated.
>
> Not sure what you were using, but are you aware that SQL access to the
> buildfarm database is available to project members?  My own stock
> approach to checking on this sort of thing is like
>
> select * from
> (select sysname, snapshot, unnest(string_to_array(log_text, E'\n')) as l
>     from build_status_log join snapshots using (sysname, snapshot)
>     where log_stage = 'configure.log') ss
> where l like 'checking for builtin %'

This looks useful. I had no idea about this. Can you send me any
resources for setting this up? My idea was just to do some web scraping.

--
Tristan Partin
Neon (https://neon.tech)



Re: meson: Stop using deprecated way getting path of files

От
John Naylor
Дата:
On Tue, Dec 5, 2023 at 3:27 AM Tristan Partin <tristan@neon.tech> wrote:
>
> On Mon Dec 4, 2023 at 2:10 PM CST, Tom Lane wrote:
> > Not sure what you were using, but are you aware that SQL access to the
> > buildfarm database is available to project members?  My own stock
> > approach to checking on this sort of thing is like
> >
> > select * from
> > (select sysname, snapshot, unnest(string_to_array(log_text, E'\n')) as l
> >     from build_status_log join snapshots using (sysname, snapshot)
> >     where log_stage = 'configure.log') ss
> > where l like 'checking for builtin %'
>
> This looks useful. I had no idea about this. Can you send me any
> resources for setting this up? My idea was just to do some web scraping.

+1 -- I was vaguely aware of this, but can't find any mention of
specifics in the buildfarm how-to, or other places I thought to look.



Re: meson: Stop using deprecated way getting path of files

От
"Tristan Partin"
Дата:
On Mon Dec 18, 2023 at 12:43 AM CST, John Naylor wrote:
> On Tue, Dec 5, 2023 at 3:27 AM Tristan Partin <tristan@neon.tech> wrote:
> >
> > On Mon Dec 4, 2023 at 2:10 PM CST, Tom Lane wrote:
> > > Not sure what you were using, but are you aware that SQL access to the
> > > buildfarm database is available to project members?  My own stock
> > > approach to checking on this sort of thing is like
> > >
> > > select * from
> > > (select sysname, snapshot, unnest(string_to_array(log_text, E'\n')) as l
> > >     from build_status_log join snapshots using (sysname, snapshot)
> > >     where log_stage = 'configure.log') ss
> > > where l like 'checking for builtin %'
> >
> > This looks useful. I had no idea about this. Can you send me any
> > resources for setting this up? My idea was just to do some web scraping.
>
> +1 -- I was vaguely aware of this, but can't find any mention of
> specifics in the buildfarm how-to, or other places I thought to look.

From my off-list conversations with Andrew, database access to the
buildfarm is for trusted contributors. I do not meet current criteria.
I've thought about building a web-scraper to get at some of this
information for non-trusted contributors. If that interests you, let me
know, and maybe I can build it out over the holiday. Or maybe you meet
the criteria! :)

--
Tristan Partin
Neon (https://neon.tech)