conda-forge / qt-main-feedstock

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

General discussion for Qt6 migration #49

Open hmaarrfk opened 2 years ago

hmaarrfk commented 2 years ago

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 in

https://conda-forge.org/status/#qt515

Many of the packages seem abandoned, so it might be best to:

  1. Archive those packages.
  2. Assess the situation with a few key packages.
  3. Compare how other linux distros are doing it.

It seems at least that ubuntu is at least providing both:

``` $ sudo apt search libqt[56]net Sorting... Done Full Text Search... Done libqt5network5/jammy-updates,now 5.15.3+dfsg-2ubuntu0.1 amd64 [installed,automatic] Qt 5 network module libqt5networkauth5/jammy 5.15.3-1 amd64 online account access for Qt apps - Library libqt5networkauth5-dev/jammy 5.15.3-1 amd64 online account access for Qt apps - Development Files libqt6network6/jammy 6.2.4+dfsg-2ubuntu1 amd64 Qt 6 network module libqt6networkauth6/jammy 6.2.4-1 amd64 Qt 6 QtNetworkAuth library libqt6networkauth6-dev/jammy 6.2.4-1 amd64 Qt 6 QtNetworkAuth - development files ```

Other relevant discussion:

Updating Qt/PyQt to 5.15 was a huge deal of work, so on the Spyder team we won't be looking at Qt6 for at least a year, perhaps more. And I don't know who else would be willing to do this as a paid effort, sorry.

hmaarrfk commented 2 months ago

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 https://github.com/conda-forge/staged-recipes/pull/25992 is likely the best "documentation" we have.

Thanks for your willingness to help!

traversaro commented 2 months ago

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.

Krakonos commented 2 months ago

@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 :-)

ccordoba12 commented 2 months ago

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 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 qt-main package. The one Qt module that is not part of it is QtWebEngine, which has its own separate package.

hmaarrfk commented 2 months ago

boilerplate, like the x11 deps

There are efforts to make alot of the boiler plate easier, see https://github.com/conda-forge/qt-main-feedstock/pull/287 but...

Don't get loose track of your goal, which is to get your app up and running ^_^. Copy paste is a very well established technology.

@ccordoba12

that mostly everything required for development is in the qt-main package.

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.

Krakonos commented 2 months ago

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 qt-main package. The one Qt module that is not part of it is QtWebEngine, which has its own separate package.

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?

hmaarrfk commented 2 months ago

We build it as part of a separate branch https://github.com/conda-forge/qt-main-feedstock/tree/qt6

hmaarrfk commented 1 month ago

An other reason to separate it it out is that it is a GPL-3.0-only package. My attempt is here: https://github.com/conda-forge/staged-recipes/pull/27591