-
Notifications
You must be signed in to change notification settings - Fork 28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Issue in macOS binary wheel for 4.6.4/3.8: Illegal Instruction (my fault, but needs a change to prevent in the future) #154
Comments
Could it be that the Windows wheel also has a problem? See https://ci.appveyor.com/project/zopefoundation/zope/builds/37667794/job/tor6448qgs9sqgll where I got an |
Hm, when using the AppVeyor config and |
I don't think so. The error here was a miscompilation. The 'access denied' error is from Windows not letting you delete a file that's in use while building BTrees from source — it didn't even try to use the binary wheel.
Here, BTrees has an I think one solution would be to have those dependencies installed already. Another solution might be to have BTrees move away from I don't know why the earlier job had to build BTrees from scratch, while the latter build apparently got the BTrees binary wheel from PyPI. |
We use the CI to build and upload binary wheels. Binary wheels built on individuals' machines may use CFLAGS, etc, that are not compatible with all machines, but this is not expressed in the wheel tags. Thus, incompatible machines may download and install such wheels, leading to bad behaviour or even Illegal Instruction crashes. Fixes #154. Also set the long_description_content_type to avoid getting warnings from 'twine check'.
I'm pretty sure Ideally we would use pyproject.toml's introspectable build requirements instead of setup_requires. Or in addition to. I don't think older versions of zc.buildout support pyproject.toml, and I'm mostly only hoping that zc.buildout 3.0 will due to using pip as the install backend. |
I'm working on moving RelStorage from Travis CI to GitHub actions. I got to the point of being able to import RelStorage, and the process crashed importing
persistent
with an Illegal Instruction error.I've seen this previously with other binary wheels built on macOS when the binary was built on a newer computer than the destination and using
-march=native
or similar optimizations.And it turns out that there are two wheels for Python 3.8 published on PyPI for 4.6.4, one that
zest.releaser
built and uploaded for me (cp38-10.15), and one that came from Travis (cp38-10.9). My environment includes-march=native
inCFLAGS
et al.I will yank the bad wheel, solving the immediate problem.
In other projects (gevent), I've used a zest.releaser hook to check the environment for that setting and forbid uploading a binary wheel built that way.
But IIRC zest.releaser now also has a way to say "just upload the source, never a binary", and that might be the better thing to do here, if we can continue relying on CI to build wheels.
The text was updated successfully, but these errors were encountered: