Repository navigation
Conversation
The statically-linked gstopengl plugin has no pkg-config file, so FindGStreamer.cmake falls back to a bare find_library() call that only adds the plugin archive itself, with no transitive dependencies. Internally gstopengl links against graphene, libpng, libjpeg, and gstreamer-controller-1.0, none of which were being linked in, causing undefined-symbol link errors whenever the opengl plugin is enabled (e.g. QGC_ENABLE_HERELINK=ON on Android, which is currently the only way to build against Qt 6.6.3 / minSdk 25 for Android 7.1-8.x support). Reproduced building QGroundControl for Android arm64-v8a on Stable_V5.0 with Qt 6.6.3; the four symbols surfaced one at a time as each was fixed and relinked. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Contributor
|
Thanks for your first pull request! 🎉 A maintainer will review this soon. Please ensure:
We appreciate your contribution to QGroundControl! |
Author
|
Closing — keeping this fix on my fork only for now, not intending to merge upstream at this time. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
gstopenglGStreamer plugin has no pkg-config file, soFindGStreamer.cmakefalls back to a barefind_library()call that only adds the plugin archive itself, with no transitive dependencies.gstopengllinks againstgraphene,libpng,libjpeg, andgstreamer-controller-1.0— none of which were being linked in, causing undefined-symbol link errors whenever theopenglplugin is enabled (e.g.QGC_ENABLE_HERELINK=ONon Android, currently the only way to build against Qt 6.6.3 /minSdk 25for Android 7.1–8.x support, per #13371).GStreamer::Pluginswheneveropenglis inGSTREAMER_PLUGINS.How this was found
Building QGroundControl for Android
arm64-v8aonStable_V5.0with Qt 6.6.3 (-DQGC_ENABLE_HERELINK=ON, matching.github/workflows/android-linux-qt6.6.3.yml) compiled cleanly (~400+ translation units) but failed at the final link step. The four missing symbols surfaced one at a time as each was fixed and relinked:graphene_matrix_*,graphene_plane_*gstgltransformation.clibgraphene-1.0.apng_read_info,png_get_IHDR, etc.gstgloverlay.clibpng16.ajpeg_read_header,jpeg_start_decompress, etc.gstgloverlay.clibjpeg.agst_proxy_control_binding_newgstglsinkbin.c/gstglvideomixer.clibgstcontroller-1.0.aNote: GStreamer does ship
graphene-gobject-1.0.pcetc., but the embeddedprefix=in those.pcfiles is hard-coded to the original Cerbero build machine's path, sopkg_check_modulescan't resolve them — hence usingfind_library()directly here, consistent with the existing fallback pattern in this file.After applying this fix, the build linked and packaged successfully, producing an installable
minSdkVersion=25APK verified viaaapt dump badging.Test plan
arm64-v8a, Qt 6.6.3,Stable_V5.0, withQGC_ENABLE_HERELINK=ONaapt dump badging(sdkVersion:'25',native-code: 'arm64-v8a')🤖 Generated with Claude Code