diff options
| author | BaldEagleOS Migration <dev@baldeagleos.com> | 2026-06-03 00:35:52 -0500 |
|---|---|---|
| committer | BaldEagleOS Migration <dev@baldeagleos.com> | 2026-06-03 00:35:52 -0500 |
| commit | 51bf2274747e1d7dc41c145ccf95055c1b9d763b (patch) | |
| tree | 75f735ef9bc72d418e5107c31375259fa6ebe152 /dev-qt | |
| parent | fa2a9ceb34861c64aee4400a4686233134d8e652 (diff) | |
| download | baldeagleos-repo-51bf2274747e1d7dc41c145ccf95055c1b9d763b.tar.gz baldeagleos-repo-51bf2274747e1d7dc41c145ccf95055c1b9d763b.tar.xz baldeagleos-repo-51bf2274747e1d7dc41c145ccf95055c1b9d763b.zip | |
Adding metadata
Diffstat (limited to 'dev-qt')
32 files changed, 1670 insertions, 0 deletions
diff --git a/dev-qt/qt3d/qt3d-6.12.9999.ebuild b/dev-qt/qt3d/qt3d-6.12.9999.ebuild new file mode 100644 index 000000000000..5957907bde31 --- /dev/null +++ b/dev-qt/qt3d/qt3d-6.12.9999.ebuild @@ -0,0 +1,40 @@ +# Copyright 2021-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit qt6-build + +DESCRIPTION="3D rendering module for the Qt6 framework" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~loong ~riscv ~x86" +elif [[ ${QT6_BUILD_TYPE} == live ]]; then + EGIT_SUBMODULES=() # skip qtquick3d-assimp +fi + +IUSE="gles2-only qml vulkan" + +RDEPEND=" + ~dev-qt/qtbase-${PV}:6[concurrent,gles2-only=,gui,network,opengl,vulkan=] + ~dev-qt/qtshadertools-${PV}:6 + media-libs/assimp:= + qml? ( ~dev-qt/qtdeclarative-${PV}:6 ) +" +DEPEND=" + ${RDEPEND} + vulkan? ( dev-util/vulkan-headers ) +" + +PATCHES=( + "${FILESDIR}"/${PN}-6.9.2-assimp6.patch +) + +src_configure() { + local mycmakeargs=( + $(cmake_use_find_package qml Qt6Qml) + -DQT_FEATURE_qt3d_system_assimp=ON + ) + + qt6-build_src_configure +} diff --git a/dev-qt/qt5compat/qt5compat-6.12.9999.ebuild b/dev-qt/qt5compat/qt5compat-6.12.9999.ebuild new file mode 100644 index 000000000000..736fef3686c5 --- /dev/null +++ b/dev-qt/qt5compat/qt5compat-6.12.9999.ebuild @@ -0,0 +1,38 @@ +# Copyright 2023-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit qt6-build + +DESCRIPTION="Qt module containing the unsupported Qt 5 APIs" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~x86" +fi + +IUSE="+gui icu qml" + +RDEPEND=" + ~dev-qt/qtbase-${PV}:6[gui=,icu=,network,xml] + icu? ( dev-libs/icu:= ) + !icu? ( virtual/libiconv ) + qml? ( + ~dev-qt/qtdeclarative-${PV}:6 + ~dev-qt/qtshadertools-${PV}:6 + ) +" +DEPEND="${RDEPEND}" + +src_configure() { + local mycmakeargs=( + $(cmake_use_find_package qml Qt6Quick) + ) + + qt6-build_src_configure +} + +src_test() { + # tst_qxmlinputsource sometimes hang without -j1 + qt6-build_src_test -j1 +} diff --git a/dev-qt/qtcharts/qtcharts-6.12.9999.ebuild b/dev-qt/qtcharts/qtcharts-6.12.9999.ebuild new file mode 100644 index 000000000000..6c11cea736a2 --- /dev/null +++ b/dev-qt/qtcharts/qtcharts-6.12.9999.ebuild @@ -0,0 +1,28 @@ +# Copyright 2021-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit qt6-build + +DESCRIPTION="Chart component library for the Qt6 framework" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86" +fi + +IUSE="gles2-only qml" + +RDEPEND=" + ~dev-qt/qtbase-${PV}:6[gles2-only=,gui,opengl,widgets] + qml? ( ~dev-qt/qtdeclarative-${PV}:6[opengl] ) +" +DEPEND="${RDEPEND}" + +src_configure() { + local mycmakeargs=( + $(cmake_use_find_package qml Qt6Qml) + ) + + qt6-build_src_configure +} diff --git a/dev-qt/qtconnectivity/qtconnectivity-6.12.9999.ebuild b/dev-qt/qtconnectivity/qtconnectivity-6.12.9999.ebuild new file mode 100644 index 000000000000..79709c841225 --- /dev/null +++ b/dev-qt/qtconnectivity/qtconnectivity-6.12.9999.ebuild @@ -0,0 +1,87 @@ +# Copyright 2023-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit qt6-build + +DESCRIPTION="Bluetooth and NFC support library for the Qt6 framework" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86" +fi + +IUSE="+bluetooth neard nfc smartcard" +REQUIRED_USE=" + || ( bluetooth nfc ) + nfc? ( ?? ( neard smartcard ) ) +" + +DEPEND=" + ~dev-qt/qtbase-${PV}:6 + bluetooth? ( + ~dev-qt/qtbase-${PV}:6[dbus,network] + net-wireless/bluez:= + ) + nfc? ( + neard? ( ~dev-qt/qtbase-${PV}:6[dbus] ) + smartcard? ( sys-apps/pcsc-lite ) + ) +" +RDEPEND=" + ${DEPEND} + nfc? ( + neard? ( net-wireless/neard ) + ) +" + +CMAKE_SKIP_TESTS=( + # most hardware tests are auto-skipped, but some still misbehave + # if bluez/hardware is available (generally tests here may not be + # very relevant without hardware, lists may need to be extended) + tst_qbluetoothdevicediscoveryagent #936485 + tst_qbluetoothlocaldevice + tst_qbluetoothserver + tst_qbluetoothservicediscoveryagent + tst_qbluetoothserviceinfo + tst_qlowenergycharacteristic #976294 + tst_qlowenergycontroller + tst_qlowenergydescriptor #976294 +) + +src_prepare() { + qt6-build_src_prepare + + use bluetooth || + cmake_comment_add_subdirectory -f src/CMakeLists.txt bluetooth + use nfc || + cmake_comment_add_subdirectory -f src/CMakeLists.txt nfc +} + +src_configure() { + local mycmakeargs=( + $(usev nfc " + $(qt_feature neard) + $(qt_feature smartcard pcsclite) + ") + ) + + qt6-build_src_configure +} + +src_install() { + qt6-build_src_install + + # broken (unnecessary) symlink due to add_app() being used over add_tool() + use !bluetooth || rm -- "${ED}"/usr/bin/sdpscanner6 || die + + if use test; then + local delete=( # sigh + "${D}${QT6_BINDIR}"/bluetoothtestdevice + "${D}${QT6_BINDIR}"/bttestui + "${D}${QT6_BINDIR}"/qlecontroller-server + ) + # using -f given not tracking which tests may be skipped or not + rm -f -- "${delete[@]}" || die + fi +} diff --git a/dev-qt/qtdeclarative/qtdeclarative-6.12.9999.ebuild b/dev-qt/qtdeclarative/qtdeclarative-6.12.9999.ebuild new file mode 100644 index 000000000000..40fff605ebe2 --- /dev/null +++ b/dev-qt/qtdeclarative/qtdeclarative-6.12.9999.ebuild @@ -0,0 +1,60 @@ +# Copyright 2021-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{11..14} ) +QT6_HAS_STATIC_LIBS=1 +# behaves very badly when qtdeclarative is not already installed, also +# other more minor issues (installs junk, sandbox/offscreen issues) +QT6_RESTRICT_TESTS=1 +inherit python-any-r1 qt6-build + +DESCRIPTION="Qt Declarative (Quick 2)" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~x86" +fi + +IUSE="accessibility +jit +network opengl qmlls +sql +ssl svg vulkan +widgets" + +RDEPEND=" + ~dev-qt/qtbase-${PV}:6[accessibility=,gui,network=,opengl=,sql?,ssl?,vulkan=,widgets=] + qmlls? ( ~dev-qt/qtlanguageserver-${PV}:6 ) + svg? ( ~dev-qt/qtsvg-${PV}:6 ) +" +DEPEND=" + ${RDEPEND} + vulkan? ( dev-util/vulkan-headers ) +" +BDEPEND=" + ${PYTHON_DEPS} + ~dev-qt/qtshadertools-${PV}:6 +" + +src_configure() { + local mycmakeargs=( + $(cmake_use_find_package qmlls Qt6LanguageServerPrivate) + $(cmake_use_find_package sql Qt6Sql) + $(cmake_use_find_package svg Qt6Svg) + $(qt_feature jit qml_jit) + $(qt_feature network qml_network) + $(qt_feature ssl qml_ssl) + ) + + qt6-build_src_configure +} + +src_install() { + qt6-build_src_install + + if [[ ! -e ${D}${QT6_LIBDIR}/libQt6QuickControls2.so.6 ]]; then #940675 + eerror "${CATEGORY}/${PF} seems to have been improperly built and" + eerror "install was aborted to protect the system. Possibly(?) due" + eerror "to a rare portage ordering bug. If using portage, try:" + eerror " emerge -1 qtshadertools:6 qtdeclarative:6" + eerror "If that did not resolve the issue, please provide build.log" + eerror "on https://bugs.gentoo.org/940675" + die "aborting due to incomplete/broken build (see above)" + fi +} diff --git a/dev-qt/qtgraphs/qtgraphs-6.12.9999.ebuild b/dev-qt/qtgraphs/qtgraphs-6.12.9999.ebuild new file mode 100644 index 000000000000..0e4bee639f08 --- /dev/null +++ b/dev-qt/qtgraphs/qtgraphs-6.12.9999.ebuild @@ -0,0 +1,39 @@ +# Copyright 2025-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit qt6-build + +DESCRIPTION="Graphs component library for the Qt6 framework" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64" +fi + +IUSE="quick3d" + +# note: widgets is only used with quick3d and is technically optional, +# but the top level CMakeLists.txt requires through assertTargets() +RDEPEND=" + ~dev-qt/qtbase-${PV}:6[gui,widgets] + ~dev-qt/qtdeclarative-${PV}:6 + quick3d? ( ~dev-qt/qtquick3d-${PV}:6 ) +" +DEPEND="${RDEPEND}" + +CMAKE_SKIP_TESTS=( + # hangs+timeout with offscreen rendering + tst_qgqmltest +) + +src_configure() { + local mycmakeargs=( + # simpler than keeping track of and disabling every graphs-3d* features + $(cmake_use_find_package quick3d Qt6Quick3D) + # not packaged yet, and Qt disables it by default for now + -DQT_FEATURE_graphs_2d_high_performance_backend=OFF + ) + + qt6-build_src_configure +} diff --git a/dev-qt/qtgraphs/qtgraphs-6.9999.ebuild b/dev-qt/qtgraphs/qtgraphs-6.9999.ebuild index fdbbbaeabfab..0e4bee639f08 100644 --- a/dev-qt/qtgraphs/qtgraphs-6.9999.ebuild +++ b/dev-qt/qtgraphs/qtgraphs-6.9999.ebuild @@ -31,6 +31,8 @@ src_configure() { local mycmakeargs=( # simpler than keeping track of and disabling every graphs-3d* features $(cmake_use_find_package quick3d Qt6Quick3D) + # not packaged yet, and Qt disables it by default for now + -DQT_FEATURE_graphs_2d_high_performance_backend=OFF ) qt6-build_src_configure diff --git a/dev-qt/qthttpserver/qthttpserver-6.12.9999.ebuild b/dev-qt/qthttpserver/qthttpserver-6.12.9999.ebuild new file mode 100644 index 000000000000..65c441229f45 --- /dev/null +++ b/dev-qt/qthttpserver/qthttpserver-6.12.9999.ebuild @@ -0,0 +1,31 @@ +# Copyright 2023-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit qt6-build + +DESCRIPTION="HTTP server functionality for the Qt6 framework" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~x86" +fi + +IUSE="+ssl websockets" + +RDEPEND=" + ~dev-qt/qtbase-${PV}:6[network,ssl=] + websockets? ( ~dev-qt/qtwebsockets-${PV}:6 ) +" +DEPEND=" + ${RDEPEND} + test? ( ~dev-qt/qtbase-${PV}:6[concurrent] ) +" + +src_configure() { + local mycmakeargs=( + $(cmake_use_find_package websockets Qt6WebSockets) + ) + + qt6-build_src_configure +} diff --git a/dev-qt/qtimageformats/qtimageformats-6.12.9999.ebuild b/dev-qt/qtimageformats/qtimageformats-6.12.9999.ebuild new file mode 100644 index 000000000000..ba45fab241a7 --- /dev/null +++ b/dev-qt/qtimageformats/qtimageformats-6.12.9999.ebuild @@ -0,0 +1,39 @@ +# Copyright 2021-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit qt6-build + +DESCRIPTION="Additional format plugins for the Qt image I/O system" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc64 ~riscv ~x86" +fi + +IUSE="mng" + +RDEPEND=" + ~dev-qt/qtbase-${PV}:6[gui] + media-libs/libwebp:= + media-libs/tiff:= + mng? ( media-libs/libmng:= ) +" +DEPEND="${RDEPEND}" + +CMAKE_SKIP_TESTS=( + # heif plugin is only for Mac, test is normally auto-skipped but may + # misbehave with kde-frameworks/kimageformats:6[heif] (bug #927971) + tst_qheif +) + +src_configure() { + local mycmakeargs=( + -DQT_FEATURE_jasper=OFF + $(qt_feature mng) + -DQT_FEATURE_tiff=ON + -DQT_FEATURE_webp=ON + ) + + qt6-build_src_configure +} diff --git a/dev-qt/qtlanguageserver/qtlanguageserver-6.12.9999.ebuild b/dev-qt/qtlanguageserver/qtlanguageserver-6.12.9999.ebuild new file mode 100644 index 000000000000..4093345ff100 --- /dev/null +++ b/dev-qt/qtlanguageserver/qtlanguageserver-6.12.9999.ebuild @@ -0,0 +1,16 @@ +# Copyright 2024-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +QT6_HAS_STATIC_LIBS=1 +inherit qt6-build + +DESCRIPTION="Implementation of the Language Server Protocol for Qt" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm64" +fi + +RDEPEND="~dev-qt/qtbase-${PV}:6" +DEPEND="${RDEPEND}" diff --git a/dev-qt/qtlocation/qtlocation-6.12.9999.ebuild b/dev-qt/qtlocation/qtlocation-6.12.9999.ebuild new file mode 100644 index 000000000000..f45e5eba626b --- /dev/null +++ b/dev-qt/qtlocation/qtlocation-6.12.9999.ebuild @@ -0,0 +1,44 @@ +# Copyright 2021-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit qt6-build + +DESCRIPTION="Location (places, maps, navigation) library for the Qt6 framework" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86" +fi + +RDEPEND=" + ~dev-qt/qtbase-${PV}:6[network] + ~dev-qt/qtdeclarative-${PV}:6 + ~dev-qt/qtpositioning-${PV}:6[qml] +" +DEPEND="${RDEPEND}" + +CMAKE_SKIP_TESTS=( + # ignores QML_IMPORT_PATH (unlike other tests) and looks in + # the missing builddir/qml, skip rather than work around + tst_declarative_ui +) + +src_install() { + qt6-build_src_install + + if use test; then + local delete=( # sigh + "${D}${QT6_LIBDIR}"/cmake/Qt6Location/*TestGeoServicePlugin*.cmake + "${D}${QT6_LIBDIR}"/cmake/Qt6Location/*UnsupportedPlacesGeoServicePlugin*.cmake + "${D}${QT6_LIBDIR}"/cmake/Qt6Qml/QmlPlugins/*declarative_location_test*.cmake + "${D}${QT6_PLUGINDIR}"/geoservices/libqtgeoservices_geocodingplugin.so + "${D}${QT6_PLUGINDIR}"/geoservices/libqtgeoservices_placesplugin_unsupported.so + "${D}${QT6_PLUGINDIR}"/geoservices/libqtgeoservices_qmltestplugin.so + "${D}${QT6_PLUGINDIR}"/geoservices/libqtgeoservices_routingplugin.so + "${D}${QT6_QMLDIR}"/QtLocation/Test + ) + # using -f given not tracking which tests may be skipped or not + rm -rf -- "${delete[@]}" || die + fi +} diff --git a/dev-qt/qtmultimedia/qtmultimedia-6.12.9999.ebuild b/dev-qt/qtmultimedia/qtmultimedia-6.12.9999.ebuild new file mode 100644 index 000000000000..336794d60433 --- /dev/null +++ b/dev-qt/qtmultimedia/qtmultimedia-6.12.9999.ebuild @@ -0,0 +1,154 @@ +# Copyright 2021-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +QT6_HAS_STATIC_LIBS=1 +inherit flag-o-matic qt6-build + +DESCRIPTION="Multimedia (audio, video, radio, camera) library for the Qt6 framework" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc64 ~riscv ~x86" +fi + +IUSE=" + +X alsa +dbus eglfs +ffmpeg gstreamer opengl pipewire pulseaudio + qml +v4l vaapi vulkan wayland +" +REQUIRED_USE=" + || ( ffmpeg gstreamer ) + eglfs? ( ffmpeg opengl qml ) + vaapi? ( ffmpeg opengl ) +" + +# dlopen/dbus: pipewire +RDEPEND=" + ~dev-qt/qtbase-${PV}:6[concurrent,gui,network,opengl=,vulkan=,widgets] + alsa? ( + !pulseaudio? ( media-libs/alsa-lib ) + ) + ffmpeg? ( + ~dev-qt/qtbase-${PV}:6[X=,concurrent,eglfs=] + media-video/ffmpeg:=[vaapi?] + X? ( + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXrandr + ) + ) + gstreamer? ( + dev-libs/glib:2 + media-libs/gst-plugins-bad:1.0 + media-libs/gst-plugins-base:1.0 + media-libs/gstreamer:1.0 + opengl? ( + ~dev-qt/qtbase-${PV}:6[X?,wayland?] + media-libs/gst-plugins-base:1.0[X?,egl,opengl,wayland?] + ) + ) + opengl? ( media-libs/libglvnd ) + pipewire? ( + ~dev-qt/qtbase-${PV}:6[dbus?] + media-video/pipewire:= + ) + pulseaudio? ( media-libs/libpulse ) + qml? ( + ~dev-qt/qtdeclarative-${PV}:6 + ~dev-qt/qtquick3d-${PV}:6 + ) + vaapi? ( media-libs/libva:= ) +" +DEPEND=" + ${RDEPEND} + X? ( x11-base/xorg-proto ) + v4l? ( sys-kernel/linux-headers ) + vulkan? ( dev-util/vulkan-headers ) +" +BDEPEND="~dev-qt/qtshadertools-${PV}:6" + +CMAKE_SKIP_TESTS=( + # unimportant and expects all backends to be available (bug #928420) + tst_backends + # tries to use real alsa or pulseaudio and fails in sandbox + tst_qaudiosink + tst_qaudiosource + tst_qmediacapture_gstreamer + tst_qmediacapturesession + tst_qmediaframeinputsbackend + tst_qmediaplayer_gstreamer + tst_qmediaplayerbackend + tst_qsoundeffect + # may try to use v4l2 or hardware acceleration depending on availability + tst_qcamerabackend #972689 + tst_qmediarecorderbackend + tst_qscreencapture_integration + tst_qscreencapturebackend + tst_qvideoframebackend + # seems flaky depending on what codecs system libraries support or not + tst_qmediaformatbackend + # fails with offscreen rendering + tst_qvideoframecolormanagement + tst_qwindowcapturebackend +) + +src_prepare() { + qt6-build_src_prepare + + # test expects GStreamer to report an exact bitrate value, but + # this varies depending on version and Qt updates it only now + # and then (disabling permanently with a sed to avoid rebases) + sed -e '/bool validateBitRates = GST_CHECK_VERSION/s/= .*/= false;/' \ + -i tests/auto/unit/plugins/multimedia/gstreamer/gstreamer_backend/tst_gstreamer_backend.cpp || die +} + +src_configure() { + # normally passed by the build system, but needed for 32-on-64 chroots + use x86 && append-cppflags -DDISABLE_SIMD -DPFFFT_SIMD_DISABLE + + local mycmakeargs=( + $(cmake_use_find_package qml Qt6Qml) + $(qt_feature ffmpeg) + $(qt_feature gstreamer) + $(usev gstreamer " + $(qt_feature opengl gstreamer_gl) + $(usev opengl " + $(qt_feature X gstreamer_gl_x11) + $(qt_feature wayland gstreamer_gl_wayland) + ") + ") + $(qt_feature pipewire) + $(usev pipewire $(qt_feature dbus pipewire_screencapture)) + $(qt_feature pulseaudio) + $(qt_feature v4l linux_v4l) + $(qt_feature vaapi) + ) + + # ALSA backend is experimental off-by-default and can take priority + # causing problems (bug #935146), disable if USE=pulseaudio is set + # (also do not want unnecessary usage of ALSA plugins -> pulse) + if use alsa && use pulseaudio; then + # einfo should be enough given pure-ALSA users tend to disable pulse + einfo "Warning: USE=alsa is ignored when USE=pulseaudio is set" + mycmakeargs+=( -DQT_FEATURE_alsa=OFF ) + else + mycmakeargs+=( $(qt_feature alsa) ) + fi + + qt6-build_src_configure +} + +src_install() { + qt6-build_src_install + + if use test; then + local delete=( # sigh + "${D}${QT6_LIBDIR}"/cmake/Qt6Multimedia/Qt6MockMultimediaPlugin*.cmake + "${D}${QT6_MKSPECSDIR}"/modules/qt_plugin_mockmultimediaplugin.pri + "${D}${QT6_PLUGINDIR}"/multimedia/libmockmultimediaplugin.* + "${D}${QT6_PLUGINDIR}"/multimedia/objects-* + ) + # using -f given not tracking which tests may be skipped or not + rm -rf -- "${delete[@]}" || die + fi +} diff --git a/dev-qt/qtnetworkauth/qtnetworkauth-6.12.9999.ebuild b/dev-qt/qtnetworkauth/qtnetworkauth-6.12.9999.ebuild new file mode 100644 index 000000000000..da29b54ab212 --- /dev/null +++ b/dev-qt/qtnetworkauth/qtnetworkauth-6.12.9999.ebuild @@ -0,0 +1,15 @@ +# Copyright 2021-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit qt6-build + +DESCRIPTION="Network authorization library for the Qt6 framework" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv ~x86" +fi + +RDEPEND="~dev-qt/qtbase-${PV}:6[gui,network]" +DEPEND="${RDEPEND}" diff --git a/dev-qt/qtpositioning/qtpositioning-6.12.9999.ebuild b/dev-qt/qtpositioning/qtpositioning-6.12.9999.ebuild new file mode 100644 index 000000000000..71a62d763abe --- /dev/null +++ b/dev-qt/qtpositioning/qtpositioning-6.12.9999.ebuild @@ -0,0 +1,68 @@ +# Copyright 2021-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit qt6-build + +DESCRIPTION="Physical position determination library for the Qt6 framework" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~x86" +fi + +IUSE="geoclue nmea +qml" + +DEPEND=" + ~dev-qt/qtbase-${PV}:6 + geoclue? ( ~dev-qt/qtbase-${PV}:6[dbus] ) + nmea? ( + ~dev-qt/qtbase-${PV}:6[network] + ~dev-qt/qtserialport-${PV}:6 + ) + qml? ( ~dev-qt/qtdeclarative-${PV}:6 ) +" +RDEPEND=" + ${DEPEND} + geoclue? ( app-misc/geoclue:2.0 ) +" + +CMAKE_SKIP_TESTS=( + # threads test (rarely) fails randomly + tst_qgeoareamonitor +) + +src_prepare() { + qt6-build_src_prepare + + # unfortunately cmake_use_find_package would break things with qtbase + use geoclue || + sed -e 's/TARGET Qt::DBus/FALSE/' \ + -i src/plugins/position/CMakeLists.txt || die + use nmea || + sed -e 's/TARGET Qt::Network/FALSE/' \ + -i src/plugins/position/CMakeLists.txt || die +} + +src_configure() { + local mycmakeargs=( + $(cmake_use_find_package qml Qt6Qml) + ) + + qt6-build_src_configure +} + +src_install() { + qt6-build_src_install + + if use test; then + local delete=( # sigh + "${D}${QT6_LIBDIR}"/cmake/Qt6Positioning/*DummyPlugin*.cmake + "${D}${QT6_LIBDIR}"/cmake/Qt6Positioning/*TestPlugin*.cmake + "${D}${QT6_PLUGINDIR}"/position/libqtposition_satellitesourcetest.so + "${D}${QT6_PLUGINDIR}"/position/libqtposition_testplugin{,2}.so + ) + # using -f given not tracking which tests may be skipped or not + rm -f -- "${delete[@]}" || die + fi +} diff --git a/dev-qt/qtquick3d/qtquick3d-6.12.9999.ebuild b/dev-qt/qtquick3d/qtquick3d-6.12.9999.ebuild new file mode 100644 index 000000000000..807e67c73999 --- /dev/null +++ b/dev-qt/qtquick3d/qtquick3d-6.12.9999.ebuild @@ -0,0 +1,56 @@ +# Copyright 2021-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +QT6_HAS_STATIC_LIBS=1 +inherit qt6-build + +DESCRIPTION="Qt module and API for defining 3D content in Qt QuickTools" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86" +elif [[ ${QT6_BUILD_TYPE} == live ]]; then + EGIT_SUBMODULES=() # skip qtquick3d-assimp +fi + +IUSE="opengl vulkan" + +RDEPEND=" + ~dev-qt/qtbase-${PV}:6[concurrent,gui,opengl=,vulkan=,widgets] + ~dev-qt/qtdeclarative-${PV}:6 + ~dev-qt/qtquicktimeline-${PV}:6 + ~dev-qt/qtshadertools-${PV}:6 + media-libs/assimp:= + virtual/zlib:= +" +DEPEND=" + ${RDEPEND} + test? ( ~dev-qt/qtbase-${PV}:6[network] ) + vulkan? ( dev-util/vulkan-headers ) +" +BDEPEND=" + ~dev-qt/qtshadertools-${PV}:6 +" + +CMAKE_SKIP_TESTS=( + # needs off-by-default assimp[collada] that is masked on some profiles, + # not worth the extra trouble + tst_qquick3dassetimport +) + +PATCHES=( + "${FILESDIR}"/${PN}-6.6.2-gcc14.patch + "${FILESDIR}"/${PN}-6.6.2-x32abi.patch +) + +src_configure() { + local mycmakeargs=( + # TODO: if someone wants it, openxr should likely have its own + # USE and be packaged rather than use the bundled copy (if use + # bundled, note need to setup python-any-r1) + -DQT_FEATURE_quick3dxr_openxr=OFF + ) + + qt6-build_src_configure +} diff --git a/dev-qt/qtquicktimeline/qtquicktimeline-6.12.9999.ebuild b/dev-qt/qtquicktimeline/qtquicktimeline-6.12.9999.ebuild new file mode 100644 index 000000000000..b8b579b8cc27 --- /dev/null +++ b/dev-qt/qtquicktimeline/qtquicktimeline-6.12.9999.ebuild @@ -0,0 +1,18 @@ +# Copyright 2021-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit qt6-build + +DESCRIPTION="Qt module for keyframe-based timeline construction" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86" +fi + +RDEPEND=" + ~dev-qt/qtbase-${PV}:6 + ~dev-qt/qtdeclarative-${PV}:6 +" +DEPEND="${RDEPEND}" diff --git a/dev-qt/qtremoteobjects/qtremoteobjects-6.12.9999.ebuild b/dev-qt/qtremoteobjects/qtremoteobjects-6.12.9999.ebuild new file mode 100644 index 000000000000..5b4b8faade32 --- /dev/null +++ b/dev-qt/qtremoteobjects/qtremoteobjects-6.12.9999.ebuild @@ -0,0 +1,54 @@ +# Copyright 2024-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit qt6-build + +DESCRIPTION="Inter-Process Communication (IPC) library for the Qt6 framework" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~loong" +fi + +IUSE="qml" + +RDEPEND=" + ~dev-qt/qtbase-${PV}:6[network] + qml? ( + ~dev-qt/qtbase-${PV}:6[gui] + ~dev-qt/qtdeclarative-${PV}:6 + ) +" +DEPEND=" + ${RDEPEND} + test? ( ~dev-qt/qtbase-${PV}:6[gui] ) +" + +src_configure() { + # same issue as bug #913692 when tests are enabled + has_version "=dev-qt/qtdeclarative-$(ver_cut 1-3)*:6" && + local mycmakeargs=( $(cmake_use_find_package qml Qt6Qml) ) + + qt6-build_src_configure +} + +src_test() { + local CMAKE_SKIP_TESTS=( + # rarely fails randomly even with -j1, not looked further into + tst_modelview + ) + + # tests re-use 127.0.0.1:65213 and randomly fail if ran at same time + qt6-build_src_test -j1 +} + +src_install() { + qt6-build_src_install + + if use test; then + # installs 30+ test binaries like "qt6/bin/state" and, given + # otherwise empty, "can" delete the directory rather than list + rm -r -- "${D}${QT6_BINDIR}" || die + fi +} diff --git a/dev-qt/qtscxml/qtscxml-6.12.9999.ebuild b/dev-qt/qtscxml/qtscxml-6.12.9999.ebuild new file mode 100644 index 000000000000..1fddc362dc3f --- /dev/null +++ b/dev-qt/qtscxml/qtscxml-6.12.9999.ebuild @@ -0,0 +1,34 @@ +# Copyright 2021-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit qt6-build + +DESCRIPTION="State Chart XML (SCXML) support library for the Qt6 framework" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86" +fi + +IUSE="qml" + +RDEPEND=" + ~dev-qt/qtbase-${PV}:6[gui] + qml? ( ~dev-qt/qtdeclarative-${PV}:6 ) +" +DEPEND="${RDEPEND}" + +CMAKE_SKIP_TESTS=( + # may fail with pid-sandbox, or at least musl/hardened+gcc (exact + # conditions unknown but passes without pid, considering this flaky) + tst_qstatemachine +) + +src_configure() { + local mycmakeargs=( + $(cmake_use_find_package qml Qt6Qml) + ) + + qt6-build_src_configure +} diff --git a/dev-qt/qtsensors/qtsensors-6.12.9999.ebuild b/dev-qt/qtsensors/qtsensors-6.12.9999.ebuild new file mode 100644 index 000000000000..d9ed04c361e1 --- /dev/null +++ b/dev-qt/qtsensors/qtsensors-6.12.9999.ebuild @@ -0,0 +1,28 @@ +# Copyright 2023-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit qt6-build + +DESCRIPTION="Hardware sensor access library for the Qt6 framework" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~x86" +fi + +IUSE="qml" + +RDEPEND=" + ~dev-qt/qtbase-${PV}:6[dbus] + qml? ( ~dev-qt/qtdeclarative-${PV}:6 ) +" +DEPEND="${RDEPEND}" + +src_configure() { + local mycmakeargs=( + $(cmake_use_find_package qml Qt6Qml) + ) + + qt6-build_src_configure +} diff --git a/dev-qt/qtserialbus/qtserialbus-6.12.9999.ebuild b/dev-qt/qtserialbus/qtserialbus-6.12.9999.ebuild new file mode 100644 index 000000000000..116247f3bb0b --- /dev/null +++ b/dev-qt/qtserialbus/qtserialbus-6.12.9999.ebuild @@ -0,0 +1,38 @@ +# Copyright 2024-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit qt6-build + +DESCRIPTION="Qt module to access CAN, ModBus, and other industrial serial buses and protocols" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~x86" +fi + +RDEPEND=" + ~dev-qt/qtbase-${PV}:6[network] + ~dev-qt/qtserialport-${PV}:6 +" +DEPEND="${RDEPEND}" + +CMAKE_SKIP_TESTS=( + # rarely fails randomly (perhaps related to -j) + tst_qcandbcfileparser +) + +src_install() { + qt6-build_src_install + + if use test; then + local delete=( # sigh + "${D}${QT6_LIBDIR}"/cmake/Qt6SerialBus/*TestCanBusPlugin*.cmake + "${D}${QT6_MKSPECSDIR}"/modules/qt_plugin_qttestcanbus.pri + "${D}${QT6_PLUGINDIR}"/canbus/libqttestcanbus.* + "${D}${QT6_PLUGINDIR}"/canbus/objects-*/ + ) + # using -f given not tracking which tests may be skipped or not + rm -rf -- "${delete[@]}" || die + fi +} diff --git a/dev-qt/qtserialport/qtserialport-6.12.9999.ebuild b/dev-qt/qtserialport/qtserialport-6.12.9999.ebuild new file mode 100644 index 000000000000..cfac09635f1a --- /dev/null +++ b/dev-qt/qtserialport/qtserialport-6.12.9999.ebuild @@ -0,0 +1,18 @@ +# Copyright 2021-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit qt6-build + +DESCRIPTION="Serial port abstraction library for the Qt6 framework" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~x86" +fi + +RDEPEND=" + ~dev-qt/qtbase-${PV}:6 + virtual/libudev:= +" +DEPEND="${RDEPEND}" diff --git a/dev-qt/qtshadertools/qtshadertools-6.12.9999.ebuild b/dev-qt/qtshadertools/qtshadertools-6.12.9999.ebuild new file mode 100644 index 000000000000..22459523d23e --- /dev/null +++ b/dev-qt/qtshadertools/qtshadertools-6.12.9999.ebuild @@ -0,0 +1,24 @@ +# Copyright 2021-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit flag-o-matic qt6-build + +DESCRIPTION="Qt APIs and Tools for Graphics Pipelines" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~x86" +fi + +RDEPEND=" + ~dev-qt/qtbase-${PV}:6[gui] +" +DEPEND="${RDEPEND}" + +src_configure() { + # -Werror=odr violations between mismatching spirv.hpp (bug #972694) + filter-lto + + qt6-build_src_configure +} diff --git a/dev-qt/qtspeech/qtspeech-6.12.9999.ebuild b/dev-qt/qtspeech/qtspeech-6.12.9999.ebuild new file mode 100644 index 000000000000..3c7c6a3f1316 --- /dev/null +++ b/dev-qt/qtspeech/qtspeech-6.12.9999.ebuild @@ -0,0 +1,41 @@ +# Copyright 2023-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# tests are kind of flaky, sometimes hang, and also fail with clang +# (not that it's unusable with clang) -- may be worth revisiting +# eventually given qtspeech is still somewhat new (added in 6.4.0) +QT6_RESTRICT_TESTS=1 + +inherit qt6-build + +DESCRIPTION="Text-to-speech library for the Qt6 framework" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86" +fi + +IUSE="flite qml +speechd" + +RDEPEND=" + ~dev-qt/qtbase-${PV}:6 + ~dev-qt/qtmultimedia-${PV}:6 + flite? ( + app-accessibility/flite + ~dev-qt/qtbase-${PV}:6[concurrent] + ) + qml? ( ~dev-qt/qtdeclarative-${PV}:6 ) + speechd? ( app-accessibility/speech-dispatcher ) +" +DEPEND="${RDEPEND}" + +src_configure() { + local mycmakeargs=( + $(cmake_use_find_package qml Qt6Qml) + $(qt_feature flite) + $(qt_feature speechd) + ) + + qt6-build_src_configure +} diff --git a/dev-qt/qtsvg/qtsvg-6.12.9999.ebuild b/dev-qt/qtsvg/qtsvg-6.12.9999.ebuild new file mode 100644 index 000000000000..929ff37ace4a --- /dev/null +++ b/dev-qt/qtsvg/qtsvg-6.12.9999.ebuild @@ -0,0 +1,26 @@ +# Copyright 2021-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit qt6-build toolchain-funcs + +DESCRIPTION="SVG rendering library for the Qt6 framework" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~x86" +fi + +RDEPEND=" + ~dev-qt/qtbase-${PV}:6[gui,widgets] + virtual/zlib:= +" +DEPEND="${RDEPEND}" + +src_test() { + # tst_QSvgRenderer::testFeColorMatrix (new in 6.7, likely low impact) + # is known failing on BE, could use more looking into (bug #935356) + [[ $(tc-endian) == big ]] && local CMAKE_SKIP_TESTS=( tst_qsvgrenderer ) + + qt6-build_src_test +} diff --git a/dev-qt/qttools/qttools-6.12.9999.ebuild b/dev-qt/qttools/qttools-6.12.9999.ebuild new file mode 100644 index 000000000000..2ae4892365de --- /dev/null +++ b/dev-qt/qttools/qttools-6.12.9999.ebuild @@ -0,0 +1,123 @@ +# Copyright 2021-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# match QDOC_SUPPORTED_CLANG_VERSIONS in src/qdoc/cmake/QDocConfiguration.cmake +LLVM_COMPAT=( {17..22} ) +LLVM_OPTIONAL=1 + +# behaves very badly when qttools is not already installed, also +# other issues to handle (clang tests flaky depending on version, +# and 3rdparty/ tries to FetchContent gtest) +QT6_RESTRICT_TESTS=1 + +inherit flag-o-matic llvm-r2 optfeature qt6-build xdg + +DESCRIPTION="Qt Tools Collection" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~x86" +fi + +IUSE=" + +assistant designer distancefieldgenerator gles2-only kmap2qmap + +linguist opengl pixeltool +qdbus qdoc qml qmlls + qtattributionsscanner qtdiag qtplugininfo vulkan +widgets zstd +" +# note that some tools do not *require* widgets but will skip a sub-tool +# if not enabled (e.g. linguist gives lrelease but not the GUI linguist6) +REQUIRED_USE=" + assistant? ( widgets ) + designer? ( qml widgets ) + distancefieldgenerator? ( qml widgets ) + pixeltool? ( widgets ) + qdoc? ( qml ${LLVM_REQUIRED_USE} ) + qmlls? ( assistant qml ) +" + +RDEPEND=" + ~dev-qt/qtbase-${PV}:6[widgets?] + assistant? ( + ~dev-qt/qtbase-${PV}:6[concurrent,network,sql,sqlite] + !dev-qt/assistant:5 + ) + designer? ( + ~dev-qt/qtbase-${PV}:6[network,xml,zstd=] + zstd? ( app-arch/zstd:= ) + !<dev-qt/designer-5.15.18-r1:5 + ) + kmap2qmap? ( ~dev-qt/qtbase-${PV}:6[evdev] ) + linguist? ( + widgets? ( !dev-qt/linguist:5 ) + ) + qdbus? ( + ~dev-qt/qtbase-${PV}:6[dbus,xml] + widgets? ( !dev-qt/qdbusviewer:5 ) + ) + qdoc? ( + $(llvm_gen_dep ' + llvm-core/clang:${LLVM_SLOT}= + llvm-core/llvm:${LLVM_SLOT}= + ') + ) + qml? ( ~dev-qt/qtdeclarative-${PV}:6[widgets?] ) + qmlls? ( ~dev-qt/qtdeclarative-${PV}:6[qmlls] ) + qtdiag? ( ~dev-qt/qtbase-${PV}:6[network,gles2-only=,vulkan=] ) + widgets? ( ~dev-qt/qtbase-${PV}:6[opengl=] ) +" +DEPEND=" + ${RDEPEND} + qtdiag? ( + vulkan? ( dev-util/vulkan-headers ) + ) +" + +src_prepare() { + qt6-build_src_prepare + + # qttools is picky about clang versions and ignores LLVM_SLOT + sed -e '/find_package/s/${\(LLVM_\)*VERSION_CLEAN}//' \ + -i cmake/FindWrapLibClang.cmake || die +} + +src_configure() { + # validator.h:25:8: error: type 'struct Validator' ... [-Werror=odr] + use linguist && filter-lto + + use qdoc && llvm_chost_setup + + local mycmakeargs=( + # prevent the clang test as it can abort due to bug #916098 + $(cmake_use_find_package qdoc WrapLibClang) + $(cmake_use_find_package qml Qt6Qml) + $(cmake_use_find_package widgets Qt6Widgets) + $(qt_feature assistant) + $(qt_feature designer) + $(qt_feature distancefieldgenerator) + $(qt_feature kmap2qmap) + $(qt_feature linguist) + $(qt_feature pixeltool) + $(qt_feature qdbus) + $(qt_feature qdoc) + $(qt_feature qtattributionsscanner) + $(qt_feature qtdiag) + $(qt_feature qtplugininfo) + $(usev widgets -DQT_INSTALL_XDG_DESKTOP_ENTRIES=ON) + + # USE=qmlls' help plugin may be temporary, upstream has plans to split + # QtHelp into another package so that qtdeclarative can depend on it + # without a circular dependency with qttools + $(cmake_use_find_package qmlls Qt6QmlLSPrivate) + ) + + qt6-build_src_configure +} + +pkg_postinst() { + xdg_pkg_postinst + + use assistant && + optfeature "Qt documentation viewable in assistant" \ + 'dev-qt/qt-docs:6[qch]' #602296 +} diff --git a/dev-qt/qttranslations/qttranslations-6.12.9999.ebuild b/dev-qt/qttranslations/qttranslations-6.12.9999.ebuild new file mode 100644 index 000000000000..b18b2c945bb0 --- /dev/null +++ b/dev-qt/qttranslations/qttranslations-6.12.9999.ebuild @@ -0,0 +1,16 @@ +# Copyright 2021-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +QT6_RESTRICT_TESTS=1 # no tests +inherit qt6-build + +DESCRIPTION="Translation files for the Qt6 framework" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~x86" +fi + +DEPEND="~dev-qt/qtbase-${PV}:6" +BDEPEND="~dev-qt/qttools-${PV}:6[linguist]" diff --git a/dev-qt/qtvirtualkeyboard/qtvirtualkeyboard-6.12.9999.ebuild b/dev-qt/qtvirtualkeyboard/qtvirtualkeyboard-6.12.9999.ebuild new file mode 100644 index 000000000000..a19423946286 --- /dev/null +++ b/dev-qt/qtvirtualkeyboard/qtvirtualkeyboard-6.12.9999.ebuild @@ -0,0 +1,53 @@ +# Copyright 2023-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit qt6-build + +DESCRIPTION="Customizable input framework and virtual keyboard for Qt" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86" +fi + +IUSE="+sound +spell" + +RDEPEND=" + ~dev-qt/qtbase-${PV}:6[gui] + ~dev-qt/qtdeclarative-${PV}:6 + ~dev-qt/qtsvg-${PV}:6 + sound? ( ~dev-qt/qtmultimedia-${PV}:6[qml] ) + spell? ( app-text/hunspell:= ) +" +DEPEND="${RDEPEND}" + +src_configure() { + local mycmakeargs=( + $(qt_feature sound vkb_sound_effects) + $(qt_feature spell hunspell) + -DINPUT_vkb_handwriting=no # neither cerence nor myscript are packaged + ) + + qt6-build_src_configure +} + +src_test() { + local CMAKE_SKIP_TESTS=( + # rarely randomly(?) fails even with -j1 + tst_layoutfilesystem + ) + + if use spell && has_version app-dicts/myspell-en; then + # 99% pass but minor sub-tests fail with myspell-en, needs looking into + ewarn "Warning: notable tests were skipped due to ${_} being installed" + CMAKE_SKIP_TESTS+=( + tst_inputpanel + tst_inputpanelcontrols2 + ) + else + einfo "tst_inputpanel can take >5mins, not known to actually hang" + fi + + qt6-build_src_test +} diff --git a/dev-qt/qtwayland/qtwayland-6.12.9999.ebuild b/dev-qt/qtwayland/qtwayland-6.12.9999.ebuild new file mode 100644 index 000000000000..38fc85e340ad --- /dev/null +++ b/dev-qt/qtwayland/qtwayland-6.12.9999.ebuild @@ -0,0 +1,39 @@ +# Copyright 2021-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit qt6-build + +DESCRIPTION="Toolbox for making Qt based Wayland compositors" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86" +fi + +IUSE="gnome qml" + +RDEPEND=" + dev-libs/wayland + ~dev-qt/qtbase-${PV}:6[gui,opengl,wayland] + media-libs/libglvnd + x11-libs/libxkbcommon + qml? ( ~dev-qt/qtdeclarative-${PV}:6 ) + gnome? ( + ~dev-qt/qtbase-${PV}:6[dbus] + ~dev-qt/qtsvg-${PV}:6 + ) +" +DEPEND="${RDEPEND}" +BDEPEND=" + dev-util/wayland-scanner +" + +src_configure() { + local mycmakeargs=( + $(cmake_use_find_package qml Qt6Quick) + $(qt_feature gnome wayland_decoration_adwaita) + ) + + qt6-build_src_configure +} diff --git a/dev-qt/qtwebchannel/qtwebchannel-6.12.9999.ebuild b/dev-qt/qtwebchannel/qtwebchannel-6.12.9999.ebuild new file mode 100644 index 000000000000..ce945638a29b --- /dev/null +++ b/dev-qt/qtwebchannel/qtwebchannel-6.12.9999.ebuild @@ -0,0 +1,27 @@ +# Copyright 2021-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit qt6-build + +DESCRIPTION="Qt WebChannel" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86" +fi + +IUSE="qml" + +RDEPEND=" + ~dev-qt/qtbase-${PV}:6[concurrent] + qml? ( ~dev-qt/qtdeclarative-${PV}:6 ) +" +DEPEND="${RDEPEND}" + +src_configure() { + has_version "=dev-qt/qtdeclarative-$(ver_cut 1-3)*:6" && #913692 + local mycmakeargs=( $(cmake_use_find_package qml Qt6Qml) ) + + qt6-build_src_configure +} diff --git a/dev-qt/qtwebengine/qtwebengine-6.12.9999.ebuild b/dev-qt/qtwebengine/qtwebengine-6.12.9999.ebuild new file mode 100644 index 000000000000..3951fd03f5ea --- /dev/null +++ b/dev-qt/qtwebengine/qtwebengine-6.12.9999.ebuild @@ -0,0 +1,367 @@ +# Copyright 2021-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{11..14} ) +inherit check-reqs flag-o-matic multiprocessing optfeature +inherit prefix python-any-r1 qt6-build toolchain-funcs + +DESCRIPTION="Library for rendering dynamic web content in Qt6 C++ and QML applications" +SRC_URI+=" + https://distfiles.gentoo.org/pub/dev/ionen@gentoo.org/${PN}-6.11-patchset-3.tar.xz +" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm64" +fi + +IUSE=" + accessibility +alsa bindist custom-cflags designer geolocation + +jumbo-build kerberos opengl +pdfium pulseaudio qml screencast + +system-icu vaapi vulkan webdriver +widgets +" +REQUIRED_USE=" + designer? ( qml widgets ) + test? ( widgets ) +" + +# dlopen: krb5, libva, pciutils +RDEPEND=" + app-arch/snappy:= + dev-libs/expat + dev-libs/libxml2:=[icu] + dev-libs/libxslt + dev-libs/nspr + dev-libs/nss + ~dev-qt/qtbase-${PV}:6[accessibility=,gui,opengl=,ssl,vulkan?,widgets?] + ~dev-qt/qtdeclarative-${PV}:6[widgets?] + ~dev-qt/qtwebchannel-${PV}:6[qml?] + media-libs/fontconfig + media-libs/freetype + media-libs/harfbuzz:= + media-libs/lcms:2 + media-libs/libjpeg-turbo:= + media-libs/libpng:= + media-libs/libwebp:= + media-libs/mesa[gbm(+)] + >=media-libs/openh264-2.4:= + media-libs/openjpeg:2= + media-libs/opus + media-libs/tiff:= + sys-apps/dbus + sys-apps/pciutils + virtual/libudev:= + virtual/minizip:= + virtual/zlib:= + x11-libs/libX11 + x11-libs/libXcomposite + x11-libs/libXdamage + x11-libs/libXext + x11-libs/libXfixes + x11-libs/libXrandr + x11-libs/libXtst + x11-libs/libdrm + x11-libs/libxcb:= + x11-libs/libxkbcommon + x11-libs/libxkbfile + alsa? ( media-libs/alsa-lib ) + designer? ( ~dev-qt/qttools-${PV}:6[designer] ) + geolocation? ( ~dev-qt/qtpositioning-${PV}:6 ) + kerberos? ( virtual/krb5 ) + opengl? ( media-libs/libglvnd[X] ) + pulseaudio? ( media-libs/libpulse[glib] ) + screencast? ( + dev-libs/glib:2 + media-video/pipewire:= + ) + system-icu? ( dev-libs/icu:= ) + vaapi? ( media-libs/libva:=[X] ) +" +DEPEND=" + ${RDEPEND} + || ( + sys-devel/gcc:* + llvm-runtimes/libatomic-stub + ) + media-libs/libglvnd + x11-base/xorg-proto + x11-libs/libXcursor + x11-libs/libXi + x11-libs/libxshmfence + elibc_musl? ( sys-libs/queue-standalone ) + screencast? ( media-libs/libepoxy[egl(+)] ) + vaapi? ( + vulkan? ( dev-util/vulkan-headers ) + ) +" +BDEPEND=" + $(python_gen_any_dep 'dev-python/html5lib[${PYTHON_USEDEP}]') + dev-util/gperf + net-libs/nodejs[icu,ssl] + sys-devel/bison + sys-devel/flex +" + +PATCHES=( "${WORKDIR}"/patches/${PN} ) +[[ ${PV} == 6.9999 ]] || # too fragile for 6.9999, but keep for 6.x.9999 + PATCHES+=( "${WORKDIR}"/patches/chromium ) + +PATCHES+=( + # add extras as needed here, may merge in set if carries across versions + "${FILESDIR}"/${PN}-6.10.3-climits.patch + "${FILESDIR}"/${PN}-6.11.0-gcc17.patch +) + +python_check_deps() { + python_has_version "dev-python/html5lib[${PYTHON_USEDEP}]" +} + +qtwebengine_check-reqs() { + [[ ${MERGE_TYPE} == binary ]] && return + + if is-flagq '-g?(gdb)?([1-9])'; then #307861 + ewarn + ewarn "Used CFLAGS/CXXFLAGS seem to enable debug info (-g or -ggdb), which" + ewarn "is non-trivial with ${PN}. May experience extended compilation" + ewarn "times, increased disk/memory usage, and potentially link failure." + ewarn + ewarn "If run into issues, please try disabling before reporting a bug." + fi + + local CHECKREQS_DISK_BUILD=11G + local CHECKREQS_DISK_USR=400M + + if ! has distcc ${FEATURES}; then #830661 + # on average this does not use *that* much ram but then poor + # luck may lead to several 3.9+GB jobs happening at same time + # (less of an issue for users with 32+GB ram given they have + # room to handle a few spikes), try to find a balance but it + # won't be right for everyone (CHECKREQS_DONOTHING=1 to ignore) + tc-is-clang && : 17 || : 25 # clang:1.7GB/job, gcc:2.5GB/job + local CHECKREQS_MEMORY=$(($(makeopts_jobs)*_/10))G + fi + + check-reqs_${EBUILD_PHASE_FUNC} #570534 +} + +pkg_pretend() { + qtwebengine_check-reqs +} + +pkg_setup() { + qtwebengine_check-reqs + python-any-r1_pkg_setup +} + +src_prepare() { + qt6-build_src_prepare + + # for www-plugins/chrome-binary-plugins (widevine) search paths on prefix + hprefixify -w /Gentoo/ src/core/content_client_qt.cpp + + # store chromium versions, only used in postinst for a warning + local chromium + mapfile -t chromium < CHROMIUM_VERSION || die + [[ ${chromium[0]} =~ ^Based.*:[^0-9]+([0-9.]+$) ]] && + QT6_CHROMIUM_VER=${BASH_REMATCH[1]} || die + [[ ${chromium[1]} =~ ^Patched.+:[^0-9]+([0-9.]+$) ]] && + QT6_CHROMIUM_PATCHES_VER=${BASH_REMATCH[1]} || die +} + +src_configure() { + local mycmakeargs=( + $(qt_feature pdfium qtpdf_build) + $(use pdfium && qt_feature qml qtpdf_quick_build) + $(use pdfium && qt_feature widgets qtpdf_widgets_build) + $(usev pdfium -DQT_FEATURE_pdf_v8=ON) + + # TODO?: since 6.9.0, dependency checks have been adjusted to make it + # easier for webengine to be optional which could be useful if *only* + # need QtPdf (rare at the moment), would require all revdeps to depend + # on qtwebengine[webengine(+)] + -DQT_FEATURE_qtwebengine_build=ON + $(qt_feature qml qtwebengine_quick_build) + $(qt_feature webdriver webenginedriver) + $(qt_feature widgets qtwebengine_widgets_build) + + $(cmake_use_find_package designer Qt6Designer) + + $(qt_feature alsa webengine_system_alsa) + $(qt_feature !bindist webengine_proprietary_codecs) + $(qt_feature geolocation webengine_geolocation) + $(qt_feature jumbo-build webengine_jumbo_build) + $(qt_feature kerberos webengine_kerberos) + $(qt_feature pulseaudio webengine_system_pulseaudio) + $(qt_feature screencast webengine_webrtc_pipewire) + $(qt_feature system-icu webengine_system_icu) + $(qt_feature vaapi webengine_vaapi) + $(qt_feature vulkan webengine_vulkan) + -DQT_FEATURE_webengine_embedded_build=OFF + -DQT_FEATURE_webengine_extensions=ON + # TODO: it may be possible to make x11 optional since 6.8+ + -DQT_FEATURE_webengine_ozone_x11=ON + -DQT_FEATURE_webengine_pass_extra_flags=ON + -DQT_FEATURE_webengine_pepper_plugins=ON + -DQT_FEATURE_webengine_printing_and_pdf=ON + -DQT_FEATURE_webengine_spellchecker=ON + -DQT_FEATURE_webengine_webchannel=ON + -DQT_FEATURE_webengine_webrtc=ON + + # needs a modified ffmpeg to be usable (bug #831487), and even then + # it is picky about codecs/version and system's can lead to unexpected + # issues (e.g. builds but some files don't play even with support) + -DQT_FEATURE_webengine_system_ffmpeg=OFF + + # use bundled re2 to avoid complications, Qt has also disabled + # this by default in 6.7.3+ (bug #913923) + -DQT_FEATURE_webengine_system_re2=OFF + + # system_libvpx=ON is intentionally ignored with USE=vaapi which leads + # to using system's being less tested, prefer disabling for now until + # vaapi can use it as well + -DQT_FEATURE_webengine_system_libvpx=OFF + + # not necessary to pass these (default), but in case detection fails + # given qtbase's force_system_libs does not affect these right now + $(printf -- '-DQT_FEATURE_webengine_system_%s=ON ' \ + freetype gbm glib harfbuzz lcms2 libjpeg libopenjpeg2 \ + libpci libpng libtiff libudev libwebp libxml minizip \ + openh264 opus snappy zlib) + + # TODO: fixup gn cross, or package dev-qt/qtwebengine-gn with =ON + # (see also BUILD_ONLY_GN option added in 6.8+ for the latter) + -DINSTALL_GN=OFF + ) + + local mygnargs=( + # prefer no dlopen where possible + $(usev pulseaudio link_pulseaudio=true) + $(usev screencast rtc_link_pipewire=true) + # reduce default disk space usage + symbol_level=0 + ) + + if use !custom-cflags; then + # qtwebengine can be rather fragile with *FLAGS + filter-lto + strip-flags + + if is-flagq '-g?(gdb)?([2-9])'; then #914475 + replace-flags '-g?(gdb)?([2-9])' -g1 + ewarn "-g2+/-ggdb* *FLAGS replaced with -g1 (enable USE=custom-cflags to keep)" + fi + + # gcc-16 with -O3 is known to cause runtime issues (bug #968755) + tc-is-gcc && [[ $(gcc-major-version) -ge 16 ]] && + replace-flags '-O[3-9]' -O2 + + # Qt normally ignores users *FLAGS specifically for qtwebengine, and + # does not really support passing -march -- qt6-build.eclass has some + # checks to ensure working flags with amd64, but that does not exist + # for arm64 and can lead to problems (bug #920555,#920568,#970048) + use arm64 && filter-flags '-march=*' '-mcpu=*' + fi + + # chromium passes this by default, but qtwebengine does not and it may + # "possibly" get enabled by some paths and cause issues (bug #953111) + append-ldflags -Wl,-z,noexecstack + + export NINJAFLAGS=$(get_NINJAOPTS) + [[ ${NINJA_VERBOSE^^} == OFF ]] || NINJAFLAGS+=" -v" + + local -x EXTRA_GN="${mygnargs[*]} ${EXTRA_GN}" + einfo "Extra Gn args: ${EXTRA_GN}" + + qt6-build_src_configure +} + +src_test() { + if [[ ${EUID} == 0 ]]; then + # almost every tests fail, so skip entirely + ewarn "Skipping tests due to running as root (chromium refuses this configuration)." + return + fi + + local CMAKE_SKIP_TESTS=( + # fails with *-sandbox + tst_certificateerror + tst_inspectorserver + tst_loadsignals + tst_qquickwebengineview + tst_qwebengineglobalsettings + tst_qwebenginepermission + tst_qwebengineview + # fails with offscreen rendering, may be worth retrying if the issue + # persist given these are rather major tests (or consider virtx) + tst_qmltests + tst_qwebenginepage + # certs verfication seems flaky and gives expiration warnings + tst_qwebengineclientcertificatestore + # test is misperformed when qtbase is built USE=-test? + tst_touchinput + # currently requires webenginedriver to be already installed + tst_webenginedriver + ) + + # prevent using the system's qtwebengine + # (use glob to avoid unnecessary complications with arch dir) + local resources=( "${BUILD_DIR}/src/core/${CMAKE_BUILD_TYPE}/"* ) + [[ -d ${resources[0]} ]] || die "invalid resources path: ${resources[0]}" + local -x QTWEBENGINEPROCESS_PATH=${BUILD_DIR}${QT6_LIBEXECDIR#"${QT6_PREFIX}"}/QtWebEngineProcess + local -x QTWEBENGINE_LOCALES_PATH=${resources[0]}/qtwebengine_locales + local -x QTWEBENGINE_RESOURCES_PATH=${resources[0]} + + # random failures in several tests without -j1 + qt6-build_src_test -j1 +} + +src_install() { + qt6-build_src_install + + [[ -e ${D}${QT6_LIBDIR}/libQt6WebEngineCore.so ]] || #601472 + die "${CATEGORY}/${PF} failed to build anything. Please report to https://bugs.gentoo.org/" + + # exact cause unknown, but >=qtwebengine-6.9.2 started to act as if + # QtWebEngineProcess is marked USER_FACING despite not set anywhere + # and this creates a user_facing_tool_links.txt with a broken symlink + if [[ -L ${ED}/usr/bin/QtWebEngineProcess6 ]] && + [[ ! -e ${ED}/usr/bin/QtWebEngineProcess6 ]] + then + rm -- "${ED}"/usr/bin/QtWebEngineProcess6 || die + else + # eqawarn rather than die to avoid failing a long build over this + eqawarn "QA Notice: symlink workaround may be obsolete" + fi + + if use test; then + local delete=( # sigh + "${D}${QT6_ARCHDATADIR}"/metatypes/*testmockdelegates* + "${D}${QT6_ARCHDATADIR}"/modules/*TestMockDelegates* + "${D}${QT6_BINDIR}"/testbrowser + "${D}${QT6_LIBDIR}"/{,cmake,pkgconfig}/*TestMockDelegates* + "${D}${QT6_MKSPECSDIR}"/modules/*testmockdelegates* + "${D}${QT6_QMLDIR}"/QtWebEngine/TestMockDelegates + ) + # using -f given not tracking which tests may be skipped or not + rm -rf -- "${delete[@]}" || die + fi +} + +pkg_postinst() { + # plugin may also be found in $HOME if provided by chrome or firefox + use amd64 && + optfeature "Widevine DRM support (protected media playback)" \ + www-plugins/chrome-binary-plugins + + elog + elog "This version of Qt WebEngine is based on Chromium version ${QT6_CHROMIUM_VER}, with" + elog "additional security fixes up to ${QT6_CHROMIUM_PATCHES_VER}. Extensive as it is, the" + elog "list of backports is impossible to evaluate, but always bound to be behind" + elog "Chromium's release schedule." + elog + elog "In addition, various online services may deny service based on an outdated" + elog "user agent version (and/or other checks). Google is already known to do so." + elog + elog "tl;dr your web browsing experience will be compromised." +} diff --git a/dev-qt/qtwebsockets/qtwebsockets-6.12.9999.ebuild b/dev-qt/qtwebsockets/qtwebsockets-6.12.9999.ebuild new file mode 100644 index 000000000000..51296a75e242 --- /dev/null +++ b/dev-qt/qtwebsockets/qtwebsockets-6.12.9999.ebuild @@ -0,0 +1,28 @@ +# Copyright 2021-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit qt6-build + +DESCRIPTION="Implementation of the WebSocket protocol for the Qt6 framework" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~x86" +fi + +IUSE="qml +ssl" + +RDEPEND=" + ~dev-qt/qtbase-${PV}:6[network,ssl=] + qml? ( ~dev-qt/qtdeclarative-${PV}:6 ) +" +DEPEND="${RDEPEND}" + +src_configure() { + local mycmakeargs=( + $(cmake_use_find_package qml Qt6Quick) + ) + + qt6-build_src_configure +} diff --git a/dev-qt/qtwebview/qtwebview-6.12.9999.ebuild b/dev-qt/qtwebview/qtwebview-6.12.9999.ebuild new file mode 100644 index 000000000000..4c09e718b2ba --- /dev/null +++ b/dev-qt/qtwebview/qtwebview-6.12.9999.ebuild @@ -0,0 +1,19 @@ +# Copyright 2023-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit qt6-build + +DESCRIPTION="Module for displaying web content in a QML application using the Qt6 framework" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm64" +fi + +RDEPEND=" + ~dev-qt/qtbase-${PV}:6[gui] + ~dev-qt/qtdeclarative-${PV}:6 + ~dev-qt/qtwebengine-${PV}:6[qml] +" +DEPEND="${RDEPEND}" |
