Name: qt6-qtmultimedia Version: 6.10.3 Release: 7%{?dist} Summary: Qt6 - QtMultimedia component License: LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only URL: https://www.qt.io Source0: https://download.qt.io/official_releases/qt/6.10/%{version}/submodules/qtmultimedia-everywhere-src-%{version}.tar.xz BuildRequires: qt6-rpm-macros BuildRequires: cmake BuildRequires: ninja-build BuildRequires: gcc-c++ BuildRequires: qt6-qtbase-devel BuildRequires: qt6-qtbase-private-devel BuildRequires: qt6-qtdeclarative-devel BuildRequires: qt6-qtshadertools-devel BuildRequires: mesa-libEGL-devel BuildRequires: libX11-devel BuildRequires: libXext-devel BuildRequires: libXrandr-devel BuildRequires: pkgconfig(libva) BuildRequires: pkgconfig(libva-drm) BuildRequires: pkgconfig(libavcodec) BuildRequires: pkgconfig(libavformat) BuildRequires: pkgconfig(libavutil) BuildRequires: pkgconfig(libswresample) BuildRequires: pkgconfig(libswscale) BuildRequires: pkgconfig(libpipewire-0.3) BuildRequires: alsa-lib-devel %description QtMultimedia is a Qt6 module providing camera, audio, and video capture/playback APIs -- the sixth package in the Wayland stack being built to unblock Spectacle, needed specifically because KF6Prison's PrisonScanner subcomponent (Spectacle's hard requirement for QR/ barcode scanning) is gated behind `if(TARGET Qt6::Multimedia AND TARGET ZXing::ZXing)`. Confirmed genuinely absent from this distro (unlike Qt6WaylandClient, which turned out to already be bundled inside qt6-qtbase-devel -- this one really does need building as a full Qt module from Qt's own official release tarball, matching qtwayland's build pattern via the real %%cmake_qt6 macro this distro's own qt6-rpm-macros package provides). Its own configure.cmake has a real native FFmpeg backend (qt_feature("ffmpeg", CONDITION ... AND (... OR QT_FEATURE_pipewire))) -- since real FFmpeg and real PipeWire are both already built earlier in this chain, camera/audio/video support routes entirely through those rather than needing GStreamer or its Qt-specific plugin glue. EGL, VAAPI (via libva/libva-drm), and Qt6ShaderTools (confirmed a real, separate Azure Linux package: qt6-qtshadertools-devel) round out the real hard deps found via qt_find_package()/pkg_check_modules() calls across configure.cmake and src/multimedia/, src/plugins/ multimedia/ffmpeg/ (the only two subdirectory CMakeLists.txt files with real find calls beyond top-level and configure.cmake -- verified via a full recursive scan; everything else is examples/tests/manual, which aren't built by default). %prep %autosetup -p1 -n qtmultimedia-everywhere-src-%{version} %build %cmake_qt6 -DFEATURE_ffmpeg=ON -DFEATURE_pipewire=ON -DFEATURE_alsa=ON -DQT_BUILD_EXAMPLES=OFF -DQT_BUILD_TESTS=OFF %cmake_build %install %cmake_install %files %license LICENSES/* %{_qt6_libdir}/libQt6Multimedia.so.* %{_qt6_libdir}/libQt6MultimediaQuick.so.* %{_qt6_libdir}/libQt6MultimediaWidgets.so.* %{_qt6_libdir}/libQt6SpatialAudio.so.* %{_qt6_plugindir}/multimedia/ %{_qt6_qmldir}/QtMultimedia/ %{_libdir}/qt6/metatypes/qt6multimedia_metatypes.json %{_libdir}/qt6/metatypes/qt6multimediaquickprivate_metatypes.json %{_libdir}/qt6/metatypes/qt6multimediatestlibprivate_metatypes.json %{_libdir}/qt6/metatypes/qt6multimediawidgets_metatypes.json %{_libdir}/qt6/metatypes/qt6ffmpegmediapluginimplprivate_metatypes.json %{_libdir}/qt6/metatypes/qt6spatialaudio_metatypes.json %{_libdir}/qt6/modules/Multimedia.json %{_libdir}/qt6/modules/MultimediaQuickPrivate.json %{_libdir}/qt6/modules/MultimediaTestLibPrivate.json %{_libdir}/qt6/modules/MultimediaWidgets.json %{_libdir}/qt6/modules/SpatialAudio.json %{_libdir}/qt6/modules/FFmpegMediaPluginImplPrivate.json %{_libdir}/qt6/sbom/qtmultimedia-6.10.3.spdx %{_qt6_includedir}/QtMultimedia/ %{_qt6_includedir}/QtMultimediaQuick/ %{_qt6_includedir}/QtMultimediaWidgets/ %{_qt6_includedir}/QtMultimediaTestLib/ %{_qt6_includedir}/QtSpatialAudio/ %{_qt6_includedir}/QtFFmpegMediaPluginImpl/ %{_qt6_libdir}/libQt6Multimedia.so %{_qt6_libdir}/libQt6MultimediaQuick.so %{_qt6_libdir}/libQt6MultimediaWidgets.so %{_qt6_libdir}/libQt6SpatialAudio.so %{_qt6_libdir}/lib*.a %{_qt6_libdir}/lib*.prl %{_libdir}/cmake/Qt6Multimedia*/ %{_libdir}/cmake/Qt6SpatialAudio*/ %{_libdir}/cmake/Qt6BundledResonanceAudio/ %{_libdir}/cmake/Qt6FFmpegMediaPluginImplPrivate/ %{_libdir}/cmake/Qt6Qml/QmlPlugins/Qt6quickmultimedia* %{_libdir}/cmake/Qt6/FindFFmpeg.cmake %{_libdir}/cmake/Qt6/FindGObject.cmake %{_libdir}/cmake/Qt6/FindGStreamer.cmake %{_libdir}/cmake/Qt6/FindMMRenderer.cmake %{_libdir}/cmake/Qt6/FindMMRendererCore.cmake %{_libdir}/cmake/Qt6/FindPipeWire.cmake %{_libdir}/cmake/Qt6/FindVAAPI.cmake %{_libdir}/cmake/Qt6/FindWrapBundledResonanceAudioConfigExtra.cmake %{_libdir}/cmake/Qt6/FindWrapPulseAudio.cmake %{_libdir}/cmake/Qt6BuildInternals/StandaloneTests/QtMultimediaTestsConfig.cmake %{_libdir}/pkgconfig/Qt6Multimedia*.pc %{_libdir}/pkgconfig/Qt6SpatialAudio*.pc %{_qt6_mkspecsdir}/modules/qt_lib_multimedia*.pri %{_qt6_mkspecsdir}/modules/qt_lib_spatialaudio*.pri %{_qt6_mkspecsdir}/modules/qt_lib_ffmpegmediapluginimpl_private.pri %{_qt6_mkspecsdir}/features/ios/add_ios_ffmpeg_libraries.prf %changelog * Sun Aug 30 2026 Smech - 6.10.3-7 - R6 fixed the bad QML path but two more genuinely-installed metatypes JSON files (qt6ffmpegmediapluginimplprivate, qt6spatialaudio) were still unclaimed -- missed in the earlier full-list pass. Added both. * Sun Aug 30 2026 Smech - 6.10.3-6 - R5 failed with "Directory not found: .../qt6/qml/QtQuick/Multimedia" -- a wrong guessed QML path that doesn't actually exist in this module's real install layout, only the already-correctly-claimed QtMultimedia/ QML dir does. Removed the bad line. * Sun Aug 30 2026 Smech - 6.10.3-5 - R4 compiled and installed cleanly but RPM's %%files verification found ~300 genuinely-installed-but-unclaimed files: the QtMultimediaWidgets and QtSpatialAudio submodules build and install by default (never explicitly disabled), plus each module's private FFmpeg-plugin headers/cmake-private-config, static .a/.prl files, qt6 metatypes/modules/sbom manifests, and several Qt6-shared Find*.cmake modules this module drops into the common Qt6 cmake dir. Rewrote %%files/%%files devel from the real full install list (grep-derived, not guessed) rather than disabling the extra submodules, since they're free by-products of the same build. * Sun Aug 30 2026 Smech - 6.10.3-4 - R3 compiled cleanly but failed RPM's own %%files verification: libQt6MultimediaQuickPrivate.so.* was claimed but never actually installed (this module has no private-headers Quick library, only the plain libQt6MultimediaQuick.so.*, which was already correctly claimed). Removed the wrong line. * Sun Aug 30 2026 Smech - 6.10.3-3 - R2 fixed XShm.h but hit a second missing X11 header in the same file: X11/extensions/Xrandr.h. Read the real source (qx11surfacecapture.cpp) directly this time to enumerate every X11 include across the whole ffmpeg plugin directory rather than fixing one header per round -- confirmed exactly four headers used (Xlib.h, XShm.h, Xutil.h, Xrandr.h) across the two files that reference X11 at all. Added libX11-devel explicitly too (was resolving transitively before, made it a direct BuildRequires for clarity) and libXrandr-devel. * Sun Aug 30 2026 Smech - 6.10.3-2 - R1 failed compiling the ffmpeg X11 screen-capture plugin (qx11surfacecapture.cpp): "X11/extensions/XShm.h: No such file or directory" -- a real missing header from the X11 shared-memory extension, needed for the legacy X11 (non-Wayland) capture fallback path in the FFmpeg multimedia backend. Added libXext-devel. The various "Could NOT find GLIB2/git/WrapPulseAudio/MMRenderer" notices earlier in the log are all genuinely non-fatal soft optional finds (no REQUIRED, feature-summary notices only), not the real blocker. * Sun Aug 30 2026 Smech - 6.10.3-1 - Real upstream source (Qt's official release matching the exact qt6-qtbase version already on this distro, 6.10.3 -- same version- matching discipline established during the qtwayland investigation earlier this chain). Sixth package in the Wayland stack being built to unblock Spectacle, specifically for KF6Prison's PrisonScanner requirement. Steered toward the FFmpeg+PipeWire backend combo via explicit -DFEATURE_ffmpeg=ON -DFEATURE_pipewire=ON since both real dependencies are already built in this repo, avoiding the need to also wire up GStreamer's Qt Multimedia plugin glue. %%files is a first-pass estimate based on standard Qt6 module install conventions (matching the real paths already confirmed for Qt6WaylandClient/qtwaylandscanner during the earlier investigation); not yet verified against a real build log for this specific module -- expect a real-error correction round given the scale of this build.