-
-
Notifications
You must be signed in to change notification settings - Fork 29
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
General discussion for Qt6 migration #49
Comments
@scopatz - tagging you here as you seem to be the sole maintainer of quite a few packages that have not yet been migrated to qt 5.15. |
Pasting here @Tobias-Fischer #44 (comment):
This is a good point, one that I haven't considered before. Feedstocks would need to explicitly declare if they support only qt5 or qt5 and 6, in case we decide not to version Qt6. I don't know if this could be handled by the migration bot, i.e. by adding a preventive constraint on |
Yeah, they do that because it can take maintainers a couple of years to move their packages from qt5 to 6, especially for C++ apps such as Paraview, as @jschueller mentioned. |
My main question is:
If upstream supports it, then I am in favor of supporting it in conda-forge too. If upstream does not support it, I dont think we should work too hard to get both installed in the same environment. It could take longer to do that than "a few years" |
Yes, upstream supports installation of qt5 and qt6 at the same time. This happens in e.g. Ubuntu, too. See https://doc.qt.io/qt-6/packaging-recommendations.html In #44 @jschueller already follows these packaging recommendations. I am not sure if we need to update our qt5 builds in some way, too, though? |
there should be no conflicts with the qt5 version, we install in qt6 subfolders, and for binaries only versioned symlinks are available, which means qmake would point to the qt5 version and qmake6 to the qt6 version |
So if we keep We also might want to try whether https://manpages.ubuntu.com/manpages/jammy/man1/qtchooser.1.html (https://code.qt.io/cgit/qtsdk/qtchooser.git/) works with conda packaging. If qtchooser works, that would be amazing! |
what do you think @ccordoba12 ? should I close #44 and request it as a new qt6-main feedstock ? |
We have mentioned pros and cons but I think we haven't made a decision on that yet. I'm also uncertain on how to proceed. Should we call a vote on this? @hmaarrfk, what do you think?
For that we're using |
I agree with the coinstallation attempt. |
I mostly wanted to have the Convo here so as not to loose it and to clutter jschulers technical work |
We can likely create a qt5-main package, and do the switchover in 1 year or two from qt5-main to qt6-main. An other mini migrator! |
It seems like this is simply a matter of renaming
There is no need to create a new feedstock - we can simply change the name of the package that is created. See e.g. https://github.com/conda-forge/libignition-gazebo-feedstock/blob/main/recipe/meta.yaml where the name consists of the base name and the major version. |
I renamed the package to qt6-main in #44 and checked it can be co-installed with qt-main and still pass its tests. |
if you add an exclusive constraint on qt6-main and qt-main for now, that might be ok. |
ok, I just did that |
opened upstream issue for the coinstallation on windows: https://bugreports.qt.io/browse/QTBUG-107009 |
Green from me. I'm not the biggest expert in QT so I defer to all of you! |
Hiya @traversaro - sorry to bother you, you are just too much of a Windows expert. Is there anything suspicious you can see in https://bugreports.qt.io/browse/QTBUG-107009 regarding the location of the *.dll / *.lib / *.exe files? |
I am relatively new to this, but reading the discussion in https://bugreports.qt.io/browse/QTBUG-107009 probably a workaround that we could use in the conda build script is to add |
update: qt-main and qt6-main can now be co-installed even on win32 so we would at least avoid breaking qt5-only packages |
There is also the new PySide6 package to think about: conda-forge/staged-recipes#20673 |
I’m in favour of a new branch in the existing feedstock to mirror qt-main and qtwebengine. |
I'd love to see that happen :) |
what do you think @hmaarrfk (you also maintain pyside2) ? |
Branch is fine. I don't think the bot is working too well for pyside2 |
branch it is then: conda-forge/pyside2-feedstock#136 |
we cannot split completely easily all modules because host tools need to be natively compiled when cross-compiling for at least qtbase+qtdeclarative+qtshadertools+qttools, so we would need at least one package for these 4, this can be circumvented possibly with multiple outputs, but that makes packaging a bit harder also. I understand your concern that the new qt6-main does not provide qt3d anymore and that may confuse maintainers though, |
has anybody noticed that qt3d was missing? Maybe the few visualizations softwares that still aren't migrated. |
I re-thought about it, and imho qt-3d does not seem to be used that much, I only found qgis, maybe you're mistaken with the qopengl classes which are part of qtbase. |
What should we do about things like opencv, a while back, i had something for 5.9, 5.12, and none. Should I revive this effort? conda-forge/opencv-feedstock#206 |
I don't want to push things in one way or an other yet. I've been testing applications and many have growing pains with QT6. I would like to wait before migrating. OpenCV for one already has enough "double builds". |
Coming back ~6 months later, a lot of qt5-things are starting to fall off the wagon. For example, pyside2 isn't really working anymore (missing migrations), whereas pyside6 is fine. This is not a criticism at all, just an indicator of the state of things, so I'm wondering if perhaps the time to migrate to qt6 has come (closer). |
I use pyside2 on a daily basis. not sure what "doesn't work anymore" means. we are missing qtwebengine for qt6 so we can't just switch over. Spyder uses it. I could use some help finding a way to build out opencv. |
Well, the branch for 5.x on the pyside2-feedstock is not particularly alive (whereas the pyside6 branch gets regular updates). I looked at it because of a user-report that
was running into conflichts. Might be related to missing migrations for libxml or alsa or whatnot. |
we haven't been updating the version of at (and I don't want to use unsynchronized pyside2 and at versions) but the migrations have been happening. the problem is that the windows builds of qtwebengine time out, and as such, cannot be built. this will very likely be true for qt6 as well, we just don't build qtwebengine so we haven't run into this yet. |
In conda-forge/opencv-feedstock#417, @hmaarrfk asked whether we want to drop qt5 builds (Context: OpenCV has a massive build matrix), leading to the following conversation:
I wanted to bring this back into a bit of a wider forum. I'm a bit hesitant to drop qt5 variants if there are important use-cases that cannot yet be supported with qt6 (but at the same time the OpenCV CI situation really asks for a reduction). I fixed some conflicts in conda-forge/qt-webengine-feedstock#46 for the webengine side, but don't know the status for spyder etc. @ccordoba12? |
Spyder should be working with PyQt6 because a volunteer send us several PRs to support it. But we haven't tested it, so I'm not really sure. The problem for us in Conda-forge is Webengine because we depend on it in several places. |
For pcl we are migrating to qt6 in conda-forge/pcl-feedstock#65 as there is the constraint of using the same qt version used by vtk. |
Hi! When considering different modules, I suggest each of them gets a its own package based on theqt structure. This has a huge advantage for developers, since they already know the package name and don't have to search. The dependency list already is written in the CMakeLists.txt for the project (well, mostly) . I'm currently missing the NetworkAuth package and had to spend considerable time just to find out it's not available in the repository (I think, I don't have a good way of verifying). I'd be happy to help out, but TBH I'm not familiar with conda-forge package creation and the process, so I'm kind of lost in the many closed PRs about the qt packages. Is there an active effort to get other packages into conda? |
A PR similar to conda-forge/staged-recipes#25992 is likely the best "documentation" we have. Thanks for your willingness to help! |
If you know the name of a file/library that is contained in the library you are looking for, a possible strategy is to use https://conda-metadata-app.streamlit.app/Search_by_file_path?q=conda-forge to search which package (if any) in conda-forge contains that file. |
@hmaarrfk Thanks. There seems to be a lot of boilerplate, like the x11 deps. Is there any chance to share those between the recipes? I could hack at it and see if I can build the libs I need, but I don't think it is feasible to expand this to all the qt libs (well, it might be, but it will become a huge maintenance burden). @traversaro Thanks, this is awesome and should be part of the main package repository :-) |
I said it before and I'll reiterate again: that would be too much work for Conda-forge maintainers. @Krakonos, all you need to know is that mostly everything required for development is in the |
There are efforts to make alot of the boiler plate easier, see #287 but... Don't get loose track of your goal, which is to get your app up and running ^_^.
this doesn't seem to be true for the package of interest of his. Ultimately, maintaining the megapackage is really difficult..... I think beyond what we have today for the "qt6", we should be trying to split things off. the build time is MUCH faster, and allows more contributors to get involved. |
Noted. And yeah, that might be a bit excessive. But I guess matching the source tarballs makes sense though, right? For example, Core, widgets etc. is in a single base package, but extras like networkauth, svg, 5compat, etc. should be separate package. Otherwise I don't know how to handle single package from multiple tarballs. (list of packages: https://download.qt.io/official_releases/qt/6.7/6.7.2/submodules/ ) @hmaarrfk My app is running. QNetworkAuth is small enough so I can just build it as part of the job, not a huge deal now, but I don't like the concept of mixing source & conda packages together (and building whole qt is out of the question, qt official unattended installer seems pretty hard to run). But I'm a bit confused, the package in qt-main-feedstock seems to be fixed to a single 5.x version, is there a separate qt6 package? |
We build it as part of a separate branch |
An other reason to separate it it out is that it is a GPL-3.0-only package. My attempt is here: conda-forge/staged-recipes#27591 |
Comment:
There is alot of worry that Qt6 will cause a slow rollout for many libraries.
Already we can see that many of the packages have not yet completed the
qt
->qt-main
migration inhttps://conda-forge.org/status/#qt515
Many of the packages seem abandoned, so it might be best to:
It seems at least that ubuntu is at least providing both:
Other relevant discussion:
The text was updated successfully, but these errors were encountered: