repo/gentoo:master commit in: dev-qt/qtwebengine/

"Ionen Wolkens" <[email protected]>
Newsgroups gmane.linux.gentoo.cvs
Message-ID <1787053950.37dc01dc2f5d9464243efbf6b7218e6d1368613c.ionen@gentoo>
commit:     37dc01dc2f5d9464243efbf6b7218e6d1368613c
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Tue Aug 18 11:17:18 2026 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Tue Aug 18 11:52:30 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=37dc01dc

dev-qt/qtwebengine: add 6.11.2

Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 dev-qt/qtwebengine/Manifest                  |   1 +
 dev-qt/qtwebengine/qtwebengine-6.11.2.ebuild | 368 +++++++++++++++++++++++++++
 2 files changed, 369 insertions(+)

diff --git a/dev-qt/qtwebengine/Manifest b/dev-qt/qtwebengine/Manifest
index 422dbe638302..9dd92e9f5bec 100644
--- a/dev-qt/qtwebengine/Manifest
+++ b/dev-qt/qtwebengine/Manifest
@@ -1,3 +1,4 @@
 DIST qtwebengine-6.11-patchset-4.tar.xz 8448 BLAKE2B d4c32aa9db77f3d995cc6bec127af2658ec4080de3816ba19e5b7df71cb93e12962649878b59de4ea9ad6c2cd38848085115cbf36afc072e4afba1b2e99f673e SHA512 f95979d1814314ff365dbba9aee6c7659ffd95a2e304e80e716e80ed5d069304f00d7bc96f00be6a9dbd7d232f07927fe4b231f56bc2b37f650e63430615b115
 DIST qtwebengine-6.11-patchset-5.tar.xz 8460 BLAKE2B 323dff4e52c54ba2f914d225b03a66fc41d08dbd34af69ab9b81ab71a89ec37fb97a3bdd3382ab7e62898ee81ec68da54e19355055d2545caaa7589a22397ed7 SHA512 b6460d3c00aea02cf4817fb8bc63d1f2827095948cb5a3d9f35172101b226115bd2a5f2edc32eae78fe185e30bf8f506c22a48088316ac1b3b2f82ced4474613
 DIST qtwebengine-everywhere-src-6.11.1.tar.xz 578914356 BLAKE2B 2ebaa0a5ee50962c9d8d51bb0cae2457050ebf28c99468ff797a8884836b34feefa583f92791208e8012b8f273c49ea5926e021b0e45fa733d33f8e0e2511500 SHA512 145c55b5288766a94d51f5c8f1a28537d2c9a9c368f55d9b9e7a67ba07a0d43335f65759e41f76528a7ddd78a86deca38fbe407876fc5a322a326dd7f6e56fc2
+DIST qtwebengine-everywhere-src-6.11.2.tar.xz 580351104 BLAKE2B f2e0fd73ab00e8ee85ef8395d226545795912e849e1e80cf34776bca63fd1f5025271e141d083637cc360e5e33015520f3051430944ff792e40fa508c441f5d4 SHA512 1bb67ca80ed8daf4fab2ac4afe8261903175b9685e499a73dfb1432f5dda39c15c299ca2e0f9681dbac9b92a0cc185b14890036301bebabe8134074350c164ea

diff --git a/dev-qt/qtwebengine/qtwebengine-6.11.2.ebuild b/dev-qt/qtwebengine/qtwebengine-6.11.2.ebuild
new file mode 100644
index 000000000000..dcdeee9be798
--- /dev/null
+++ b/dev-qt/qtwebengine/qtwebengine-6.11.2.ebuild
@@ -0,0 +1,368 @@
+# 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/[email protected]/${PN}-6.11-patchset-5.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/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 )
+	!bindist? ( >=media-libs/openh264-2.4:= )
+	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
+	"${FILESDIR}"/${PN}-6.11.1-musl-missing-includes.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 !bindist webengine_system_openh264) # no bundled either
+		$(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_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 \
+			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."
+}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.