I’ve been manually installing extensions and helping other in my institution to do so, but this has become a bit cumbersome and annoying for new users.
I guess if Slicer updates the qt version this issue could be solved. Are there planes for that? If not, is there a way to fix this from another side? I’ve been looking a bit, but thought to ask to get better directions.
I found this weird since downloads from other points of the application (such as downloading sample data) work flawlessly.
Thanks for the report @simonoxen. We will switch to Qt 6.x as soon as feasible, I don’t know the status of all the components but I suspect it will happen in the next year or sooner for the preview version. It might make sense to write a small python script that downloads using non-Qt methods and runs the installation if your manual workaround is to cumbersome.
Qt6 raises minimum platform requirements and it requires solid support in all underlying libraries, so unless there are several other pressing issues that Qt6 solves then end of this year could be a realistic target. I added an issue and tentatively targeted it for Slicer-5.2.
It seems that the fix for this particular issue is a single-line change in Qt, so we could possibly patch it in our Qt builds. @jcfr do we still build Qt from source on factory machines?
Doing this fixes the issue on my work computer. I built and packaged Slicer on my personal computer and then installed Slicer there, now Extensions can be downloaded.
There is however another issue now with the build from personal computer: Extensions do not show. They can be downloaded and installed by restoring from previous, but they don’t show. I’m not sure wether this is related or not. Here is the log:
It appears that patch was backported to the Qt 5.15 maintenance branch (see below). Although there is only tags up to Qt 5.15.2 and this patch came afterwards and was likely included in Qt 5.15.3 based on the date, the GitHub - qt/qtbase at 5.15 branch appears to have many additional fixes for the Qt 5.15 release. This could potentially be used when building from source.
In the Qt install tool the latest available version is Qt-5.15.2. Qt company have already stopped long-term-support for open-source users, so Qt-5.15.3 release is only available for paying users. Free users needs to use latest Qt release to get patches.
@jcfr Do you think we could use commercial license for creating Slicer packages using Qt LTS releases, such as Qt-5.15.3? I’m not sure it is a good idea, just wondering about possible options.
@lassoan Are you not wanting to use latest GitHub - qt/qtbase at 5.15 which includes the patch for macOS because it would be different from the Qt 5.15.2 pre-built binaries downloaded for the Windows platform? We already build Qt from source for macOS Slicer factory builds.
Qt-5.15 is a special case. There are some LGPL LTS tags. There are Commercial LTS versions that are a year ahead of thoseLGPL tags. For example Qt 5.15.4-lts-lgpl was released in May 2022, while Qt 5.15.4 was released in May 2021 (a year earlier). I don’t know if this is a coincidence or if there is an agreement that changes must be made public in 12 months (I remember reading something like this somewhere). There is also KDE’s Qt-5.15 patch collection. We could probably build Qt from one of these sources, which would be inconvenient, but tolerable.
After Qt-5.15 I’m not sure if we can continue what we have been doing, but we have a few options to choose from:
using Qt’s official rolling latest release: as we know Qt, these often contain regressions (bugs, missing features whenever there is some refactoring); but it is nice that we don’t need to build Qt form source on Windows and Linux
use unofficial LTS-like releases: a chosen Qt version with some important patches applied. We could do this at a very limited scope (merge fixes that users explicitly complain about), but maybe KDE or other project will maintain patch collections for Qt6 that we can use in the future.
buy commercial license that gives access to LTS releases: Qt charges a completely unreasonable price for their commercial license, which makes it impossible to buy every developer a license; so this is not really an option