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.
This commit is contained in:
Richard W.M. Jones
2025-11-20 20:56:34 +00:00
parent e04a450ec7
commit 18d9769dc3
2 changed files with 19 additions and 10 deletions

View File

@@ -43,13 +43,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)
{
@@ -117,7 +110,11 @@ extern char *guestfs_int_py_asstring (PyObject *obj);
and generate_python_structs () =
generate_header CStyle LGPLv2plus;
pr {|#include <config.h>
pr {|/* This must be included first. */
#define PY_SSIZE_T_CLEAN 1
#include <Python.h>
#include <config.h>
#include <stdio.h>
#include <stdlib.h>
@@ -252,7 +249,11 @@ and generate_python_structs () =
and generate_python_actions actions () =
generate_header CStyle LGPLv2plus;
pr {|#include <config.h>
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. */
#define GUESTFS_NO_WARN_DEPRECATED
@@ -523,7 +524,11 @@ and generate_python_actions actions () =
and generate_python_module () =
generate_header CStyle LGPLv2plus;
pr {|#include <config.h>
pr {|/* This must be included first. */
#define PY_SSIZE_T_CLEAN 1
#include <Python.h>
#include <config.h>
#include <stdio.h>
#include <stdlib.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>