summaryrefslogtreecommitdiff
path: root/dev-qt/qtbase
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-09-05 16:23:54 +0100
committerV3n3RiX <venerix@koprulu.sector>2023-09-05 16:23:54 +0100
commit44a22ab89258383202cae3037c3a5685aa903251 (patch)
tree76789a8fb67642ae7635df789a9bb83125ec127d /dev-qt/qtbase
parent9aa62a2a35904a08cbf2e884d3abd89d893daf91 (diff)
gentoo auto-resync : 05:09:2023 - 16:23:54
Diffstat (limited to 'dev-qt/qtbase')
-rw-r--r--dev-qt/qtbase/Manifest7
-rw-r--r--dev-qt/qtbase/files/qtbase-6.5.2-tests-gcc13.patch25
-rw-r--r--dev-qt/qtbase/metadata.xml3
-rw-r--r--dev-qt/qtbase/qtbase-6.5.2-r1.ebuild331
-rw-r--r--dev-qt/qtbase/qtbase-6.5.2.ebuild190
-rw-r--r--dev-qt/qtbase/qtbase-6.5.9999.ebuild326
-rw-r--r--dev-qt/qtbase/qtbase-6.9999.ebuild326
7 files changed, 1014 insertions, 194 deletions
diff --git a/dev-qt/qtbase/Manifest b/dev-qt/qtbase/Manifest
index 26d67d0b0ebf..d13b48166836 100644
--- a/dev-qt/qtbase/Manifest
+++ b/dev-qt/qtbase/Manifest
@@ -1,4 +1,7 @@
AUX qtbase-6.5.2-CVE-2023-38197.patch 14691 BLAKE2B 68de2edb047871de9608a0a570773c9987474f9977f1dad9a849b8ed18dad6ef966997c0293adaee92fd2fcdb24a79a6bd05a71874c548722bfca64d960f12e3 SHA512 0ee7d66a0894879816454fdfd4c9feb958d82e87f4287935704216330e74135709b23cba7a5c084a6b2617b16c54a96eb6eff785d85f0d79b15ef6ccd9da51c6
+AUX qtbase-6.5.2-tests-gcc13.patch 1491 BLAKE2B 72417e910bb35df59c10d18e093bf4d17952d0a39ead552a342020004bbf7c9e0f903140c014509ab806915ff380ad3732e3cd119b9b1ce3bec550b9c247a077 SHA512 10e05e135e4997cc71c0d2f1a0b40131babe88801d87bb11f69aa1ae93cdcdef9e1e510dbfe337b5bd101e4831a401a63a5e49d84f9f865d6db986e3e60277ba
DIST qtbase-everywhere-src-6.5.2.tar.xz 48410716 BLAKE2B 578c69ede6f45a8b21cba0a24674d5d8801722503d13ab9578b06b2446ce15e6a84bcdbd0c5d2c9aa868ec70862f0845406c959ed79b695f82bb398ecf299c63 SHA512 8d97029aae5b73a3e03624c9a8495dbf2fe54a4f5e992071c06f3d93935e64c80f2121b33eeb60a92d96ceb288cb25d74906a5bf47b45bb018d859d4a2d13f20
-EBUILD qtbase-6.5.2.ebuild 5080 BLAKE2B 025013b416fead6bbe9423f06ad38a9b3750e12ffe70756183af361e825f499cb1356678098c709bc33c72fdddb91972e91116c44bcbf2bf6c8fd796440add5a SHA512 cecb0846a9a3266f98c12423b861930fb050bc4116dc4d2f595678e10a2b6020f7dd4869951f4e4ff458bc25d5c73fe737834587c03f40d9ad59abfe7c684f5b
-MISC metadata.xml 1762 BLAKE2B fd53799e4a3668fb8d32798f1d128df86aaa7181563655ffb71d6c15a7bab33e5fb08f3c5b41695e8fee4a46f5a5216030d0aeb0927eaeec387136ec66964a8f SHA512 6e05599e981d07f7a6d79eda9e1ef9e41383e05aec5442fed8a46be87245b6e9a77fb9b469fe656f9fdd29ffb69767136c0922baed3c5448ca8c58ee70ad713d
+EBUILD qtbase-6.5.2-r1.ebuild 8953 BLAKE2B 579df068d067a9713003bdaf25a74191d3ec4a5694ad24f859ea53c289570a34aa8eaa9dcc897692f76b7f41f2e13410d9e69f81480f2cc0b22745ed8a5fdc07 SHA512 831305547ceffe924987a969820f807e482564c2fe11fe2cbc284540b2a57046c55567737e216baabbb3c4b9a3e74ccaf3157a5f2cbcc85491bc69f7638e3744
+EBUILD qtbase-6.5.9999.ebuild 8861 BLAKE2B c862b8e672aa1270aaca95d00160ba4ea8032669a3973b63275c68baa134b7ea338159a1ab9d1ea77d5d07faade42921ccc2997734cab34b0ed70f86998e0dd5 SHA512 dc225ed604ca729faf934961496bb3664062acddfd44eb37f9e166616c23f4c34248688fe657601cf047ac4e2385c52a35850a128d53ac9ca2cf9aff2993c50e
+EBUILD qtbase-6.9999.ebuild 8861 BLAKE2B 86ceb8af158569506c159ff03e62523b7e4e5ca13b9a31d90ac0ef9144589849bba7ece4eb3183dee435c5b1737c8bfda82f083452bd8fab0b530940de0190dc SHA512 a9f74828f56c3ccb1699e1e911284560cf780989ab5ff0a740c87ede1d107558c4e8d9b3b9f15cdf119cffae2e64539fbc163f655ae20c8e7fa933d39ae9ec3e
+MISC metadata.xml 1675 BLAKE2B 2ebcdba30a9090ca67955496f9e88c33756df5ff409821525fff1e3267198c5eb55d5d486fc103b471b6374a169d2cf9b7c3af11628e860a2fdc412100249f96 SHA512 ce269f77e47f082145f42db9b7bf4e4d4ed21c95ec28670b2957f7ae9f6c716a15e67feea88cb15974f59a5d03afa7b70b875674f0c2f4ba5e9fc90d1cb39bd3
diff --git a/dev-qt/qtbase/files/qtbase-6.5.2-tests-gcc13.patch b/dev-qt/qtbase/files/qtbase-6.5.2-tests-gcc13.patch
new file mode 100644
index 000000000000..431d89a387f6
--- /dev/null
+++ b/dev-qt/qtbase/files/qtbase-6.5.2-tests-gcc13.patch
@@ -0,0 +1,25 @@
+https://bugreports.qt.io/browse/QTBUG-114785
+https://code.qt.io/cgit/qt/qtbase.git/commit/?id=3e801b5477a7abfe4b87f20639e345bf3dc7eca8
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Sat, 29 Apr 2023 13:01:56 +0200
+Subject: [PATCH] tinycbor: fix build with gcc-13
+
+Fixes: QTBUG-114785
+Pick-to: 6.6 6.5
+Change-Id: I4876ebd8890eee883a0d1a2bef8cb7aec4fd0f2f
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+--- a/src/3rdparty/tinycbor/tests/encoder/data.cpp
++++ b/src/3rdparty/tinycbor/tests/encoder/data.cpp
+@@ -239,9 +239,9 @@
+ QTest::newRow("0.f16") << raw("\xf9\0\0") << QVariant::fromValue(qfloat16(0));
+ QTest::newRow("-1.f16") << raw("\xf9\xbc\0") << QVariant::fromValue(qfloat16(-1));
+ QTest::newRow("1.5f16") << raw("\xf9\x3e\0") << QVariant::fromValue(qfloat16(1.5));
+- QTest::newRow("nan_f16") << raw("\xf9\x7e\0") << QVariant::fromValue<qfloat16>(myNaNf());
+- QTest::newRow("-inf_f16") << raw("\xf9\xfc\0") << QVariant::fromValue<qfloat16>(myNInff());
+- QTest::newRow("+inf_f16") << raw("\xf9\x7c\0") << QVariant::fromValue<qfloat16>(myInff());
++ QTest::newRow("nan_f16") << raw("\xf9\x7e\0") << QVariant::fromValue<qfloat16>(qfloat16(myNaNf()));
++ QTest::newRow("-inf_f16") << raw("\xf9\xfc\0") << QVariant::fromValue<qfloat16>(qfloat16(myNInff()));
++ QTest::newRow("+inf_f16") << raw("\xf9\x7c\0") << QVariant::fromValue<qfloat16>(qfloat16(myInff()));
+ #endif
+
+ QTest::newRow("0.f") << raw("\xfa\0\0\0\0") << QVariant::fromValue(0.f);
diff --git a/dev-qt/qtbase/metadata.xml b/dev-qt/qtbase/metadata.xml
index d828e06391c0..573775d954fd 100644
--- a/dev-qt/qtbase/metadata.xml
+++ b/dev-qt/qtbase/metadata.xml
@@ -9,7 +9,6 @@
<flag name="brotli">Enable support for Brotli decompression</flag>
<flag name="concurrent">Build Qt6Concurrent module</flag>
<flag name="dbus">Build Qt6DBus module</flag>
- <flag name="egl">Enable EGL integration</flag>
<flag name="eglfs">Build the EGL Full Screen/Single Surface platform plugin</flag>
<flag name="evdev">Enable support for input devices via evdev</flag>
<flag name="gssapi">Enable support for GSSAPI (<pkg>virtual/krb5</pkg>)</flag>
@@ -21,13 +20,13 @@
<flag name="sql">Build Qt6Sql module</flag>
<flag name="systemd">Enable native journald logging support</flag>
<flag name="tslib">Enable support for touchscreen devices via <pkg>x11-libs/tslib</pkg></flag>
- <flag name="tuio">Build plugin to receive touch events over the TUIO protocol</flag>
<flag name="widgets">Build Qt6Widgets module</flag>
<flag name="X">Build the XCB platform plugin and enable X11 integration</flag>
</use>
<upstream>
<bugs-to>https://bugreports.qt.io/</bugs-to>
<doc>https://doc.qt.io/</doc>
+ <remote-id type="github">qt/qtbase</remote-id>
</upstream>
<slots>
<subslots>
diff --git a/dev-qt/qtbase/qtbase-6.5.2-r1.ebuild b/dev-qt/qtbase/qtbase-6.5.2-r1.ebuild
new file mode 100644
index 000000000000..3c566fb935d8
--- /dev/null
+++ b/dev-qt/qtbase/qtbase-6.5.2-r1.ebuild
@@ -0,0 +1,331 @@
+# Copyright 2021-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit flag-o-matic qt6-build toolchain-funcs
+
+DESCRIPTION="Cross-platform application development framework"
+
+if [[ ${QT6_BUILD_TYPE} == release ]]; then
+ KEYWORDS="~amd64"
+fi
+
+declare -A QT6_IUSE=(
+ [global]="+ssl +udev zstd"
+ [core]="icu systemd"
+ [modules]="+concurrent +dbus +gui +network +sql +xml"
+
+ [gui]="
+ +X accessibility eglfs evdev gles2-only +libinput
+ opengl tslib vulkan +widgets
+ "
+ [network]="brotli gssapi libproxy sctp"
+ [sql]="mysql oci8 odbc postgres +sqlite"
+ [widgets]="cups gtk"
+
+ [optfeature]="wayland" #864509
+)
+IUSE="${QT6_IUSE[*]}"
+REQUIRED_USE="
+ $(
+ printf '%s? ( gui ) ' ${QT6_IUSE[gui]//+/}
+ printf '%s? ( network ) ' ${QT6_IUSE[network]//+/}
+ printf '%s? ( sql ) ' ${QT6_IUSE[sql]//+/}
+ printf '%s? ( gui widgets ) ' ${QT6_IUSE[widgets]//+/}
+ )
+ accessibility? ( X dbus )
+ eglfs? ( opengl )
+ gui? ( || ( X eglfs wayland ) )
+ libinput? ( udev )
+ sql? ( || ( ${QT6_IUSE[sql]//+/} ) )
+ test? ( icu sql? ( sqlite ) )
+"
+
+# groups:
+# - global (configure.cmake)
+# - qtcore (src/corelib/configure.cmake)
+# - qtgui (src/gui/configure.cmake)
+# - qtnetwork (src/network/configure.cmake)
+# - qtprintsupport (src/printsupport/configure.cmake) [gui+widgets]
+# - qtsql (src/plugins/sqldrivers/configure.cmake)
+RDEPEND="
+ sys-libs/zlib:=
+ ssl? ( dev-libs/openssl:= )
+ udev? ( virtual/libudev:= )
+ zstd? ( app-arch/zstd:= )
+
+ app-crypt/libb2
+ dev-libs/double-conversion:=
+ dev-libs/glib:2
+ dev-libs/libpcre2:=[pcre16,unicode(+)]
+ icu? ( dev-libs/icu:= )
+ systemd? ( sys-apps/systemd:= )
+
+ dbus? ( sys-apps/dbus )
+ gui? (
+ media-libs/fontconfig
+ media-libs/freetype:2
+ media-libs/harfbuzz:=
+ media-libs/libjpeg-turbo:=
+ media-libs/libpng:=
+ x11-libs/libdrm
+ x11-libs/libxkbcommon[X?]
+ X? (
+ x11-libs/libICE
+ x11-libs/libSM
+ x11-libs/libX11
+ x11-libs/libxcb:=
+ x11-libs/xcb-util-cursor
+ x11-libs/xcb-util-image
+ x11-libs/xcb-util-keysyms
+ x11-libs/xcb-util-renderutil
+ x11-libs/xcb-util-wm
+ )
+ accessibility? ( app-accessibility/at-spi2-core:2 )
+ eglfs? ( media-libs/mesa[gbm(+)] )
+ evdev? ( sys-libs/mtdev )
+ libinput? ( dev-libs/libinput:= )
+ opengl? ( media-libs/libglvnd[X?] )
+ tslib? ( x11-libs/tslib )
+ widgets? (
+ cups? ( net-print/cups )
+ gtk? (
+ x11-libs/gdk-pixbuf:2
+ x11-libs/gtk+:3
+ x11-libs/pango
+ )
+ )
+ )
+ network? (
+ brotli? ( app-arch/brotli:= )
+ gssapi? ( virtual/krb5 )
+ libproxy? ( net-libs/libproxy )
+ )
+ sql? (
+ mysql? ( dev-db/mysql-connector-c:= )
+ oci8? ( dev-db/oracle-instantclient:=[sdk] )
+ odbc? ( dev-db/unixODBC )
+ postgres? ( dev-db/postgresql:* )
+ sqlite? ( dev-db/sqlite:3 )
+ )
+"
+DEPEND="
+ ${RDEPEND}
+ X? ( x11-base/xorg-proto )
+ gui? (
+ vulkan? ( dev-util/vulkan-headers )
+ )
+ network? (
+ sctp? ( net-misc/lksctp-tools )
+ )
+ test? (
+ elibc_musl? ( sys-libs/timezone-data )
+ )
+"
+BDEPEND="zstd? ( app-arch/libarchive[zstd] )" #910392
+PDEPEND="wayland? ( ~dev-qt/qtwayland-${PV}:6 )"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-CVE-2023-38197.patch
+ "${FILESDIR}"/${P}-tests-gcc13.patch
+)
+
+src_prepare() {
+ qt6-build_src_prepare
+
+ if use test; then
+ # test itself has -Werror=strict-aliasing issues, drop for simplicity
+ sed -e '/add_subdirectory(qsharedpointer)/d' \
+ -i tests/auto/corelib/tools/CMakeLists.txt || die
+ fi
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DINSTALL_ARCHDATADIR="${QT6_ARCHDATADIR}"
+ -DINSTALL_BINDIR="${QT6_BINDIR}"
+ -DINSTALL_DATADIR="${QT6_DATADIR}"
+ -DINSTALL_DOCDIR="${QT6_DOCDIR}"
+ -DINSTALL_EXAMPLESDIR="${QT6_EXAMPLESDIR}"
+ -DINSTALL_INCLUDEDIR="${QT6_HEADERDIR}"
+ -DINSTALL_LIBDIR="${QT6_LIBDIR}"
+ -DINSTALL_LIBEXECDIR="${QT6_LIBEXECDIR}"
+ -DINSTALL_MKSPECSDIR="${QT6_MKSPECSDIR}"
+ -DINSTALL_PLUGINSDIR="${QT6_PLUGINDIR}"
+ -DINSTALL_QMLDIR="${QT6_QMLDIR}"
+ -DINSTALL_SYSCONFDIR="${QT6_SYSCONFDIR}"
+ -DINSTALL_TRANSLATIONSDIR="${QT6_TRANSLATIONDIR}"
+
+ -DQT_FEATURE_precompile_header=OFF
+ $(qt_feature ssl openssl)
+ $(qt_feature ssl openssl_linked)
+ $(qt_feature udev libudev)
+ $(qt_feature zstd)
+
+ # qtcore
+ $(qt_feature icu)
+ $(qt_feature systemd journald)
+
+ # tools
+ -DQT_FEATURE_androiddeployqt=OFF
+
+ # modules
+ $(qt_feature concurrent)
+ $(qt_feature dbus)
+ $(qt_feature gui)
+ $(qt_feature network)
+ $(qt_feature sql)
+ -DQT_FEATURE_testlib=ON # trivial and often needed to build revdeps
+ $(qt_feature xml)
+ )
+
+ use gui && mycmakeargs+=(
+ $(qt_feature X xcb)
+ $(qt_feature X system_xcb_xinput)
+ $(qt_feature X xkbcommon_x11)
+ $(cmake_use_find_package X X11) # needed for truly no automagic
+ $(qt_feature accessibility accessibility_atspi_bridge)
+ $(qt_feature eglfs)
+ $(qt_feature evdev)
+ $(qt_feature evdev mtdev)
+ $(qt_feature gles2-only opengles2)
+ $(qt_feature libinput)
+ $(qt_feature opengl)
+ $(usev !opengl -DINPUT_opengl=no) #913691
+ $(qt_feature tslib)
+ $(qt_feature vulkan)
+ $(qt_feature widgets)
+ -DQT_FEATURE_system_textmarkdownreader=OFF # TODO?: package md4c
+ ) && use widgets && mycmakeargs+=(
+ $(qt_feature cups) # qtprintsupport is enabled w/ gui+widgets
+ $(qt_feature gtk gtk3)
+ )
+
+ use network && mycmakeargs+=(
+ $(qt_feature brotli)
+ $(qt_feature gssapi)
+ $(qt_feature libproxy)
+ $(qt_feature sctp)
+ $(usev test -DQT_SKIP_DOCKER_COMPOSE=ON)
+ )
+
+ use sql && mycmakeargs+=(
+ -DQT_FEATURE_sql_db2=OFF # unpackaged
+ -DQT_FEATURE_sql_ibase=OFF # unpackaged
+ $(qt_feature mysql sql_mysql)
+ $(qt_feature oci8 sql_oci)
+ $(usev oci8 -DOracle_ROOT="${ESYSROOT}"/usr/$(get_libdir)/oracle/client)
+ $(qt_feature odbc sql_odbc)
+ $(qt_feature postgres sql_psql)
+ $(qt_feature sqlite sql_sqlite)
+ $(qt_feature sqlite system_sqlite)
+ -DQT_FEATURE_sql_tds=OFF # currently a no-op in CMakeLists.txt
+ )
+
+ if use amd64 || use x86; then
+ # see bug #913400 for explanations
+ local cpufeats=(
+ # list of checked cpu features in configure.cmake
+ avx avx2 avx512{bw,cd,dq,er,f,ifma,pf,vbmi,vbmi2,vl}
+ f16c rdrnd rdseed sse2 sse3 sse4_1 sse4_2 ssse3 vaes
+ )
+ # handle odd ones out not matching -m* and macros (keep same order)
+ local cpuflags=( "${cpufeats[@]}" aes sha )
+ local cpufeats+=( aesni shani )
+
+ local -a intrins
+ IFS=' ' read -ra intrins < <(
+ : "$(test-flags-CXX "${cpuflags[@]/#/-m}")"
+ $(tc-getCXX) -E -P ${_} ${CXXFLAGS} ${CPPFLAGS} - <<-EOF | tail -n 1
+ #if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))
+ #include <x86intrin.h>
+ #endif
+ $(printf '__%s__ ' "${cpuflags[@]^^}")
+ EOF
+ assert
+ )
+
+ # do nothing and leave to qtbase if no macros expanded (test failed?)
+ if [[ \ ${intrins[*]} == *\ [^_\ ]* ]]; then
+ local -i i
+ for ((i=0; i<${#cpufeats[@]}; i++)); do
+ [[ ${intrins[i]} == __* ]] &&
+ mycmakeargs+=( -DQT_FEATURE_${cpufeats[i]}=OFF )
+ done
+ mycmakeargs+=( -DTEST_x86intrin=ON )
+ fi
+ fi
+
+ qt6-build_src_configure
+}
+
+src_test() {
+ local -x TZ=UTC
+ local -x LC_TIME=C
+
+ local CMAKE_SKIP_TESTS=(
+ # broken with out-of-source + if qtbase is not already installed
+ tst_moc
+ tst_qmake
+ # needs x11/opengl, we *could* run these but tend to be flaky
+ # when opengl rendering is involved (even if software-only)
+ tst_qopengl{,config,widget,window}
+ tst_qgraphicsview
+ tst_qx11info
+ # fails with network sandbox
+ tst_qdnslookup
+ # typical to lack SCTP support on non-generic kernels
+ tst_qsctpsocket
+ # these can be flaky depending on the environment/toolchain
+ tst_qlogging # backtrace log test can easily vary
+ tst_qrawfont # can be affected by available fonts
+ tst_qstorageinfo # checks mounted filesystems
+ # flaky due to using different test framework and fails with USE=-gui
+ tst_selftests
+ # known failing when using clang+glibc+stdc++, needs looking into
+ tst_qthread
+ # partially failing on x86 chroots and seemingly(?) harmless (dev-qt
+ # revdeps tests pass), skip globally to avoid keywording flakiness
+ tst_json
+ tst_qcolorspace
+ tst_qdoublevalidator
+ tst_qglobal
+ tst_qglyphrun
+ tst_qvectornd
+ tst_rcc
+ # partially broken on llvm-musl, needs looking into but skip to have
+ # a baseline for regressions (like above, rest of dev-qt is fine)
+ $(usev elibc_musl '
+ tst_qfiledialog2
+ tst_qicoimageformat
+ tst_qimagereader
+ tst_qpainter
+ tst_qimage
+ ')
+ # note: for linux, upstream only really runs+maintains tests for amd64
+ # https://doc.qt.io/qt-6/supported-platforms.html
+ )
+
+ qt6-build_src_test
+}
+
+src_install() {
+ qt6-build_src_install
+
+ if use test; then
+ local delete_bins=( # need a better way to handle this
+ clientserver copier crashingServer desktopsettingsaware_helper
+ echo fileWriterProcess modal_helper nospace 'one space'
+ paster qcommandlineparser_test_helper qfileopeneventexternal
+ socketprocess syslocaleapp tst_qhashseed_helper 'two space s'
+ write-read-write
+ )
+ local delete=( # sigh
+ "${D}${QT6_BINDIR}"/test*
+ "${delete_bins[@]/#/${D}${QT6_BINDIR}/}"
+ )
+ # using -f given not tracking which tests may be skipped or not
+ rm -rf -- "${delete[@]}" || die
+ fi
+}
diff --git a/dev-qt/qtbase/qtbase-6.5.2.ebuild b/dev-qt/qtbase/qtbase-6.5.2.ebuild
deleted file mode 100644
index 5e1b328fd988..000000000000
--- a/dev-qt/qtbase/qtbase-6.5.2.ebuild
+++ /dev/null
@@ -1,190 +0,0 @@
-# Copyright 2021-2023 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit qt6-build
-
-DESCRIPTION="Cross-platform application development framework"
-
-if [[ ${QT6_BUILD_TYPE} == release ]]; then
- KEYWORDS="~amd64"
-fi
-
-# Qt Modules
-IUSE="+concurrent +dbus +gui +network +sql opengl +widgets +xml zstd"
-REQUIRED_USE="
- opengl? ( gui )
- widgets? ( gui )
- X? ( || ( evdev libinput ) )
-"
-
-QTGUI_IUSE="accessibility egl eglfs evdev gles2-only +jpeg +libinput tslib tuio vulkan +X"
-QTNETWORK_IUSE="brotli gssapi libproxy sctp +ssl vnc"
-QTSQL_IUSE="freetds mysql oci8 odbc postgres +sqlite"
-IUSE+=" ${QTGUI_IUSE} ${QTNETWORK_IUSE} ${QTSQL_IUSE} cups gtk icu systemd +udev wayland"
-# QtPrintSupport = QtGui + QtWidgets enabled.
-# ibus = xkbcommon + dbus, and xkbcommon needs either libinput or X
-REQUIRED_USE+="
- $(printf '%s? ( gui ) ' ${QTGUI_IUSE//+/})
- $(printf '%s? ( network ) ' ${QTNETWORK_IUSE//+/})
- $(printf '%s? ( sql ) ' ${QTSQL_IUSE//+/})
- accessibility? ( dbus X )
- cups? ( gui widgets )
- eglfs? ( egl )
- gtk? ( widgets )
- gui? ( || ( eglfs X ) || ( libinput X ) )
- libinput? ( udev )
- sql? ( || ( freetds mysql oci8 odbc postgres sqlite ) )
- vnc? ( gui )
- X? ( gles2-only? ( egl ) )
-"
-
-# TODO:
-# qtimageformats: mng not done yet, qtimageformats.git upstream commit 9443239c
-# qtnetwork: connman, networkmanager
-DEPEND="
- app-crypt/libb2
- dev-libs/double-conversion:=
- dev-libs/glib:2
- dev-libs/libpcre2:=[pcre16,unicode]
- dev-util/gtk-update-icon-cache
- media-libs/fontconfig
- >=media-libs/freetype-2.6.1:2
- >=media-libs/harfbuzz-1.6.0:=
- media-libs/tiff:=
- >=sys-apps/dbus-1.4.20
- sys-libs/zlib:=
- brotli? ( app-arch/brotli:= )
- evdev? ( sys-libs/mtdev )
- freetds? ( dev-db/freetds )
- gles2-only? ( media-libs/libglvnd )
- !gles2-only? ( media-libs/libglvnd[X] )
- gssapi? ( virtual/krb5 )
- gtk? (
- x11-libs/gtk+:3
- x11-libs/libX11
- x11-libs/pango
- )
- gui? ( media-libs/libpng:= )
- icu? ( dev-libs/icu:= )
- !icu? ( virtual/libiconv )
- jpeg? ( media-libs/libjpeg-turbo:= )
- libinput? (
- dev-libs/libinput:=
- >=x11-libs/libxkbcommon-0.5.0
- )
- libproxy? ( net-libs/libproxy )
- mysql? ( dev-db/mysql-connector-c:= )
- oci8? ( dev-db/oracle-instantclient:=[sdk] )
- odbc? ( dev-db/unixODBC )
- postgres? ( dev-db/postgresql:* )
- sctp? ( kernel_linux? ( net-misc/lksctp-tools ) )
- sqlite? ( dev-db/sqlite:3 )
- ssl? ( dev-libs/openssl:= )
- systemd? ( sys-apps/systemd:= )
- tslib? ( >=x11-libs/tslib-1.21 )
- udev? ( virtual/libudev:= )
- vulkan? ( dev-util/vulkan-headers )
- X? (
- x11-libs/libdrm
- x11-libs/libICE
- x11-libs/libSM
- x11-libs/libX11
- >=x11-libs/libxcb-1.12:=
- >=x11-libs/libxkbcommon-0.5.0[X]
- x11-libs/xcb-util-cursor
- x11-libs/xcb-util-image
- x11-libs/xcb-util-keysyms
- x11-libs/xcb-util-renderutil
- x11-libs/xcb-util-wm
- )
- zstd? ( app-arch/zstd:= )
-"
-RDEPEND="${DEPEND}"
-PDEPEND="wayland? ( =dev-qt/qtwayland-${PV}* )"
-
-PATCHES=( "${FILESDIR}/${PN}-6.5.2-CVE-2023-38197.patch" )
-
-src_configure() {
- local mycmakeargs=(
- -DINSTALL_ARCHDATADIR=${QT6_ARCHDATADIR}
- -DINSTALL_BINDIR=${QT6_BINDIR}
- -DINSTALL_DATADIR=${QT6_DATADIR}
- -DINSTALL_DOCDIR=${QT6_DOCDIR}
- -DINSTALL_EXAMPLESDIR=${QT6_EXAMPLESDIR}
- -DINSTALL_INCLUDEDIR=${QT6_HEADERDIR}
- -DINSTALL_LIBDIR=${QT6_LIBDIR}
- -DINSTALL_LIBEXECDIR=${QT6_LIBEXECDIR}
- -DINSTALL_MKSPECSDIR=${QT6_ARCHDATADIR}/mkspecs
- -DINSTALL_PLUGINSDIR=${QT6_PLUGINDIR}
- -DINSTALL_QMLDIR=${QT6_QMLDIR}
- -DINSTALL_SYSCONFDIR=${QT6_SYSCONFDIR}
- -DINSTALL_TRANSLATIONSDIR=${QT6_TRANSLATIONDIR}
- -DQT_FEATURE_androiddeployqt=OFF
- $(qt_feature concurrent)
- $(qt_feature dbus)
- $(qt_feature gui)
- $(qt_feature gui testlib)
- $(qt_feature icu)
- $(qt_feature network)
- $(qt_feature sql)
- $(qt_feature systemd journald)
- $(qt_feature udev libudev)
- $(qt_feature xml)
- $(qt_feature zstd)
- )
- use gui && mycmakeargs+=(
- $(qt_feature accessibility accessibility_atspi_bridge)
- $(qt_feature egl)
- $(qt_feature egl xcb_egl_plugin)
- $(qt_feature eglfs eglfs_egldevice)
- $(qt_feature eglfs eglfs_gbm)
- $(qt_feature evdev)
- $(qt_feature evdev mtdev)
- -DQT_FEATURE_gif=ON
- $(qt_feature jpeg)
- $(qt_feature opengl)
- $(qt_feature gles2-only opengles2)
- $(qt_feature libinput)
- $(qt_feature tslib)
- $(qt_feature tuio tuiotouch)
- $(qt_feature vulkan)
- $(qt_feature widgets)
- $(qt_feature X xcb)
- $(qt_feature X xcb_xlib)
- )
- use widgets && mycmakeargs+=(
- $(qt_feature cups)
- $(qt_feature gtk gtk3)
- )
- if use libinput || use X; then
- mycmakeargs+=( -DQT_FEATURE_xkbcommon=ON )
- fi
- use network && mycmakeargs+=(
- $(qt_feature brotli)
- $(qt_feature gssapi)
- $(qt_feature libproxy)
- $(qt_feature sctp)
- $(qt_feature ssl openssl)
- $(qt_feature vnc)
- )
- use sql && mycmakeargs+=(
- $(qt_feature freetds sql_tds)
- $(qt_feature mysql sql_mysql)
- $(qt_feature oci8 sql_oci)
- $(qt_feature odbc sql_odbc)
- $(qt_feature postgres sql_psql)
- $(qt_feature sqlite sql_sqlite)
- $(qt_feature sqlite system_sqlite)
- )
-
- qt6-build_src_configure
-}
-
-src_install() {
- qt6-build_src_install
-
- # https://bugs.gentoo.org/863395
- qt6_symlink_binary_to_path qmake 6
-}
diff --git a/dev-qt/qtbase/qtbase-6.5.9999.ebuild b/dev-qt/qtbase/qtbase-6.5.9999.ebuild
new file mode 100644
index 000000000000..714ed0db12c8
--- /dev/null
+++ b/dev-qt/qtbase/qtbase-6.5.9999.ebuild
@@ -0,0 +1,326 @@
+# Copyright 2021-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit flag-o-matic qt6-build toolchain-funcs
+
+DESCRIPTION="Cross-platform application development framework"
+
+if [[ ${QT6_BUILD_TYPE} == release ]]; then
+ KEYWORDS="~amd64"
+fi
+
+declare -A QT6_IUSE=(
+ [global]="+ssl +udev zstd"
+ [core]="icu systemd"
+ [modules]="+concurrent +dbus +gui +network +sql +xml"
+
+ [gui]="
+ +X accessibility eglfs evdev gles2-only +libinput
+ opengl tslib vulkan +widgets
+ "
+ [network]="brotli gssapi libproxy sctp"
+ [sql]="mysql oci8 odbc postgres +sqlite"
+ [widgets]="cups gtk"
+
+ [optfeature]="wayland" #864509
+)
+IUSE="${QT6_IUSE[*]}"
+REQUIRED_USE="
+ $(
+ printf '%s? ( gui ) ' ${QT6_IUSE[gui]//+/}
+ printf '%s? ( network ) ' ${QT6_IUSE[network]//+/}
+ printf '%s? ( sql ) ' ${QT6_IUSE[sql]//+/}
+ printf '%s? ( gui widgets ) ' ${QT6_IUSE[widgets]//+/}
+ )
+ accessibility? ( X dbus )
+ eglfs? ( opengl )
+ gui? ( || ( X eglfs wayland ) )
+ libinput? ( udev )
+ sql? ( || ( ${QT6_IUSE[sql]//+/} ) )
+ test? ( icu sql? ( sqlite ) )
+"
+
+# groups:
+# - global (configure.cmake)
+# - qtcore (src/corelib/configure.cmake)
+# - qtgui (src/gui/configure.cmake)
+# - qtnetwork (src/network/configure.cmake)
+# - qtprintsupport (src/printsupport/configure.cmake) [gui+widgets]
+# - qtsql (src/plugins/sqldrivers/configure.cmake)
+RDEPEND="
+ sys-libs/zlib:=
+ ssl? ( dev-libs/openssl:= )
+ udev? ( virtual/libudev:= )
+ zstd? ( app-arch/zstd:= )
+
+ app-crypt/libb2
+ dev-libs/double-conversion:=
+ dev-libs/glib:2
+ dev-libs/libpcre2:=[pcre16,unicode(+)]
+ icu? ( dev-libs/icu:= )
+ systemd? ( sys-apps/systemd:= )
+
+ dbus? ( sys-apps/dbus )
+ gui? (
+ media-libs/fontconfig
+ media-libs/freetype:2
+ media-libs/harfbuzz:=
+ media-libs/libjpeg-turbo:=
+ media-libs/libpng:=
+ x11-libs/libdrm
+ x11-libs/libxkbcommon[X?]
+ X? (
+ x11-libs/libICE
+ x11-libs/libSM
+ x11-libs/libX11
+ x11-libs/libxcb:=
+ x11-libs/xcb-util-cursor
+ x11-libs/xcb-util-image
+ x11-libs/xcb-util-keysyms
+ x11-libs/xcb-util-renderutil
+ x11-libs/xcb-util-wm
+ )
+ accessibility? ( app-accessibility/at-spi2-core:2 )
+ eglfs? ( media-libs/mesa[gbm(+)] )
+ evdev? ( sys-libs/mtdev )
+ libinput? ( dev-libs/libinput:= )
+ opengl? ( media-libs/libglvnd[X?] )
+ tslib? ( x11-libs/tslib )
+ widgets? (
+ cups? ( net-print/cups )
+ gtk? (
+ x11-libs/gdk-pixbuf:2
+ x11-libs/gtk+:3
+ x11-libs/pango
+ )
+ )
+ )
+ network? (
+ brotli? ( app-arch/brotli:= )
+ gssapi? ( virtual/krb5 )
+ libproxy? ( net-libs/libproxy )
+ )
+ sql? (
+ mysql? ( dev-db/mysql-connector-c:= )
+ oci8? ( dev-db/oracle-instantclient:=[sdk] )
+ odbc? ( dev-db/unixODBC )
+ postgres? ( dev-db/postgresql:* )
+ sqlite? ( dev-db/sqlite:3 )
+ )
+"
+DEPEND="
+ ${RDEPEND}
+ X? ( x11-base/xorg-proto )
+ gui? (
+ vulkan? ( dev-util/vulkan-headers )
+ )
+ network? (
+ sctp? ( net-misc/lksctp-tools )
+ )
+ test? (
+ elibc_musl? ( sys-libs/timezone-data )
+ )
+"
+BDEPEND="zstd? ( app-arch/libarchive[zstd] )" #910392
+PDEPEND="wayland? ( ~dev-qt/qtwayland-${PV}:6 )"
+
+src_prepare() {
+ qt6-build_src_prepare
+
+ if use test; then
+ # test itself has -Werror=strict-aliasing issues, drop for simplicity
+ sed -e '/add_subdirectory(qsharedpointer)/d' \
+ -i tests/auto/corelib/tools/CMakeLists.txt || die
+ fi
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DINSTALL_ARCHDATADIR="${QT6_ARCHDATADIR}"
+ -DINSTALL_BINDIR="${QT6_BINDIR}"
+ -DINSTALL_DATADIR="${QT6_DATADIR}"
+ -DINSTALL_DOCDIR="${QT6_DOCDIR}"
+ -DINSTALL_EXAMPLESDIR="${QT6_EXAMPLESDIR}"
+ -DINSTALL_INCLUDEDIR="${QT6_HEADERDIR}"
+ -DINSTALL_LIBDIR="${QT6_LIBDIR}"
+ -DINSTALL_LIBEXECDIR="${QT6_LIBEXECDIR}"
+ -DINSTALL_MKSPECSDIR="${QT6_MKSPECSDIR}"
+ -DINSTALL_PLUGINSDIR="${QT6_PLUGINDIR}"
+ -DINSTALL_QMLDIR="${QT6_QMLDIR}"
+ -DINSTALL_SYSCONFDIR="${QT6_SYSCONFDIR}"
+ -DINSTALL_TRANSLATIONSDIR="${QT6_TRANSLATIONDIR}"
+
+ -DQT_FEATURE_precompile_header=OFF
+ $(qt_feature ssl openssl)
+ $(qt_feature ssl openssl_linked)
+ $(qt_feature udev libudev)
+ $(qt_feature zstd)
+
+ # qtcore
+ $(qt_feature icu)
+ $(qt_feature systemd journald)
+
+ # tools
+ -DQT_FEATURE_androiddeployqt=OFF
+
+ # modules
+ $(qt_feature concurrent)
+ $(qt_feature dbus)
+ $(qt_feature gui)
+ $(qt_feature network)
+ $(qt_feature sql)
+ -DQT_FEATURE_testlib=ON # trivial and often needed to build revdeps
+ $(qt_feature xml)
+ )
+
+ use gui && mycmakeargs+=(
+ $(qt_feature X xcb)
+ $(qt_feature X system_xcb_xinput)
+ $(qt_feature X xkbcommon_x11)
+ $(cmake_use_find_package X X11) # needed for truly no automagic
+ $(qt_feature accessibility accessibility_atspi_bridge)
+ $(qt_feature eglfs)
+ $(qt_feature evdev)
+ $(qt_feature evdev mtdev)
+ $(qt_feature gles2-only opengles2)
+ $(usev !opengl -DINPUT_opengl=no) #913691
+ $(qt_feature libinput)
+ $(qt_feature opengl)
+ $(qt_feature tslib)
+ $(qt_feature vulkan)
+ $(qt_feature widgets)
+ -DQT_FEATURE_system_textmarkdownreader=OFF # TODO?: package md4c
+ ) && use widgets && mycmakeargs+=(
+ $(qt_feature cups) # qtprintsupport is enabled w/ gui+widgets
+ $(qt_feature gtk gtk3)
+ )
+
+ use network && mycmakeargs+=(
+ $(qt_feature brotli)
+ $(qt_feature gssapi)
+ $(qt_feature libproxy)
+ $(qt_feature sctp)
+ $(usev test -DQT_SKIP_DOCKER_COMPOSE=ON)
+ )
+
+ use sql && mycmakeargs+=(
+ -DQT_FEATURE_sql_db2=OFF # unpackaged
+ -DQT_FEATURE_sql_ibase=OFF # unpackaged
+ $(qt_feature mysql sql_mysql)
+ $(qt_feature oci8 sql_oci)
+ $(usev oci8 -DOracle_ROOT="${ESYSROOT}"/usr/$(get_libdir)/oracle/client)
+ $(qt_feature odbc sql_odbc)
+ $(qt_feature postgres sql_psql)
+ $(qt_feature sqlite sql_sqlite)
+ $(qt_feature sqlite system_sqlite)
+ -DQT_FEATURE_sql_tds=OFF # currently a no-op in CMakeLists.txt
+ )
+
+ if use amd64 || use x86; then
+ # see bug #913400 for explanations
+ local cpufeats=(
+ # list of checked cpu features in configure.cmake
+ avx avx2 avx512{bw,cd,dq,er,f,ifma,pf,vbmi,vbmi2,vl}
+ f16c rdrnd rdseed sse2 sse3 sse4_1 sse4_2 ssse3 vaes
+ )
+ # handle odd ones out not matching -m* and macros (keep same order)
+ local cpuflags=( "${cpufeats[@]}" aes sha )
+ local cpufeats+=( aesni shani )
+
+ local -a intrins
+ IFS=' ' read -ra intrins < <(
+ : "$(test-flags-CXX "${cpuflags[@]/#/-m}")"
+ $(tc-getCXX) -E -P ${_} ${CXXFLAGS} ${CPPFLAGS} - <<-EOF | tail -n 1
+ #if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))
+ #include <x86intrin.h>
+ #endif
+ $(printf '__%s__ ' "${cpuflags[@]^^}")
+ EOF
+ assert
+ )
+
+ # do nothing and leave to qtbase if no macros expanded (test failed?)
+ if [[ \ ${intrins[*]} == *\ [^_\ ]* ]]; then
+ local -i i
+ for ((i=0; i<${#cpufeats[@]}; i++)); do
+ [[ ${intrins[i]} == __* ]] &&
+ mycmakeargs+=( -DQT_FEATURE_${cpufeats[i]}=OFF )
+ done
+ mycmakeargs+=( -DTEST_x86intrin=ON )
+ fi
+ fi
+
+ qt6-build_src_configure
+}
+
+src_test() {
+ local -x TZ=UTC
+ local -x LC_TIME=C
+
+ local CMAKE_SKIP_TESTS=(
+ # broken with out-of-source + if qtbase is not already installed
+ tst_moc
+ tst_qmake
+ # needs x11/opengl, we *could* run these but tend to be flaky
+ # when opengl rendering is involved (even if software-only)
+ tst_qopengl{,config,widget,window}
+ tst_qgraphicsview
+ tst_qx11info
+ # fails with network sandbox
+ tst_qdnslookup
+ # typical to lack SCTP support on non-generic kernels
+ tst_qsctpsocket
+ # these can be flaky depending on the environment/toolchain
+ tst_qlogging # backtrace log test can easily vary
+ tst_qrawfont # can be affected by available fonts
+ tst_qstorageinfo # checks mounted filesystems
+ # flaky due to using different test framework and fails with USE=-gui
+ tst_selftests
+ # known failing when using clang+glibc+stdc++, needs looking into
+ tst_qthread
+ # partially failing on x86 chroots and seemingly(?) harmless (dev-qt
+ # revdeps tests pass), skip globally to avoid keywording flakiness
+ tst_json
+ tst_qcolorspace
+ tst_qdoublevalidator
+ tst_qglobal
+ tst_qglyphrun
+ tst_qvectornd
+ tst_rcc
+ # partially broken on llvm-musl, needs looking into but skip to have
+ # a baseline for regressions (like above, rest of dev-qt is fine)
+ $(usev elibc_musl '
+ tst_qfiledialog2
+ tst_qicoimageformat
+ tst_qimagereader
+ tst_qpainter
+ tst_qimage
+ ')
+ # note: for linux, upstream only really runs+maintains tests for amd64
+ # https://doc.qt.io/qt-6/supported-platforms.html
+ )
+
+ qt6-build_src_test
+}
+
+src_install() {
+ qt6-build_src_install
+
+ if use test; then
+ local delete_bins=( # need a better way to handle this
+ clientserver copier crashingServer desktopsettingsaware_helper
+ echo fileWriterProcess modal_helper nospace 'one space'
+ paster qcommandlineparser_test_helper qfileopeneventexternal
+ socketprocess syslocaleapp tst_qhashseed_helper 'two space s'
+ write-read-write
+ )
+ local delete=( # sigh
+ "${D}${QT6_BINDIR}"/test*
+ "${delete_bins[@]/#/${D}${QT6_BINDIR}/}"
+ )
+ # using -f given not tracking which tests may be skipped or not
+ rm -rf -- "${delete[@]}" || die
+ fi
+}
diff --git a/dev-qt/qtbase/qtbase-6.9999.ebuild b/dev-qt/qtbase/qtbase-6.9999.ebuild
new file mode 100644
index 000000000000..15a3ab244492
--- /dev/null
+++ b/dev-qt/qtbase/qtbase-6.9999.ebuild
@@ -0,0 +1,326 @@
+# Copyright 2021-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit flag-o-matic qt6-build toolchain-funcs
+
+DESCRIPTION="Cross-platform application development framework"
+
+if [[ ${QT6_BUILD_TYPE} == release ]]; then
+ KEYWORDS="~amd64"
+fi
+
+declare -A QT6_IUSE=(
+ [global]="+ssl +udev zstd"
+ [core]="icu systemd"
+ [modules]="+concurrent +dbus +gui +network +sql +xml"
+
+ [gui]="
+ +X accessibility eglfs evdev gles2-only +libinput
+ opengl tslib vulkan +widgets
+ "
+ [network]="brotli gssapi libproxy sctp"
+ [sql]="mysql oci8 odbc postgres +sqlite"
+ [widgets]="cups gtk"
+
+ [optfeature]="wayland" #864509
+)
+IUSE="${QT6_IUSE[*]}"
+REQUIRED_USE="
+ $(
+ printf '%s? ( gui ) ' ${QT6_IUSE[gui]//+/}
+ printf '%s? ( network ) ' ${QT6_IUSE[network]//+/}
+ printf '%s? ( sql ) ' ${QT6_IUSE[sql]//+/}
+ printf '%s? ( gui widgets ) ' ${QT6_IUSE[widgets]//+/}
+ )
+ accessibility? ( X dbus )
+ eglfs? ( opengl )
+ gui? ( || ( X eglfs wayland ) )
+ libinput? ( udev )
+ sql? ( || ( ${QT6_IUSE[sql]//+/} ) )
+ test? ( icu sql? ( sqlite ) )
+"
+
+# groups:
+# - global (configure.cmake)
+# - qtcore (src/corelib/configure.cmake)
+# - qtgui (src/gui/configure.cmake)
+# - qtnetwork (src/network/configure.cmake)
+# - qtprintsupport (src/printsupport/configure.cmake) [gui+widgets]
+# - qtsql (src/plugins/sqldrivers/configure.cmake)
+RDEPEND="
+ sys-libs/zlib:=
+ ssl? ( dev-libs/openssl:= )
+ udev? ( virtual/libudev:= )
+ zstd? ( app-arch/zstd:= )
+
+ app-crypt/libb2
+ dev-libs/double-conversion:=
+ dev-libs/glib:2
+ dev-libs/libpcre2:=[pcre16,unicode(+)]
+ icu? ( dev-libs/icu:= )
+ systemd? ( sys-apps/systemd:= )
+
+ dbus? ( sys-apps/dbus )
+ gui? (
+ media-libs/fontconfig
+ media-libs/freetype:2
+ media-libs/harfbuzz:=
+ media-libs/libjpeg-turbo:=
+ media-libs/libpng:=
+ x11-libs/libdrm
+ x11-libs/libxkbcommon[X?]
+ X? (
+ x11-libs/libICE
+ x11-libs/libSM
+ x11-libs/libX11
+ x11-libs/libxcb:=
+ x11-libs/xcb-util-cursor
+ x11-libs/xcb-util-image
+ x11-libs/xcb-util-keysyms
+ x11-libs/xcb-util-renderutil
+ x11-libs/xcb-util-wm
+ )
+ accessibility? ( app-accessibility/at-spi2-core:2 )
+ eglfs? ( media-libs/mesa[gbm(+)] )
+ evdev? ( sys-libs/mtdev )
+ libinput? ( dev-libs/libinput:= )
+ opengl? ( media-libs/libglvnd[X?] )
+ tslib? ( x11-libs/tslib )
+ widgets? (
+ cups? ( net-print/cups )
+ gtk? (
+ x11-libs/gdk-pixbuf:2
+ x11-libs/gtk+:3
+ x11-libs/pango
+ )
+ )
+ )
+ network? (
+ brotli? ( app-arch/brotli:= )
+ gssapi? ( virtual/krb5 )
+ libproxy? ( net-libs/libproxy )
+ )
+ sql? (
+ mysql? ( dev-db/mysql-connector-c:= )
+ oci8? ( dev-db/oracle-instantclient:=[sdk] )
+ odbc? ( dev-db/unixODBC )
+ postgres? ( dev-db/postgresql:* )
+ sqlite? ( dev-db/sqlite:3 )
+ )
+"
+DEPEND="
+ ${RDEPEND}
+ X? ( x11-base/xorg-proto )
+ gui? (
+ vulkan? ( dev-util/vulkan-headers )
+ )
+ network? (
+ sctp? ( net-misc/lksctp-tools )
+ )
+ test? (
+ elibc_musl? ( sys-libs/timezone-data )
+ )
+"
+BDEPEND="zstd? ( app-arch/libarchive[zstd] )" #910392
+PDEPEND="wayland? ( ~dev-qt/qtwayland-${PV}:6 )"
+
+src_prepare() {
+ qt6-build_src_prepare
+
+ if use test; then
+ # test itself has -Werror=strict-aliasing issues, drop for simplicity
+ sed -e '/add_subdirectory(qsharedpointer)/d' \
+ -i tests/auto/corelib/tools/CMakeLists.txt || die
+ fi
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DINSTALL_ARCHDATADIR="${QT6_ARCHDATADIR}"
+ -DINSTALL_BINDIR="${QT6_BINDIR}"
+ -DINSTALL_DATADIR="${QT6_DATADIR}"
+ -DINSTALL_DOCDIR="${QT6_DOCDIR}"
+ -DINSTALL_EXAMPLESDIR="${QT6_EXAMPLESDIR}"
+ -DINSTALL_INCLUDEDIR="${QT6_HEADERDIR}"
+ -DINSTALL_LIBDIR="${QT6_LIBDIR}"
+ -DINSTALL_LIBEXECDIR="${QT6_LIBEXECDIR}"
+ -DINSTALL_MKSPECSDIR="${QT6_MKSPECSDIR}"
+ -DINSTALL_PLUGINSDIR="${QT6_PLUGINDIR}"
+ -DINSTALL_QMLDIR="${QT6_QMLDIR}"
+ -DINSTALL_SYSCONFDIR="${QT6_SYSCONFDIR}"
+ -DINSTALL_TRANSLATIONSDIR="${QT6_TRANSLATIONDIR}"
+
+ -DQT_FEATURE_precompile_header=OFF
+ $(qt_feature ssl openssl)
+ $(qt_feature ssl openssl_linked)
+ $(qt_feature udev libudev)
+ $(qt_feature zstd)
+
+ # qtcore
+ $(qt_feature icu)
+ $(qt_feature systemd journald)
+
+ # tools
+ -DQT_FEATURE_androiddeployqt=OFF
+
+ # modules
+ $(qt_feature concurrent)
+ $(qt_feature dbus)
+ $(qt_feature gui)
+ $(qt_feature network)
+ $(qt_feature sql)
+ -DQT_FEATURE_testlib=ON # trivial and often needed to build revdeps
+ $(qt_feature xml)
+ )
+
+ use gui && mycmakeargs+=(
+ $(qt_feature X xcb)
+ $(qt_feature X system_xcb_xinput)
+ $(qt_feature X xkbcommon_x11)
+ $(cmake_use_find_package X X11) # needed for truly no automagic
+ $(qt_feature accessibility accessibility_atspi_bridge)
+ $(qt_feature eglfs)
+ $(qt_feature evdev)
+ $(qt_feature evdev mtdev)
+ $(qt_feature gles2-only opengles2)
+ $(qt_feature libinput)
+ $(qt_feature opengl)
+ $(usev !opengl -DINPUT_opengl=no) #913691
+ $(qt_feature tslib)
+ $(qt_feature vulkan)
+ $(qt_feature widgets)
+ -DQT_FEATURE_system_textmarkdownreader=OFF # TODO?: package md4c
+ ) && use widgets && mycmakeargs+=(
+ $(qt_feature cups) # qtprintsupport is enabled w/ gui+widgets
+ $(qt_feature gtk gtk3)
+ )
+
+ use network && mycmakeargs+=(
+ $(qt_feature brotli)
+ $(qt_feature gssapi)
+ $(qt_feature libproxy)
+ $(qt_feature sctp)
+ $(usev test -DQT_SKIP_DOCKER_COMPOSE=ON)
+ )
+
+ use sql && mycmakeargs+=(
+ -DQT_FEATURE_sql_db2=OFF # unpackaged
+ -DQT_FEATURE_sql_ibase=OFF # unpackaged
+ $(qt_feature mysql sql_mysql)
+ $(qt_feature oci8 sql_oci)
+ $(usev oci8 -DOracle_ROOT="${ESYSROOT}"/usr/$(get_libdir)/oracle/client)
+ $(qt_feature odbc sql_odbc)
+ $(qt_feature postgres sql_psql)
+ $(qt_feature sqlite sql_sqlite)
+ $(qt_feature sqlite system_sqlite)
+ -DQT_FEATURE_sql_tds=OFF # currently a no-op in CMakeLists.txt
+ )
+
+ if use amd64 || use x86; then
+ # see bug #913400 for explanations
+ local cpufeats=(
+ # list of checked cpu features in configure.cmake
+ avx avx2 avx512{bw,cd,dq,er,f,ifma,pf,vbmi,vbmi2,vl}
+ f16c rdrnd rdseed sse2 sse3 sse4_1 sse4_2 ssse3 vaes
+ )
+ # handle odd ones out not matching -m* and macros (keep same order)
+ local cpuflags=( "${cpufeats[@]}" aes sha )
+ local cpufeats+=( aesni shani )
+
+ local -a intrins
+ IFS=' ' read -ra intrins < <(
+ : "$(test-flags-CXX "${cpuflags[@]/#/-m}")"
+ $(tc-getCXX) -E -P ${_} ${CXXFLAGS} ${CPPFLAGS} - <<-EOF | tail -n 1
+ #if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))
+ #include <x86intrin.h>
+ #endif
+ $(printf '__%s__ ' "${cpuflags[@]^^}")
+ EOF
+ assert
+ )
+
+ # do nothing and leave to qtbase if no macros expanded (test failed?)
+ if [[ \ ${intrins[*]} == *\ [^_\ ]* ]]; then
+ local -i i
+ for ((i=0; i<${#cpufeats[@]}; i++)); do
+ [[ ${intrins[i]} == __* ]] &&
+ mycmakeargs+=( -DQT_FEATURE_${cpufeats[i]}=OFF )
+ done
+ mycmakeargs+=( -DTEST_x86intrin=ON )
+ fi
+ fi
+
+ qt6-build_src_configure
+}
+
+src_test() {
+ local -x TZ=UTC
+ local -x LC_TIME=C
+
+ local CMAKE_SKIP_TESTS=(
+ # broken with out-of-source + if qtbase is not already installed
+ tst_moc
+ tst_qmake
+ # needs x11/opengl, we *could* run these but tend to be flaky
+ # when opengl rendering is involved (even if software-only)
+ tst_qopengl{,config,widget,window}
+ tst_qgraphicsview
+ tst_qx11info
+ # fails with network sandbox
+ tst_qdnslookup
+ # typical to lack SCTP support on non-generic kernels
+ tst_qsctpsocket
+ # these can be flaky depending on the environment/toolchain
+ tst_qlogging # backtrace log test can easily vary
+ tst_qrawfont # can be affected by available fonts
+ tst_qstorageinfo # checks mounted filesystems
+ # flaky due to using different test framework and fails with USE=-gui
+ tst_selftests
+ # known failing when using clang+glibc+stdc++, needs looking into
+ tst_qthread
+ # partially failing on x86 chroots and seemingly(?) harmless (dev-qt
+ # revdeps tests pass), skip globally to avoid keywording flakiness
+ tst_json
+ tst_qcolorspace
+ tst_qdoublevalidator
+ tst_qglobal
+ tst_qglyphrun
+ tst_qvectornd
+ tst_rcc
+ # partially broken on llvm-musl, needs looking into but skip to have
+ # a baseline for regressions (like above, rest of dev-qt is fine)
+ $(usev elibc_musl '
+ tst_qfiledialog2
+ tst_qicoimageformat
+ tst_qimagereader
+ tst_qpainter
+ tst_qimage
+ ')
+ # note: for linux, upstream only really runs+maintains tests for amd64
+ # https://doc.qt.io/qt-6/supported-platforms.html
+ )
+
+ qt6-build_src_test
+}
+
+src_install() {
+ qt6-build_src_install
+
+ if use test; then
+ local delete_bins=( # need a better way to handle this
+ clientserver copier crashingServer desktopsettingsaware_helper
+ echo fileWriterProcess modal_helper nospace 'one space'
+ paster qcommandlineparser_test_helper qfileopeneventexternal
+ socketprocess syslocaleapp tst_qhashseed_helper 'two space s'
+ write-read-write
+ )
+ local delete=( # sigh
+ "${D}${QT6_BINDIR}"/test*
+ "${delete_bins[@]/#/${D}${QT6_BINDIR}/}"
+ )
+ # using -f given not tracking which tests may be skipped or not
+ rm -rf -- "${delete[@]}" || die
+ fi
+}