python: Include <Python.h> first

Python is broken and requires that we include <Python.h> before all
other headers so it can make inadvisable definitions of
_POSIX_C_SOURCE and other things.  This wasn't a problem before, but a
recent change to glibc makes this necessary now.

See also a similar commit in nbdkit:
f924c3c34b

I also removed the -Wcast-align suppression as that is no longer
needed.

(cherry picked from commit 18d9769dc3)
This commit is contained in:
Richard W.M. Jones
2025-11-20 20:56:34 +00:00
parent f7224e1cbe
commit 6acccf096e
2 changed files with 16 additions and 7 deletions

View File

@@ -44,13 +44,6 @@ let rec generate_python_actions_h () =
#include \"guestfs.h\"
#include \"guestfs-stringlists-utils.h\"
#define PY_SSIZE_T_CLEAN 1
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored \"-Wcast-align\"
#include <Python.h>
#pragma GCC diagnostic pop
static inline guestfs_h *
get_handle (PyObject *obj)
{
@@ -119,6 +112,10 @@ and generate_python_structs () =
generate_header CStyle LGPLv2plus;
pr "\
/* This must be included first. */
#define PY_SSIZE_T_CLEAN 1
#include <Python.h>
#include <config.h>
#include <stdio.h>
@@ -255,6 +252,10 @@ and generate_python_actions actions () =
generate_header CStyle LGPLv2plus;
pr "\
/* This must be included first. */
#define PY_SSIZE_T_CLEAN 1
#include <Python.h>
#include <config.h>
/* It is safe to call deprecated functions from this file. */
@@ -527,6 +528,10 @@ and generate_python_module () =
generate_header CStyle LGPLv2plus;
pr "\
/* This must be included first. */
#define PY_SSIZE_T_CLEAN 1
#include <Python.h>
#include <config.h>
#include <stdio.h>

View File

@@ -22,6 +22,10 @@
* F<python/actions-*.c>).
*/
/* This must be included first. */
#define PY_SSIZE_T_CLEAN 1
#include <Python.h>
#include <config.h>
#include <stdio.h>