-
-
Notifications
You must be signed in to change notification settings - Fork 1k
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
Switching to Qt 6 by default #7202
Comments
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
EDIT: Well ... I'm not gonna say this isn't possibly interesting eventually, but I suppose its largely irrelevant right now, as ... something I saw somewhere said 3.8 wasn't good enough for Qt6 anyway(?), and 3.9 out of homebrew is not quite so much of a mess TL;DR: a (if unlikely the) macOS build problem is that, using Apple's Python, the virtualenv construction is creating a Apologies if this is covered already somewhere (and if so I'd suggest some sort of mention should be in docs, if not indeed in the script): I am taking a run at getting qt6-v2 to build on macOS. Still kinda just started, but insofar as the current latest state I see is
I wanted to point out a thing that's like ... not extremely obvious (and very ... Apple) When running
This is cause macOS
So yeah whereas
even this is a lie, cause the reality is that, for the linking to work out, it seems like the canonical location ends up as:
This is to say, on macOS
which (And honestly, it may actually be supposed to ignore the disk entirely and hit up the in-memory dylib cache? but it still probably needs the canonical path whether or not that corresponds to a real file) For my part I worked around this by doing
doing this but with hardlinks recreates the issue; so going from scratch you gotta like
which gets me back to good old fashioned qt errors; adding |
Well, I don't know if any of that turns out to be extremely relevant or not - but I do have a Qt6 6.3 M1 build running! Here is the initial version info: https://paste.the-compiler.org/view/9ec20cf5 This seems to get me back to a working browser! # getting to scratch: a thing I surely won't regret!
brew uninstall --ignore-dependencies --force qt || :
brew uninstall --ignore-dependencies --force python
rm -rf /opt/homebrew/lib/python3.*
rm -rf ~/Library/Caches/pip
brew cleanup
rm -rf ~/Library/Caches/Homebrew/downloads/*
# for bonus points, kill the qt deps with fire:
brew uninstall --force --ignore-dependencies assimp brotli dbus double-conversion freetype hunspell icu4c jasper jpeg libb2 libmng libpng libtiff md4c sqlite webp zstd
# pcre2 is a dep of git, so it probs can be assumed if brew is working
# maybe also don't wanna kill off glib, just for sanity
brew install python # 3.9.13_1, also brings in sqlite @ 3.38.5
gh repo clone qutebrowser/qutebrowser
cd qutebrowser
git checkout qt6-v2
/opt/homebrew/opt/python@3.9/libexec/bin/python scripts/mkvenv.py --pyqt-version 6.3
./.venv/bin/qutebrowser --temp-basedir This builds like this https://paste.the-compiler.org/view/884b4209 it did generate Likewise, (Probably same-ish version info, but from "clean" build as described: https://paste.the-compiler.org/view/56e3a68d) |
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
I don't think the missing Qt3D libraries are an issue, as we don't use those parts of QML/QtQuick. In an effort to keep this issue a bit more streamlined than the previous ones, I've split the As for the PyInstaller issues, I believe I got to the root cause: I seem to get a working DMG that way, with some warnings remaining:
Still need to clean up things a bit, and then I'll upload it for people to try out. |
FYI, did another rebase on |
macOS and Windows builds of the Planning to release v2.5.2 now, and then do another rebase on the latest |
I tried today QtWebEngine edit: This is possibly a QtWebEngine bug, as I suspect that Qt doesn't pass flags to Chromium edit2: Found it! |
The beta channel of the Flathub app is now (finally) updated to QtWebEngine |
Flatpak test builds with development releases of QtWebEngine I believe that this is the first time building QtWebEngine with the app, and not pulling in the QtWebEngine Flatpak base application. The test builds are temporary CI artifacts, and they will need to be generated every week or so. The warning about data directory still applies here when switching between 6.3 and 6.4. |
Hello, I'm not sure if I should report this here or make a seperate issue. I tried qutebrowser-nightly-2022-07-24-dfde979-qt6-macos yesterday and it seems to run fine without any issues. But I did notice however that the memory usage is a lot bigger than with the current stable version. I'm talking about 3-4 times as much memory is being used for the same pages open. I'm running it on a MB Air (M1), OS 12.5. With regards, Angelo Machils |
Websites are starting to become unusable: I think it's time to switch, even if the Qt 6 branch is not 100% finished. |
I'm aware (and the branch doesn't really exist anymore, support is already in master). Unfortunately Qt 6.5.1 had some rather bad regressions, so I'm waiting for 6.5.2 (scheduled for the 28th). I want to avoid a situation where we flip the switch and people instantly want to go back due to regressions. For one because they'll lose their cookies and such when doing that, but also because they might end up configuring Qt 5 and then never switching back to Qt 6 even if those things are long fixed. |
Next big step done: #7741 is now merged, which in a nutshell means:
Final step will be making that the default, planning to do that when Qt 6.5.2 did land. Maybe I'll find the time to check some of the remaining Qt 6 regressions (personally annoyed by #7222 most) in the meantime... |
Well, I'm ready for when Qt 6.5.2 is out! |
FYI, I deleted the old They're preserved at qutebrowser/experiments if we ever need them in the future. |
Still waiting for Qt 6.5.2 to be released. It's been planned for Wednesday, but it looks like things are delayed. I found this:
Soooo maybe it'll still happen today? Or on Monday? |
Well, looks like the domain that's hosted on just did a derp:
Soooo I'm assuming it'll probably be next week 😅 |
I strongly recommend dropping Qt5 support in the very near future for security reasons, as Qt5 WebEngine is behind on patches. |
Can you elaborate? The last security patches for QtWebEngine on Qt 5 were integrated four days ago. |
Was not aware of that, sorry. |
As for Qt 6.5.2, it looks like there was another issue found during releasing:
Welp. Let's hope it still happens this week, as next week I'm at Europython and probably not going to have the time to look at qutebrowser stuff much. Fingers crossed! |
Finally there's been some news:
And the wiki page now says 18th (next Tuesday). |
Qt 6.5.2 has been released finally! Looks like an Archlinux update also is in progress already, so I suppose it'll happen somewhen the next days (perhaps on the weekend at the Europython sprints?) ✨ |
Since Qt 6.5.2 was released finally (with 3 weeks of delay), fixing various annoying issues with Qt 6.5.0 and .1, it's time to finally flip the switch to Qt 6 by default! So that's what I did at the Europython sprints in Prague 🙂 Right now Thanks to @RMPR for some nice pair programming sessions and contributions here at the sprint, fixing some of the last rough edges. If you use qutebrowser from git, it will now automatically use PyQt6 if that's available - if it is not, it will open a warning page telling you that you should probably ensure that it is. Only a couple of smaller things now remaining until the v3.0.0 release: https://github.com/qutebrowser/qutebrowser/milestone/49 |
v3.0.0 was released! |
Perhaps this can be unpinned now that Qute 3 / QT 6 are the default. |
Leaving it pinned for now, until/unless we need space for new pinned issues. While I don't see many people still running Qt 5, I still think it's good to make people aware that there was a big change and they should make sure they're on Qt 6 if they haven't taken care of that yet. |
(Continuation of #5395 because that was getting rather big)
Current state
On July 22th, 2023, the flip was finally switched to Qt 6 by default. All you need to ensure is what PyQt6 is available, and Qt 6 will be used automatically. If it's not available, you will get a warning shown by qutebrowser.
All information below is considered historical.
The qt6-v2 branch has been merged to master on March 18th, 2023, but with Qt 5 still being the default. See #7628 for details. This issue is now repurposed on what there needs to be done for Qt 6 to be the default Qt wrapper.The last fixes for theqt6-v2
branch with Qt 6 support went in around May 19th. Multiple core developers (and users) have been using it as a daily driver since far longer (late 2021 / early 2022) and all known crashes are fixed, with all tests passing.There is still a lot of remaining work, however, on the development side. Due to the big amount of changes (currently 156 commits, 314 files changed, 12,978 additions and 4,094 deletions) it's tricky to integrate this intomaster
without breaking lots of existing open PRs. Thus, we'd like to do another round of PR merging before attempting to do so. The current approach also breaks various tooling, by not properly supporting static analysis (#7128, but that will introduce another big code churn), or by not fixing linting issues yet (#1455).Bottomline: Feel free to use theqt6-v2
branch, keep in mind it will be rebased from time to time, and it will still take lots of efforts behind the scenes to get it fully integrated.How to try
mkvenv.py
:version
) unless you don't mind losing cookies and such when down-/upgrading. This isn't needed if you use--temp-basedir
below, but if you forget to do so, your data will get upgraded, and as far as I'm aware, there is no way to read it with Qt 5 after that.git clone https://github.com/qutebrowser/qutebrowser.git
cd qutebrowser
Check out the branch usinggit checkout qt6-v2
python3 scripts/mkvenv.py --venv-dir .venv-qt6 --pyqt-version 6.3
QUTE_QT_WRAPPER=PyQt6
somewhere in the environment.venv-qt6/bin/qutebrowser --temp-basedir
and verify via:version
that you're indeed on Qt 6Archlinux
qutebrowser-qt6-git is available in the AUR.
Windows / macOS
Built as part of the nightly builds on CI. Click on the most recent passing build, then find the
qt6
builds under "Artifacts". Note that you will need to be logged in with a GitHub account to download.Note for macOS: Due to a PyInstaller issue, Chromium's sandboxing is currently disabled for macOS builds with Qt 6. This means that there will be no additional layer of protection in case of Chromium security bugs. Thus, it's advised to not use this build in production. Hopefully, this situation will be resolved before the final 3.0.0 release.
Flatpak
Published in the
flathub-beta
repo:Remaining issues
(TODO: find reproducer, going to eg https://github.com/qutebrowser/qutebrowser/commits/qt6-test and clicking on one of the commits seems to lose the favicon) (from @toofar, haven't checked if it's still an issue)see Switching to Qt 6 by default #7202 (comment)TODOs
Look at remaining API changes and new features (comment below)moved to Interesting changes in Qt 6.0/.1/.2/.3 #7756FIXME:qt6
commentsMaybe investigate storing the Qt wrapper to use in a config file so that we don't unexpectedly switch (and destroy data?) if one is unavailableProbably merge some PRs while waiting for more feedback and to avoid crazy conflicts with the next stepsmoved to v4Integrate Feat/pyqt wrapper bulk import rewrite #7128 if we didn't find a way to make static analysis work otherwisesee Type checking and auto-completion with PyQt6 (and PyQt5) #7370 and linked discussion and issueAdoptmoved to v4black
(Use auto-formatters (black/isort, maybe autopep8/yapf) #1455) so that we pass "normal" linting again and don't have crazy long linesLook at adopting PySide6 againnot a priority at the momentThe text was updated successfully, but these errors were encountered: