From a98588cfddf3d6e88a5f17d7f399b695163c7a85 Mon Sep 17 00:00:00 2001
From: V3n3RiX <venerix@koprulu.sector>
Date: Fri, 3 May 2024 00:00:22 +0100
Subject: gentoo auto-resync : 03:05:2024 - 00:00:22

---
 dev-qt/qtbase/Manifest                             |   3 +-
 .../qtbase/files/qtbase-6.7.0-CVE-2024-33861.patch |  23 ++
 dev-qt/qtbase/qtbase-6.7.0-r1.ebuild               | 381 --------------------
 dev-qt/qtbase/qtbase-6.7.0-r2.ebuild               | 382 +++++++++++++++++++++
 4 files changed, 407 insertions(+), 382 deletions(-)
 create mode 100644 dev-qt/qtbase/files/qtbase-6.7.0-CVE-2024-33861.patch
 delete mode 100644 dev-qt/qtbase/qtbase-6.7.0-r1.ebuild
 create mode 100644 dev-qt/qtbase/qtbase-6.7.0-r2.ebuild

(limited to 'dev-qt/qtbase')

diff --git a/dev-qt/qtbase/Manifest b/dev-qt/qtbase/Manifest
index 357c83031b5a..236233667375 100644
--- a/dev-qt/qtbase/Manifest
+++ b/dev-qt/qtbase/Manifest
@@ -3,9 +3,10 @@ AUX qtbase-6.5.2-no-symlink-check.patch 152 BLAKE2B 676ff8577f678fe3ed1e34e3fc8f
 AUX qtbase-6.6.1-forkfd-childstack-size.patch 1003 BLAKE2B abc1bc5633032fc55fca91ef3dcc33617b11694d7a9d97e5eac21c0b4aae900082b7158da08b8514a3424364a3c35cb49d46fa11a0739aadbb73766b7fee949a SHA512 9e1dfb3452858131db286cb30915871e46178bb0891b604a257745fad133676cdf0df5273b6f681c49b1c3d3245f2c6e0a5025ce19efe6a0ed8bf5a1b3a5a5f0
 AUX qtbase-6.6.3-gcc14-avx512fp16.patch 470 BLAKE2B 616b4fdcee6819a0ca4de1220f7524e0df00e13912e2e28d5c204d1a3e2bc351b9cdc212b9169e4d84e2884df76d9722a73f29734c18fe50cc8e6583e41a5cc2 SHA512 1effa903d5d3c65ffc6af5fb2f9896346b4b90cd1f8a54f0a697f23f1c118dd1803b5f4fa9b4959cf4ba1c433d36ca21a6abe6cb3bfae84a811297566388e907
 AUX qtbase-6.6.3-pkgconf-deps.patch 1873 BLAKE2B a801c6aba664e676dabf421d0a8b912359b3c66cd12a67b0f16f501feec101ba0e5247d34ac43279da1b1dfc513a504d57dd56dc9f114ecf7dca501c09703622 SHA512 1bacc3ca28dd9a866570f3f792ac6613a1a291e0a0a0b2cda5d8c314e6a0ab1ae8104d7066addabd3693d5424d390eccad953bcd94c1aa296ce1394141ff0f28
+AUX qtbase-6.7.0-CVE-2024-33861.patch 1242 BLAKE2B f102b808ae80af94797fb083071f3756080ba77b2aed8b6033f79c3c847515d084edf0580014d5f01606bed3a9e306611a13730e815b30b0f692a94c9a7d9a65 SHA512 0fdff359d4ef4ca908b694900dd61e8e4e105a9971f8e4ac7ff2135e54ed91e00af96fa81670e1648572f203113dbecb7502af0e71eb1d8f99ce0ef2263ab067
 AUX qtbase-6.7.0-qspan-ifdef.patch 1027 BLAKE2B 3ab8bb2b3ec7017ae8e6ef884e1acc67ea2bb342f8c5cb2c74f11d543930b228932d5c12141213dfd93ab9d28385dbded34406739318f1605db7d3b8d9fab48c SHA512 d23600d6efd4f5ad653105771c80c26d7bd463860ead47fe1562db5b1a66a320c41082e9fd3273834d90b8e7718e3365d46cc4bb5cbf88b359c11e234f501d7d
 DIST qtbase-everywhere-src-6.7.0.tar.xz 49314276 BLAKE2B f4ec35fd3c15d56a28e1608dec927eaf34d84c2250405d921adadc16d90ec148f4983024dcf9be1832de91381d18e33fd7578d60d8654469e23530a210618e11 SHA512 72896cc5a677361779f49d60dbdfc33a21d77bd479e0586b0beb03eee2016d613aee56e798143a489431a07a5e7a7db4c7c046105a11b63dd178768f3a7f195a
-EBUILD qtbase-6.7.0-r1.ebuild 10558 BLAKE2B c4503499b6ca82986928f16985c33ec05be4457d04f3e7cb526862119ad097537d9deb317328db4eb8432a73a07aff917951bec38d72b35e261c58441d0dfe7f SHA512 edb2e0357b9b421795d06360d7dc001d7e95a05b5c4926402b6eb4fdef58670b9caf8a649d71910791ec51bd8d6ad0beea1dad7eb0787a09da9c52134dd01b5e
+EBUILD qtbase-6.7.0-r2.ebuild 10606 BLAKE2B b19d06f0dd3cc1ff22c52f5819817fe7dab5e0c0f5eda3b0db39525b68c7085daf2aa2e73190808e28021a50a372712f0b55f8116ab674c88cb9005d2f814de9 SHA512 1e646ba04eb9b31936c542a4e25c8100d4c5ce45d904114896819e40441869bd5e0d8093328396ced4f4b8c67c03ed1a4d3d67ff1e2afdff50e8adcab2b41bb7
 EBUILD qtbase-6.7.9999.ebuild 10469 BLAKE2B 0bb3dd926ef658a36feb141ac462fb7b116c8d491db1887671b862cab1e9814ebe7bd2cac5688447c6e21b26a3701ce4f21eb576f1992bd8e174d46f58220b1a SHA512 0e3c0535a25cddfc93dbe2274164fe0559df45adbb4c32a49c12fb2e542fdddd643d88349835fcf90b1a20ec4790a53518c35ccaf51019ffb58ff86e0dd2b860
 EBUILD qtbase-6.9999.ebuild 10469 BLAKE2B 0bb3dd926ef658a36feb141ac462fb7b116c8d491db1887671b862cab1e9814ebe7bd2cac5688447c6e21b26a3701ce4f21eb576f1992bd8e174d46f58220b1a SHA512 0e3c0535a25cddfc93dbe2274164fe0559df45adbb4c32a49c12fb2e542fdddd643d88349835fcf90b1a20ec4790a53518c35ccaf51019ffb58ff86e0dd2b860
 MISC metadata.xml 1655 BLAKE2B 1f3bdbe5f14716d1825ff0ce6d3a9439a87c0c18abd0bb6a2286c9709e815205f2f6911ef5d053b57598aa54471d4316f87c9a4d36004be15f499447785f14bd SHA512 d1479bae177f75991241eacaa1300f43d644730fa3d6d7e6e039b8a212f1289b920b6e1aad7c56576857049f133492f5cf648c7931228c6c4ee272d93437e351
diff --git a/dev-qt/qtbase/files/qtbase-6.7.0-CVE-2024-33861.patch b/dev-qt/qtbase/files/qtbase-6.7.0-CVE-2024-33861.patch
new file mode 100644
index 000000000000..0a73d721612b
--- /dev/null
+++ b/dev-qt/qtbase/files/qtbase-6.7.0-CVE-2024-33861.patch
@@ -0,0 +1,23 @@
+https://bugs.gentoo.org/931096
+https://www.qt.io/blog/security-advisory-qstringconverter
+https://codereview.qt-project.org/c/qt/qtbase/+/556191
+--- a/src/corelib/text/qstringconverter.cpp
++++ b/src/corelib/text/qstringconverter.cpp
+@@ -1954,7 +1954,7 @@ struct QStringConverterICU : QStringConverter
+         const void *context;
+         ucnv_getToUCallBack(icu_conv, &action, &context);
+         if (context != state)
+-             ucnv_setToUCallBack(icu_conv, action, &state, nullptr, nullptr, &err);
++             ucnv_setToUCallBack(icu_conv, action, state, nullptr, nullptr, &err);
+ 
+         ucnv_toUnicode(icu_conv, &target, targetLimit, &source, sourceLimit, nullptr, flush, &err);
+         // We did reserve enough space:
+@@ -1987,7 +1987,7 @@ struct QStringConverterICU : QStringConverter
+         const void *context;
+         ucnv_getFromUCallBack(icu_conv, &action, &context);
+         if (context != state)
+-             ucnv_setFromUCallBack(icu_conv, action, &state, nullptr, nullptr, &err);
++             ucnv_setFromUCallBack(icu_conv, action, state, nullptr, nullptr, &err);
+ 
+         ucnv_fromUnicode(icu_conv, &target, targetLimit, &source, sourceLimit, nullptr, flush, &err);
+         // We did reserve enough space:
diff --git a/dev-qt/qtbase/qtbase-6.7.0-r1.ebuild b/dev-qt/qtbase/qtbase-6.7.0-r1.ebuild
deleted file mode 100644
index 23c59f62fc8d..000000000000
--- a/dev-qt/qtbase/qtbase-6.7.0-r1.ebuild
+++ /dev/null
@@ -1,381 +0,0 @@
-# Copyright 2021-2024 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 ~arm arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
-fi
-
-declare -A QT6_IUSE=(
-	[global]="+ssl +udev zstd"
-	[core]="icu"
-	[modules]="+concurrent +dbus +gui +network +sql +xml"
-
-	[gui]="
-		+X accessibility eglfs evdev gles2-only +libinput
-		opengl renderdoc tslib vulkan wayland +widgets
-	"
-	[network]="brotli gssapi libproxy sctp"
-	[sql]="mysql oci8 odbc postgres +sqlite"
-	[widgets]="cups gtk"
-
-	[optfeature]="nls" #810802
-)
-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? ( dbus )
-	eglfs? ( opengl )
-	gles2-only? ( 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)
-# dlopen: renderdoc
-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:= )
-
-	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? (
-			gles2-only? ( media-libs/libglvnd )
-			!gles2-only? ( media-libs/libglvnd[X?] )
-		)
-		renderdoc? ( media-gfx/renderdoc )
-		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="
-	nls? ( ~dev-qt/qttranslations-${PV}:6 )
-	wayland? ( ~dev-qt/qtwayland-${PV}:6 )
-"
-
-PATCHES=(
-	"${FILESDIR}"/${PN}-6.5.2-hppa-forkfd-grow-stack.patch
-	"${FILESDIR}"/${PN}-6.5.2-no-symlink-check.patch
-	"${FILESDIR}"/${PN}-6.6.1-forkfd-childstack-size.patch
-	"${FILESDIR}"/${PN}-6.6.3-gcc14-avx512fp16.patch
-	"${FILESDIR}"/${PN}-6.6.3-pkgconf-deps.patch
-	"${FILESDIR}"/${PN}-6.7.0-qspan-ifdef.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
-
-		# workaround for __extendhfxf2 being used for tst_qfloat16.cpp
-		# which is unavailable with compiler-rt (assume used if clang)
-		if tc-is-clang; then
-			sed -e '/add_subdirectory(qfloat16)/d' \
-				-i tests/auto/corelib/global/CMakeLists.txt || die
-		fi
-	fi
-}
-
-src_configure() {
-	local mycmakeargs=(
-		-DBUILD_WITH_PCH=OFF
-
-		-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_UNITY_BUILD=ON # ~30% faster build, affects other dev-qt/* too
-
-		-DQT_FEATURE_relocatable=OFF #927691
-		$(qt_feature ssl openssl)
-		$(qt_feature ssl openssl_linked)
-		$(qt_feature udev libudev)
-		$(qt_feature zstd)
-
-		# qtcore
-		$(qt_feature icu)
-
-		# tools
-		-DQT_FEATURE_androiddeployqt=OFF
-
-		# modules
-		$(qt_feature concurrent)
-		$(qt_feature dbus)
-		$(qt_feature gui)
-		$(qt_feature network)
-		$(qt_feature sql)
-		# trivial, and is often needed (sometimes even when not building tests)
-		-DQT_FEATURE_testlib=ON
-		$(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 libinput)
-		$(qt_feature renderdoc graphicsframecapture)
-		$(qt_feature tslib)
-		$(qt_feature vulkan)
-		$(qt_feature wayland)
-		$(qt_feature widgets)
-		-DINPUT_opengl=$(usex opengl $(usex gles2-only es2 desktop) no)
-		-DQT_FEATURE_system_textmarkdownreader=OFF # TODO?: package md4c
-	) && use widgets && mycmakeargs+=(
-		# note: qtprintsupport is enabled w/ gui+widgets regardless of USE=cups
-		$(qt_feature cups)
-		$(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
-		-DQT_FEATURE_sql_mimer=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)
-	)
-
-	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
-				$(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
-		# similarly broken when relocatable=OFF (bug #927691)
-		tst_qapplication
-		tst_qt_cmake_create
-		tst_uic
-		# 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
-		# fails with sandbox
-		tst_qsharedmemory
-		# typical to lack SCTP support on non-generic kernels
-		tst_qsctpsocket
-		# randomly fails without -j1, and not worth it over this (bug #916181)
-		tst_qfiledialog{,2}
-		# may randomly hang+timeout, perhaps related to -j as well
-		tst_qtimer
-		# these can be flaky depending on the environment/toolchain
-		tst_qlogging # backtrace log test can easily vary
-		tst_q{,raw}font # affected by available fonts / settings (bug #914737)
-		tst_qprinter # checks system's printers (bug #916216)
-		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
-		# similarly, but on armv7 and potentially others (bug #914028)
-		tst_qlineedit
-		tst_qpainter
-		# likewise, known failing on BE arches (bug #914033,914371,918878)
-		tst_qimagereader
-		tst_qimagewriter
-		tst_qpluginloader
-		tst_quuid # >=6.6.2 had related fixes, needs retesting
-		# partially broken on llvm-musl, needs looking into but skip to have
-		# a baseline for regressions (rest of dev-qt still passes with musl)
-		$(usev elibc_musl '
-			tst_qicoimageformat
-			tst_qimagereader
-			tst_qimage
-			tst_qprocess
-		')
-		# fails due to hppa's NaN handling, needs looking into (bug #914371)
-		$(usev hppa '
-			tst_qcborvalue
-			tst_qnumeric
-		')
-		# bug #914033
-		$(usev sparc '
-			tst_qbuffer
-			tst_qprocess
-			tst_qtconcurrentiteratekernel
-		')
-		# 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.7.0-r2.ebuild b/dev-qt/qtbase/qtbase-6.7.0-r2.ebuild
new file mode 100644
index 000000000000..203bcb3c6d6f
--- /dev/null
+++ b/dev-qt/qtbase/qtbase-6.7.0-r2.ebuild
@@ -0,0 +1,382 @@
+# Copyright 2021-2024 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 ~arm arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+fi
+
+declare -A QT6_IUSE=(
+	[global]="+ssl +udev zstd"
+	[core]="icu"
+	[modules]="+concurrent +dbus +gui +network +sql +xml"
+
+	[gui]="
+		+X accessibility eglfs evdev gles2-only +libinput
+		opengl renderdoc tslib vulkan wayland +widgets
+	"
+	[network]="brotli gssapi libproxy sctp"
+	[sql]="mysql oci8 odbc postgres +sqlite"
+	[widgets]="cups gtk"
+
+	[optfeature]="nls" #810802
+)
+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? ( dbus )
+	eglfs? ( opengl )
+	gles2-only? ( 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)
+# dlopen: renderdoc
+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:= )
+
+	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? (
+			gles2-only? ( media-libs/libglvnd )
+			!gles2-only? ( media-libs/libglvnd[X?] )
+		)
+		renderdoc? ( media-gfx/renderdoc )
+		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="
+	nls? ( ~dev-qt/qttranslations-${PV}:6 )
+	wayland? ( ~dev-qt/qtwayland-${PV}:6 )
+"
+
+PATCHES=(
+	"${FILESDIR}"/${PN}-6.5.2-hppa-forkfd-grow-stack.patch
+	"${FILESDIR}"/${PN}-6.5.2-no-symlink-check.patch
+	"${FILESDIR}"/${PN}-6.6.1-forkfd-childstack-size.patch
+	"${FILESDIR}"/${PN}-6.6.3-gcc14-avx512fp16.patch
+	"${FILESDIR}"/${PN}-6.6.3-pkgconf-deps.patch
+	"${FILESDIR}"/${PN}-6.7.0-qspan-ifdef.patch
+	"${FILESDIR}"/${PN}-6.7.0-CVE-2024-33861.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
+
+		# workaround for __extendhfxf2 being used for tst_qfloat16.cpp
+		# which is unavailable with compiler-rt (assume used if clang)
+		if tc-is-clang; then
+			sed -e '/add_subdirectory(qfloat16)/d' \
+				-i tests/auto/corelib/global/CMakeLists.txt || die
+		fi
+	fi
+}
+
+src_configure() {
+	local mycmakeargs=(
+		-DBUILD_WITH_PCH=OFF
+
+		-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_UNITY_BUILD=ON # ~30% faster build, affects other dev-qt/* too
+
+		-DQT_FEATURE_relocatable=OFF #927691
+		$(qt_feature ssl openssl)
+		$(qt_feature ssl openssl_linked)
+		$(qt_feature udev libudev)
+		$(qt_feature zstd)
+
+		# qtcore
+		$(qt_feature icu)
+
+		# tools
+		-DQT_FEATURE_androiddeployqt=OFF
+
+		# modules
+		$(qt_feature concurrent)
+		$(qt_feature dbus)
+		$(qt_feature gui)
+		$(qt_feature network)
+		$(qt_feature sql)
+		# trivial, and is often needed (sometimes even when not building tests)
+		-DQT_FEATURE_testlib=ON
+		$(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 libinput)
+		$(qt_feature renderdoc graphicsframecapture)
+		$(qt_feature tslib)
+		$(qt_feature vulkan)
+		$(qt_feature wayland)
+		$(qt_feature widgets)
+		-DINPUT_opengl=$(usex opengl $(usex gles2-only es2 desktop) no)
+		-DQT_FEATURE_system_textmarkdownreader=OFF # TODO?: package md4c
+	) && use widgets && mycmakeargs+=(
+		# note: qtprintsupport is enabled w/ gui+widgets regardless of USE=cups
+		$(qt_feature cups)
+		$(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
+		-DQT_FEATURE_sql_mimer=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)
+	)
+
+	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
+				$(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
+		# similarly broken when relocatable=OFF (bug #927691)
+		tst_qapplication
+		tst_qt_cmake_create
+		tst_uic
+		# 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
+		# fails with sandbox
+		tst_qsharedmemory
+		# typical to lack SCTP support on non-generic kernels
+		tst_qsctpsocket
+		# randomly fails without -j1, and not worth it over this (bug #916181)
+		tst_qfiledialog{,2}
+		# may randomly hang+timeout, perhaps related to -j as well
+		tst_qtimer
+		# these can be flaky depending on the environment/toolchain
+		tst_qlogging # backtrace log test can easily vary
+		tst_q{,raw}font # affected by available fonts / settings (bug #914737)
+		tst_qprinter # checks system's printers (bug #916216)
+		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
+		# similarly, but on armv7 and potentially others (bug #914028)
+		tst_qlineedit
+		tst_qpainter
+		# likewise, known failing on BE arches (bug #914033,914371,918878)
+		tst_qimagereader
+		tst_qimagewriter
+		tst_qpluginloader
+		tst_quuid # >=6.6.2 had related fixes, needs retesting
+		# partially broken on llvm-musl, needs looking into but skip to have
+		# a baseline for regressions (rest of dev-qt still passes with musl)
+		$(usev elibc_musl '
+			tst_qicoimageformat
+			tst_qimagereader
+			tst_qimage
+			tst_qprocess
+		')
+		# fails due to hppa's NaN handling, needs looking into (bug #914371)
+		$(usev hppa '
+			tst_qcborvalue
+			tst_qnumeric
+		')
+		# bug #914033
+		$(usev sparc '
+			tst_qbuffer
+			tst_qprocess
+			tst_qtconcurrentiteratekernel
+		')
+		# 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
+}
-- 
cgit v1.2.3