I’m not sure if I understand correctly. But official support for Qt 5.15 (the last and current version of Qt5) seems to be discontinued for non-paying users:
[Development] Commercial-only LTS phase starts: Closing the 5.15 branch(es) on 5th January (qt-project.org)
Does that mean that we have to port to Qt6 already if we want to see future bug fixes from upstream?
Can we continue to use Qt? Or do we have to search for alternatives?
It seems to me that moving away from Qt would be a huge effort, so I hope we can continue to use it. It’s not like Qt 5 is going away. But I do understand that there could be maintenance issues if there are critical bugs that need to be fixed.
Looking at what is needed to port to Qt 6 would probably be a good thing to do, but I don’t know how easy it will be to move to Qt 6 now. I don’t see Debian packages. Is it packaged for any other major linux distributions?
It is in Fedora 34 (alpha stage at this moment, should become beta on March 16).
It looks to me that qt5 will be the default and 6 is available for dev.
The minimum requirements seem to be significantly higher for Qt6:
Supported Platforms | Qt 6.0
For Windows, that means only Windows 10 and only 64bit is supported.
Additionally, they seem to require at least C++17 (on all platforms):
Qt 6.0 Released
Since Octave aims to compile with C++11 compatible compilers, this probably means that we have to stick with Qt5 (at least for now).
Fedora 34-beta is out and I have tried compiling octave with qt6.
QDesktopWidget is not there any more (QScreen is a replacement). Since QScreen already available in qt5, perhaps we replace it to get a head start.
QTextCodec is also not available anymore.
Dimitri, thanks for testing. When the problems introduces by Qt 5.15 are solved, I will have a look at the two mentioned issues. If I remember correctly, QScreen is already in use in some code files.
Is Qt 6 the default on Fedora 34?
Since qt in Fedora has the major number included qt5 will be available for a long time.
So for now in Fedora qt refers to qt4 and then we have qt5 and qt6 packages.
Regarding to the support of several qt versions on the code on LyX we have been doing small changes to support qt4, qt5 and qt6:
The initial effort was to get rid of deprecation warnings, replacing the calls with more modern versions.
Basically we use conditional guards depending on the qt version.
I hope that this helps.
KDE seems to have started a patch collection for Qt5.15:
Qt5PatchCollection - KDE Community Wiki
This isn’t news (dates Aug 18 2020). But I missed it before:
Stepping down as Qt 6 maintainers (perezmeyer.com.ar)
I was wondering why there was still no sign of Qt6 after I updated to Ubuntu 21.10. It looks like there won’t be any Qt6 in Debian based distributions any time soon.
There seems to be some activity by new packagers for Qt6 for Debian recently:
Qt6 · GitLab (debian.org)
So, a Qt6 might come to Debian sooner or later after all.
IIUC, the Debian packaging repositories are upstream for Ubuntu. Qt6 is still on “experimental” for Debian. Not even on unstable/Sid yet. I’d guess it’ll still take a few months(?) before it’ll ride the release train on Debian and probably a little longer for Ubuntu…
Looks like Qt6 has been released to Debian Sid (unstable):
Maybe, there is a chance it will be packaged for Ubuntu 22.10 this fall.
Apart from Qt 6, this brings me to the question if we have already decided on a minimal version of Qt 5 required for building Octave 8.
Which version of Qt5 is packaged in distributions that will still be supported until late 2023 (when Octave 8 should probably be close to end of life)?
That might give an idea how many users might be affected if we choose to require a given minimum version.
IMHO, we won’t need to worry about distributions that are older than that.
Related to that question. The CI runner on Ubuntu 18.04 is failing with:
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 -DOCTGUI_DLL -I/usr/include/x86_64-linux-gnu/qt5/QtHelp -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtSql -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtXml -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/x86_64-linux-gnu/qt5 -I../libgui/qterminal/libqterminal -Ilibgui/src -I../libgui/src -Ilibgui/graphics -I../libgui/graphics -I../libgui/src/m-editor -Iliboctave -I../liboctave/array -Iliboctave/numeric -I../liboctave/numeric -Iliboctave/operators -I../liboctave/operators -I../liboctave/system -I../liboctave/util -Ilibinterp -I../libinterp -Ilibinterp/parse-tree -I../libinterp/parse-tree -Ilibinterp/corefcn -I../libinterp/corefcn -I../libinterp/octave-value -I../liboctave/wrappers -I/usr/include/hdf5/serial -I/usr/include/suitesparse -fPIC -pthread -fopenmp -Wall -W -Wshadow -Woverloaded-virtual -Wold-style-cast -Wformat -Wpointer-arith -Wwrite-strings -Wcast-align -Wcast-qual -fvisibility=hidden -g -O2 -MT libgui/src/libgui_src_libgui_src_la-resource-manager.lo -MD -MP -MF libgui/src/.deps/libgui_src_libgui_src_la-resource-manager.Tpo -c ../libgui/src/resource-manager.cc -fPIC -DPIC -o libgui/src/.libs/libgui_src_libgui_src_la-resource-manager.o
../libgui/src/resource-manager.cc: In member function ‘void octave::resource_manager::config_icon_theme()’:
../libgui/src/resource-manager.cc:190:35: error: ‘fallbackSearchPaths’ is not a member of ‘QIcon’
QStringList fallbacks (QIcon::fallbackSearchPaths ());
../libgui/src/resource-manager.cc:209:12: error: ‘setFallbackSearchPaths’ is not a member of ‘QIcon’
Makefile:17488: recipe for target 'libgui/src/libgui_src_libgui_src_la-resource-manager.lo' failed
The Qt5 version might be too old for those functions.
Edit: It’s Qt version 5.9.5 afaict:
Ubuntu – Details of package qtbase5-dev in bionic
Qt5.15.3 was released in an open source version (LGPL) yesterday:
[Development] Qt 5.15.3 Opensource released (qt-project.org)
That’s almost exactly one year after version 5.15.3 was made available in its commercial license version:
Commercial LTS Qt 5.15.3 Released
That’s pretty confusing. Are those versions the same (apart from the different licenses)? Will all subsequent versions also be released as an LGPL version with a delay of one year?
Should we try to update MXE Octave to that version before we release Octave 7?
Edit: I updated to the newest version of Octave on the default branch of MXE Octave. It should be straight forward to graft this change to the release branch if we decide we’d like to have this for Octave 7: