-
-
Notifications
You must be signed in to change notification settings - Fork 562
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
Add support for ucrt binaries on Windows #196
Conversation
The majority of the work happend here: https://github.com/mhils/libxml2-win-binaries
Are you planning to maintain these library builds in the future? |
I'm happy to maintain them for now. |
Ok, then we'd need a way to let the download script find the latest versions on your site. |
Is there any issue with pinning the version? I'm happy to update this here whenever I update the binaries. |
That means I have to merge your pull request and release a new version each time you update the library binaries. It also means that users can't just rebuild their existing packages to update their library versions but have to change the setup script first, or upgrade their lxml version or whatever. That's way too much manual interaction on all sides. |
I am surprised that you don't prefer pinned/deterministic builds, but ok. I updated the PR. 😃 |
Is there anything else you want to discuss/change before this can be merged? |
Are your library builds 32-bit only? I tried to build on 64-bit Python 3.5, and got a lot of unresolved external errors... |
@pfmoore: I only built x86 binaries so far to get the common case working. Adjusting https://github.com/mhils/libxml2-win-binaries/blob/master/build.ps1 to build x64 binaries should be relatively straightforward though. |
@mhils Cool. I did have a quick try at doing a 64-bit build, but got some odd results and didn't have time to dig into what was wrong (a |
I assume that this PR will need to be updated, whether (ideally) to handle 64-bits or at least to give a better error report explaining what's wrong when run with a 64-bit Python. |
@pfmoore: You are most likely seeing errors because the dist folders are different for x64 - not much of a big deal, just makes the build script a bit messy. As I understand it, the current version of |
OK, that's fair. As I only use 64-bit Python, I guess I'll wait for now (maybe I'll get some time to spend on this and then I'll look into 64-bit if you haven't already). |
Thanks! The 64 bits issue doesn't seem worse than what we have. |
Thanks! 😊 I just updated libxslt to 1.1.29 as per mhils/libxml2-win-binaries#1, so everything should be up-to-date now. Can we have lxml-3.6.0-cp35-cp35m-win32.whl (sig, feel free to build yourself if you prefer that) on PyPI? |
Looks like you provided an HMAC signature. PyPI wants a PGP signature instead. |
Signatures on PyPI are not verified by pip, so there's very little value in that. This was for you to personally blame me if there should be any issues with the binary 😉 |
@mhils Thank you for this. Is there any more work to be done? It seems 64bit build still doesn't work. I would be more than willing to help out. |
Hi,
This PR is a first big step towards resolving #1326096. I went through the pain to recompile libiconv, libxml2 and libxslt with Visual Studio 2015/ucrt to have binaries that can be used to build a Python 3.5 wheel.
This PR makes sure that the ucrt binaries are downloaded when we are on Python 3.5. I documented the actual compilation of the binaries in a reproducible manner at https://github.com/mhils/libxml2-win-binaries. After merging this PR and installing the Visual C++ Build Tools (or Visual Studio), a Python 3.5 x86 Windows wheel can be build as follows:
I sucessfully tested the resulting wheel on a clean Win7 VM which worked fine.
If I could ask for a favor, it would be great if you could upload a Python 3.5 Windows wheel to PyPi as soon as possible (feel free to take the wheel linked above or compile your own). We're currently migrating @mitmproxy to Python 3 and lxml is currently the only dependency that holds a
pip3 install mitmproxy
back.Thanks!
Max