apply pragma system_header to python headers
Analogous to 388e80132c (which was for Perl) but for Python, I propose
adding #pragma GCC system_header to plpython.h. Without it, you get
tons of warnings about -Wdeclaration-after-statement, starting with
Python 3.12. (In the past, I have regularly sent feedback to Python to
fix their header files, but this is getting old, and we have an easier
solution now.)
Attachments:
0001-python-Hide-warnings-inside-Python-headers-when-usin.patchtext/plain; charset=UTF-8; name=0001-python-Hide-warnings-inside-Python-headers-when-usin.patchDownload+10-1
On 2023-11-06 Mo 07:02, Peter Eisentraut wrote:
Analogous to 388e80132c (which was for Perl) but for Python, I propose
adding #pragma GCC system_header to plpython.h. Without it, you get
tons of warnings about -Wdeclaration-after-statement, starting with
Python 3.12. (In the past, I have regularly sent feedback to Python
to fix their header files, but this is getting old, and we have an
easier solution now.)
WFM
cheers
andrew
--
Andrew Dunstan
EDB: https://www.enterprisedb.com
Peter Eisentraut <peter@eisentraut.org> writes:
Analogous to 388e80132c (which was for Perl) but for Python, I propose
adding #pragma GCC system_header to plpython.h. Without it, you get
tons of warnings about -Wdeclaration-after-statement, starting with
Python 3.12. (In the past, I have regularly sent feedback to Python to
fix their header files, but this is getting old, and we have an easier
solution now.)
+1 for the concept --- I was just noticing yesterday that my buildfarm
warning scraping script is turning up some of these. However, we ought
to try to minimize the amount of our own code that is subject to the
pragma. So I think a prerequisite ought to be to get this out of
plpython.h:
/*
* Used throughout, so it's easier to just include it everywhere.
*/
#include "plpy_util.h"
Alternatively, is there a way to reverse the effect of the
pragma after we've included what we need?
(I'm not too happy about the state of plperl.h on this point, either.)
regards, tom lane
On 2023-11-06 Mo 09:57, Tom Lane wrote:
Peter Eisentraut <peter@eisentraut.org> writes:
Analogous to 388e80132c (which was for Perl) but for Python, I propose
adding #pragma GCC system_header to plpython.h. Without it, you get
tons of warnings about -Wdeclaration-after-statement, starting with
Python 3.12. (In the past, I have regularly sent feedback to Python to
fix their header files, but this is getting old, and we have an easier
solution now.)+1 for the concept --- I was just noticing yesterday that my buildfarm
warning scraping script is turning up some of these. However, we ought
to try to minimize the amount of our own code that is subject to the
pragma. So I think a prerequisite ought to be to get this out of
plpython.h:/*
* Used throughout, so it's easier to just include it everywhere.
*/
#include "plpy_util.h"Alternatively, is there a way to reverse the effect of the
pragma after we've included what we need?
There's "GCC diagnostic push" and "GCC diagnostic pop" but I don't know
if they apply to "GCC system_header". Instead of using "GCC
system_header" we could just ignore the warnings we're seeing. e.g. "GCC
diagnostic ignored \"-Wdeclaration-after-statement\""
cheers
andrew
--
Andrew Dunstan
EDB: https://www.enterprisedb.com
Andrew Dunstan <andrew@dunslane.net> writes:
On 2023-11-06 Mo 09:57, Tom Lane wrote:
+1 for the concept --- I was just noticing yesterday that my buildfarm
warning scraping script is turning up some of these. However, we ought
to try to minimize the amount of our own code that is subject to the
pragma. So I think a prerequisite ought to be to get this out of
plpython.h:/*
* Used throughout, so it's easier to just include it everywhere.
*/
#include "plpy_util.h"Alternatively, is there a way to reverse the effect of the
pragma after we've included what we need?
There's "GCC diagnostic push" and "GCC diagnostic pop" but I don't know
if they apply to "GCC system_header". Instead of using "GCC
system_header" we could just ignore the warnings we're seeing. e.g. "GCC
diagnostic ignored \"-Wdeclaration-after-statement\""
Probably a better way is to invent a separate header "plpython_system.h"
that just includes the Python headers, to scope the pragma precisely.
(I guess it could have the fixup #defines we're wrapping those headers
in, too.)
The same idea would work in plperl.
regards, tom lane
I wrote:
Probably a better way is to invent a separate header "plpython_system.h"
that just includes the Python headers, to scope the pragma precisely.
(I guess it could have the fixup #defines we're wrapping those headers
in, too.)
The same idea would work in plperl.
After updating one of my test machines to Fedora 39, I'm seeing these
Python warnings too. So here's a fleshed-out patch proposal for doing
it like that.
regards, tom lane