Skip to content

scripts: upgrade qt to 6.9.0 for all platforms #18011

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

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

markoburcul
Copy link
Contributor

Referenced issue:

What does the PR do

Upgrades scripts for installing dependencies on all platforms to install QT 6.9.0

Affected areas

None.

Architecture compliance

Screenshot of functionality (including design for comparison)

  • I've checked the design and this PR matches it

@markoburcul markoburcul requested review from caybro, micieslak, alexjba and a team May 29, 2025 06:43
@status-im-auto
Copy link
Member

status-im-auto commented May 29, 2025

Jenkins Builds

Click to see older builds (33)
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 926a4d7 #1 2025-05-29 06:53:03 ~8 min macos/aarch64 🍎dmg
✔️ 926a4d7 #1 2025-05-29 06:54:07 ~9 min tests/nim 📄log
✔️ 926a4d7 #1 2025-05-29 06:58:32 ~14 min tests/ui 📄log
✔️ 926a4d7 #1 2025-05-29 06:59:34 ~15 min macos/x86_64 🍎dmg
✔️ cabb68d #2 2025-05-29 07:09:24 ~6 min macos/aarch64 🍎dmg
✔️ cabb68d #2 2025-05-29 07:12:32 ~9 min tests/nim 📄log
✔️ cabb68d #2 2025-05-29 07:12:39 ~9 min tests/ui 📄log
✔️ cabb68d #2 2025-05-29 07:14:27 ~11 min macos/x86_64 🍎dmg
✔️ cabb68d #2 2025-05-29 07:24:05 ~20 min windows/x86_64 💿exe
✔️ cabb68d #2 2025-05-29 07:29:07 ~26 min linux-nix/x86_64 📦tgz
✔️ cabb68d #2 2025-05-29 07:29:33 ~26 min linux/x86_64 📦tgz
✔️ 7905493 #3 2025-05-29 08:59:05 ~6 min macos/aarch64 🍎dmg
✔️ 1fa9920 #4 2025-05-29 09:07:34 ~6 min macos/aarch64 🍎dmg
✔️ 1fa9920 #4 2025-05-29 09:11:24 ~10 min tests/nim 📄log
✔️ 1fa9920 #4 2025-05-29 09:14:26 ~13 min tests/ui 📄log
✔️ 1fa9920 #4 2025-05-29 09:17:08 ~15 min macos/x86_64 🍎dmg
✔️ 1fa9920 #4 2025-05-29 09:18:54 ~17 min windows/x86_64 💿exe
✔️ 1fa9920 #4 2025-05-29 09:24:32 ~23 min linux/x86_64 📦tgz
✔️ 1fa9920 #4 2025-05-29 09:25:21 ~24 min linux-nix/x86_64 📦tgz
✔️ 97810e9 #5 2025-05-30 08:51:15 ~6 min tests/nim 📄log
✔️ 97810e9 #5 2025-05-30 08:51:42 ~6 min macos/aarch64 🍎dmg
✔️ 97810e9 #5 2025-05-30 08:55:15 ~10 min tests/ui 📄log
✔️ 97810e9 #5 2025-05-30 08:57:47 ~12 min macos/x86_64 🍎dmg
✔️ 97810e9 #5 2025-05-30 08:58:30 ~13 min linux/x86_64 📦tgz
✔️ 97810e9 #5 2025-05-30 09:07:53 ~23 min linux-nix/x86_64 📦tgz
✔️ 97810e9 #5 2025-05-30 09:15:21 ~30 min windows/x86_64 💿exe
✔️ 94ee32e #6 2025-06-03 07:32:49 ~5 min tests/nim 📄log
✔️ 94ee32e #6 2025-06-03 07:34:05 ~7 min macos/aarch64 🍎dmg
✔️ 94ee32e #6 2025-06-03 07:37:13 ~10 min tests/ui 📄log
✔️ 94ee32e #6 2025-06-03 07:38:37 ~11 min linux/x86_64 📦tgz
✔️ 94ee32e #6 2025-06-03 07:40:18 ~13 min linux-nix/x86_64 📦tgz
✔️ 94ee32e #6 2025-06-03 07:47:16 ~20 min macos/x86_64 🍎dmg
✔️ 94ee32e #6 2025-06-03 07:51:49 ~24 min windows/x86_64 💿exe
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 4ffa27d #7 2025-06-03 10:04:29 ~6 min tests/nim 📄log
✔️ 4ffa27d #7 2025-06-03 10:05:08 ~7 min macos/aarch64 🍎dmg
✔️ 4ffa27d #7 2025-06-03 10:08:23 ~10 min tests/ui 📄log
✔️ 4ffa27d #7 2025-06-03 10:09:58 ~11 min linux-nix/x86_64 📦tgz
✔️ 4ffa27d #7 2025-06-03 10:13:32 ~15 min linux/x86_64 📦tgz
✔️ 4ffa27d #7 2025-06-03 10:14:36 ~16 min macos/x86_64 🍎dmg
✔️ 4ffa27d #7 2025-06-03 10:19:10 ~20 min windows/x86_64 💿exe
✔️ 0f9b28e #8 2025-06-03 11:47:48 ~6 min tests/nim 📄log
✔️ 0f9b28e #8 2025-06-03 11:48:34 ~6 min macos/aarch64 🍎dmg
✔️ 0f9b28e #8 2025-06-03 11:52:06 ~10 min tests/ui 📄log
✔️ 0f9b28e #8 2025-06-03 11:53:13 ~11 min linux-nix/x86_64 📦tgz
✔️ 0f9b28e #8 2025-06-03 11:55:37 ~14 min linux/x86_64 📦tgz
✔️ 0f9b28e #8 2025-06-03 11:57:15 ~15 min macos/x86_64 🍎dmg
✔️ 0f9b28e #8 2025-06-03 12:01:24 ~19 min windows/x86_64 💿exe

Copy link
Contributor

@siddarthkay siddarthkay left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tiny nit pick , otherwise looks good to me, lets test this in infra-ci here https://github.com/status-im/infra-ci/tree/master/ansible/roles/status-desktop-setup/vars

@markoburcul markoburcul force-pushed the upgrade-qt branch 3 times, most recently from 7905493 to 1fa9920 Compare May 29, 2025 09:01
Copy link
Contributor

@alexjba alexjba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice 👍

@@ -47,7 +47,7 @@ function install_qt {
apt install -y python3-pip
pip install -U pip
pip install aqtinstall
aqt install-qt linux desktop ${QT_VERSION} gcc_64 -m qtwebengine -O ${QT_INSTALL_DIR}
aqt install-qt linux desktop ${QT_VERSION} linux_gcc_64 -m qtwebengine -O ${QT_INSTALL_DIR}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We'll need more modules now - at least qt5compat . Will it hurt if we're just install all of them so that we're free then to just update the dependencies with what's needed?

Suggested change
aqt install-qt linux desktop ${QT_VERSION} linux_gcc_64 -m qtwebengine -O ${QT_INSTALL_DIR}
aqt install-qt linux desktop ${QT_VERSION} linux_gcc_64 -m all -O ${QT_INSTALL_DIR}

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, just install them all to be on the safe side

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How much is that tho? The Docker image is already massive, how much bigger would it make it?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

~/.../gcc_64/qml$ ll
total 304
drwxr-xr-x. 1 ltinkl ltinkl     20 28. bře 21.11 Assets
-rw-r--r--. 1 ltinkl ltinkl 145171 28. bře 21.03 builtins.qmltypes
-rw-r--r--. 1 ltinkl ltinkl 161034 28. bře 21.03 jsroot.qmltypes
drwxr-xr-x. 1 ltinkl ltinkl     44 28. bře 21.11 QML
drwxr-xr-x. 1 ltinkl ltinkl     44 28. bře 21.11 QmlTime
drwxr-xr-x. 1 ltinkl ltinkl     16 30. bře 10.27 Qt
drwxr-xr-x. 1 ltinkl ltinkl    128 30. bře 10.27 QtCore
drwxr-xr-x. 1 ltinkl ltinkl    188 30. bře 10.17 QtDataVisualization
drwxr-xr-x. 1 ltinkl ltinkl    130 30. bře 10.28 QtGraphs
drwxr-xr-x. 1 ltinkl ltinkl    128 30. bře 10.20 QtGrpc
drwxr-xr-x. 1 ltinkl ltinkl    156 30. bře 10.28 QtCharts
drwxr-xr-x. 1 ltinkl ltinkl    102 29. bře 02.26 QtInsightTracker
drwxr-xr-x. 1 ltinkl ltinkl    194 30. bře 10.28 QtLocation
drwxr-xr-x. 1 ltinkl ltinkl    170 30. bře 10.25 QtMultimedia
drwxr-xr-x. 1 ltinkl ltinkl    132 30. bře 10.27 QtNetwork
drwxr-xr-x. 1 ltinkl ltinkl    156 30. bře 10.17 QtPositioning
drwxr-xr-x. 1 ltinkl ltinkl    144 30. bře 10.20 QtProtobuf
drwxr-xr-x. 1 ltinkl ltinkl    188 30. bře 10.27 QtQml
drwxr-xr-x. 1 ltinkl ltinkl    382 30. bře 10.27 QtQuick
drwxr-xr-x. 1 ltinkl ltinkl     24 29. bře 02.30 QtQuickEffectMaker
drwxr-xr-x. 1 ltinkl ltinkl    310 30. bře 10.22 QtQuick3D
drwxr-xr-x. 1 ltinkl ltinkl    192 30. bře 10.27 QtRemoteObjects
drwxr-xr-x. 1 ltinkl ltinkl    160 30. bře 10.22 QtScxml
drwxr-xr-x. 1 ltinkl ltinkl    140 30. bře 10.28 QtSensors
drwxr-xr-x. 1 ltinkl ltinkl    236 30. bře 10.27 QtTest
drwxr-xr-x. 1 ltinkl ltinkl    152 30. bře 10.17 QtTextToSpeech
drwxr-xr-x. 1 ltinkl ltinkl     32 30. bře 10.16 QtWayland
drwxr-xr-x. 1 ltinkl ltinkl    190 30. bře 10.30 QtWebEngine
drwxr-xr-x. 1 ltinkl ltinkl    152 30. bře 10.28 QtWebChannel
drwxr-xr-x. 1 ltinkl ltinkl    144 30. bře 10.19 QtWebSockets
drwxr-xr-x. 1 ltinkl ltinkl    148 30. bře 10.20 QtWebView
drwxr-xr-x. 1 ltinkl ltinkl     70 30. bře 10.20 Qt3D
drwxr-xr-x. 1 ltinkl ltinkl     32 29. bře 00.43 Qt5Compat
~/.../gcc_64/qml$ du -sh . --exclude=*.debug
32M

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not that big :)

Copy link
Contributor

@siddarthkay siddarthkay Jun 2, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I built a docker image and got successful builds on linux with these modules

qtwebchannel qtwebview qtwebsockets 
qt5compat qtmultimedia qtwebengine 
qtpositioning qtserialport qtshadertools

in this PR : #18019

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

with these modules the docker image size is still much better than going for all modules
Screenshot 2025-06-02 at 2 53 05 PM

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we can add more modules to the DockerImage as and when needed, for now I think we should stick to QT modules that are absolutely needed for builds to work :)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Those are runtime modules; so what's sufficient to build the app may not be necessary to actually run the app. Looking at the (very) big complete Docker image, it looks like you're installing all of Qt, including Qt sources and debug info. Can you pls check that this is not the case?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I built a docker image and got successful builds on linux with these modules

qtwebchannel qtwebview qtwebsockets 
qt5compat qtmultimedia qtwebengine 
qtpositioning qtserialport qtshadertools

in this PR : #18019

This is not enough to run the app

@alexjba
Copy link
Contributor

alexjba commented Jun 2, 2025

FYI, we might have an issue while packaging the app with qt6. We rely on windeployqt, linuxdeployqt and macdeployqt and these tools can't properly detect the qml dependencies because we've kept the qt5 compatibility with some manual qml imports in cpp. It's an issue I've faced with the mobile builds.
We'll try to help with this issue. Please let us know if you face this issue

cc @noeliaSD @Khushboo-dev-cpp @micieslak @caybro

@caybro
Copy link
Member

caybro commented Jun 3, 2025

@markoburcul there's a 6.9.1 that just got released 😉

@alexjba
Copy link
Contributor

alexjba commented Jun 3, 2025

@markoburcul there's a 6.9.1 that just got released 😉

yeah, it would be nice to have an "easy" upgrade option. In an ideal setup we could change the qt version by changing some repo files alone. Not sure it's possible, but for sure a nice to have.

If we'll bring the browser back I expect we'll bump the qt version every 2 months or so - depending on how fast qt moves. This means there's a chance we'll have a different qt version in every release.

@jakubgs
Copy link
Member

jakubgs commented Jun 3, 2025

yeah, it would be nice to have an "easy" upgrade option. In an ideal setup we could change the qt version by changing some repo files alone. Not sure it's possible, but for sure a nice to have.

That is not doable currently. The jenkins user on our CI slaves will never have admin or root permissions necessary to install things, and never should have such permissions. Upgrades will always involve Infra team. The only exception being potentially Linux builds inside of Docker containers, but those would be big and slow.

Now, if we used Nix that would be possible, since Nix just downloads things into /nix/store and does not require root to do so, hence any changes to Nix files would affect the builds and shells created by Nix in CI, so that would work. But that would require considerable extra work to make Qt and other tooling properly work with Desktop, which is doable but would obviously take time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants