lib: py: remove distutils in favor of setuptools
As distutils is removed in python 3.12, and setuptools provides the same
interface, it can be switched in place with minor changes. This allows
using the thrift bindings on versions of Python 3.12 or greater.
diff --git a/lib/py/setup.py b/lib/py/setup.py
index a02cc4f..d1d792b 100644
--- a/lib/py/setup.py
+++ b/lib/py/setup.py
@@ -25,8 +25,8 @@
except Exception:
from distutils.core import setup, Extension
-from distutils.command.build_ext import build_ext
-from distutils.errors import CCompilerError, DistutilsExecError, DistutilsPlatformError
+from setuptools.command.build_ext import build_ext
+from setuptools.errors import CCompilerError, ExecError, PlatformError
# Fix to build sdist under vagrant
import os
@@ -41,7 +41,7 @@
include_dirs.append('compat/win32')
ext_errors = (CCompilerError, DistutilsExecError, DistutilsPlatformError, IOError)
else:
- ext_errors = (CCompilerError, DistutilsExecError, DistutilsPlatformError)
+ ext_errors = (CCompilerError, ExecError, PlatformError)
class BuildFailed(Exception):
@@ -52,7 +52,7 @@
def run(self):
try:
build_ext.run(self)
- except DistutilsPlatformError:
+ except PlatformError:
raise BuildFailed()
def build_extension(self, ext):