From 1534c167fc516b8985d2bfd996895c937a4f0fc6 Mon Sep 17 00:00:00 2001 From: Daniel Garcia Moreno Date: Tue, 24 Oct 2023 07:41:28 +0200 Subject: [PATCH] python: Make it compatible with python3.12 Python 3.12 removes distutils so it's mandatory to use setuptools with python >= 3.12. This patch prints a message when trying to run the setup.py script with a python >= 3.12 without setuptools and try to use the setuptools import by default. This patch also creates a new file, pyproject.toml [1], to prepare for building in modern systems. [1] https://peps.python.org/pep-0517/ --- python/pyproject.toml | 3 +++ python/setup.py.in | 12 ++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 python/pyproject.toml diff --git a/python/pyproject.toml b/python/pyproject.toml new file mode 100644 index 00000000..fed528d4 --- /dev/null +++ b/python/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["setuptools"] +build-backend = "setuptools.build_meta" diff --git a/python/setup.py.in b/python/setup.py.in index 392756f8..43e9dd4b 100644 --- a/python/setup.py.in +++ b/python/setup.py.in @@ -5,11 +5,15 @@ import sys, os, subprocess try: - import setuptools + from setuptools import setup, Extension except ImportError: - pass - -from distutils.core import setup, Extension + try: + # Using distutils, for python < 3.12 + from distutils.core import setup, Extension + except ImportError: + # distutils is not present in python 3.12 and greater + print("setuptools is required for python >= 3.12") + sys.exit(1) # Below ROOT, we expect to find include, include/libxml2, lib and bin. # On *nix, it is not needed (but should not harm),