conda-forge / pyqt-feedstock

A conda-smithy repository for pyqt.
BSD 3-Clause "New" or "Revised" License
5 stars 36 forks source link

Support PyQt 5.12.3 #61

Closed leofang closed 4 years ago

leofang commented 4 years ago

Checklist

Resolves #58. Closes #59 Closes #60

I don't have a Windows machine, so I can't test the Win build. Tested locally on a Linux machine (I have neither root privilege on it nor control over its Conda root environment) against the recent Qt 5.12 package (conda-forge/qt-feedstock#110).

Note that a private copy of the sip module is necessary for PyQt 5.11+ (conda-forge/sip-feedstock#16), unless changes are made on the sip-feedstock side.

ps. I didn't realize until now that there're parallel efforts (#59, #60) 😦 But, this PR demonstrates how to resolve the PyQt5.sip not found issue (in a brute force way...) Hope this helps.

conda-forge-linter commented 4 years ago

Hi! This is the friendly automated conda-forge-linting service.

I wanted to let you know that I linted all conda-recipes in your PR (recipe) and found some lint.

Here's what I've got...

For recipe:

leofang commented 4 years ago

@conda-forge-admin, please rerender

conda-forge-linter commented 4 years ago

Hi! This is the friendly automated conda-forge-webservice.

I tried to re-render for you, but it looks like there was nothing to do.

leofang commented 4 years ago

ps. Please feel free to take over or close this PR as you see fit. I'm happy as long as a newer package can be built.

ccordoba12 commented 4 years ago

Thanks for the tip about PyQt5.sip. I'll take into account to finish #59.

conda-forge-linter commented 4 years ago

Hi! This is the friendly automated conda-forge-linting service.

I was trying to look for recipes to lint for you, but it appears we have a merge conflict. Please try to merge or rebase with the base branch to resolve this conflict.

Please ping the 'conda-forge/core' team (using the @ notation in a comment) if you believe this is a bug.

conda-forge-linter commented 4 years ago

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

leofang commented 4 years ago

@conda-forge-admin, please rerender

leofang commented 4 years ago

@conda-forge-admin, please rerender

conda-forge-linter commented 4 years ago

Hi! This is the friendly automated conda-forge-webservice.

I tried to re-render for you, but it looks like there was nothing to do.

hhslepicka commented 4 years ago

Unless they changed something upstream, the PyQt configure.py will not be able to properly link QtDesigner with the Python library without 0003-configure.py... You will probably get the plugin but it will be invalid without the patch.

leofang commented 4 years ago

@isuruf @ccordoba12 Linux & Mac OS X are built successfully, but on Windows I kept seeing LINK error (missing or cannot open shell32.exe):

LINK : fatal error LNK1181: cannot open input file 'C:\Program Files (x86)\Windows Kits\10\lib\10.0.18362.0\um\x64\shell32.lib'

NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\link.EXE"' : return code '0x49d'

Stop.

NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"' : return code '0x2'

Stop.

https://dev.azure.com/conda-forge/feedstock-builds/_build/results?buildId=73750&view=logs&jobId=171a126d-c574-5c8c-1269-ff3b989e923d&taskId=7225e372-3a5e-5b11-c153-719d50bbeacd&lineStart=583&lineEnd=591&colStart=1&colEnd=6 Do you have experience on solving this?

leofang commented 4 years ago

Unless they changed something upstream, the PyQt configure.py will not be able to properly link QtDesigner with the Python library without 0003-configure.py... You will probably get the plugin but it will be invalid without the patch.

@hhslepicka I thought the 0003 patch was for 5.9.x? When I inspected configure.py in 5.12.3 I didn't find the relevant code to which the patch refers. Advice?

leofang commented 4 years ago

Alright, I have no idea how to fix the Windows error due to lack of understanding. Remove the WIP flag (since it works on unix-like platforms) and let admins or anyone interested take over this PR.

hhslepicka commented 4 years ago

Unless they changed something upstream, the PyQt configure.py will not be able to properly link QtDesigner with the Python library without 0003-configure.py... You will probably get the plugin but it will be invalid without the patch.

@hhslepicka I thought the 0003 patch was for 5.9.x? When I inspected configure.py in 5.12.3 I didn't find the relevant code to which the patch refers. Advice?

@leofang check the configure.py starting at line 665... the code is exactly the same as before. Probably you will need to update the patch or at least try to apply it and check if it fails or if it can deal with the line number difference

leofang commented 4 years ago

@hhslepicka OK that's a good catch. I'll restore the patches when I have time. But let me note that the builds for Linux and OS X with py3x have been successful in ebec4b5, long before I removed the patches, while Windows has kept failing regardless of the patches are applied or not.

hhslepicka commented 4 years ago

@leofang, that is true... the build will succeed even without the patches. They fix runtime issues. The 0003-configure patch fixes the python library that is linked and the other patch it is my understanding that it fixes some extra path that was being added with Windows.

The builds will succeed but without the patches some extensions of PyQt will not be usable.

Thank you for working on that. I will try to take a look at the windows if I have some time later on the week.

leofang commented 4 years ago

Dear @hhslepicka,

The builds will succeed but without the patches some extensions of PyQt will not be usable.

I am curious, would these potential failures you referred to be caught by import tests? So far import tests are always passed (if built successfully of course).

Thank you for working on that. I will try to take a look at the windows if I have some time later on the week.

Thank you! I picked up this task simply to understand how difficult it is. I have little to no experience in every aspect involved here.

leofang commented 4 years ago

Let me quickly summarize before I turn my attention to other things.

On Windows, the build fails at the configuration stage (python configure.py ...) for PyQt5. Specifically, the failure happened at run_make(), which is part of compile_test_program() that targets QtCore. In d2dfd06 I printed out the generated makefile, but I don't see anything weird there: https://dev.azure.com/conda-forge/feedstock-builds/_build/results?buildId=74062&view=logs&jobId=171a126d-c574-5c8c-1269-ff3b989e923d&taskId=7225e372-3a5e-5b11-c153-719d50bbeacd&lineStart=567&lineEnd=1055

leofang commented 4 years ago

With --debug turned on the error becomes LINK : fatal error LNK1104: cannot open file 'Qt5Core_condad.lib' instead of cannot open shell32.lib.

leofang commented 4 years ago

I cleaned up debug prints and suppressed Windows build in 88cba5b. For Linux and Mac OS X this PR is ready to go.

isuruf commented 4 years ago

Issue is that qt=5.12 was built on @msarahan's computer and it has a newer SDK than what azure has. Qt somehow saves the paths and this issue pops up.

leofang commented 4 years ago

@isuruf Oh OK do you want me to turn on the Windows build, or you can take over from here?

msarahan commented 4 years ago

Do we need a build against an older SDK? (the one on Azure, presumably?)

isuruf commented 4 years ago

@msarahan, yes. we need to build qt against >=10.0.16299.0,<=10.0.17763.0

msarahan commented 4 years ago

OK, I'll rebuild it when I get home tonight.

isuruf commented 4 years ago

@msarahan, @mingwandroid said he might do it today as well.

msarahan commented 4 years ago

Great, I'll coordinate with him on it.

leofang commented 4 years ago

@isuruf I don't think you can restore py27...It's a bug on PyQt, not on Qt, so a newer Qt (I see 5.12.5 was just built!) isn't helping.

leofang commented 4 years ago

Issue is that qt=5.12 was built on @msarahan's computer and it has a newer SDK than what azure has. Qt somehow saves the paths and this issue pops up.

I think you're right, @isuruf! Windows build is still running on Azure without failing 🎉

leofang commented 4 years ago

Try nmake throughout in Win builds. I found that jom is often unable to find the files to be copied over.

jschueller commented 4 years ago

cool, it builds!

leofang commented 4 years ago

Thank you very much @isuruf for finishing the PR!