https://github.com/wxWidgets/Phoenix/commit/b91db9a2eff6460dd7189e24020bff1573c63211 From b91db9a2eff6460dd7189e24020bff1573c63211 Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Fri, 6 Feb 2026 20:31:33 -0500 Subject: [PATCH] Fix build with setuptools 81+ Unfortunately distutils changed the API of copy_file and copy_tree, so we need to replace our monkey patched versions. (cherry picked from commit 1dec4c8fc560795b01bb54ca5f62a598fda2d8dd) --- setup.py | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 71d57d699..9bcef61c5 100644 --- a/setup.py +++ b/setup.py @@ -9,6 +9,7 @@ # License: wxWindows License #---------------------------------------------------------------------- +import inspect import sys, os import glob import stat @@ -260,9 +261,29 @@ def wx_copy_file(src, dst, preserve_mode=1, preserve_times=1, update=0, os.symlink(linkdst, dst) return (dst, 1) +def wx_copy_file_new(src, dst, preserve_mode=True, preserve_times=True, + update=False, link=None, verbose=True): + if not os.path.islink(src): + return orig_copy_file( + src, dst, preserve_mode, preserve_times, update, link, verbose) + else: + # make a new, matching symlink in dst + if os.path.isdir(dst): + dst = os.path.join(dst, os.path.basename(src)) + linkdst = os.readlink(src) + if verbose: + from distutils import log + log.info("%s %s -> %s", 'copying symlink', src, dst) + if not os.path.exists(dst): + os.symlink(linkdst, dst) + return (dst, True) + import distutils.file_util orig_copy_file = distutils.file_util.copy_file -distutils.file_util.copy_file = wx_copy_file +if 'dry_run' not in inspect.signature(orig_copy_file).parameters.keys(): + distutils.file_util.copy_file = wx_copy_file_new +else: + distutils.file_util.copy_file = wx_copy_file @@ -271,9 +292,17 @@ def wx_copy_tree(src, dst, preserve_mode=1, preserve_times=1, return orig_copy_tree( src, dst, preserve_mode, preserve_times, 1, update, verbose, dry_run) +def wx_copy_tree_new(src, dst, preserve_mode=True, preserve_times=True, + preserve_symlinks=False, update=False, verbose=True): + return orig_copy_tree( + src, dst, preserve_mode, preserve_times, True, update, verbose) + import distutils.dir_util orig_copy_tree = distutils.dir_util.copy_tree -distutils.dir_util.copy_tree = wx_copy_tree +if 'dry_run' not in inspect.signature(orig_copy_tree).parameters.keys(): + distutils.dir_util.copy_tree = wx_copy_tree_new +else: + distutils.dir_util.copy_tree = wx_copy_tree # Monkey-patch make_writeable too. Sometimes the link is copied before the