build: update to Qt 6.11.1#14552
Conversation
There was a problem hiding this comment.
Pull request overview
Updates QGroundControl’s Qt baseline to the Qt 6.11 line (target 6.11.1, minimum 6.11.0) and aligns related build/runtime expectations (iOS deployment target and GStreamer ↔ Qt color-transfer mapping) so CI and multimedia behavior match upstream Qt 6.11.
Changes:
- Bumped Qt target/minimum versions and updated the project’s “disable deprecated / strict mode” cutoffs to 0x060B00.
- Raised the iOS deployment target to 17.0 to match Qt 6.11’s minimum supported iOS version (including the iOS CMake preset).
- Synced GStreamer color-transfer mapping/tests to Qt 6.11.1 behavior (SMPTE240M and GAMMA18 adjustments) and refreshed related comments.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
.github/build-config.json |
Updates Qt target/min versions and iOS deployment target used by CI/tooling. |
cmake/presets/iOS.json |
Raises iOS deployment target in the iOS CMake preset to 17.0. |
cmake/CustomOptions.cmake |
Updates Qt deprecation/strict-mode cutoff hex values to Qt 6.11 (0x060B00). |
cmake/install/Install.cmake |
Refreshes Wayland plugin comment while keeping deployment plugin inclusion intact. |
src/VideoManager/VideoReceiver/GStreamer/GstAppSinkAdapter.cc |
Adjusts GStreamer→Qt transfer-function mapping to match Qt 6.11.1’s backend mapping. |
src/VideoManager/VideoReceiver/GStreamer/gstqgc/gstqgcvideosinkbin.cc |
Updates Y444/Qt version comment in caps documentation. |
test/VideoManager/GStreamer/GStreamerTest.cc |
Updates/extends unit tests for the revised transfer-function mapping and comment refresh. |
1de79c2 to
ac5f389
Compare
ac5f389 to
0792c05
Compare
0792c05 to
8d0a99b
Compare
8d0a99b to
bf22eea
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #14552 +/- ##
==========================================
+ Coverage 25.47% 30.56% +5.09%
==========================================
Files 769 787 +18
Lines 65912 67508 +1596
Branches 30495 31279 +784
==========================================
+ Hits 16788 20637 +3849
+ Misses 37285 32938 -4347
- Partials 11839 13933 +2094
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 409 files with indirect coverage changes Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
bf22eea to
794c1d7
Compare
794c1d7 to
75c29be
Compare
| // QMetaCallEvent::id() was removed in 6.11; its protected Data is reachable from a derived helper. | ||
| struct MetaCallHelper : public QMetaCallEvent { | ||
| int id() const { return d.method_offset_ + d.method_relative_; } | ||
| }; | ||
| const auto methodId = [](const QMetaCallEvent *e) { return static_cast<const MetaCallHelper*>(e)->id(); }; | ||
|
|
Build ResultsPlatform Status
All builds passed. Pre-commit
Pre-commit hooks: 0 passed, 0 failed, 0 skipped. Test Resultslinux-coverage-integration: 25 passed, 0 skipped Code Coverage
Artifact Sizes
Updated: 2026-07-03 09:53:36 UTC • Commit: f41867c • Triggered by: Android |
Bump Qt target 6.10.3 -> 6.11.1 and minimum 6.10.0 -> 6.11.0. - ios_deployment_target 14.0 -> 17.0: Qt 6.11 minimum supported iOS is 17 (QT_SUPPORTED_MIN_IOS_VERSION). macOS stays 13, matching Qt's minimum. - QGC_QT_DISABLE_DEPRECATED_UP_TO / ENABLE_STRICT_MODE_UP_TO 0x060A00 -> 0x060B00 to track the new floor. - Sync GStreamer color-transfer map to Qt 6.11.1 QGstCaps::formatAndVideoInfo: SMPTE240M now maps to Gamma22, GAMMA18 to BT709 (were swapped); update the unit test accordingly and add the missing GAMMA18 case. - Refresh Qt-version references in comments (Y444 omission, wayland plugin). Network helper follow-ons for the 6.11 floor: - QGCNetworkHelper: add per-request TCP keep-alive + ConnectionCacheExpiry RequestConfig fields and apply them in configureRequest; wire them into QGeoTileFetcherQGC tile/terrain requests to keep sockets warm against Qt 6.11's new 2-min idle-connection reaping. - Reuse Qt facilities: classifyHttpStatus compares via QHttpServerResponder StatusCode; URL helpers use QUrl::adjusted; header setters use QHttpHeaders::WellKnownHeader; drop hand-rolled urlFileName for QUrl::fileName. - Cover the new keep-alive fields in QGCNetworkHelperTest.
| // QMetaCallEvent::id() was removed in 6.11; its protected Data is reachable from a derived helper. | ||
| struct MetaCallHelper : public QMetaCallEvent { | ||
| int id() const { return d.method_offset_ + d.method_relative_; } | ||
| }; | ||
| const auto methodId = [](const QMetaCallEvent *e) { return static_cast<const MetaCallHelper*>(e)->id(); }; | ||
|
|
| echo. 1>&2 | ||
| echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 | ||
| echo. 1>&2 | ||
| echo Please set the JAVA_HOME variable in your environment to match the 1>&2 | ||
| echo location of your Java installation. 1>&2 | ||
|
|
||
| goto fail | ||
| "%COMSPEC%" /c exit 1 | ||
|
|
| echo. 1>&2 | ||
| echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 | ||
| echo. 1>&2 | ||
| echo Please set the JAVA_HOME variable in your environment to match the 1>&2 | ||
| echo location of your Java installation. 1>&2 | ||
|
|
||
| goto fail | ||
| "%COMSPEC%" /c exit 1 | ||
|
|
| "ios_deployment_target": "17.0", | ||
| "java_version": "21", | ||
| "macos_deployment_target": "13.0", |
| dependencies { | ||
| // Qt injects `qtGradlePluginType` dynamically (application/library), which | ||
| // still relies on classpath-based plugin resolution. | ||
| classpath 'com.android.tools.build:gradle:9.0.1' | ||
| classpath 'com.android.tools.build:gradle:9.2.1' | ||
| classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:2.4.0" | ||
| } |
| compileOptions { | ||
| sourceCompatibility JavaVersion.VERSION_17 | ||
| targetCompatibility JavaVersion.VERSION_17 | ||
| sourceCompatibility JavaVersion.VERSION_21 | ||
| targetCompatibility JavaVersion.VERSION_21 | ||
| } |
| distributionBase=GRADLE_USER_HOME | ||
| distributionPath=wrapper/dists | ||
| distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip | ||
| networkTimeout=120000 | ||
| distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip | ||
| networkTimeout=10000 | ||
| retries=0 | ||
| retryBackOffMs=500 |
Summary
Updates the Qt target to 6.11.1 and the supported minimum to 6.11.0.
Changes
qt_version6.10.3 → 6.11.1,qt_minimum_version6.10.0 → 6.11.0 (.github/build-config.json).QT_SUPPORTED_MIN_IOS_VERSIONin Qt's.cmake.conf); 14.0 is no longer functional. macOS stays 13.0, matching Qt's minimum. Updated bothbuild-config.jsonand thecmake/presets/iOS.jsonpreset.QGC_QT_DISABLE_DEPRECATED_UP_TO/QGC_QT_ENABLE_STRICT_MODE_UP_TO0x060A00→0x060B00to track the new floor.QGstCaps::formatAndVideoInfo():SMPTE240M→Gamma22andGAMMA18→BT709(previously swapped relative to Qt). Updated the unit test and added the missingGAMMA18assertion.build.gradlere-alignment to Qt 6.11's stock androiddeployqt template:java_version,compileOptions), Gradle wrapper → 9.6.1, AGP 9.0.1 → 9.2.1, added Kotlin Gradle plugin 2.4.0,androidx.core1.16.0 → 1.18.0.android_platform35 → 36,android_cmdline_tools→ 14742923.qgc-android-config.propertiesbridge (generated incmake/platform/Android.cmake, consumed bybuild.gradle): compile/target/min SDK and versionCode/versionName now flow through Qt's nativeQT_ANDROID_*target properties instead of a hand-rolled properties file.QMetaCallEventmetacall-id workaround inQGCApplication::compressEvent(id()was removed in 6.11) with astatic_assertonQMetaCallEventlayout so any future Qt ABI change fails at compile time rather than miscomparing at runtime.Verification
android_platform36 (see Changes above). The Gradle wrapper scripts (gradlew,gradlew.bat,gradle-wrapper.jar) are vendored from Gradle 9.6.1 and not hand-edited.QVideoFrameFormat::PixelFormatstill has noFormat_YUV444*in 6.11.1, so the Y444 omission remains correct.