@@ -146,7 +146,7 @@ sed -i 's/from urllib import urlopen/from urllib.request import urlopen/' $WAGON
146146``` bash
147147# Compile wagon
148148cd /usr/src # shared folder with Docker host
149- time wagon create wxPython==4.2.4 # use version from pyproject.toml
149+ time wagon create wxPython==4.2.5 # use version from pyproject.toml
150150 # real 81m6.382s (Python 3.9)
151151 # real ~80m+ (Python 3.12.9)
152152 # real ~80m+ (Python 3.13.5)
@@ -156,11 +156,11 @@ time wagon create wxPython==4.2.4 # use version from pyproject.toml
156156If using a locally built Python from source:
157157
158158``` bash
159- time ./python -m wagon create wxPython==4.2.4 # use version from pyproject.toml
159+ time ./python -m wagon create wxPython==4.2.5 # use version from pyproject.toml
160160```
161161
162162* Upload the .wgn file as a release artifact to a release tag on GitHub,
163- such as the [ v1.4 .0b tag] ( https://github.com/davidfstr/Crystal-Web-Archiver/releases/tag/v1.4 .0b )
163+ such as the [ v1.5 .0b tag] ( https://github.com/davidfstr/Crystal-Web-Archiver/releases/tag/v1.5 .0b )
164164
165165* Copy the URL for that .wgn to ci.yaml, replacing the old .wgn
166166
@@ -170,3 +170,31 @@ time ./python -m wagon create wxPython==4.2.4 # use version from pyproject.toml
170170* Ensure the job completes successfully. In particular ensure that the
171171 "Install dependency wxPython from wagon" step does successfully install
172172 and the "Install remaining dependencies with Poetry" step does not timeout.
173+
174+ ### Troubleshooting: Building wxPython < 4.2.5
175+
176+ wxPython versions before 4.2.5 have a build incompatibility with setuptools >= 81.
177+ The symptom is a ` TypeError ` during the wheel packaging step (after compilation
178+ succeeds):
179+
180+ ```
181+ File "<string>", line 249, in wx_copy_file
182+ TypeError: copy_file() takes from 2 to 7 positional arguments but 8 were given
183+ ```
184+
185+ This was fixed in wxPython 4.2.5 (commit 1dec4c8, Feb 6, 2026) which updated
186+ the monkey-patched ` copy_file ` and ` copy_tree ` functions in ` setup.py ` to match
187+ the new distutils API.
188+
189+ Note that pip creates an ** isolated build environment** (per PEP 517) and
190+ downloads the latest setuptools from PyPI into it, regardless of what setuptools
191+ version is installed globally. So simply running ` pip install "setuptools<81" `
192+ before building will ** not** help.
193+
194+ If you must build wxPython < 4.2.5, an ** untested** workaround is to disable
195+ pip's build isolation so it uses a globally pinned older setuptools:
196+
197+ ``` bash
198+ pip install " setuptools<81" wheel
199+ pip wheel wxPython==4.2.4 --no-build-isolation --no-cache-dir
200+ ```
0 commit comments