diff --git a/Mk/Uses/qt-dist.mk b/Mk/Uses/qt-dist.mk index 1d16f2f5371f..9b0b4d5ee08e 100644 --- a/Mk/Uses/qt-dist.mk +++ b/Mk/Uses/qt-dist.mk @@ -1,550 +1,550 @@ # There are three Qt related USES files with different access to Qt. # - qmake: The port requires Qt's qmake to build -- creates the configure target # - auto includes qt.mk # - qt-dist: The port is a port for a part of Qt # - auto includes qt.mk # - qt.mk - Dependency handling. USE_QT=foo bar # # # Usage # qt-dist:[,yes|modulename] # # MAINTAINER: kde@FreeBSD.org .if !defined(_QT_DIST_MK_INCLUDED) _QT_DIST_MK_INCLUDED= qt-dist.mk # Suck in qt.mk and qmake.mk qt_ARGS?= # empty .include "${USESDIR}/qt.mk" qmake_ARGS?= # empty .include "${USESDIR}/qmake.mk" # Supported distribution arguments _COMMON_DISTS= 3d base charts connectivity datavis3d declarative imageformats location multimedia \ networkauth quick3d quicktimeline remoteobjects scxml sensors \ serialbus serialport speech svg tools translations virtualkeyboard \ wayland webchannel webengine websockets webview _QT5_DISTS= gamepad graphicaleffects quickcontrols \ quickcontrols2 script webglplugin \ x11extras xmlpatterns _QT6_DISTS= 5compat coap doc graphs httpserver languageserver lottie positioning \ quick3dphysics quickeffectmaker shadertools _QT_DISTS= ${_COMMON_DISTS} \ ${_QT${_QT_VER}_DISTS} # We only accept one item as an argument. The fetch target further below works # around this. _QT_DIST= # empty . for dist in ${_QT_DISTS:O:u} . if ${qt-dist_ARGS:M${dist}} . if empty(_QT_DIST) _QT_DIST= ${dist} . else IGNORE= cannot be installed: different Qt dists specified via qt-dist:[${qt-dist_ARGS:S/ /,/g}] . endif . endif . endfor # Fall back to sensible defaults for _QT_DIST . if empty(_QT_DIST) _QT_DIST= ${PORTNAME} # don't force qt-dist to be set for Qt5 ports which 75% of time are ${PORTNAME} . endif # Check validitiy . if empty(_QT_DISTS:M${_QT_DIST}) IGNORE= Unsupported qt-dist ${_QT_DIST} for qt:${_QT_VER} . endif ################################################################################ # Set standard bsd.port.mk variables. LICENSE?= LGPL21 WWW?= https://www.qt.io/ . if !exists(${PKGDIR}/pkg-descr) DESCR?= ${PORTSDIR}/devel/${_QT_RELNAME}/pkg-descr . endif # Stage support. _QT5_DESTDIRNAME= INSTALL_ROOT _QT6_DESTDIRNAME= DESTDIR DESTDIRNAME= ${_QT${_QT_VER}_DESTDIRNAME} # Qt's tarballs are xz compressed. . if empty(USES:Mtar) EXTRACT_SUFX?= .tar.xz . endif # Qt5 specific master sites _QT5_MASTER_SITES_kde= LOCAL _QT5_MASTER_SITE_SUBDIR_kde= kde/KDE/Qt/${_QT_VERSION} _QT5_MASTER_SITES= ${MASTER_SITE_QT} _QT5_MASTER_SITE_SUBDIR= official_releases/qt/${_QT_VERSION:R}/${_QT_VERSION}/submodules/ # Qt6 specific master sites _QT6_MASTER_SITES= ${MASTER_SITE_QT} _QT6_MASTER_SITE_SUBDIR= official_releases/qt/${_QT_VERSION:R}/${_QT_VERSION}/submodules \ official_releases/additional_libraries/${_QT_VERSION:R}/${_QT_VERSION}/ # Qt5 specific distnames . if ${_QT_DIST} == webengine _QT5_DISTNAME= ${_QT_DIST:S,^,qt,:S,$,-everywhere-opensource-src-${DISTVERSION},} . else _QT5_DISTNAME= ${_QT_DIST:S,^,qt,:S,$,-everywhere-src-${DISTVERSION},} . endif _QT5_DISTNAME_kde= ${_QT_DIST:S,^,kde-qt,:S,$,-${DISTVERSION},} # Qt6 specific distnames _QT6_DISTNAME= ${_QT_DIST:S,^,qt,:S,$,-everywhere-src-${DISTVERSION},} # Effective master sites and distfile values # net/qt6-coap has no submodule distfile and uses USE_GITHUB . if ${_QT_DIST} != coap MASTER_SITES= ${_QT${_QT_VER}_MASTER_SITES${_KDE_${_QT_DIST}:D_kde}} MASTER_SITE_SUBDIR= ${_QT${_QT_VER}_MASTER_SITE_SUBDIR${_KDE_${_QT_DIST}:D_kde}} DISTNAME= ${_QT${_QT_VER}_DISTNAME${_KDE_${_QT_DIST}:D_kde}} DISTFILES= ${DISTNAME:S,$,${EXTRACT_SUFX},} . endif DIST_SUBDIR= KDE/Qt/${_QT_VERSION} . if ${_QT_VER:M5} # KDE maintains a repository with a patched Qt5 distribution. _KDE_3d= 0 -_KDE_base= 148 +_KDE_base= 142 _KDE_charts= 0 -_KDE_connectivity= 6 +_KDE_connectivity= 4 _KDE_datavis3d= 0 -_KDE_declarative= 32 +_KDE_declarative= 30 _KDE_gamepad= 0 _KDE_graphicaleffects= 0 -_KDE_imageformats= 12 +_KDE_imageformats= 7 _KDE_location= 6 _KDE_multimedia= 2 _KDE_networkauth= 0 _KDE_quick3d= 1 _KDE_quickcontrols= 0 _KDE_quickcontrols2= 5 _KDE_quicktimeline= 0 _KDE_remoteobjects= 0 _KDE_script= 0 _KDE_script_ORIGIN_TAG= v5.15.16-lts _KDE_script_VERSION= 5.15.16 _KDE_scxml= 0 _KDE_sensors= 0 _KDE_serialbus= 0 _KDE_serialport= 0 _KDE_speech= 1 _KDE_svg= 6 _KDE_tools= 4 _KDE_translations= 0 _KDE_virtualkeyboard= 0 _KDE_wayland= 60 _KDE_webchannel= 3 -_KDE_webengine= 5 +_KDE_webengine= 9 _KDE_webengine_BRANCH= 5.15 _KDE_webengine_ORIGIN_TAG= v5.15.16-lts _KDE_webengine_VERSION= 5.15.16 _KDE_webglplugin= 0 _KDE_websockets= 2 _KDE_webview= 0 _KDE_x11extras= 0 _KDE_xmlpatterns= 0 . if defined(_KDE_${_QT_DIST}) . if defined(_KDE_${_QT_DIST}_ORIGIN_TAG) _KDE_${_QT_DIST}_BRANCH?= ${_KDE_${_QT_DIST}_VERSION} . else _KDE_${_QT_DIST}_BRANCH= kde/5.15 COMMENT+= (KDE patched) . endif QT5_KDE_PATCH= p${_KDE_${_QT_DIST}} _KDE_${_QT_DIST}_VERSION?= ${_QT_VERSION} _KDE_${_QT_DIST}_ORIGIN_TAG?= v${_KDE_${_QT_DIST}_VERSION}-lts-lgpl . else QT5_KDE_PATCH= # . endif . endif # ${_QT_VER:M5} # Environment setup for Qt5 . if ${_QT_VER:M5} # Qt (at least when used with qmake) has a tendency to overlink: some libraries # have dependencies on others in the mkspec configurations and the latter are # always passed to the linker even if they are not actually used. By passing # --as-needed to the linker by default when building the Qt ports we do not # have to declare a lot of unnecessary dependencies in USE_QT5. LDFLAGS+= -Wl,--as-needed . if ${_QT_DIST} == "base" && ${PORTNAME} != "qmake" # Qt configure requires pkg-config to detect dependencies. .include "${USESDIR}/pkgconfig.mk" . endif # -nomake is only used by qtbase's configure script. # Other ports from other Qt modules will automatically build examples and # tests if the directories exist because of mkspecs/features/qt_parts.prf. EXTRACT_AFTER_ARGS?= ${DISTNAME:S,$,/examples,:S,^,--exclude ,} \ ${DISTNAME:S,$,/tests,:S,^,--exclude ,} \ --no-same-owner --no-same-permissions . endif # ! ${_QT_VER:M5} # Build setup for Qt6 . if ${_QT_VER:M6} CMAKE_ARGS+= -DCMAKE_INSTALL_PREFIX=${PREFIX} \ -DINSTALL_BINDIR=${PREFIX}/${QT_BINDIR_REL} \ -DINSTALL_PUBLICBINDIR=${PREFIX}/bin \ -DINSTALL_LIBDIR=${PREFIX}/${QT_LIBDIR_REL} \ -DINSTALL_LIBEXECDIR=${PREFIX}/${QT_LIBEXECDIR_REL} \ -DINSTALL_DOCDIR=${PREFIX}/${QT_DOCDIR_REL} \ -DINSTALL_ARCHDATADIR=${PREFIX}/${QT_ARCHDIR_REL} \ -DINSTALL_DATADIR=${PREFIX}/${QT_DATADIR_REL} \ -DINSTALL_INCLUDEDIR=${PREFIX}/${QT_INCDIR_REL} \ -DINSTALL_MKSPECSDIR=${PREFIX}/${QT_MKSPECDIR_REL} \ -DINSTALL_EXAMPLESDIR=${PREFIX}/${QT_EXAMPLEDIR_REL} \ -DINSTALL_DESCRIPTIONSDIR=${PREFIX}/${QT_DESCRIPTIONSDIR_REL} \ -DQT_QMAKE_TARGET_MKSPEC:String=freebsd-clang \ --log-level=TRACE . endif # Build setup for Qt5 . if ${_QT_VER:M5} CONFIGURE_ENV+= MAKE="${MAKE:T}" CONFIGURE_ARGS+= -opensource -confirm-license \ -no-pch \ -prefix ${PREFIX} \ -bindir ${PREFIX}/${QT_BINDIR_REL} \ -headerdir ${PREFIX}/${QT_INCDIR_REL} \ -libdir ${PREFIX}/${QT_LIBDIR_REL} \ -plugindir ${PREFIX}/${QT_PLUGINDIR_REL} \ -importdir ${PREFIX}/${QT_IMPORTDIR_REL} \ -datadir ${PREFIX}/${QT_DATADIR_REL} \ -docdir ${PREFIX}/${QT_DOCDIR_REL} \ -translationdir ${PREFIX}/${QT_L10NDIR_REL} \ -sysconfdir ${PREFIX}/${QT_ETCDIR_REL} \ -nomake examples -nomake tests \ -platform ${QMAKESPECNAME} \ -archdatadir ${PREFIX}/${QT_ARCHDIR_REL} \ -libexecdir ${PREFIX}/${QT_LIBEXECDIR_REL} \ -qmldir ${PREFIX}/${QT_QMLDIR_REL} \ -examplesdir ${PREFIX}/${QT_EXAMPLEDIR_REL} \ -testsdir ${PREFIX}/${QT_TESTDIR_REL} . if ${ARCH} == i386 && empty(MACHINE_CPU:Msse2) CONFIGURE_ARGS+= -no-sse2 . endif # Work around a bug in current binutils, where the gold linker creates # duplicate symbols. See pr 218187. Disable the gold-linker for Qt5 ports. CONFIGURE_ARGS+= -no-use-gold-linker # Pass -recheck-all so that multiple calls to the configure script really # re-run all checks. CONFIGURE_ARGS+= -recheck-all . endif # ${_QT_VER:M5} . if defined(WANT_QT_DEBUG) || defined(WITH_DEBUG) WITH_DEBUG= yes STRIP= # It's done prior to bsd.qt.mk inclusion. CONFIGURE_ARGS+= -debug -separate-debug-info # Override configuration in global qconfig.pri. QMAKE_ARGS+= QT_CONFIG+="debug separate_debug_info" \ QT_CONFIG-="release" . else CONFIGURE_ARGS+= -release -no-separate-debug-info QMAKE_ARGS+= QT_CONFIG+="release" \ QT_CONFIG-="debug separate_debug_info" . endif # defined(WANT_QT_DEBUG) || defined(WITH_DEBUG) . if defined(WANT_QT_VERBOSE_CONFIGURE) CONFIGURE_ARGS+= -verbose . endif . if ${_QT_DIST} == "base" _EXTRA_PATCHES_QT5= ${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-mkspecs_features_create__cmake.prf \ ${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-mkspecs_features_qt__module.prf \ ${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-mkspecs_common_bsd_bsd.conf \ ${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-mkspecs_freebsd-clang_qmake.conf . if ${ARCH:Mmips*} || (${ARCH:Mpowerpc*} && !exists(/usr/bin/clang)) _EXTRA_PATCHES_QT5+= ${PORTSDIR}/devel/${_QT_RELNAME}/files/extra-patch-mkspecs_common_g++-base.conf \ ${PORTSDIR}/devel/${_QT_RELNAME}/files/extra-patch-mkspecs_common_gcc-base.conf \ ${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-mkspecs_freebsd-g++_qmake.conf USE_GCC= yes . elif ${ARCH} == armv7 || ${ARCH} == powerpc _EXTRA_PATCHES_QT5+= ${PORTSDIR}/devel/${_QT_RELNAME}/files/extra-patch-mkspecs_common_g++-base.conf \ ${PORTSDIR}/devel/${_QT_RELNAME}/files/extra-patch-mkspecs_common_gcc-base.conf \ ${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-mkspecs_freebsd-g++_qmake.conf . endif . if ${_QT_VER:M5} EXTRA_PATCHES?= ${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-configure \ ${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-sync.profiles \ ${_EXTRA_PATCHES_QT5} . endif # ${_QT_VER:M5} . endif # ${_QT_DIST} == "base" # Override settings installed in qconfig.h and *.pri files. The flags will be # installed along with the port, but have to be passed as arguments while # building the port itself. Flags prefixed with "-" (e.g., "-CUPS" and "-cups") # are needed to disable some features. . if !defined(${QT_MODNAME}) || empty(${QT_MODNAME}) # Used for both qconfig-*.h and qt_config_*.pri; it can't be empty. QT_MODNAME= ${PORTNAME} . endif QT_DEFINES?= # For qconfig.h flags (without "QT_" prefix). QT_CONFIG?= # For *.pri files QT_CONFIG flags. . if ${QT_DEFINES} QMAKE_ARGS+= DEFINES+="${QT_DEFINES:O:u:C/^([^-])/QT_\1/:C/^-/QT_NO_/:O}" . endif # ${QT_DEFINES} PKGDEINSTALL= ${WRKDIR}/pkg-deinstall PKGINSTALL= ${WRKDIR}/pkg-install . if ${QT_CONFIG:N-*} QMAKE_ARGS+= QT_CONFIG+="${QT_CONFIG:N-*:O:u}" . endif . if ${QT_CONFIG:M-*} QMAKE_ARGS+= QT_CONFIG-="${QT_CONFIG:M-*:O:u:C/^-//}" . endif PLIST_SUB+= SHORTVER=${_QT_VERSION:R} \ FULLVER=${_QT_VERSION:C/-.*//} . if defined(WITH_DEBUG) PLIST_SUB+= DEBUG="" \ NO_DEBUG="@comment " . else PLIST_SUB+= DEBUG="@comment " \ NO_DEBUG="" . endif # Handle additional PLIST directories, which should only be used for Qt-dist ports. . for dir in ETC # Export QT_ETCDIR. PLIST_SUB+= QT_${dir}DIR="${QT_${dir}DIR_REL}" . endfor . if ${_QT_VER:M5} . for dir in CMAKE # Export QT_CMAKEDIR. PLIST_SUB+= QT_${dir}DIR="${QT_${dir}DIR_REL}" . endfor . endif . if ${_QT_VER:M5} . if ${_QT_DIST} == "base" # qtbase requires some tools to be symlinked to the build directory. _QT_TOOLS= # empty . if ${PORTNAME} != "qmake" _QT_TOOLS+= ${QMAKE} . endif . if ${PORTNAME} != "buildtools" _QT_TOOLS+= ${MOC} ${RCC} . endif . if ${PORTNAME} != "qdoc" _QT_TOOLS+= qdoc . endif . if ${PORTNAME} != "dbus" _QT_TOOLS+= qdbuscpp2xml qdbusxml2cpp . endif . if ${PORTNAME} != "widgets" _QT_TOOLS+= ${UIC} . endif # The list of QtBase components that need to be linked into WRKSRC/lib for # other QtBase ports. See below. _QT5_BASE= core dbus gui network sql widgets _QT5_ADDITIONAL_LINK?= # Ensure definition . if ${_QT_VER:M5} post-patch: gcc-post-patch gcc-post-patch: ${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|g' \ ${WRKSRC}/mkspecs/common/gcc-base.conf \ ${WRKSRC}/mkspecs/freebsd-g++/qmake.conf ${REINPLACE_CMD} 's|%%GCC_DEFAULT%%|${GCC_DEFAULT}|g' \ ${WRKSRC}/mkspecs/common/gcc-base.conf \ ${WRKSRC}/mkspecs/common/g++-base.conf \ ${WRKSRC}/mkspecs/common/bsd/bsd.conf \ ${WRKSRC}/mkspecs/freebsd-g++/qmake.conf . endif pre-configure: qtbase-pre-configure qtbase-pre-configure: . for tool in ${_QT_TOOLS} @${TEST} -e ${QT_BINDIR}/${tool:T} && \ ${LN} -sf ${QT_BINDIR}/${tool:T} ${CONFIGURE_WRKSRC}/bin/${tool:T} || \ ${TRUE} . endfor # The following is a fix for the inplace upgrade problem we faced (see # QTBUG-40825 and ports bugs 194088, 195105 and 198720) previously, # which previously was adressed by making sure, that ${LOCALBASE}/lib, which # would often gets added by pkgconf for the dependencies, was passed after # ${WRKSRC}/lib. # * We fix the inplace upgrade problem by moving the Qt5 libraries into # ${LOCALBASE}/lib/qt5. Therefore a -L${LOCALBASE}/lib does no harm anymore. # * However, this means, that the ports belonging to the split up QtBase package # now no longer can find their depending QtBase libraries. We fix this by # linking these into ${CONFIGURE_WRKSRC}/lib if the given QtBase port depends # on them. . if ${_QT_DIST:Mbase} . for basedep in ${_QT5_BASE} . if ! empty(USE_QT:M${basedep}) ${LN} -sf ${QT_LIBDIR}/${${basedep}_LIB} ${CONFIGURE_WRKSRC}/lib . endif . endfor . endif # # **** THIS PART IS OBSOLETE FOR THE NEXT QT UPGRADE **** # # Add ${LOCALBASE}/lib to DEFAULT_LIBDIRS, which we use to filter out # certain paths from pkg-config calls (see the explanation in # devel/qt5/files/patch-configure) as well as for setting # QMAKE_DEFAULT_LIBDIR in mkspecs/qconfig.pri. Part of the solution for # ports/194088. post-patch: qtbase-post-patch qtbase-post-patch: ${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \ ${WRKSRC}/mkspecs/common/bsd/bsd.conf \ ${WRKSRC}/mkspecs/freebsd-clang/qmake.conf . if ${PORTNAME} != "qmake" _QMAKE= ${CONFIGURE_WRKSRC}/bin/qmake . endif . endif pre-configure: qt5-pre-configure qt5-pre-configure: # Qt 5.3.2 introduced a check in mkspecs/features/create_cmake.prf that # requires tests/auto/cmake to be present, otherwise the configure stage will # fail. # Since we cannot extract tests/auto/cmake/ and exclude tests/ at the same # time, we have to disable the check in a cache file (the only way to get this # value through to the configure script in qtbase). ${MKDIR} ${CONFIGURE_WRKSRC} ${ECHO_CMD} 'CMAKE_MODULE_TESTS = -' > ${CONFIGURE_WRKSRC}/.qmake.cache # configure will run syncqt.pl if it finds a .git entry in the working directory touch ${WRKSRC}/.git # As the patch collection was created after a version bump, all module verisions # are tagged as 5.15.3 touch ${WRKSRC}/.qmake.conf # easier than to -f before the sed ${REINPLACE_CMD} -e '/MODULE_VERSION/s|5\.15\.\([0-9]*\)|${_QT_VERSION}|g' \ ${WRKSRC}/.qmake.conf # **** THIS PART IS OBSOLETE FOR THE NEXT QT UPGRADE **** # # We piggyback on QMAKE_LIBDIR_FLAGS to make sure -L${WRKSRC}/lib is passed to # the linker before -L/usr/local/lib. By default, the opposite happens, which # is a problem when a Qt port is being upgraded, since an existing library # would end up being picked up instead of those built in ${WRKSRC}/lib. Since # qmake appends the value of QMAKE_LIBDIR to QMAKE_LIBDIR_FLAGS, we can use the # latter to get the linker path order right. qmake is smart enough to strip # occurrences of ${WRKSRC}/lib from .pc and .prl files when installing them. # See QTBUG-40825 and ports bugs 194088, 195105 and 198720. ${ECHO_CMD} 'QMAKE_LIBDIR_FLAGS = -L${CONFIGURE_WRKSRC}/lib' >> ${CONFIGURE_WRKSRC}/.qmake.cache ${ECHO_CMD} 'QMAKE_DEFAULT_LIBDIRS += ${LOCALBASE}/lib /usr/lib /lib' >> ${CONFIGURE_WRKSRC}/.qmake.cache ${ECHO_CMD} 'QMAKE_DEFAULT_INCDIRS += ${LOCALBASE}/include /usr/include' >> ${CONFIGURE_WRKSRC}/.qmake.cache # Allow linking of further libraries to the configure directory. . if !empty(_QT5_ADDITIONAL_LINK) . for dep in ${_QT5_ADDITIONAL_LINK} ${MKDIR} ${CONFIGURE_WRKSRC}/lib . if ! empty(USE_QT:M${dep}) ${LN} -sf ${QT_LIBDIR}/${qt-${dep}_LIB} ${CONFIGURE_WRKSRC}/lib . endif . endfor . endif . if ${QT_DEFINES:N-*} # There **are** defines, so we need to **add** this port to the # qconfig-modules.h header; make @need_add empty and comment out # the @need_remove lines in the script (see below in qt-post-install). # If there are no defines, do it the other way around. _sub_need_add= _sub_need_remove= \#\# . else _sub_need_add= \#\# _sub_need_remove= . endif # If a port installs Qt version-specific binaries (e.g. "designer" which # existed as a Qt4 application and exists as a Qt5 application and will # probably be a Qt6 application) the port should set `QT_BINARIES=yes`. . if defined(QT_BINARIES) _sub_need_bin= . else _sub_need_bin= \#\# . endif . if ${QT_MODNAME} == core # QtCore (e.g. devel/qt5-core) is the one that starts the header, # and is also the one that can clean it up when deinstalled. _sub_need_clean= . else _sub_need_clean= \#\# . endif # The Qt modules have an install- and deinstall-step for wrangling # the qconfig-modules.h header, but qmake does not. . if ${PORTNAME} != "qmake" post-install: qt-post-install . endif # PORTNAME != qmake qt-post-install: # We can't use SUB_FILES with the shared pkg-change.in. # We need it to be a script instead of a group of @unexecs. # Do two steps of processing -- introducing the Qt variables, # and replacing the @tags with comment (or nothing) characters # according to the port's settings -- in one sed and write # to pkg-change.tmp. Then split it up and minify for the # install and deinstall step. @${SED} -e 's,%%QT_MODNAME%%,${QT_MODNAME},g' \ -e 's,%%QT_INCDIR%%,${QT_INCDIR},g' \ -e 's,@need_add,${_sub_need_add},' \ -e 's,@need_remove,${_sub_need_remove},' \ -e 's,@need_clean,${_sub_need_clean},' \ -e 's,@need_bin,${_sub_need_bin},' \ ${PORTSDIR}/devel/${_QT_RELNAME}/${FILESDIR:T}/pkg-change.in > \ ${WRKDIR}/pkg-change.tmp @${SED} -e 's,@install,,' -e 's,@deinstall,##,' ${WRKDIR}/pkg-change.tmp | ${SED} -e '/##/d' > ${PKGINSTALL} @${SED} -e 's,@install,##,' -e 's,@deinstall,,' ${WRKDIR}/pkg-change.tmp | ${SED} -e '/##/d' > ${PKGDEINSTALL} # Drop all leading spaces in the script, to minify @${REINPLACE_CMD} 's/^ *//' ${PKGINSTALL} ${PKGDEINSTALL} . if ${QT_DEFINES:N-*} @${MKDIR} ${STAGEDIR}${QT_INCDIR}/QtCore/modules @${ECHO_CMD} -n \ > ${STAGEDIR}${QT_INCDIR}/QtCore/modules/qconfig-${QT_MODNAME}.h . for def in ${QT_DEFINES:N-*:O:u:C/=.*$//} @${ECHO_CMD} "#if !defined(QT_${def}) && !defined(QT_NO_${def})" \ >> ${STAGEDIR}${QT_INCDIR}/QtCore/modules/qconfig-${QT_MODNAME}.h ${ECHO_CMD} "# define QT_${def}" \ >> ${STAGEDIR}${QT_INCDIR}/QtCore/modules/qconfig-${QT_MODNAME}.h @${ECHO_CMD} "#endif" \ >> ${STAGEDIR}${QT_INCDIR}/QtCore/modules/qconfig-${QT_MODNAME}.h @${ECHO_CMD} \ >> ${STAGEDIR}${QT_INCDIR}/QtCore/modules/qconfig-${QT_MODNAME}.h . endfor @${ECHO_CMD} "${PREFIX}/${QT_INCDIR_REL}/QtCore/modules/qconfig-${QT_MODNAME}.h" \ >> ${TMPPLIST} . endif # ${QT_DEFINES:N-*} . if ${QT_CONFIG:N-*} @${MKDIR} ${STAGEDIR}${QT_MKSPECDIR}/modules ${ECHO_CMD} "QT_CONFIG += ${QT_CONFIG:N-*:O:u}" \ > ${STAGEDIR}${QT_MKSPECDIR}/modules/qt_config_${QT_MODNAME}.pri @${ECHO_CMD} "${PREFIX}/${QT_MKSPECDIR_REL}/modules/qt_config_${QT_MODNAME}.pri" \ >> ${TMPPLIST} . endif # ${QT_CONFIG:N-*} . endif # M5 . if ${_QT_VER:M6} post-stage: qt6-post-stage # Clean-up of empty directories, as we install # * cmake to ${LOCALBASE}/lib/cmake not ${QT_LIBDIR}/cmake. # * pkgconfig to ${LOCALBASE}/libexec/pkgconfig not ${QT_LIBDIR}/pkgconfig qt6-post-stage: ${RM} -r ${STAGEDIR}${QT_LIBDIR}/cmake ${RM} -r ${STAGEDIR}${QT_LIBDIR}/pkgconfig . endif qt-create-kde-distfile: ${MKDIR} ${DISTDIR}/${DIST_SUBDIR} ${SH} ${PORTSDIR}/devel/${_QT_RELNAME}/files/create_kde-qt_release.sh \ ${_QT_DIST} \ ${DISTDIR}/${DIST_SUBDIR} \ ${_KDE_${_QT_DIST}_VERSION} \ ${_KDE_${_QT_DIST}_ORIGIN_TAG} \ ${_KDE_${_QT_DIST}_BRANCH} .endif # defined(_QT_DIST_MK_INCLUDED) diff --git a/Mk/Uses/qt.mk b/Mk/Uses/qt.mk index 91b8597788db..1a6178b62d1b 100644 --- a/Mk/Uses/qt.mk +++ b/Mk/Uses/qt.mk @@ -1,467 +1,467 @@ # There are three Qt related USES files with different access to Qt. # - qmake: The port requires Qt's qmake to build -- creates the configure target # - auto includes qt.mk # - qt-dist: The port is a port for a part of Qt # - auto includes qt.mk and qmake.mk # - qt.mk - Dependency handling. USE_QT=foo bar # # Usage: # USES=qt:[,no_env] # # Versions: 5, 6 # # Port variables: # USE_QT - List of Qt modules to depend on, with optional ':build' # and ':run' suffixes. Define it empty to include this file # without depending on Qt ports. # # MAINTAINER: kde@FreeBSD.org .if !defined(_QT_MK_INCLUDED) _QT_MK_INCLUDED= qt.mk # Qt versions currently supported by the framework. _QT_SUPPORTED?= 5 6 -QT5_VERSION?= 5.15.12 +QT5_VERSION?= 5.15.13 QT6_VERSION?= 6.6.3 PYSIDE6_VERSION?= 6.6.2 # We accept the Qt version to be passed by either or all of the three mk files. . if empty(qt_ARGS) && empty(qmake_ARGS) && empty(qt-dist_ARGS) IGNORE= qt needs a version (${_QT_SUPPORTED}) passed via qt, qmake or qt-dist. . endif # Gather all the args together _QT_GLOBAL_ARGS= ${qt_ARGS} ${qmake_ARGS} ${qt-dist_ARGS} # Check fo the Qt version to be used _QT_VER= # empty . for ver in ${_QT_SUPPORTED:O:u} . if ${_QT_GLOBAL_ARGS:M${ver}} . if !defined(_QT_VERSION) _QT_VER= ${ver} . else . if ${_QT_VERSION} != ${ver} IGNORE?= cannot be installed: different Qt versions specified via qt:[${_QT_SUPPORTED:S/ //g}], qmake:[${_QT_SUPPORTED:S/ //g}] a qt-dist:[${_QT_SUPPORTED:S/ //g}] . endif . endif . endif . endfor . if empty(_QT_VER) IGNORE?= cannot decide what Qt version to use: specify one via qt:[${_QT_SUPPORTED:S/ //g}], qmake:[${_QT_SUPPORTED:S/ //g}] or qt-dist:[${_QT_SUPPORTED:S/ //g}] . endif # Set the shortcuts used from now on _QT_RELNAME= qt${_QT_VER} _QT_VERSION= ${QT${_QT_VER}_VERSION} QT_BINDIR_REL?= ${QT_ARCHDIR_REL}/bin QT_INCDIR_REL?= include/${_QT_RELNAME} QT_LIBDIR_REL?= lib/${_QT_RELNAME} QT_ARCHDIR_REL?= ${QT_LIBDIR_REL} QT_PLUGINDIR_REL?= ${QT_ARCHDIR_REL}/plugins QT_DESCRIPTIONSDIR_REL?=${QT_DATADIR_REL}/modules QT_LIBEXECDIR_REL?= libexec/${_QT_RELNAME} QT_IMPORTDIR_REL?= ${QT_ARCHDIR_REL}/imports QT_QMLDIR_REL?= ${QT_ARCHDIR_REL}/qml QT_DATADIR_REL?= share/${_QT_RELNAME} QT_DOCDIR_REL?= share/doc/${_QT_RELNAME} QT_L10NDIR_REL?= ${QT_DATADIR_REL}/translations QT_ETCDIR_REL?= etc/xdg QT_EXAMPLEDIR_REL?= share/examples/${_QT_RELNAME} QT_TESTDIR_REL?= ${QT_DATADIR_REL}/tests QT_CMAKEDIR_REL?= lib/cmake _QT5_TOOLDIR_REL= ${QT_BINDIR_REL} _QT6_TOOLDIR_REL= ${QT_LIBEXECDIR_REL} QT_TOOLDIR_REL= ${_QT${_QT_VER}_TOOLDIR_REL} # Not customizable. QT_MKSPECDIR_REL= ${QT_ARCHDIR_REL}/mkspecs _QT_LIBVER= ${_QT_VERSION:R:R} LCONVERT?= ${QT_BINDIR}/lconvert LRELEASE?= ${QT_BINDIR}/lrelease LUPDATE?= ${QT_BINDIR}/lupdate MOC?= ${QT_TOOLDIR}/moc RCC?= ${QT_TOOLDIR}/rcc UIC?= ${QT_TOOLDIR}/uic QMAKE?= ${QT_BINDIR}/qmake QCOLLECTIONGENERATOR?= ${QT_TOOLDIR}/qcollectiongenerator QHELPGENERATOR?= ${QT_TOOLDIR}/qhelpgenerator # Needed to redefine the qmake target for internal Qt configuration. _QMAKE?= ${QMAKE} QMAKESPECNAME?= freebsd-${QMAKE_COMPILER} QMAKESPEC?= ${QT_MKSPECDIR}/${QMAKESPECNAME} # The whole Qt distribution should be built with the same compiler, but it's # better to support custom settings. Dereferencing the detection allows to # avoid forking a shell on each inclusion of this file, and to catch any CXX # customization (via USE_GCC, etc.). QMAKE_COMPILER= $$(ccver="$$(${CXX} --version)"; case "$$ccver" in *clang*) echo clang ;; *) echo g++ ;; esac) . for dir in BIN INC LIB ARCH PLUGIN LIBEXEC IMPORT \ QML DATA DOC L10N ETC EXAMPLE TEST MKSPEC \ CMAKE TOOL QT_${dir}DIR= ${PREFIX}/${QT_${dir}DIR_REL} # Export all directories to the plist substituion for QT_DIST ports. # For the others, exclude QT_CMAKEDIR and QT_ETCDIR. . if ${dir:NCMAKE} && ${dir:NETC} PLIST_SUB+= QT_${dir}DIR="${QT_${dir}DIR_REL}" . endif . endfor # Suppress warnings from rcc about not using a UTF-8 locale. . if ${_QT_VER:M6} USE_LOCALE?= C.UTF-8 . endif CONFIGURE_ENV+= QT_SELECT=${_QT_RELNAME} MAKE_ENV+= QT_SELECT=${_QT_RELNAME} # Make sure both the installed mkspecs as well as the ones being built are # found, with the ones from the port being built having preference. CONFIGURE_ENV+= QMAKEMODULES="${WRKSRC}/mkspecs/modules:${LOCALBASE}/${QT_MKSPECDIR_REL}/modules" MAKE_ENV+= QMAKEMODULES="${WRKSRC}/mkspecs/modules:${LOCALBASE}/${QT_MKSPECDIR_REL}/modules" # Qt uses generated linker version scripts which always have a qt_version_tag # symbol, but that symbol is only defined in the main Qt shared library. For # other Qt components, this leads to lld >= 17 erroring out due to the symbol # being undefined. Supress these errors. LDFLAGS+= -Wl,--undefined-version _USES_POST+= qt .endif # _QT_MK_INCLUDED # ============================================================================= # # ============================================================================= .if defined(_POSTMKINCLUDED) && !defined(_QT_MK_POST_INCLUDED) _QT_MK_POST_INCLUDED= qt.mk # The Qt components supported by qt.mk: list of shared, and version specific ones _USE_QT_COMMON= 3d charts connectivity datavis3d declarative doc examples imageformats location \ multimedia networkauth quick3d quicktimeline remoteobjects scxml \ sensors serialbus serialport speech svg virtualkeyboard wayland \ webchannel webengine websockets webview _USE_QT5_ONLY= assistant buildtools concurrent core dbus \ declarative-test designer diag gamepad \ graphicaleffects gui help l10n linguist linguisttools \ network opengl paths pixeltool plugininfo printsupport \ qdbus qdbusviewer qdoc qdoc-data qev qmake quickcontrols \ quickcontrols2 script scripttools sql sql-mysql sql-odbc \ sql-pgsql sql-sqlite2 sql-sqlite3 sql-tds testlib uiplugin \ uitools webglplugin websockets-qml \ widgets x11extras xml xmlpatterns _USE_QT6_ONLY= 5compat base coap graphs httpserver languageserver lottie pdf positioning \ quick3dphysics quickeffectmaker shadertools tools translations \ sqldriver-sqlite sqldriver-mysql sqldriver-psql sqldriver-odbc # Dependency tuples: _LIB should be preferred if possible. qt-3d_PORT= graphics/${_QT_RELNAME}-3d qt-3d_LIB= libQt${_QT_LIBVER}3DCore.so qt-5compat_PORT= devel/${_QT_RELNAME}-5compat qt-5compat_LIB= libQt${_QT_LIBVER}Core5Compat.so qt-assistant_PORT= devel/${_QT_RELNAME}-assistant qt-assistant_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/assistant # Always build with *this* version's buildtools qt-buildtools_PORT= devel/${_QT_RELNAME}-buildtools qt-buildtools_PATH= ${_QT_RELNAME}-buildtools>=${_QT_VERSION:R} qt-base_PORT= devel/${_QT_RELNAME}-base qt-base_LIB= libQt${_QT_LIBVER}Core.so qt-charts_PORT= x11-toolkits/${_QT_RELNAME}-charts qt-charts_LIB= libQt${_QT_LIBVER}Charts.so qt-coap_PORT= net/${_QT_RELNAME}-coap qt-coap_LIB= libQt${_QT_LIBVER}Coap.so qt-concurrent_PORT= devel/${_QT_RELNAME}-concurrent qt-concurrent_LIB= libQt${_QT_LIBVER}Concurrent.so qt-connectivity_PORT= comms/${_QT_RELNAME}-connectivity qt-connectivity_LIB= libQt${_QT_LIBVER}Bluetooth.so qt-core_PORT= devel/${_QT_RELNAME}-core qt-core_LIB= libQt${_QT_LIBVER}Core.so qt-datavis3d_PORT= x11-toolkits/${_QT_RELNAME}-datavis3d qt-datavis3d_LIB= libQt${_QT_LIBVER}DataVisualization.so qt-dbus_PORT= devel/${_QT_RELNAME}-dbus qt-dbus_LIB= libQt${_QT_LIBVER}DBus.so qt-declarative_PORT= x11-toolkits/${_QT_RELNAME}-declarative qt-declarative_LIB= libQt${_QT_LIBVER}Qml.so qt-declarative-test_PORT= x11-toolkits/${_QT_RELNAME}-declarative-test qt-declarative-test_LIB= libQt${_QT_LIBVER}QuickTest.so qt-designer_PORT= devel/${_QT_RELNAME}-designer qt-designer_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/designer qt-diag_PORT= sysutils/${_QT_RELNAME}-qtdiag qt-diag_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/qtdiag qt-doc_PORT= misc/${_QT_RELNAME}-doc qt-doc_PATH= ${_QT_RELNAME}-doc>=${_QT_VERSION:R:R} qt-examples_PORT= misc/${_QT_RELNAME}-examples qt-examples_PATH= ${_QT_RELNAME}-examples>=${_QT_VERSION:R:R} qt-gamepad_PORT= x11-toolkits/${_QT_RELNAME}-gamepad qt-gamepad_LIB= libQt${_QT_LIBVER}Gamepad.so qt-graphicaleffects_PORT= graphics/${_QT_RELNAME}-graphicaleffects qt-graphicaleffects_PATH= ${LOCALBASE}/${QT_QMLDIR_REL}/QtGraphicalEffects/qmldir qt-graphs_PORT= x11-toolkits/${_QT_RELNAME}-graphs qt-graphs_LIB= libQt${_QT_LIBVER}Graphs.so qt-gui_PORT= x11-toolkits/${_QT_RELNAME}-gui qt-gui_LIB= libQt${_QT_LIBVER}Gui.so qt-help_PORT= devel/${_QT_RELNAME}-help qt-help_LIB= libQt${_QT_LIBVER}Help.so qt-httpserver_PORT= www/${_QT_RELNAME}-httpserver qt-httpserver_LIB= libQt${_QT_LIBVER}HttpServer.so qt-imageformats_PORT= graphics/${_QT_RELNAME}-imageformats qt-imageformats_PATH= ${LOCALBASE}/${QT_PLUGINDIR_REL}/imageformats/libqtiff.so qt-languageserver_PORT= devel/${_QT_RELNAME}-languageserver qt-languageserver_LIB= libQt${_QT_LIBVER}LanguageServer.so qt-lottie_PORT= graphics/${_QT_RELNAME}-lottie qt-lottie_LIB= libQt${_QT_LIBVER}Bodymovin.so qt-linguist_PORT= devel/${_QT_RELNAME}-linguist qt-linguist_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/linguist qt-linguisttools_PORT= devel/${_QT_RELNAME}-linguisttools qt-linguisttools_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/lrelease qt-location_PORT= devel/${_QT_RELNAME}-location qt-location_LIB= libQt${_QT_LIBVER}Location.so qt-l10n_PORT= misc/${_QT_RELNAME}-l10n qt-l10n_PATH= ${_QT_RELNAME}-l10n>=${_QT_VERSION:R:R} qt-multimedia_PORT= multimedia/${_QT_RELNAME}-multimedia qt-multimedia_LIB= libQt${_QT_LIBVER}Multimedia.so qt-network_PORT= net/${_QT_RELNAME}-network qt-network_LIB= libQt${_QT_LIBVER}Network.so qt-networkauth_PORT= net/${_QT_RELNAME}-networkauth qt-networkauth_LIB= libQt${_QT_LIBVER}NetworkAuth.so qt-opengl_PORT= graphics/${_QT_RELNAME}-opengl qt-opengl_LIB= libQt${_QT_LIBVER}OpenGL.so qt-paths_PORT= sysutils/${_QT_RELNAME}-qtpaths qt-paths_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/qtpaths qt-pdf_PORT= print/${_QT_RELNAME}-pdf qt-pdf_LIB= libQt${_QT_LIBVER}Pdf.so qt-pixeltool_PORT= graphics/${_QT_RELNAME}-pixeltool qt-pixeltool_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/pixeltool qt-positioning_PORT= devel/${_QT_RELNAME}-positioning qt-positioning_LIB= libQt${_QT_LIBVER}Positioning.so qt-plugininfo_PORT= sysutils/${_QT_RELNAME}-qtplugininfo qt-plugininfo_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/qtplugininfo qt-printsupport_PORT= print/${_QT_RELNAME}-printsupport qt-printsupport_LIB= libQt${_QT_LIBVER}PrintSupport.so qt-qdbus_PORT= devel/${_QT_RELNAME}-qdbus qt-qdbus_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/qdbus qt-qdbusviewer_PORT= devel/${_QT_RELNAME}-qdbusviewer qt-qdbusviewer_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/qdbusviewer qt-qdoc_PORT= devel/${_QT_RELNAME}-qdoc qt-qdoc_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/qdoc qt-qdoc-data_PORT= devel/${_QT_RELNAME}-qdoc-data qt-qdoc-data_PATH= ${LOCALBASE}/${QT_DOCDIR_REL}/global/config.qdocconf qt-qev_PORT= x11/${_QT_RELNAME}-qev qt-qev_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/qev # Always build with *this* version's qmake qt-qmake_PORT= devel/${_QT_RELNAME}-qmake qt-qmake_PATH= ${_QT_RELNAME}-qmake>=${_QT_VERSION:R} qt-quick3d_PORT= x11-toolkits/${_QT_RELNAME}-quick3d qt-quick3d_LIB= libQt${_QT_LIBVER}Quick3D.so qt-quick3dphysics_PORT= science/${_QT_RELNAME}-quick3dphysics qt_quick3dphysics_LIB= libQt${_QT_LIBVER}Quick3DPhysics.so qt-quickcontrols_PORT= x11-toolkits/${_QT_RELNAME}-quickcontrols qt-quickcontrols_PATH= ${LOCALBASE}/${QT_QMLDIR_REL}/QtQuick/Controls/qmldir qt-quickcontrols2_PORT= x11-toolkits/${_QT_RELNAME}-quickcontrols2 qt-quickcontrols2_LIB= libQt${_QT_LIBVER}QuickControls2.so qt-quickeffectmaker_PORT= graphics/${_QT_RELNAME}-quickeffectmaker qt-quickeffectmaker_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/qqem qt-quicktimeline_PORT= x11-toolkits/${_QT_RELNAME}-quicktimeline qt-quicktimeline_PATH= ${LOCALBASE}/${QT_QMLDIR_REL}/QtQuick/Timeline/libqtquicktimelineplugin.so qt-remoteobjects_PORT= devel/${_QT_RELNAME}-remoteobjects qt-remoteobjects_LIB= libQt${_QT_LIBVER}RemoteObjects.so qt-sensors_PORT= comms/${_QT_RELNAME}-sensors qt-sensors_LIB= libQt${_QT_LIBVER}Sensors.so qt-script_PORT= devel/${_QT_RELNAME}-script qt-script_LIB= libQt${_QT_LIBVER}Script.so qt-scripttools_PORT= devel/${_QT_RELNAME}-scripttools qt-scripttools_LIB= libQt${_QT_LIBVER}ScriptTools.so qt-scxml_PORT= devel/${_QT_RELNAME}-scxml qt-scxml_LIB= libQt${_QT_LIBVER}Scxml.so qt-serialbus_PORT= comms/${_QT_RELNAME}-serialbus qt-serialbus_LIB= libQt${_QT_LIBVER}SerialBus.so qt-serialport_PORT= comms/${_QT_RELNAME}-serialport qt-serialport_LIB= libQt${_QT_LIBVER}SerialPort.so qt-shadertools_PORT= x11-toolkits/${_QT_RELNAME}-shadertools qt-shadertools_LIB= libQt${_QT_LIBVER}ShaderTools.so qt-speech_PORT= accessibility/${_QT_RELNAME}-speech qt-speech_LIB= libQt${_QT_LIBVER}TextToSpeech.so qt-sql_PORT= databases/${_QT_RELNAME}-sql qt-sql_LIB= libQt${_QT_LIBVER}Sql.so qt-sql-pgsql_PATH= ${LOCALBASE}/${QT_PLUGINDIR_REL}/sqldrivers/libqsqlpsql.so qt-sql-sqlite3_PATH= ${LOCALBASE}/${QT_PLUGINDIR_REL}/sqldrivers/libqsqlite.so . for db in mysql odbc pgsql sqlite2 sqlite3 tds qt-sql-${db}_PORT= databases/${_QT_RELNAME}-sqldrivers-${db} qt-sql-${db}_PATH?= ${LOCALBASE}/${QT_PLUGINDIR_REL}/sqldrivers/libqsql${db:C/^sql//}.so . endfor . for db in sqlite mysql psql odbc qt-sqldriver-${db}_PORT= databases/${_QT_RELNAME}-base_sqldriver@${db} qt-sqldriver-${db}_PATH?= ${LOCALBASE}/${QT_PLUGINDIR_REL}/sqldrivers/libqsql${db:C/^sql//}.so . endfor qt-svg_PORT= graphics/${_QT_RELNAME}-svg qt-svg_LIB= libQt${_QT_LIBVER}Svg.so qt-testlib_PORT= devel/${_QT_RELNAME}-testlib qt-testlib_LIB= libQt${_QT_LIBVER}Test.so qt-tools_PORT= devel/${_QT_RELNAME}-tools qt-tools_PATH= ${LOCALBASE}/${QT_BINDIR_REL}/lupdate qt-translations_PORT= devel/${_QT_RELNAME}-translations qt-translations_PATH= ${LOCALBASE}/${QT_DATADIR_REL}/translations/qt_en.qm qt-uiplugin_PORT= x11-toolkits/${_QT_RELNAME}-uiplugin qt-uiplugin_PATH= ${LOCALBASE}/${QT_INCDIR_REL}/QtUiPlugin/QtUiPlugin qt-uitools_PORT= devel/${_QT_RELNAME}-uitools qt-uitools_PATH= ${LOCALBASE}/${QT_LIBDIR_REL}/libQt${_QT_LIBVER}UiTools.a qt-virtualkeyboard_PORT= x11-toolkits/${_QT_RELNAME}-virtualkeyboard qt-virtualkeyboard_PATH= ${LOCALBASE}/${QT_PLUGINDIR_REL}/platforminputcontexts/libqtvirtualkeyboardplugin.so qt-wayland_PORT= graphics/${_QT_RELNAME}-wayland qt-wayland_LIB= libQt${_QT_LIBVER}WaylandClient.so qt-webchannel_PORT= www/${_QT_RELNAME}-webchannel qt-webchannel_LIB= libQt${_QT_LIBVER}WebChannel.so qt-webengine_PORT= www/${_QT_RELNAME}-webengine qt-webengine_LIB= libQt${_QT_LIBVER}WebEngineCore.so qt-webglplugin_PORT= www/${_QT_RELNAME}-webglplugin qt-webglplugin_PATH= ${LOCALBASE}/${QT_PLUGINDIR_REL}/platforms/libqwebgl.so qt-websockets_PORT= www/${_QT_RELNAME}-websockets qt-websockets_LIB= libQt${_QT_LIBVER}WebSockets.so qt-websockets-qml_PORT= www/${_QT_RELNAME}-websockets-qml qt-websockets-qml_PATH= ${LOCALBASE}/${QT_QMLDIR_REL}/QtWebSockets/qmldir qt-webview_PORT= www/${_QT_RELNAME}-webview qt-webview_LIB= libQt${_QT_LIBVER}WebView.so qt-widgets_PORT= x11-toolkits/${_QT_RELNAME}-widgets qt-widgets_LIB= libQt${_QT_LIBVER}Widgets.so qt-x11extras_PORT= x11/${_QT_RELNAME}-x11extras qt-x11extras_LIB= libQt${_QT_LIBVER}X11Extras.so qt-xml_PORT= textproc/${_QT_RELNAME}-xml qt-xml_LIB= libQt${_QT_LIBVER}Xml.so qt-xmlpatterns_PORT= textproc/${_QT_RELNAME}-xmlpatterns qt-xmlpatterns_LIB= libQt${_QT_LIBVER}XmlPatterns.so # Actually add the dependencies to the proper lists. _USE_QT_ALL= ${_USE_QT_COMMON} \ ${_USE_QT${_QT_VER}_ONLY} _USE_QT= ${USE_QT} # Iterate through components deprived of suffix. . for component in ${_USE_QT:O:u:C/:(build|run)$//} # Check that the component is valid. . if ${_USE_QT_ALL:M${component}} != "" # Skip meta-components (currently none). . if defined(qt-${component}_PORT) && (defined(qt-${component}_PATH) || defined(qt-${component}_LIB)) # Check if a dependency type is explicitly requested. . if ${_USE_QT:M${component}\:*} != "" && ${_USE_QT:M${component}} == "" qt-${component}_TYPE= # empty . if ${_USE_QT:M${component}\:build} != "" qt-${component}_TYPE+= build . endif . if ${_USE_QT:M${component}\:run} != "" qt-${component}_TYPE+= run . endif . endif # ${_USE_QT:M${component}_*} != "" && ${_USE_QT:M${component}} == "" # If no dependency type is set, default to full dependency. . if !defined(qt-${component}_TYPE) qt-${component}_TYPE= build run . endif # Set real dependencies. . if defined(qt-${component}_LIB) && ${qt-${component}_TYPE:Mbuild} && ${qt-${component}_TYPE:Mrun} LIB_DEPENDS+= ${qt-${component}_LIB}:${qt-${component}_PORT} . else qt-${component}_PATH?= ${QT_LIBDIR}/${qt-${component}_LIB} qt-${component}_DEPENDS= ${qt-${component}_PATH}:${qt-${component}_PORT} . if ${qt-${component}_TYPE:Mbuild} != "" BUILD_DEPENDS+= ${qt-${component}_DEPENDS} . endif . if ${qt-${component}_TYPE:Mrun} != "" RUN_DEPENDS+= ${qt-${component}_DEPENDS} . endif . endif # ${qt-${component}_LIB} && ${qt-${component}_TYPE:Mbuild} && ${qt-${component}_TYPE:Mrun} . endif # defined(qt-${component}_PORT) && defined(qt-${component}_PATH) . else # ! ${_USE_QT_ALL:M${component}} != "" IGNORE= cannot be installed: unknown USE_QT component '${component}' . endif # ${_USE_QT_ALL:M${component}} != "" . endfor .endif # defined(_QT_MK_POST_INCLUDED) diff --git a/accessibility/qt5-speech/distinfo b/accessibility/qt5-speech/distinfo index 24a2b2d99b85..935a50ebfc1e 100644 --- a/accessibility/qt5-speech/distinfo +++ b/accessibility/qt5-speech/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809502 -SHA256 (KDE/Qt/5.15.12/kde-qtspeech-5.15.12p1.tar.xz) = 2441a418e16adb6ba53ce182b9da921e732975dc38aec8ce22d865d3051e55b6 -SIZE (KDE/Qt/5.15.12/kde-qtspeech-5.15.12p1.tar.xz) = 80284 +TIMESTAMP = 1711770875 +SHA256 (KDE/Qt/5.15.13/kde-qtspeech-5.15.13p1.tar.xz) = c03c480f2aae225a577ce8145c036fbc2699dd507dad76497ae58999cf286cce +SIZE (KDE/Qt/5.15.13/kde-qtspeech-5.15.13p1.tar.xz) = 80304 diff --git a/comms/qt5-connectivity/distinfo b/comms/qt5-connectivity/distinfo index 8e61a2e9a1fa..a535f10c20d4 100644 --- a/comms/qt5-connectivity/distinfo +++ b/comms/qt5-connectivity/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809506 -SHA256 (KDE/Qt/5.15.12/kde-qtconnectivity-5.15.12p6.tar.xz) = 058e7491b94c075058e6eee9d467efacd28c32888c729a8445e3af8480716887 -SIZE (KDE/Qt/5.15.12/kde-qtconnectivity-5.15.12p6.tar.xz) = 2796256 +TIMESTAMP = 1711770876 +SHA256 (KDE/Qt/5.15.13/kde-qtconnectivity-5.15.13p4.tar.xz) = d8dedba477db25517164187596a0feb3ba16503a97cb6d0f9cd2cf37b1555f8d +SIZE (KDE/Qt/5.15.13/kde-qtconnectivity-5.15.13p4.tar.xz) = 2796540 diff --git a/comms/qt5-sensors/distinfo b/comms/qt5-sensors/distinfo index 942566538d96..0dc8075d94e3 100644 --- a/comms/qt5-sensors/distinfo +++ b/comms/qt5-sensors/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809510 -SHA256 (KDE/Qt/5.15.12/kde-qtsensors-5.15.12p0.tar.xz) = 47f3880a330c3034fea2ca2218c63246656a62e54161fc7c885c38f732125f3d -SIZE (KDE/Qt/5.15.12/kde-qtsensors-5.15.12p0.tar.xz) = 2030988 +TIMESTAMP = 1711770877 +SHA256 (KDE/Qt/5.15.13/kde-qtsensors-5.15.13p0.tar.xz) = 9f7c55b7a12b52f75151e5945a38618362060e90d2c463ecfa88d4b6196af2de +SIZE (KDE/Qt/5.15.13/kde-qtsensors-5.15.13p0.tar.xz) = 2030780 diff --git a/comms/qt5-serialbus/distinfo b/comms/qt5-serialbus/distinfo index 4d7db0816dd2..6db6efe5e716 100644 --- a/comms/qt5-serialbus/distinfo +++ b/comms/qt5-serialbus/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809509 -SHA256 (KDE/Qt/5.15.12/kde-qtserialbus-5.15.12p0.tar.xz) = 408494515dd515860465ad1525c23a6f452ab220f10afb51f59dadae97a302d6 -SIZE (KDE/Qt/5.15.12/kde-qtserialbus-5.15.12p0.tar.xz) = 333780 +TIMESTAMP = 1711770878 +SHA256 (KDE/Qt/5.15.13/kde-qtserialbus-5.15.13p0.tar.xz) = b0c17a00015f6c6f8d547a1fb620483b529b4112eac45d77c75f04e79345c76b +SIZE (KDE/Qt/5.15.13/kde-qtserialbus-5.15.13p0.tar.xz) = 333820 diff --git a/comms/qt5-serialport/distinfo b/comms/qt5-serialport/distinfo index 341ab883ae1e..61646ed79aff 100644 --- a/comms/qt5-serialport/distinfo +++ b/comms/qt5-serialport/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809507 -SHA256 (KDE/Qt/5.15.12/kde-qtserialport-5.15.12p0.tar.xz) = 6e46c4f422e9963f007cb8888a6272a1eef757b69f102a7e7ac0b11e942468c4 -SIZE (KDE/Qt/5.15.12/kde-qtserialport-5.15.12p0.tar.xz) = 299364 +TIMESTAMP = 1711770880 +SHA256 (KDE/Qt/5.15.13/kde-qtserialport-5.15.13p0.tar.xz) = c98804aaa07e683fadc39c19367ececcf8e898defafab159f5f2a160c01425d3 +SIZE (KDE/Qt/5.15.13/kde-qtserialport-5.15.13p0.tar.xz) = 299600 diff --git a/databases/qt5-sql/distinfo b/databases/qt5-sql/distinfo index 431476c1bbe3..a0c66832e9c4 100644 --- a/databases/qt5-sql/distinfo +++ b/databases/qt5-sql/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809474 -SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f -SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532 +TIMESTAMP = 1711770881 +SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb +SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504 diff --git a/databases/qt5-sqldrivers-mysql/distinfo b/databases/qt5-sqldrivers-mysql/distinfo index 10bc5a25fe2e..a8355a2cc064 100644 --- a/databases/qt5-sqldrivers-mysql/distinfo +++ b/databases/qt5-sqldrivers-mysql/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809481 -SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f -SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532 +TIMESTAMP = 1711770882 +SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb +SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504 diff --git a/databases/qt5-sqldrivers-odbc/distinfo b/databases/qt5-sqldrivers-odbc/distinfo index f9c30b09fb28..8127d099b6db 100644 --- a/databases/qt5-sqldrivers-odbc/distinfo +++ b/databases/qt5-sqldrivers-odbc/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703841276 -SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f -SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532 +TIMESTAMP = 1711770883 +SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb +SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504 diff --git a/databases/qt5-sqldrivers-pgsql/distinfo b/databases/qt5-sqldrivers-pgsql/distinfo index 7b006872a6ac..cba7e145d64b 100644 --- a/databases/qt5-sqldrivers-pgsql/distinfo +++ b/databases/qt5-sqldrivers-pgsql/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703841277 -SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f -SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532 +TIMESTAMP = 1711770885 +SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb +SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504 diff --git a/databases/qt5-sqldrivers-sqlite2/distinfo b/databases/qt5-sqldrivers-sqlite2/distinfo index f809584de06a..18d2a9818741 100644 --- a/databases/qt5-sqldrivers-sqlite2/distinfo +++ b/databases/qt5-sqldrivers-sqlite2/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703841279 -SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f -SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532 +TIMESTAMP = 1711770886 +SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb +SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504 diff --git a/databases/qt5-sqldrivers-sqlite3/distinfo b/databases/qt5-sqldrivers-sqlite3/distinfo index 54356b69e85a..4ba56d2ed9b5 100644 --- a/databases/qt5-sqldrivers-sqlite3/distinfo +++ b/databases/qt5-sqldrivers-sqlite3/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809479 -SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f -SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532 +TIMESTAMP = 1711770887 +SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb +SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504 diff --git a/databases/qt5-sqldrivers-tds/distinfo b/databases/qt5-sqldrivers-tds/distinfo index e07725062760..d5543e8e55b5 100644 --- a/databases/qt5-sqldrivers-tds/distinfo +++ b/databases/qt5-sqldrivers-tds/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703841282 -SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f -SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532 +TIMESTAMP = 1711770889 +SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb +SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504 diff --git a/devel/pyside2-tools/Makefile b/devel/pyside2-tools/Makefile index 243fb678c953..9dbe4130b616 100644 --- a/devel/pyside2-tools/Makefile +++ b/devel/pyside2-tools/Makefile @@ -1,51 +1,50 @@ PORTNAME= pyside2-tools DISTVERSION= ${QT5_VERSION} -PORTREVISION= 1 CATEGORIES= devel MASTER_SITES= QT/official_releases/QtForPython/shiboken2/PySide2-${DISTVERSION}-src PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} DISTNAME= pyside-setup-opensource-src-${DISTVERSION} MAINTAINER= kde@FreeBSD.org COMMENT= Pyside2 development tools WWW= https://wiki.qt.io/Qt_for_Python LICENSE= BSD3CLAUSE GPLv2 LICENSE_COMB= multi BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}setuptools-scm>0:devel/py-setuptools-scm@${PY_FLAVOR} \ git>0:devel/git LIB_DEPENDS= libshiboken2.cpython-${PYTHON_SUFFIX}${PYTHON_ABIVER}.so:devel/shiboken2@${PY_FLAVOR} \ libpyside2.cpython-${PYTHON_SUFFIX}${PYTHON_ABIVER}.so:devel/pyside2@${PY_FLAVOR} USES= cmake gl python qt:5 shebangfix tar:xz xorg USE_GL= gl USE_PYTHON= flavors USE_QT= 3d buildtools charts core datavis3d declarative \ designer gui help location multimedia network opengl \ printsupport qmake:build script scripttools scxml sensors \ speech sql svg testlib uitools webchannel \ websockets widgets x11extras xml xmlpatterns SHEBANG_FILES= pyside_tool.py CMAKE_ARGS+= "-DUSE_PYTHON_VERSION=${PYTHON_VER}" WRKSRC= ${WRKDIR}/pyside-setup-opensource-src-${DISTVERSION:C/^([0-9].[0-9]+.[0-9])(.[0-9])?/\1/}/sources/pyside2-tools OPTIONS_DEFINE_i386= WEBENGINE OPTIONS_DEFINE_amd64= WEBENGINE OPTIONS_DEFAULT_i386= WEBENGINE OPTIONS_DEFAULT_amd64= WEBENGINE WEBENGINE_DESC= Enable QtWebEngine support .include .if ${PORT_OPTIONS:MWEBENGINE} USE_QT+= webengine .else CMAKE_ARGS+= -DDISABLE_QtWebEngine:BOOL=TRUE .endif .include diff --git a/devel/pyside2-tools/distinfo b/devel/pyside2-tools/distinfo index 18178c164dde..1e66f2fd1b52 100644 --- a/devel/pyside2-tools/distinfo +++ b/devel/pyside2-tools/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703885634 -SHA256 (pyside-setup-opensource-src-5.15.12.tar.xz) = 9c53a111ca5779064593e690db0da43ce0d5dad25369931b7a4f593886259ff4 -SIZE (pyside-setup-opensource-src-5.15.12.tar.xz) = 3585204 +TIMESTAMP = 1711882482 +SHA256 (pyside-setup-opensource-src-5.15.13.tar.xz) = 7a57797b20268d6ebcb39deba48c754a69abf9221aee03e1f3dca6f6565b7da9 +SIZE (pyside-setup-opensource-src-5.15.13.tar.xz) = 3585684 diff --git a/devel/pyside2/distinfo b/devel/pyside2/distinfo index 807adc1b9571..0524e5230876 100644 --- a/devel/pyside2/distinfo +++ b/devel/pyside2/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703882377 -SHA256 (pyside-setup-opensource-src-5.15.12.tar.xz) = 9c53a111ca5779064593e690db0da43ce0d5dad25369931b7a4f593886259ff4 -SIZE (pyside-setup-opensource-src-5.15.12.tar.xz) = 3585204 +TIMESTAMP = 1711882453 +SHA256 (pyside-setup-opensource-src-5.15.13.tar.xz) = 7a57797b20268d6ebcb39deba48c754a69abf9221aee03e1f3dca6f6565b7da9 +SIZE (pyside-setup-opensource-src-5.15.13.tar.xz) = 3585684 diff --git a/devel/qt5-assistant/distinfo b/devel/qt5-assistant/distinfo index 7277f93fd1ae..5e6df02e00e7 100644 --- a/devel/qt5-assistant/distinfo +++ b/devel/qt5-assistant/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809492 -SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c -SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464 +TIMESTAMP = 1711770890 +SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7 +SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980 diff --git a/devel/qt5-buildtools/distinfo b/devel/qt5-buildtools/distinfo index d37cc2cb962f..22c65d153aa9 100644 --- a/devel/qt5-buildtools/distinfo +++ b/devel/qt5-buildtools/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809648 -SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f -SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532 +TIMESTAMP = 1711770891 +SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb +SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504 diff --git a/devel/qt5-concurrent/distinfo b/devel/qt5-concurrent/distinfo index d5c892f4ea23..351295e7b9c3 100644 --- a/devel/qt5-concurrent/distinfo +++ b/devel/qt5-concurrent/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809465 -SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f -SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532 +TIMESTAMP = 1711770892 +SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb +SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504 diff --git a/devel/qt5-core/distinfo b/devel/qt5-core/distinfo index ae1683edf333..526504917fa3 100644 --- a/devel/qt5-core/distinfo +++ b/devel/qt5-core/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809650 -SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f -SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532 +TIMESTAMP = 1711770894 +SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb +SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504 diff --git a/devel/qt5-dbus/distinfo b/devel/qt5-dbus/distinfo index 5cb981dd67d8..9e3ab78c7514 100644 --- a/devel/qt5-dbus/distinfo +++ b/devel/qt5-dbus/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809653 -SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f -SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532 +TIMESTAMP = 1711770895 +SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb +SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504 diff --git a/devel/qt5-designer/Makefile b/devel/qt5-designer/Makefile index c367bbe08002..e7132a956fef 100644 --- a/devel/qt5-designer/Makefile +++ b/devel/qt5-designer/Makefile @@ -1,38 +1,37 @@ PORTNAME= designer PORTVERSION= ${QT5_VERSION}${QT5_KDE_PATCH} -PORTREVISION= 1 CATEGORIES= devel PKGNAMEPREFIX= qt5- MAINTAINER= kde@FreeBSD.org COMMENT= Qt 5 graphical user interface designer USES= compiler:c++11-lang perl5 qmake qt-dist:5,tools USE_PERL5= build USE_QT= assistant:run core declarative gui network printsupport uiplugin \ widgets xml buildtools:build DESKTOP_ENTRIES="Qt 5 Designer" "" \ "${PREFIX}/share/pixmaps/designer-qt5.png" \ "${PREFIX}/${QT_BINDIR_REL}/designer" \ "Development;Qt;" true BUILD_WRKSRC= ${WRKSRC}/src/${PORTNAME} INSTALL_WRKSRC= ${WRKSRC}/src/${PORTNAME} QT_BINARIES= yes post-patch: # uiplugin is built in x11-toolkits/qt5-uiplugin. # uitools is built in devel/qt5-uitools. ${REINPLACE_CMD} -e '/uiplugin/ d' -e '/uitools/ d' \ ${WRKSRC}/src/${PORTNAME}/src/src.pro post-install: ${INSTALL_DATA} ${WRKSRC}/src/${PORTNAME}/src/designer/images/designer.png \ ${STAGEDIR}${PREFIX}/share/pixmaps/designer-qt5.png # The generated .pc file refers to a nonexistent other .pc file ${REINPLACE_CMD} -e '/^Requires/s/Qt5UiPlugin//' \ ${STAGEDIR}${PREFIX}/libdata/pkgconfig/Qt5Designer.pc .include diff --git a/devel/qt5-designer/distinfo b/devel/qt5-designer/distinfo index eebf51e04098..4c416907af7f 100644 --- a/devel/qt5-designer/distinfo +++ b/devel/qt5-designer/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809490 -SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c -SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464 +TIMESTAMP = 1711770896 +SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7 +SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980 diff --git a/devel/qt5-help/distinfo b/devel/qt5-help/distinfo index 3e86607fa3cc..6136553eca8e 100644 --- a/devel/qt5-help/distinfo +++ b/devel/qt5-help/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809488 -SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c -SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464 +TIMESTAMP = 1711770897 +SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7 +SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980 diff --git a/devel/qt5-linguist/distinfo b/devel/qt5-linguist/distinfo index 46ca194bc618..ddfcb0412b19 100644 --- a/devel/qt5-linguist/distinfo +++ b/devel/qt5-linguist/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809495 -SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c -SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464 +TIMESTAMP = 1711770898 +SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7 +SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980 diff --git a/devel/qt5-linguisttools/distinfo b/devel/qt5-linguisttools/distinfo index 53186f72e624..cd01b7902a04 100644 --- a/devel/qt5-linguisttools/distinfo +++ b/devel/qt5-linguisttools/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809493 -SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c -SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464 +TIMESTAMP = 1711770900 +SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7 +SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980 diff --git a/devel/qt5-location/distinfo b/devel/qt5-location/distinfo index 29e0d66d6803..70d824b57c9e 100644 --- a/devel/qt5-location/distinfo +++ b/devel/qt5-location/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809511 -SHA256 (KDE/Qt/5.15.12/kde-qtlocation-5.15.12p6.tar.xz) = 648f7f114ca029125ecf2bbf3be5fa138e4a38ba533c8f3f06ff1f9fc2784fbb -SIZE (KDE/Qt/5.15.12/kde-qtlocation-5.15.12p6.tar.xz) = 6477604 +TIMESTAMP = 1711770901 +SHA256 (KDE/Qt/5.15.13/kde-qtlocation-5.15.13p6.tar.xz) = 5b61bfccc1e98ce4acfdaad0069b68dff2f8501fe0aa053567d33d1bbdfc4d03 +SIZE (KDE/Qt/5.15.13/kde-qtlocation-5.15.13p6.tar.xz) = 6479492 diff --git a/devel/qt5-qdbus/distinfo b/devel/qt5-qdbus/distinfo index 82fab429a4bc..61caa8277a7f 100644 --- a/devel/qt5-qdbus/distinfo +++ b/devel/qt5-qdbus/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809498 -SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c -SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464 +TIMESTAMP = 1711770902 +SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7 +SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980 diff --git a/devel/qt5-qdbusviewer/distinfo b/devel/qt5-qdbusviewer/distinfo index 60d0f42e1e6f..ce8a459c54ab 100644 --- a/devel/qt5-qdbusviewer/distinfo +++ b/devel/qt5-qdbusviewer/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703841302 -SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c -SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464 +TIMESTAMP = 1711770903 +SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7 +SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980 diff --git a/devel/qt5-qdoc-data/distinfo b/devel/qt5-qdoc-data/distinfo index f7fc2ffd521e..838309ab304d 100644 --- a/devel/qt5-qdoc-data/distinfo +++ b/devel/qt5-qdoc-data/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703840875 -SHA256 (KDE/Qt/5.15.12/qtbase-everywhere-opensource-src-5.15.12.tar.xz) = 4c01b7b0f1f3c1e05ae6bf53c66e49c65c6b3872475bac26b0fb228136914af0 -SIZE (KDE/Qt/5.15.12/qtbase-everywhere-opensource-src-5.15.12.tar.xz) = 50840192 +TIMESTAMP = 1711771112 +SHA256 (KDE/Qt/5.15.13/qtbase-everywhere-opensource-src-5.15.13.tar.xz) = 4cca51dcc1f22ceeee6b3e33cd1c3a60b14e85e24644dca3af89a2c2989ab809 +SIZE (KDE/Qt/5.15.13/qtbase-everywhere-opensource-src-5.15.13.tar.xz) = 50862768 diff --git a/devel/qt5-qdoc/distinfo b/devel/qt5-qdoc/distinfo index d32ea9de1f88..df3d8f01af42 100644 --- a/devel/qt5-qdoc/distinfo +++ b/devel/qt5-qdoc/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703840809 -SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c -SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464 +TIMESTAMP = 1711771113 +SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7 +SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980 diff --git a/devel/qt5-qmake/distinfo b/devel/qt5-qmake/distinfo index 9aba089a7fd3..2278f2291cc1 100644 --- a/devel/qt5-qmake/distinfo +++ b/devel/qt5-qmake/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809647 -SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f -SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532 +TIMESTAMP = 1711771115 +SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb +SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504 diff --git a/devel/qt5-remoteobjects/distinfo b/devel/qt5-remoteobjects/distinfo index 453bceb77b26..cadd24a1f2bc 100644 --- a/devel/qt5-remoteobjects/distinfo +++ b/devel/qt5-remoteobjects/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809513 -SHA256 (KDE/Qt/5.15.12/kde-qtremoteobjects-5.15.12p0.tar.xz) = 3f209fc085caa2d01e0b660362d3649af66695564312b6f5dc1a670ff7fd37c4 -SIZE (KDE/Qt/5.15.12/kde-qtremoteobjects-5.15.12p0.tar.xz) = 352436 +TIMESTAMP = 1711771116 +SHA256 (KDE/Qt/5.15.13/kde-qtremoteobjects-5.15.13p0.tar.xz) = fb7ae95bf8a296f71e542355dc8941937b05e8f416c18c4b9ef3b798d6e3a2ae +SIZE (KDE/Qt/5.15.13/kde-qtremoteobjects-5.15.13p0.tar.xz) = 352492 diff --git a/devel/qt5-scxml/distinfo b/devel/qt5-scxml/distinfo index 9b70c835b690..39339f2ab2d9 100644 --- a/devel/qt5-scxml/distinfo +++ b/devel/qt5-scxml/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809514 -SHA256 (KDE/Qt/5.15.12/kde-qtscxml-5.15.12p0.tar.xz) = 2bb04c33ad95632e48a8c9492b48e99dc11a815c48ed56b0d82fb0dc3163f974 -SIZE (KDE/Qt/5.15.12/kde-qtscxml-5.15.12p0.tar.xz) = 409156 +TIMESTAMP = 1711771117 +SHA256 (KDE/Qt/5.15.13/kde-qtscxml-5.15.13p0.tar.xz) = d3df8c1feac458cda23d1dc77c5b289f1c5ea0a153fea44bcbda940e568ed660 +SIZE (KDE/Qt/5.15.13/kde-qtscxml-5.15.13p0.tar.xz) = 409712 diff --git a/devel/qt5-testlib/distinfo b/devel/qt5-testlib/distinfo index df62dfe407e6..0852c383e9c5 100644 --- a/devel/qt5-testlib/distinfo +++ b/devel/qt5-testlib/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809467 -SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f -SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532 +TIMESTAMP = 1711771118 +SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb +SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504 diff --git a/devel/qt5-uitools/distinfo b/devel/qt5-uitools/distinfo index d0da77d96d01..f731be872b22 100644 --- a/devel/qt5-uitools/distinfo +++ b/devel/qt5-uitools/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809487 -SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c -SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464 +TIMESTAMP = 1711771119 +SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7 +SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980 diff --git a/devel/shiboken2/distinfo b/devel/shiboken2/distinfo index 86f560a12c75..68e263563016 100644 --- a/devel/shiboken2/distinfo +++ b/devel/shiboken2/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703882362 -SHA256 (pyside-setup-opensource-src-5.15.12.tar.xz) = 9c53a111ca5779064593e690db0da43ce0d5dad25369931b7a4f593886259ff4 -SIZE (pyside-setup-opensource-src-5.15.12.tar.xz) = 3585204 +TIMESTAMP = 1711882465 +SHA256 (pyside-setup-opensource-src-5.15.13.tar.xz) = 7a57797b20268d6ebcb39deba48c754a69abf9221aee03e1f3dca6f6565b7da9 +SIZE (pyside-setup-opensource-src-5.15.13.tar.xz) = 3585684 diff --git a/graphics/qt5-3d/distinfo b/graphics/qt5-3d/distinfo index 2d1c49aac8d8..fb7296e9da8a 100644 --- a/graphics/qt5-3d/distinfo +++ b/graphics/qt5-3d/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809516 -SHA256 (KDE/Qt/5.15.12/kde-qt3d-5.15.12p0.tar.xz) = 61956654dc03b825c64aeae03336414d34a3bf3a36b1c27b54f1bd26517e78a6 -SIZE (KDE/Qt/5.15.12/kde-qt3d-5.15.12p0.tar.xz) = 118199508 +TIMESTAMP = 1711771121 +SHA256 (KDE/Qt/5.15.13/kde-qt3d-5.15.13p0.tar.xz) = 84f76816d5d8c838d7c681a7280f4a1a2519ec69ab886d894d1b33f1cc246b80 +SIZE (KDE/Qt/5.15.13/kde-qt3d-5.15.13p0.tar.xz) = 118183168 diff --git a/graphics/qt5-graphicaleffects/distinfo b/graphics/qt5-graphicaleffects/distinfo index 71e8ce3bc558..62eadb4c86ff 100644 --- a/graphics/qt5-graphicaleffects/distinfo +++ b/graphics/qt5-graphicaleffects/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809518 -SHA256 (KDE/Qt/5.15.12/kde-qtgraphicaleffects-5.15.12p0.tar.xz) = 4328935b2baba386fbe544c412b585fefe9beaedca6ea15bd302721615ce14d7 -SIZE (KDE/Qt/5.15.12/kde-qtgraphicaleffects-5.15.12p0.tar.xz) = 14018708 +TIMESTAMP = 1711771122 +SHA256 (KDE/Qt/5.15.13/kde-qtgraphicaleffects-5.15.13p0.tar.xz) = 6ac895b75f7d8c236d6057cf68b7053c7148dbd128f9cb6771a8730db271097e +SIZE (KDE/Qt/5.15.13/kde-qtgraphicaleffects-5.15.13p0.tar.xz) = 14018768 diff --git a/graphics/qt5-imageformats/distinfo b/graphics/qt5-imageformats/distinfo index e08d155b63c8..38fb7679845b 100644 --- a/graphics/qt5-imageformats/distinfo +++ b/graphics/qt5-imageformats/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809519 -SHA256 (KDE/Qt/5.15.12/kde-qtimageformats-5.15.12p12.tar.xz) = 2a9cf714a8a48c71b41bfb45686ce307ff6cb8f5d943c9c5d5bc8f21eecbf33d -SIZE (KDE/Qt/5.15.12/kde-qtimageformats-5.15.12p12.tar.xz) = 1876684 +TIMESTAMP = 1711771123 +SHA256 (KDE/Qt/5.15.13/kde-qtimageformats-5.15.13p7.tar.xz) = 0d8766fc99e8b0cb189d729c3e3b814c3e728487c9c2109d69db2c65a0bfd185 +SIZE (KDE/Qt/5.15.13/kde-qtimageformats-5.15.13p7.tar.xz) = 1872288 diff --git a/graphics/qt5-opengl/distinfo b/graphics/qt5-opengl/distinfo index 48024e43efce..e548ed14d7d8 100644 --- a/graphics/qt5-opengl/distinfo +++ b/graphics/qt5-opengl/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809499 -SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f -SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532 +TIMESTAMP = 1711771124 +SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb +SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504 diff --git a/graphics/qt5-pixeltool/distinfo b/graphics/qt5-pixeltool/distinfo index f8e00da78981..b6fe17f6dbdc 100644 --- a/graphics/qt5-pixeltool/distinfo +++ b/graphics/qt5-pixeltool/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809521 -SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c -SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464 +TIMESTAMP = 1711771126 +SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7 +SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980 diff --git a/graphics/qt5-svg/distinfo b/graphics/qt5-svg/distinfo index 2d2c71e403a0..da070780b900 100644 --- a/graphics/qt5-svg/distinfo +++ b/graphics/qt5-svg/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809477 -SHA256 (KDE/Qt/5.15.12/kde-qtsvg-5.15.12p6.tar.xz) = 6f35c873f21e31aa895a6583969ec72fd759f5d34b2878b43914dbf3d0519363 -SIZE (KDE/Qt/5.15.12/kde-qtsvg-5.15.12p6.tar.xz) = 1865368 +TIMESTAMP = 1711771127 +SHA256 (KDE/Qt/5.15.13/kde-qtsvg-5.15.13p6.tar.xz) = 500586c7b3d35afad1fb6288cf5304a3c828c040992d5387272dc4c102291b9d +SIZE (KDE/Qt/5.15.13/kde-qtsvg-5.15.13p6.tar.xz) = 1865428 diff --git a/graphics/qt5-wayland/distinfo b/graphics/qt5-wayland/distinfo index 47f2d0a59d5e..bc3390441707 100644 --- a/graphics/qt5-wayland/distinfo +++ b/graphics/qt5-wayland/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809522 -SHA256 (KDE/Qt/5.15.12/kde-qtwayland-5.15.12p60.tar.xz) = 31108e496caa885c6c39f4d84c37166d9330ddbf88c79afe562ecc0d3f0a7ac0 -SIZE (KDE/Qt/5.15.12/kde-qtwayland-5.15.12p60.tar.xz) = 538284 +TIMESTAMP = 1711771128 +SHA256 (KDE/Qt/5.15.13/kde-qtwayland-5.15.13p60.tar.xz) = 7b8c1a09544ec5daab6920896111aca5acfb375729fbece21f13ef3edad4be0e +SIZE (KDE/Qt/5.15.13/kde-qtwayland-5.15.13p60.tar.xz) = 538528 diff --git a/misc/qt5-examples/distinfo b/misc/qt5-examples/distinfo index 0f5c6a937d25..d91a7f4aa725 100644 --- a/misc/qt5-examples/distinfo +++ b/misc/qt5-examples/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703840992 -SHA256 (KDE/Qt/5.15.12/qt-everywhere-opensource-src-5.15.12.tar.xz) = 93f2c0889ee2e9cdf30c170d353c3f829de5f29ba21c119167dee5995e48ccce -SIZE (KDE/Qt/5.15.12/qt-everywhere-opensource-src-5.15.12.tar.xz) = 660649996 +TIMESTAMP = 1711771501 +SHA256 (KDE/Qt/5.15.13/qt-everywhere-opensource-src-5.15.13.tar.xz) = 9550ec8fc758d3d8d9090e261329700ddcd712e2dda97e5fcfeabfac22bea2ca +SIZE (KDE/Qt/5.15.13/qt-everywhere-opensource-src-5.15.13.tar.xz) = 660785400 diff --git a/misc/qt5-l10n/distinfo b/misc/qt5-l10n/distinfo index 11a5b07912b4..508340b1c6b6 100644 --- a/misc/qt5-l10n/distinfo +++ b/misc/qt5-l10n/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809503 -SHA256 (KDE/Qt/5.15.12/kde-qttranslations-5.15.12p0.tar.xz) = 00b24c93f2e965c47ae5df5f0c523605501379571754434643075cf10bbd3746 -SIZE (KDE/Qt/5.15.12/kde-qttranslations-5.15.12p0.tar.xz) = 1610860 +TIMESTAMP = 1711771151 +SHA256 (KDE/Qt/5.15.13/kde-qttranslations-5.15.13p0.tar.xz) = 99e7862038b82782e8627526c3ad0b1bd0be0471ddb46266f6ba5aefbc26958b +SIZE (KDE/Qt/5.15.13/kde-qttranslations-5.15.13p0.tar.xz) = 1610776 diff --git a/multimedia/qt5-multimedia/distinfo b/multimedia/qt5-multimedia/distinfo index 9078f2424ced..bf4069fad925 100644 --- a/multimedia/qt5-multimedia/distinfo +++ b/multimedia/qt5-multimedia/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809501 -SHA256 (KDE/Qt/5.15.12/kde-qtmultimedia-5.15.12p2.tar.xz) = 69c4d903b038e44daec0bd03c2c318858e7ae4e3985f9c4d231817f5e6832ce6 -SIZE (KDE/Qt/5.15.12/kde-qtmultimedia-5.15.12p2.tar.xz) = 3788896 +TIMESTAMP = 1711771152 +SHA256 (KDE/Qt/5.15.13/kde-qtmultimedia-5.15.13p2.tar.xz) = 13effe1bdd58a6cb1f9e03972aca2ede3116cb08ff31eff27510298ac2704a13 +SIZE (KDE/Qt/5.15.13/kde-qtmultimedia-5.15.13p2.tar.xz) = 3789940 diff --git a/net/qt5-network/Makefile b/net/qt5-network/Makefile index c0ec67874b8c..c92c8074b1f0 100644 --- a/net/qt5-network/Makefile +++ b/net/qt5-network/Makefile @@ -1,51 +1,50 @@ PORTNAME= network PORTVERSION= ${QT5_VERSION}${QT5_KDE_PATCH} -PORTREVISION= 1 CATEGORIES= net PKGNAMEPREFIX= qt5- MAINTAINER= kde@FreeBSD.org COMMENT= Qt network module USES= compiler:c++11-lang perl5 qmake:no_env qt-dist:5,base ssl USE_PERL5= extract USE_QT= core buildtools:build HAS_CONFIGURE= yes CONFIGURE_ARGS= -no-gui -no-xcb BUILD_WRKSRC= ${WRKSRC}/src/${PORTNAME} INSTALL_WRKSRC= ${BUILD_WRKSRC} QT_DEFINES= OPENSSL SSL QT_CONFIG= openssl .include # LibreSSL does not currently support BIO_ADDR in DTLSv1_listen() .if ${SSL_DEFAULT:Mlibressl*} CONFIGURE_ARGS+= -no-feature-dtls .endif post-patch: @${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g' \ ${BUILD_WRKSRC}/ssl/qsslsocket_openssl.cpp @${REINPLACE_CMD} -e 's|%%OPENSSLLIB%%|${OPENSSLLIB}|g' \ ${BUILD_WRKSRC}/ssl/qsslsocket_openssl_symbols.cpp post-configure: .for d in src/network src/plugins/bearer/generic ${MKDIR} ${WRKSRC}/${d} cd ${WRKSRC}/${d} && ${SETENV} ${QMAKE_ENV} ${_QMAKE} ${QMAKE_ARGS} ${WRKSRC}/${d} .endfor post-build: @cd ${WRKSRC}/src/plugins/bearer/generic && \ ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} \ ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET} post-install: @cd ${WRKSRC}/src/plugins/bearer/generic && \ ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} \ ${MAKE_ARGS} ${INSTALL_TARGET} .include diff --git a/net/qt5-network/distinfo b/net/qt5-network/distinfo index fe7534db9127..6dd26aff108e 100644 --- a/net/qt5-network/distinfo +++ b/net/qt5-network/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809652 -SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f -SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532 +TIMESTAMP = 1711771153 +SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb +SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504 diff --git a/net/qt5-network/files/patch-security-rollup b/net/qt5-network/files/patch-security-rollup deleted file mode 100644 index 09cf34ef8b34..000000000000 --- a/net/qt5-network/files/patch-security-rollup +++ /dev/null @@ -1,165 +0,0 @@ -From a4d20b51de320a5da2d5f1bf277af8293adc5398 Mon Sep 17 00:00:00 2001 -From: Marc Mutz -Date: Tue, 12 Dec 2023 20:51:56 +0100 -Subject: [PATCH] HPack: fix a Yoda Condition - -Putting the variable on the LHS of a relational operation makes the -expression easier to read. In this case, we find that the whole -expression is nonsensical as an overflow protection, because if -name.size() + value.size() overflows, the result will exactly _not_ -be > max() - 32, because UB will have happened. - -To be fixed in a follow-up commit. - -As a drive-by, add parentheses around the RHS. - -Change-Id: I35ce598884c37c51b74756b3bd2734b9aad63c09 -Reviewed-by: Allan Sandfeld Jensen -(cherry picked from commit 658607a34ead214fbacbc2cca44915655c318ea9) -Reviewed-by: Qt Cherry-pick Bot -(cherry picked from commit 4f7efd41740107f90960116700e3134f5e433867) -(cherry picked from commit 13c16b756900fe524f6d9534e8a07aa003c05e0c) -(cherry picked from commit 1d4788a39668fb2dc5912a8d9c4272dc40e99f92) -(cherry picked from commit 87de75b5cc946d196decaa6aef4792a6cac0b6db) ---- - src/network/access/http2/hpacktable.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/network/access/http2/hpacktable.cpp b/src/network/access/http2/hpacktable.cpp -index fddb5feca56..3d88cb66f51 100644 ---- src/network/access/http2/hpacktable.cpp.orig -+++ src/network/access/http2/hpacktable.cpp -@@ -63,7 +63,7 @@ HeaderSize entry_size(const QByteArray &name, const QByteArray &value) - // 32 octets of overhead." - - const unsigned sum = unsigned(name.size() + value.size()); -- if (std::numeric_limits::max() - 32 < sum) -+ if (sum > (std::numeric_limits::max() - 32)) - return HeaderSize(); - return HeaderSize(true, quint32(sum + 32)); - } -From c379f4ef587d61c9a5b61b5ada57fdadcc8145eb Mon Sep 17 00:00:00 2001 -From: Marc Mutz -Date: Tue, 12 Dec 2023 22:08:07 +0100 -Subject: [PATCH] HPack: fix incorrect integer overflow check -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This code never worked: - -For the comparison with max() - 32 to trigger, on 32-bit platforms (or -Qt 5) signed interger overflow would have had to happen in the -addition of the two sizes. The compiler can therefore remove the -overflow check as dead code. - -On Qt 6 and 64-bit platforms, the signed integer addition would be -very unlikely to overflow, but the following truncation to uint32 -would yield the correct result only in a narrow 32-value window just -below UINT_MAX, if even that. - -Fix by using the proper tool, qAddOverflow. - -Manual conflict resolutions: - - qAddOverflow doesn't exist in Qt 5, use private add_overflow - predecessor API instead - -Change-Id: I7599f2e75ff7f488077b0c60b81022591005661c -Reviewed-by: Allan Sandfeld Jensen -(cherry picked from commit ee5da1f2eaf8932aeca02ffea6e4c618585e29e3) -Reviewed-by: Qt Cherry-pick Bot -(cherry picked from commit debeb8878da2dc706ead04b6072ecbe7e5313860) -Reviewed-by: Thiago Macieira -Reviewed-by: Marc Mutz -(cherry picked from commit 811b9eef6d08d929af8708adbf2a5effb0eb62d7) -(cherry picked from commit f931facd077ce945f1e42eaa3bead208822d3e00) -(cherry picked from commit 9ef4ca5ecfed771dab890856130e93ef5ceabef5) -Reviewed-by: Mårten Nordheim ---- - src/network/access/http2/hpacktable.cpp | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/network/access/http2/hpacktable.cpp b/src/network/access/http2/hpacktable.cpp -index 3d88cb66f51..315f3e23440 100644 ---- src/network/access/http2/hpacktable.cpp.orig -+++ src/network/access/http2/hpacktable.cpp -@@ -40,6 +40,7 @@ - #include "hpacktable_p.h" - - #include -+#include - - #include - #include -@@ -62,7 +63,9 @@ HeaderSize entry_size(const QByteArray &name, const QByteArray &value) - // for counting the number of references to the name and value would have - // 32 octets of overhead." - -- const unsigned sum = unsigned(name.size() + value.size()); -+ size_t sum; -+ if (add_overflow(size_t(name.size()), size_t(value.size()), &sum)) -+ return HeaderSize(); - if (sum > (std::numeric_limits::max() - 32)) - return HeaderSize(); - return HeaderSize(true, quint32(sum + 32)); -From 8907dedc858cc344d770a2e826d6acc516429540 Mon Sep 17 00:00:00 2001 -From: Marc Mutz -Date: Tue, 19 Dec 2023 14:22:37 +0100 -Subject: [PATCH] Http2: fix potential overflow in assemble_hpack_block() -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The function is given a vector of Http2::Frame's and flattens it into -a vector. While each Frame can contain a maximum of 16GiB of -data (24-bit size field), one "only" needs 257 of them to overflow the -quint32 variable's range. - -So make sure any overflow does not go undetected. - -Keep the limited uint32_t range for now, as we don't know whether all -consumers of the result can deal with more than 4GiB of data. - -Since all these frames must be in memory, this cannot overflow in -practice on 32-bit machines. - -Pick-to: 6.7 6.6 6.5 6.2 5.15 -Change-Id: Iafaa7d1c870cba9100e75065db11d95934f86213 -Reviewed-by: Mårten Nordheim -(cherry picked from commit 1e6bb61af3ae29755f93b92f157df026f934ae61) - -* asturmlechner 2024-01-02: Use correct include for 5.15 ---- - src/network/access/qhttp2protocolhandler.cpp | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/src/network/access/qhttp2protocolhandler.cpp b/src/network/access/qhttp2protocolhandler.cpp -index 39dd460881a..ead88d781ae 100644 ---- src/network/access/qhttp2protocolhandler.cpp.orig -+++ src/network/access/qhttp2protocolhandler.cpp -@@ -46,10 +46,12 @@ - #include - - #include -+ - #include - #include - #include - #include -+#include - #include - - #include -@@ -124,8 +126,10 @@ std::vector assemble_hpack_block(const std::vector &frames) - std::vector hpackBlock; - - quint32 total = 0; -- for (const auto &frame : frames) -- total += frame.hpackBlockSize(); -+ for (const auto &frame : frames) { -+ if (add_overflow(total, frame.hpackBlockSize(), &total)) -+ return hpackBlock; -+ } - - if (!total) - return hpackBlock; diff --git a/net/qt5-networkauth/distinfo b/net/qt5-networkauth/distinfo index 91b02fea90bf..ce5eb6b35692 100644 --- a/net/qt5-networkauth/distinfo +++ b/net/qt5-networkauth/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809504 -SHA256 (KDE/Qt/5.15.12/kde-qtnetworkauth-5.15.12p0.tar.xz) = 36c143525b7b72546703c6055fbdf6cc109aa87b5b73dba19361630e2b8ad581 -SIZE (KDE/Qt/5.15.12/kde-qtnetworkauth-5.15.12p0.tar.xz) = 120012 +TIMESTAMP = 1711771154 +SHA256 (KDE/Qt/5.15.13/kde-qtnetworkauth-5.15.13p0.tar.xz) = ff183120c28b0cc211f9e0577e18e03f0c3a6aca12e79fefceb121409a946546 +SIZE (KDE/Qt/5.15.13/kde-qtnetworkauth-5.15.13p0.tar.xz) = 120076 diff --git a/print/qt5-printsupport/distinfo b/print/qt5-printsupport/distinfo index 7cc7e61a2be9..ef4a41be04d7 100644 --- a/print/qt5-printsupport/distinfo +++ b/print/qt5-printsupport/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809472 -SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f -SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532 +TIMESTAMP = 1711771156 +SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb +SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504 diff --git a/sysutils/qt5-qtdiag/distinfo b/sysutils/qt5-qtdiag/distinfo index bc754ce2c9cf..fa8018a31e16 100644 --- a/sysutils/qt5-qtdiag/distinfo +++ b/sysutils/qt5-qtdiag/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703841356 -SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c -SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464 +TIMESTAMP = 1711771157 +SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7 +SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980 diff --git a/sysutils/qt5-qtpaths/distinfo b/sysutils/qt5-qtpaths/distinfo index f369a93d5ed5..a9d52829b13b 100644 --- a/sysutils/qt5-qtpaths/distinfo +++ b/sysutils/qt5-qtpaths/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809524 -SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c -SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464 +TIMESTAMP = 1711771158 +SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7 +SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980 diff --git a/sysutils/qt5-qtplugininfo/distinfo b/sysutils/qt5-qtplugininfo/distinfo index 3a33797a445f..c802921ed5db 100644 --- a/sysutils/qt5-qtplugininfo/distinfo +++ b/sysutils/qt5-qtplugininfo/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703841359 -SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c -SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464 +TIMESTAMP = 1711771159 +SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7 +SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980 diff --git a/textproc/qt5-xml/distinfo b/textproc/qt5-xml/distinfo index 7163ce129a97..975f9cc8dc61 100644 --- a/textproc/qt5-xml/distinfo +++ b/textproc/qt5-xml/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809483 -SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f -SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532 +TIMESTAMP = 1711771160 +SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb +SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504 diff --git a/textproc/qt5-xmlpatterns/distinfo b/textproc/qt5-xmlpatterns/distinfo index be313bb347e4..e14991b6fce3 100644 --- a/textproc/qt5-xmlpatterns/distinfo +++ b/textproc/qt5-xmlpatterns/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809484 -SHA256 (KDE/Qt/5.15.12/kde-qtxmlpatterns-5.15.12p0.tar.xz) = c5f08e672ea200230eff68a84ce7738d53eb2c5bbd194041a4ab29006086da9c -SIZE (KDE/Qt/5.15.12/kde-qtxmlpatterns-5.15.12p0.tar.xz) = 5100640 +TIMESTAMP = 1711771161 +SHA256 (KDE/Qt/5.15.13/kde-qtxmlpatterns-5.15.13p0.tar.xz) = 1f8443a8ab491f13a4f25a3681d95cced775e6ba661ddf73ec9a72d6a679596d +SIZE (KDE/Qt/5.15.13/kde-qtxmlpatterns-5.15.13p0.tar.xz) = 5097184 diff --git a/www/qt5-webchannel/distinfo b/www/qt5-webchannel/distinfo index 0d7631438bb8..c63115acb4b4 100644 --- a/www/qt5-webchannel/distinfo +++ b/www/qt5-webchannel/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809539 -SHA256 (KDE/Qt/5.15.12/kde-qtwebchannel-5.15.12p3.tar.xz) = 376af944d4dbf4c67154257d541f526d858044cacafef8e665e47a84b72d826e -SIZE (KDE/Qt/5.15.12/kde-qtwebchannel-5.15.12p3.tar.xz) = 188660 +TIMESTAMP = 1711771162 +SHA256 (KDE/Qt/5.15.13/kde-qtwebchannel-5.15.13p3.tar.xz) = 5e23ef005b3afc2010edd1ede739eaae760be2bc49b0ee4e8777133521806a97 +SIZE (KDE/Qt/5.15.13/kde-qtwebchannel-5.15.13p3.tar.xz) = 188476 diff --git a/www/qt5-webengine/Makefile b/www/qt5-webengine/Makefile index 527e33418bf4..261a0f2559f3 100644 --- a/www/qt5-webengine/Makefile +++ b/www/qt5-webengine/Makefile @@ -1,172 +1,172 @@ # QtWebEngine itself is a very thin layer of Qt code on top of a large part of # Chromium (everything up to the content/ layer). As such, most of the work in # this port revolves around taming Chromium and getting it to build on FreeBSD. # While it does build at the moment, there are several items that should be # investigated or improved: # - We are using several stub files, especially in Chromium's base/ and net/ # layers. We should look at implementing the missing bits instead. # - We are currently not using any sandboxing mechanism. # - We need to see if more "use_system_" flags can be passed. # - The process of porting QtWebEngine needs to be documented so we can move to # newer releases more easily. # # Also note that, due to the insane amount of patches this port needs, it tends # to lag behind the rest of the official Qt5 ones, which is why we set # QT5_VERSION and DISTINFO_FILE here. # In order to successfully build this port in poudriere you need to add # MAX_FILES_qt5_webengine=4096 to /usr/local/etc/poudriere.conf PORTNAME= webengine DISTVERSION= ${QT5_VERSION}${QT5_KDE_PATCH} -PORTREVISION= 5 CATEGORIES= www PKGNAMEPREFIX= qt5- MAINTAINER= kde@FreeBSD.org COMMENT= Qt 5 library to render web content BUILD_DEPENDS= bison:devel/bison \ ${LOCALBASE}/include/linux/input.h:devel/evdev-proto \ - ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat + ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat \ + ${PYTHON_PKGNAMEPREFIX}html5lib>0:www/py-html5lib@${PY_FLAVOR} LIB_DEPENDS= libavcodec.so:multimedia/ffmpeg \ libdbus-1.so:devel/dbus \ libdouble-conversion.so:devel/double-conversion \ libevent.so:devel/libevent \ libfontconfig.so:x11-fonts/fontconfig \ libfreetype.so:print/freetype2 \ libharfbuzz.so:print/harfbuzz \ libjsoncpp.so:devel/jsoncpp \ liblcms2.so:graphics/lcms2 \ libnspr4.so:devel/nspr \ libnss3.so:security/nss \ libopenh264.so:multimedia/openh264 \ libopus.so:audio/opus \ libpci.so:devel/libpci \ libpng.so:graphics/png \ libre2.so:devel/re2 \ libsnappy.so:archivers/snappy \ libvpx.so:multimedia/libvpx \ libwebp.so:graphics/webp DISTINFO_FILE= ${.CURDIR}/distinfo QT5_VERSION= ${_KDE_webengine_VERSION} OPTIONS_SINGLE= AUDIO OPTIONS_SINGLE_AUDIO= ALSA PULSEAUDIO SNDIO OPTIONS_DEFAULT= ALSA AUDIO_DESC= Audio backend # Need the alsa plugins to get sound at runtime, otherwise messages # that the pcm_oss plugin can't be opened. ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib ALSA_RUN_DEPENDS= alsa-plugins>=0:audio/alsa-plugins ALSA_VARS= QMAKE_CONFIGURE_ARGS+=-alsa ALSA_VARS_OFF= QMAKE_CONFIGURE_ARGS+=-no-alsa PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio PULSEAUDIO_VARS= QMAKE_CONFIGURE_ARGS+=-pulseaudio PULSEAUDIO_VARS_OFF= QMAKE_CONFIGURE_ARGS+=-no-pulseaudio SNDIO_LIB_DEPENDS= libsndio.so:audio/sndio SNDIO_VARS= QMAKE_CONFIGURE_ARGS+=-sndio SNDIO_VARS_OFF= QMAKE_CONFIGURE_ARGS+=-no-sndio # We pass `norecursive' to USES=qmake because src/plugins/plugins.pro checks # whether webenginewidgets is available, which fails when qmake processes all # .pro files at once. USES= gl gnome gperf jpeg minizip ninja:build nodejs:build,lts \ perl5 pkgconfig python:build qmake:norecursive,outsource \ qt-dist:5,webengine shebangfix xorg USE_GL= gl USE_GNOME= glib20 libxml2 libxslt USE_PERL5= build USE_QT= core declarative gui location network printsupport \ webchannel widgets \ buildtools:build designer:build qmake:build USE_XORG= x11 xcb xcomposite xcursor xdamage xext xfixes xi xkbfile \ xorgproto xrandr xrender xscrnsaver xtst QMAKE_CONFIGURE_ARGS= -proprietary-codecs -system-ffmpeg # We could just set it to an empty string as well. "all" does not account for # dependencies correctly in the generated Makefiles, use the right target here. ALL_TARGET= first # We need ar(1) from ports because the Chromium code uses the @file syntax. # We then need to ensure ld(1) from ports is used because of the archives ar(1) # generated. USE_BINUTILS= yes CC+= "-B${LOCALBASE}/bin" CXX+= "-B${LOCALBASE}/bin" # The build system reads the environment variable $NINJA_PATH to decide whether # to boostrap ninja or not (and also to invoke it afterwards). CC and CXX are # read by some Chromium code to determine which compiler to invoke when running # some configuration tests. # Since we use USES=qmake:norecursive, we also need to pass some variables to # MAKE_ENV because part of the configuration process happens during the build. CONFIGURE_ENV+= NINJAFLAGS="-j${MAKE_JOBS_NUMBER}" \ NINJA_PATH="${LOCALBASE}/bin/ninja" \ PATH=${CONFIGURE_WRKSRC}/bin:${LOCALBASE}/bin:${PATH} MAKE_ENV+= CC="${CC}" CXX="${CXX}" \ C_INCLUDE_PATH=${LOCALBASE}/include \ CPLUS_INCLUDE_PATH=${LOCALBASE}/include \ ${CONFIGURE_ENV} QT_BINARIES= yes .include .if ${ARCH:Mmips*} || ${ARCH:Mpowerpc*} PLIST_SUB+= BE="" LE="@comment " .else PLIST_SUB+= BE="@comment " LE="" .endif post-extract: # Install FreeBSD's freebsd.pri file. ${CP} ${FILESDIR}/freebsd.pri ${WRKSRC}/src/buildtools/config/freebsd.pri post-extract-SNDIO-on: @cd ${WRKSRC}/src/3rdparty/chromium/media/audio && ${MKDIR} sndio openbsd @${CP} ${FILESDIR}/sndio_*put.* \ ${WRKSRC}/src/3rdparty/chromium/media/audio/sndio @${CP} ${FILESDIR}/audio_manager_openbsd.* \ ${WRKSRC}/src/3rdparty/chromium/media/audio/openbsd post-patch: @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \ ${WRKSRC}/src/3rdparty/chromium/base/linux_util.cc \ ${WRKSRC}/src/3rdparty/chromium/base/test/BUILD.gn \ ${WRKSRC}/src/3rdparty/chromium/build/toolchain/gcc_toolchain.gni \ ${WRKSRC}/src/3rdparty/chromium/chrome/common/chrome_paths.cc \ ${WRKSRC}/src/3rdparty/chromium/third_party/pdfium/core/fxge/fx_ge_linux.cpp \ ${WRKSRC}/src/3rdparty/gn/build/gen.py @${REINPLACE_CMD} -E -e 's|^(MODULE_VERSION = ).*|\1${QT5_VERSION}|' \ ${WRKSRC}/.qmake.conf .if ${ARCH:Mmips*} || ${ARCH:Mpowerpc*} @${REINPLACE_CMD} -e 's/icudtl.dat/icudtb.dat/' \ ${WRKSRC}/src/core/core_module.pro .endif pre-configure: # Link in ${PYTHON_CMD} to ${CONFIGURE_WRKSRC}/bin -- the scripts hardcode 'python' # in too many places to reasonably patch. So just link in ${PYTHON_CMD} to work around # $LOCALBASE/bin/python being python3 if the default versions is set to 3.x. ${MKDIR} ${CONFIGURE_WRKSRC}/bin && ${LN} -s ${PYTHON_CMD} ${CONFIGURE_WRKSRC}/bin/python # Unbundle a few dependencies. cd ${WRKSRC}/src/3rdparty/chromium && ${SETENV} ${CONFIGURE_ENV} ${PYTHON_CMD} \ ./build/linux/unbundle/replace_gn_files.py --system-libraries\ fontconfig freetype harfbuzz-ng libdrm libevent libpng libwebp libxml libxslt openh264 opus || ${FALSE} # Rerun syncqt.pl -- otherwise the resulting package misses some forwarding headers. cd ${WRKSRC} && ${QT_BINDIR}/syncqt.pl -version ${QT5_VERSION} post-build: # Fix version mismatches for CMake .for module in Pdf PdfWidgets WebEngine WebEngineCore WebEngineWidgets @${REINPLACE_CMD} -e '/${QT5_VERSION} $${_Qt5${module}_FIND_VERSION_EXACT}/s|${QT5_VERSION}|'"$$(${MAKE} -C ../../devel/qt5-core -VQT5_VERSION)"'|' \ ${BUILD_WRKSRC}/lib/cmake/Qt5${module}/Qt5${module}Config.cmake .endfor .include diff --git a/www/qt5-webengine/distinfo b/www/qt5-webengine/distinfo index 289817511e76..43b30ce42d06 100644 --- a/www/qt5-webengine/distinfo +++ b/www/qt5-webengine/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1700946456 -SHA256 (KDE/Qt/5.15.16/kde-qtwebengine-5.15.16p5.tar.xz) = a35887269d3e060859d00f399aa19dfb9e004d6bbf0dbb6daf1c60708c9dee78 -SIZE (KDE/Qt/5.15.16/kde-qtwebengine-5.15.16p5.tar.xz) = 314965924 +TIMESTAMP = 1711846408 +SHA256 (KDE/Qt/5.15.16/kde-qtwebengine-5.15.16p9.tar.xz) = 99313b8f20786e6624536a0f209c7f8dde3555fe0c8688355463b32b0a54232a +SIZE (KDE/Qt/5.15.16/kde-qtwebengine-5.15.16p9.tar.xz) = 317545680 diff --git a/www/qt5-webengine/files/patch-configure.pri b/www/qt5-webengine/files/patch-configure.pri index 32fe11de92cd..e0bccf8d94bd 100644 --- a/www/qt5-webengine/files/patch-configure.pri +++ b/www/qt5-webengine/files/patch-configure.pri @@ -1,69 +1,14 @@ -* Remove checks for Python2 [1] * Add support for FreeBSD -[1] Obtained from: - -https://gitlab.archlinux.org/archlinux/packaging/packages/qt5-webengine/-/raw/main/qt5-webengine-python3.patch?ref_type=heads - ---- configure.pri.orig 2023-07-20 09:52:10 UTC +--- configure.pri.orig 2024-03-27 11:26:34 UTC +++ configure.pri -@@ -7,20 +7,7 @@ defineTest(isPythonVersionSupported) { - equals(QMAKE_HOST.os, Windows): EXE_SUFFIX = .exe - - defineTest(isPythonVersionSupported) { -- python = $$system_quote($$system_path($$1)) -- python_version = $$system('$$python -c "import sys; print(sys.version_info[0:3])"') -- python_version ~= s/[()]//g -- python_version = $$split(python_version, ',') -- python_major_version = $$first(python_version) -- greaterThan(python_major_version, 2) { -- qtLog("Python version 3 is not supported by Chromium.") -- return(false) -- } -- python_minor_version = $$member(python_version, 1) -- python_patch_version = $$member(python_version, 2) -- greaterThan(python_major_version, 1): greaterThan(python_minor_version, 6): greaterThan(python_patch_version, 4): return(true) -- qtLog("Unsupported python version: $${python_major_version}.$${python_minor_version}.$${python_patch_version}.") -- return(false) -+ return(true) - } - - defineTest(qtConfTest_detectJumboBuild) { -@@ -52,10 +39,10 @@ defineTest(qtConfReport_jumboBuild) { - qtConfReportPadded($${1}, $$mergeLimit) - } - --defineTest(qtConfTest_detectPython2) { -- python = $$qtConfFindInPath("python2$$EXE_SUFFIX") -+defineTest(qtConfTest_detectPython) { -+ python = $$qtConfFindInPath("python$$EXE_SUFFIX") - isEmpty(python) { -- qtLog("'python2$$EXE_SUFFIX' not found in PATH. Checking for 'python$$EXE_SUFFIX'.") -+ qtLog("'python$$EXE_SUFFIX' not found in PATH. Checking for 'python$$EXE_SUFFIX'.") - python = $$qtConfFindInPath("python$$EXE_SUFFIX") - } - isEmpty(python) { -@@ -63,11 +50,11 @@ defineTest(qtConfTest_detectPython2) { - return(false) - } - !isPythonVersionSupported($$python) { -- qtLog("A suitable Python 2 executable could not be located.") -+ qtLog("A suitable Python executable could not be located.") - return(false) - } - -- # Make tests.python2.location available in configure.json. -+ # Make tests.python.location available in configure.json. - $${1}.location = $$clean_path($$python) - export($${1}.location) - $${1}.cache += location -@@ -122,6 +109,9 @@ defineTest(qtConfTest_detectPlatform) { - } +@@ -136,6 +136,9 @@ defineTest(qtConfTest_detectPlatform) { macos:qtwebengine_isMacOsPlatformSupported() { $${1}.platform = "macos" -+ } + } + unix:qtwebengine_isLinuxPlatformSupported() { + $${1}.platform = "linux" - } ++ } ios:qtwebengine_isMacOsPlatformSupported() { $${1}.platform = "ios" + } diff --git a/www/qt5-webengine/files/patch-mkspecs_features_functions.prf b/www/qt5-webengine/files/patch-mkspecs_features_functions.prf index b8ac1d14ef88..357bb5e2a61f 100644 --- a/www/qt5-webengine/files/patch-mkspecs_features_functions.prf +++ b/www/qt5-webengine/files/patch-mkspecs_features_functions.prf @@ -1,60 +1,40 @@ -* Rename Python2 related functions to Python generic ones [1] * Add support for FreeBSD * Add detection for PowerPC64 -[1] Obtained from: - -https://gitlab.archlinux.org/archlinux/packaging/packages/qt5-webengine/-/raw/main/qt5-webengine-python3.patch?ref_type=heads - ---- mkspecs/features/functions.prf.orig 2023-07-20 09:52:10 UTC +--- mkspecs/features/functions.prf.orig 2024-03-27 11:26:34 UTC +++ mkspecs/features/functions.prf -@@ -44,11 +44,11 @@ defineReplace(pythonPath) { - - # Returns the unquoted path to the python executable. - defineReplace(pythonPath) { -- isEmpty(QMAKE_PYTHON2) { -+ isEmpty(QMAKE_PYTHON) { - # Fallback for building QtWebEngine with Qt < 5.8 -- QMAKE_PYTHON2 = python -+ QMAKE_PYTHON = python - } -- return($$QMAKE_PYTHON2) -+ return($$QMAKE_PYTHON) - } - - # Returns the python executable for use with shell / make targets. @@ -89,6 +89,10 @@ defineReplace(gnWebEngineArgs) { include($$QTWEBENGINE_ROOT/src/buildtools/config/windows.pri) include($$QTWEBENGINE_ROOT/src/core/config/windows.pri) } + freebsd { + include($$QTWEBENGINE_ROOT/src/buildtools/config/freebsd.pri) + include($$QTWEBENGINE_ROOT/src/core/config/linux.pri) + } isEmpty(gn_args): error(No gn_args found please make sure you have valid configuration.) return($$gn_args) } @@ -98,6 +102,7 @@ defineReplace(gnPdfArgs) { macos: include($$QTWEBENGINE_ROOT/src/buildtools/config/mac_osx.pri) ios: include($$QTWEBENGINE_ROOT/src/pdf/config/ios.pri) win32: include($$QTWEBENGINE_ROOT/src/buildtools/config/windows.pri) + freebsd: include($$QTWEBENGINE_ROOT/src/buildtools/config/freebsd.pri) include($$QTWEBENGINE_ROOT/src/pdf/config/common.pri) isEmpty(gn_args): error(No gn_args found please make sure you have valid configuration.) return($$gn_args) @@ -112,6 +117,7 @@ defineReplace(gnArch) { contains(qtArch, "mips"): return(mipsel) contains(qtArch, "mips64"): return(mips64el) contains(qtArch, "mips64el"): return(mips64el) + contains(qtArch, "power64"): return(ppc64) return(unknown) } @@ -119,6 +125,7 @@ defineReplace(gnOS) { macos: return(mac) win32: return(win) linux: return(linux) + freebsd: return(freebsd) error(Unsupported platform) return(unknown) } diff --git a/www/qt5-webengine/files/patch-python3-chromium b/www/qt5-webengine/files/patch-python3-chromium deleted file mode 100644 index b9b730755db2..000000000000 --- a/www/qt5-webengine/files/patch-python3-chromium +++ /dev/null @@ -1,2140 +0,0 @@ -* Convert to newer Python and remove Python2 related artifacts - -Obtained from: - -https://gitlab.archlinux.org/archlinux/packaging/packages/qt5-webengine/-/raw/main/qt5-webengine-chromium-python3.patch?ref_type=heads - ---- src/3rdparty/chromium/BUILD.gn.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/BUILD.gn -@@ -239,7 +239,6 @@ group("gn_all") { - "//media/capture:capture_unittests", - "//media/cast:cast_unittests", - "//third_party/angle/src/tests:angle_white_box_tests", -- "//third_party/catapult/telemetry:bitmaptools($host_toolchain)", - ] - } else if (is_ios && !use_qt) { - deps += [ -@@ -354,7 +353,6 @@ group("gn_all") { - "//net/android:net_junit_tests", - "//services:services_junit_tests", - "//testing/android/junit:junit_unit_tests", -- "//third_party/catapult/devil", - "//third_party/smhasher:murmurhash3", - "//tools/android:android_tools", - "//tools/android:memconsumer", -@@ -959,7 +957,6 @@ if (is_chromeos) { - "//third_party/dawn/src/tests:dawn_unittests", - - # Blocked on https://github.com/catapult-project/catapult/issues/2297 -- #"//third_party/catapult/telemetry:bitmaptools", - "//tools/perf/clear_system_cache", - "//ui/ozone/gl:ozone_gl_unittests", - ] -@@ -1037,7 +1034,6 @@ if (!is_ios && !use_qt) { - data_deps = [ - "//chrome:chrome", - "//chrome/test/chromedriver", -- "//third_party/catapult/third_party/typ", - ] - if (is_win) { - data_deps += [ "//build/win:copy_cdb_to_output" ] -@@ -1084,7 +1080,6 @@ if (!is_ios && !use_qt) { - "//third_party/blink/public:blink_devtools_inspector_resources", - "//third_party/blink/public/mojom:mojom_platform_js_data_deps", - "//third_party/blink/renderer/core/html:js_files_for_form_controls_web_tests", -- "//third_party/catapult/third_party/typ", - "//third_party/mesa_headers", - "//tools/imagediff", - ] -@@ -1152,7 +1147,6 @@ if (!is_ios && !use_qt) { - - if (is_android) { - data += [ -- "//third_party/catapult/", - "//build/android/", - ] - } -@@ -1259,11 +1253,6 @@ if (!is_ios && !use_qt) { - "//third_party/blink/web_tests/StaleTestExpectations", - "//third_party/blink/web_tests/TestExpectations", - "//third_party/blink/web_tests/VirtualTestSuites", -- "//third_party/catapult/common/py_utils/", -- "//third_party/catapult/devil/", -- "//third_party/catapult/dependency_manager/", -- "//third_party/catapult/third_party/zipfile/", -- "//third_party/catapult/third_party/typ/", - "//third_party/depot_tools/pylint", - "//third_party/depot_tools/pylint-1.5", - "//third_party/depot_tools/pylint_main.py", ---- src/3rdparty/chromium/build/print_python_deps.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/build/print_python_deps.py -@@ -1,4 +1,4 @@ --#!/usr/bin/python2.7 -+#!/usr/bin/python - # Copyright 2016 The Chromium Authors. All rights reserved. - # Use of this source code is governed by a BSD-style license that can be - # found in the LICENSE file. -@@ -80,7 +80,7 @@ def _GetTargetPythonVersion(module): - if shebang.startswith('#!'): - # Examples: - # '#!/usr/bin/python' -- # '#!/usr/bin/python2.7' -+ # '#!/usr/bin/python' - # '#!/usr/bin/python3' - # '#!/usr/bin/env python3' - # '#!/usr/bin/env vpython' -@@ -152,7 +152,7 @@ def main(): - - # Trybots run with vpython as default Python, but with a different config - # from //.vpython. To make the is_vpython test work, and to match the behavior -- # of dev machines, the shebang line must be run with python2.7. -+ # of dev machines, the shebang line must be run with python. - # - # E.g. $HOME/.vpython-root/dd50d3/bin/python - # E.g. /b/s/w/ir/cache/vpython/ab5c79/bin/python ---- src/3rdparty/chromium/chrome/chrome_paks.gni.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/chrome/chrome_paks.gni -@@ -94,7 +94,6 @@ template("chrome_extra_paks") { - "$root_gen_dir/chrome/common_resources.pak", - "$root_gen_dir/components/autofill/core/browser/autofill_address_rewriter_resources.pak", - "$root_gen_dir/components/components_resources.pak", -- "$root_gen_dir/content/browser/tracing/tracing_resources.pak", - "$root_gen_dir/content/content_resources.pak", - "$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak", - "$root_gen_dir/net/net_resources.pak", -@@ -110,7 +109,6 @@ template("chrome_extra_paks") { - "//components/autofill/core/browser:autofill_address_rewriter_resources", - "//components/resources", - "//content:content_resources", -- "//content/browser/tracing:resources", - "//mojo/public/js:resources", - "//net:net_resources", - "//skia:skia_resources", ---- src/3rdparty/chromium/chrome/test/BUILD.gn.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/chrome/test/BUILD.gn -@@ -7103,8 +7103,6 @@ if (!is_fuchsia && !is_android) { - "//chrome/test/data/password/captured_sites/", - "//chrome/test/data/web_page_replay_go_helper_scripts/automation_helper.js", - "//components/test/data/autofill/web_page_replay_support_files/", -- "//third_party/catapult/telemetry/telemetry/bin/", -- "//third_party/catapult/web_page_replay_go/deterministic.js", - ] - - if (is_linux || is_chromeos || is_win) { -@@ -7141,7 +7139,6 @@ if (!is_fuchsia && !is_android) { - - # TODO(uwyiming@chromium.org) create a gn target for Web Page Replay Go (WPR Go) and only WPR Go. - # So that test targets requiring WPR Go does not pull down the whole telemetry tool chain. -- "//third_party/catapult:telemetry_chrome_test_support", - "//third_party/hunspell", - "//third_party/icu", - "//third_party/libpng", -@@ -7171,7 +7168,6 @@ if (!is_fuchsia && !is_android) { - deps = [ "//tools/perf/chrome_telemetry_build:telemetry_chrome_test" ] - - data = [ -- "//third_party/catapult/telemetry/telemetry/internal/bin/", - "//tools/perf/run_telemetry_tests", - - # For isolate contract. -@@ -7189,7 +7185,6 @@ if (!is_fuchsia && !is_android) { - group("telemetry_gpu_unittests") { - testonly = true - deps = [ -- "//third_party/catapult:telemetry_chrome_test_support", - "//tools/metrics:metrics_python_tests", - ] - data = [ -@@ -7313,7 +7308,6 @@ if (is_mac || is_win || is_android) { - "//testing/scripts", - "//testing/test_env.py", - "//testing/xvfb.py", -- "//third_party/catapult", - "//tools", - ] - } ---- src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py -@@ -7,7 +7,7 @@ - Converts a given ASCII proto into a binary resource. - - """ -- -+from __future__ import print_function - import abc - import imp - import optparse -@@ -196,12 +196,12 @@ class BinaryProtoGenerator: - self._ImportProtoModules(opts.path) - - if not self.VerifyArgs(opts): -- print "Wrong arguments" -+ print("Wrong arguments") - return 1 - - try: - self._GenerateBinaryProtos(opts) - except Exception as e: -- print "ERROR: Failed to render binary version of %s:\n %s\n%s" % ( -- opts.infile, str(e), traceback.format_exc()) -+ print("ERROR: Failed to render binary version of %s:\n %s\n%s" % -+ (opts.infile, str(e), traceback.format_exc())) - return 1 ---- src/3rdparty/chromium/content/browser/BUILD.gn.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/content/browser/BUILD.gn -@@ -2169,7 +2169,6 @@ jumbo_static_library("browser") { - if (!is_android) { - deps += [ - "//components/vector_icons", -- "//content/browser/tracing:resources", - ] - } - ---- src/3rdparty/chromium/content/browser/tracing/BUILD.gn.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/content/browser/tracing/BUILD.gn -@@ -1,51 +0,0 @@ --# Copyright 2014 The Chromium Authors. All rights reserved. --# Use of this source code is governed by a BSD-style license that can be --# found in the LICENSE file. -- --import("//tools/grit/grit_rule.gni") -- --# generate_about_tracing puts its files in this directory --tracing_gen_dir = "$root_gen_dir/content/browser/tracing" -- --# The script just writes filename with no dirs to the .grd, so we always need --# this file to be in the same directory as the inputs. --tracing_grd = "$tracing_gen_dir/tracing_resources.grd" -- --action("generate_tracing_grd") { -- visibility = [ ":*" ] # Depend on ":resources" to get this. -- script = "generate_trace_viewer_grd.py" -- -- input_pages = [ -- "$tracing_gen_dir/about_tracing.html", -- "$tracing_gen_dir/about_tracing.js", -- ] -- inputs = input_pages -- outputs = [ tracing_grd ] -- -- args = rebase_path(input_pages, target_gen_dir) + [ -- "--output", -- rebase_path(tracing_grd, root_build_dir), -- ] -- -- deps = [ "//third_party/catapult/tracing:generate_about_tracing" ] --} -- --grit("resources") { -- source = tracing_grd -- -- # Required because the .grd is generated. -- enable_input_discovery_for_gn_analyze = false -- -- outputs = [ -- "grit/tracing_resources.h", -- "tracing_resources.pak", -- ] -- -- # resource_ids has an entry for our .grd file that looks like: -- # "<(SHARED_INTERMEDIATE_DIR)/content/browser/tracing/tracing_resources.grd" -- # and what we pass here should make that resolve to our .grd file. -- defines = -- [ "SHARED_INTERMEDIATE_DIR=" + rebase_path(root_gen_dir, root_build_dir) ] -- -- deps = [ ":generate_tracing_grd" ] --} ---- src/3rdparty/chromium/content/browser/tracing/generate_trace_viewer_grd.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/content/browser/tracing/generate_trace_viewer_grd.py -@@ -74,7 +74,7 @@ def main(argv): - for filename in parsed_args.source_files: - add_file_to_grd(doc, os.path.basename(filename)) - -- with open(parsed_args.output_filename, 'w') as output_file: -+ with open(parsed_args.output_filename, 'wb') as output_file: - output_file.write(doc.toxml(encoding='UTF-8')) - - ---- src/3rdparty/chromium/content/browser/tracing/tracing_ui.cc.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/content/browser/tracing/tracing_ui.cc -@@ -27,7 +27,6 @@ - #include "base/strings/stringprintf.h" - #include "base/trace_event/trace_event.h" - #include "base/values.h" --#include "content/browser/tracing/grit/tracing_resources.h" - #include "content/browser/tracing/tracing_controller_impl.h" - #include "content/public/browser/browser_context.h" - #include "content/public/browser/browser_thread.h" -@@ -242,8 +241,6 @@ TracingUI::TracingUI(WebUI* web_ui) - WebUIDataSource* source = WebUIDataSource::Create(kChromeUITracingHost); - source->DisableTrustedTypesCSP(); - source->UseStringsJs(); -- source->SetDefaultResource(IDR_TRACING_HTML); -- source->AddResourcePath("tracing.js", IDR_TRACING_JS); - source->SetRequestFilter(base::BindRepeating(OnShouldHandleRequest), - base::BindRepeating(OnTracingRequest)); - WebUIDataSource::Add(browser_context, source); ---- src/3rdparty/chromium/content/shell/BUILD.gn.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/content/shell/BUILD.gn -@@ -390,7 +390,6 @@ repack("pak") { - sources = [ - "$root_gen_dir/content/app/resources/content_resources_100_percent.pak", - "$root_gen_dir/content/browser/resources/media/media_internals_resources.pak", -- "$root_gen_dir/content/browser/tracing/tracing_resources.pak", - "$root_gen_dir/content/browser/webrtc/resources/webrtc_internals_resources.pak", - "$root_gen_dir/content/content_resources.pak", - "$root_gen_dir/content/dev_ui_content_resources.pak", -@@ -413,7 +412,6 @@ repack("pak") { - "//content:dev_ui_content_resources", - "//content/app/resources", - "//content/browser/resources/media:media_internals_resources", -- "//content/browser/tracing:resources", - "//content/browser/webrtc/resources", - "//mojo/public/js:resources", - "//net:net_resources", ---- src/3rdparty/chromium/fuchsia/engine/BUILD.gn.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/fuchsia/engine/BUILD.gn -@@ -43,7 +43,6 @@ repack("web_engine_pak") { - "$root_gen_dir/components/components_resources.pak", - "$root_gen_dir/components/strings/components_strings_en-US.pak", - "$root_gen_dir/content/app/resources/content_resources_100_percent.pak", -- "$root_gen_dir/content/browser/tracing/tracing_resources.pak", - "$root_gen_dir/content/content_resources.pak", - "$root_gen_dir/content/dev_ui_content_resources.pak", - "$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak", -@@ -66,7 +65,6 @@ repack("web_engine_pak") { - "//content:content_resources", - "//content:dev_ui_content_resources", - "//content/app/resources", -- "//content/browser/tracing:resources", - "//gpu/command_buffer/service", - "//mojo/public/js:resources", - "//net:net_resources", ---- src/3rdparty/chromium/headless/BUILD.gn.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/headless/BUILD.gn -@@ -37,7 +37,6 @@ repack("pak") { - "$root_gen_dir/components/components_resources.pak", - "$root_gen_dir/components/strings/components_strings_en-US.pak", - "$root_gen_dir/content/app/resources/content_resources_100_percent.pak", -- "$root_gen_dir/content/browser/tracing/tracing_resources.pak", - "$root_gen_dir/content/content_resources.pak", - "$root_gen_dir/content/dev_ui_content_resources.pak", - "$root_gen_dir/headless/headless_lib_resources.pak", -@@ -65,7 +64,6 @@ repack("pak") { - "//content:content_resources", - "//content:dev_ui_content_resources", - "//content/app/resources", -- "//content/browser/tracing:resources", - "//mojo/public/js:resources", - "//net:net_resources", - "//third_party/blink/public:resources", ---- src/3rdparty/chromium/mojo/public/tools/BUILD.gn.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/mojo/public/tools/BUILD.gn -@@ -14,5 +14,4 @@ group("mojo_python_unittests") { - "//testing/xvfb.py", - ] - deps = [ "//mojo/public/tools/mojom/mojom:tests" ] -- data_deps = [ "//third_party/catapult/third_party/typ/" ] - } ---- src/3rdparty/chromium/mojo/public/tools/bindings/BUILD.gn.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/mojo/public/tools/bindings/BUILD.gn -@@ -2,9 +2,11 @@ - # Use of this source code is governed by a BSD-style license that can be - # found in the LICENSE file. - -+import("//build/config/python.gni") - import("//mojo/public/tools/bindings/mojom.gni") - import("//third_party/jinja2/jinja2.gni") - -+# TODO(crbug.com/1194274): Investigate nondeterminism in Py3 builds. - action("precompile_templates") { - sources = mojom_generator_sources - sources += [ ---- src/3rdparty/chromium/mojo/public/tools/bindings/gen_data_files_list.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/mojo/public/tools/bindings/gen_data_files_list.py -@@ -18,7 +18,6 @@ import sys - import re - import sys - --from cStringIO import StringIO - from optparse import OptionParser - - sys.path.insert( -@@ -41,12 +40,9 @@ def main(): - pattern = re.compile(options.pattern) - files = [f for f in os.listdir(options.directory) if pattern.match(f)] - -- stream = StringIO() -- for f in files: -- print(f, file=stream) -+ contents = '\n'.join(f for f in files) + '\n' -+ WriteFile(contents, options.output) - -- WriteFile(stream.getvalue(), options.output) -- stream.close() - - if __name__ == '__main__': - sys.exit(main()) ---- src/3rdparty/chromium/mojo/public/tools/bindings/generators/mojom_java_generator.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/mojo/public/tools/bindings/generators/mojom_java_generator.py -@@ -25,6 +25,10 @@ from util import build_utils - 'build', 'android', 'gyp')) - from util import build_utils - -+# TODO(crbug.com/1174969): Remove this once Python2 is obsoleted. -+if sys.version_info.major != 2: -+ basestring = str -+ long = int - - GENERATOR_PREFIX = 'java' - ---- src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/generator.py -@@ -136,9 +136,14 @@ def WriteFile(contents, full_path): - - def WriteFile(contents, full_path): - # If |contents| is same with the file content, we skip updating. -+ if not isinstance(contents, bytes): -+ data = contents.encode('utf8') -+ else: -+ data = contents -+ - if os.path.isfile(full_path): - with open(full_path, 'rb') as destination_file: -- if destination_file.read() == contents: -+ if destination_file.read() == data: - return - - # Make sure the containing directory exists. -@@ -146,11 +151,8 @@ def WriteFile(contents, full_path): - fileutil.EnsureDirectoryExists(full_dir) - - # Dump the data to disk. -- with open(full_path, "wb") as f: -- if not isinstance(contents, bytes): -- f.write(contents.encode('utf-8')) -- else: -- f.write(contents) -+ with open(full_path, 'wb') as f: -+ f.write(data) - - - def AddComputedData(module): ---- src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/module.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/module.py -@@ -398,7 +398,8 @@ class StructField(Field): - - - class StructField(Field): -- pass -+ def __hash__(self): -+ return super(Field, self).__hash__() - - - class UnionField(Field): ---- src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/template_expander.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/mojo/public/tools/mojom/mojom/generate/template_expander.py -@@ -75,9 +75,9 @@ def PrecompileTemplates(generator_modules, output_dir) - os.path.dirname(module.__file__), generator.GetTemplatePrefix()) - ])) - jinja_env.filters.update(generator.GetFilters()) -- jinja_env.compile_templates( -- os.path.join(output_dir, "%s.zip" % generator.GetTemplatePrefix()), -- extensions=["tmpl"], -- zip="stored", -- py_compile=True, -- ignore_errors=False) -+ jinja_env.compile_templates(os.path.join( -+ output_dir, "%s.zip" % generator.GetTemplatePrefix()), -+ extensions=["tmpl"], -+ zip="stored", -+ py_compile=sys.version_info.major < 3, -+ ignore_errors=False) ---- src/3rdparty/chromium/testing/BUILD.gn.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/testing/BUILD.gn -@@ -27,7 +27,6 @@ group("run_perf_test") { - - data_deps = [ - ":test_scripts_shared", -- "//third_party/catapult/tracing:convert_chart_json", - ] - - if (is_android) { ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/blink_v8_bridge.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/blink_v8_bridge.py -@@ -344,7 +344,7 @@ def make_default_value_expr(idl_type, default_value): - """ - assert default_value.is_type_compatible_with(idl_type) - -- class DefaultValueExpr: -+ class DefaultValueExpr(object): - _ALLOWED_SYMBOLS_IN_DEPS = ("isolate") - - def __init__(self, initializer_expr, initializer_deps, -@@ -502,7 +502,7 @@ def make_v8_to_blink_value(blink_var_name, - assert isinstance(blink_var_name, str) - assert isinstance(v8_value_expr, str) - assert isinstance(idl_type, web_idl.IdlType) -- assert (argument_index is None or isinstance(argument_index, (int, long))) -+ assert (argument_index is None or isinstance(argument_index, int)) - assert (default_value is None - or isinstance(default_value, web_idl.LiteralConstant)) - -@@ -622,7 +622,7 @@ def make_v8_to_blink_value_variadic(blink_var_name, v8 - """ - assert isinstance(blink_var_name, str) - assert isinstance(v8_array, str) -- assert isinstance(v8_array_start_index, (int, long)) -+ assert isinstance(v8_array_start_index, int) - assert isinstance(idl_type, web_idl.IdlType) - - pattern = ("auto&& ${{{_1}}} = " ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/callback_interface.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/callback_interface.py -@@ -177,7 +177,7 @@ def generate_callback_interface(callback_interface_ide - prop_install_mode=PropInstallMode.UNCONDITIONAL, - trampoline_var_name=None, - attribute_entries=[], -- constant_entries=filter(is_unconditional, constant_entries), -+ constant_entries=list(filter(is_unconditional, constant_entries)), - exposed_construct_entries=[], - operation_entries=[]) - (install_interface_template_decl, install_interface_template_def, ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/code_node.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/code_node.py -@@ -503,13 +503,13 @@ class CompositeNode(CodeNode): - gensym_kwargs = {} - template_vars = {} - for arg in args: -- assert isinstance(arg, (CodeNode, int, long, str)) -+ assert isinstance(arg, (CodeNode, int, str)) - gensym = CodeNode.gensym() - gensym_args.append("${{{}}}".format(gensym)) - template_vars[gensym] = arg - for key, value in kwargs.items(): -- assert isinstance(key, (int, long, str)) -- assert isinstance(value, (CodeNode, int, long, str)) -+ assert isinstance(key, (int, str)) -+ assert isinstance(value, (CodeNode, int, str)) - gensym = CodeNode.gensym() - gensym_kwargs[key] = "${{{}}}".format(gensym) - template_vars[gensym] = value -@@ -602,7 +602,7 @@ class ListNode(CodeNode): - def insert(self, index, node): - if node is None: - return -- assert isinstance(index, (int, long)) -+ assert isinstance(index, int) - assert isinstance(node, CodeNode) - assert node.outer is None and node.prev is None - -@@ -721,7 +721,7 @@ class SymbolScopeNode(SequenceNode): - if not scope_chains: - return counts - -- self_index = iter(scope_chains).next().index(self) -+ self_index = next(iter(scope_chains)).index(self) - scope_chains = map( - lambda scope_chain: scope_chain[self_index + 1:], scope_chains) - scope_to_likeliness = {} ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_expr.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_expr.py -@@ -109,7 +109,7 @@ def expr_and(terms): - - if any(term.is_always_false for term in terms): - return _Expr(False) -- terms = filter(lambda x: not x.is_always_true, terms) -+ terms = list(filter(lambda x: not x.is_always_true, terms)) - if not terms: - return _Expr(True) - if len(terms) == 1: -@@ -124,7 +124,7 @@ def expr_or(terms): - - if any(term.is_always_true for term in terms): - return _Expr(True) -- terms = filter(lambda x: not x.is_always_false, terms) -+ terms = list(filter(lambda x: not x.is_always_false, terms)) - if not terms: - return _Expr(False) - if len(terms) == 1: -@@ -222,7 +222,7 @@ def expr_from_exposure(exposure, - elif exposure.only_in_secure_contexts is False: - secure_context_term = _Expr(True) - else: -- terms = map(ref_enabled, exposure.only_in_secure_contexts) -+ terms = list(map(ref_enabled, exposure.only_in_secure_contexts)) - secure_context_term = expr_or( - [_Expr("${is_in_secure_context}"), - expr_not(expr_and(terms))]) -@@ -275,10 +275,11 @@ def expr_from_exposure(exposure, - - # [ContextEnabled] - if exposure.context_enabled_features: -- terms = map( -- lambda feature: _Expr( -- "${{context_feature_settings}}->is{}Enabled()".format( -- feature)), exposure.context_enabled_features) -+ terms = list( -+ map( -+ lambda feature: _Expr( -+ "${{context_feature_settings}}->is{}Enabled()".format( -+ feature)), exposure.context_enabled_features)) - context_enabled_terms.append( - expr_and([_Expr("${context_feature_settings}"), - expr_or(terms)])) ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_format.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_format.py -@@ -23,7 +23,7 @@ class _TemplateFormatter(string.Formatter): - self._template_formatter_indexing_count_ = 0 - - def get_value(self, key, args, kwargs): -- if isinstance(key, (int, long)): -+ if isinstance(key, int): - return args[key] - assert isinstance(key, str) - if not key: ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py -@@ -116,4 +116,4 @@ def write_code_node_to_file(code_node, filepath): - # stderr=format_result.error_message)) - # - # web_idl.file_io.write_to_file_if_changed(filepath, format_result.contents) -- web_idl.file_io.write_to_file_if_changed(filepath, rendered_text) -+ web_idl.file_io.write_to_file_if_changed(filepath, rendered_text.encode('utf-8')) ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/dictionary.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/dictionary.py -@@ -993,7 +993,7 @@ def make_dict_trace_func(cg_context): - _2 = _blink_member_name(member).value_var - return TextNode(_format(pattern, _1=_1, _2=_2)) - -- body.extend(map(make_trace_member_node, own_members)) -+ body.extend(list(map(make_trace_member_node, own_members))) - body.append(TextNode("BaseClass::Trace(visitor);")) - - return func_decl, func_def ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py -@@ -582,7 +582,7 @@ def _make_blink_api_call(code_node, - overriding_args=None): - assert isinstance(code_node, SymbolScopeNode) - assert isinstance(cg_context, CodeGenContext) -- assert num_of_args is None or isinstance(num_of_args, (int, long)) -+ assert num_of_args is None or isinstance(num_of_args, int) - assert (overriding_args is None - or (isinstance(overriding_args, (list, tuple)) - and all(isinstance(arg, str) for arg in overriding_args))) -@@ -1196,8 +1196,10 @@ def make_overload_dispatcher(cg_context): - did_use_break = did_use_break or can_fail - - conditional = expr_or( -- map(lambda item: expr_from_exposure(item.function_like.exposure), -- items)) -+ list( -+ map( -+ lambda item: expr_from_exposure(item.function_like.exposure -+ ), items))) - if not conditional.is_always_true: - node = CxxUnlikelyIfNode(cond=conditional, body=node) - -@@ -4642,7 +4644,7 @@ class _PropEntryConstructorGroup(_PropEntryBase): - def __init__(self, is_context_dependent, exposure_conditional, world, - constructor_group, ctor_callback_name, ctor_func_length): - assert isinstance(ctor_callback_name, str) -- assert isinstance(ctor_func_length, (int, long)) -+ assert isinstance(ctor_func_length, int) - - _PropEntryBase.__init__(self, is_context_dependent, - exposure_conditional, world, constructor_group) -@@ -4670,7 +4672,7 @@ class _PropEntryOperationGroup(_PropEntryBase): - op_func_length, - no_alloc_direct_callback_name=None): - assert isinstance(op_callback_name, str) -- assert isinstance(op_func_length, (int, long)) -+ assert isinstance(op_func_length, int) - - _PropEntryBase.__init__(self, is_context_dependent, - exposure_conditional, world, operation_group) -@@ -5175,9 +5177,9 @@ def make_install_interface_template(cg_context, functi - ]) - - if class_like.identifier == "CSSStyleDeclaration": -- css_properties = filter( -- lambda attr: "CSSProperty" in attr.extended_attributes, -- class_like.attributes) -+ css_properties = list( -+ filter(lambda attr: "CSSProperty" in attr.extended_attributes, -+ class_like.attributes)) - if css_properties: - prop_name_list = "".join( - map(lambda attr: "\"{}\", ".format(attr.identifier), -@@ -5567,8 +5569,8 @@ ${instance_object} = ${v8_context}->Global()->GetProto - "V8DOMConfiguration::InstallConstants(${isolate}, " - "${interface_template}, ${prototype_template}, " - "kConstantCallbackTable, base::size(kConstantCallbackTable));") -- constant_callback_entries = filter(lambda entry: entry.const_callback_name, -- constant_entries) -+ constant_callback_entries = list(filter(lambda entry: entry.const_callback_name, -+ constant_entries)) - install_properties(table_name, constant_callback_entries, - _make_constant_callback_registration_table, - installer_call_text) -@@ -5584,8 +5586,8 @@ ${instance_object} = ${v8_context}->Global()->GetProto - "V8DOMConfiguration::InstallConstants(${isolate}, " - "${interface_template}, ${prototype_template}, " - "kConstantValueTable, base::size(kConstantValueTable));") -- constant_value_entries = filter( -- lambda entry: not entry.const_callback_name, constant_entries) -+ constant_value_entries = list(filter( -+ lambda entry: not entry.const_callback_name, constant_entries)) - install_properties(table_name, constant_value_entries, - _make_constant_value_registration_table, - installer_call_text) -@@ -6336,8 +6338,8 @@ def make_v8_context_snapshot_api(cg_context, component - assert isinstance(component, web_idl.Component) - - derived_interfaces = cg_context.interface.deriveds -- derived_names = map(lambda interface: interface.identifier, -- derived_interfaces) -+ derived_names = list( -+ map(lambda interface: interface.identifier, derived_interfaces)) - derived_names.append(cg_context.interface.identifier) - if not ("Window" in derived_names or "HTMLDocument" in derived_names): - return None, None -@@ -6411,9 +6413,11 @@ def _make_v8_context_snapshot_get_reference_table_func - collect_callbacks(named_properties_object_callback_defs) - collect_callbacks(cross_origin_property_callback_defs) - -- entry_nodes = map( -- lambda name: TextNode("reinterpret_cast({}),".format(name)), -- filter(None, callback_names)) -+ entry_nodes = list( -+ map( -+ lambda name: TextNode("reinterpret_cast({}),".format(name -+ )), -+ filter(None, callback_names))) - table_node = ListNode([ - TextNode("using namespace ${class_name}Callbacks;"), - TextNode("static const intptr_t kReferenceTable[] = {"), -@@ -6451,10 +6455,11 @@ def _make_v8_context_snapshot_install_props_per_contex - class_name=None, - prop_install_mode=PropInstallMode.V8_CONTEXT_SNAPSHOT, - trampoline_var_name=None, -- attribute_entries=filter(selector, attribute_entries), -- constant_entries=filter(selector, constant_entries), -- exposed_construct_entries=filter(selector, exposed_construct_entries), -- operation_entries=filter(selector, operation_entries)) -+ attribute_entries=list(filter(selector, attribute_entries)), -+ constant_entries=list(filter(selector, constant_entries)), -+ exposed_construct_entries=list( -+ filter(selector, exposed_construct_entries)), -+ operation_entries=list(filter(selector, operation_entries))) - - return func_decl, func_def - -@@ -6810,11 +6815,11 @@ def generate_interface(interface_identifier): - class_name=impl_class_name, - prop_install_mode=PropInstallMode.UNCONDITIONAL, - trampoline_var_name=tp_install_unconditional_props, -- attribute_entries=filter(is_unconditional, attribute_entries), -- constant_entries=filter(is_unconditional, constant_entries), -- exposed_construct_entries=filter(is_unconditional, -- exposed_construct_entries), -- operation_entries=filter(is_unconditional, operation_entries)) -+ attribute_entries=list(filter(is_unconditional, attribute_entries)), -+ constant_entries=list(filter(is_unconditional, constant_entries)), -+ exposed_construct_entries=list( -+ filter(is_unconditional, exposed_construct_entries)), -+ operation_entries=list(filter(is_unconditional, operation_entries))) - (install_context_independent_props_decl, - install_context_independent_props_def, - install_context_independent_props_trampoline) = make_install_properties( -@@ -6823,11 +6828,14 @@ def generate_interface(interface_identifier): - class_name=impl_class_name, - prop_install_mode=PropInstallMode.CONTEXT_INDEPENDENT, - trampoline_var_name=tp_install_context_independent_props, -- attribute_entries=filter(is_context_independent, attribute_entries), -- constant_entries=filter(is_context_independent, constant_entries), -- exposed_construct_entries=filter(is_context_independent, -- exposed_construct_entries), -- operation_entries=filter(is_context_independent, operation_entries)) -+ attribute_entries=list( -+ filter(is_context_independent, attribute_entries)), -+ constant_entries=list(filter(is_context_independent, -+ constant_entries)), -+ exposed_construct_entries=list( -+ filter(is_context_independent, exposed_construct_entries)), -+ operation_entries=list( -+ filter(is_context_independent, operation_entries))) - (install_context_dependent_props_decl, install_context_dependent_props_def, - install_context_dependent_props_trampoline) = make_install_properties( - cg_context, -@@ -6835,11 +6843,13 @@ def generate_interface(interface_identifier): - class_name=impl_class_name, - prop_install_mode=PropInstallMode.CONTEXT_DEPENDENT, - trampoline_var_name=tp_install_context_dependent_props, -- attribute_entries=filter(is_context_dependent, attribute_entries), -- constant_entries=filter(is_context_dependent, constant_entries), -- exposed_construct_entries=filter(is_context_dependent, -- exposed_construct_entries), -- operation_entries=filter(is_context_dependent, operation_entries)) -+ attribute_entries=list(filter(is_context_dependent, -+ attribute_entries)), -+ constant_entries=list(filter(is_context_dependent, constant_entries)), -+ exposed_construct_entries=list( -+ filter(is_context_dependent, exposed_construct_entries)), -+ operation_entries=list(filter(is_context_dependent, -+ operation_entries))) - (install_interface_template_decl, install_interface_template_def, - install_interface_template_trampoline) = make_install_interface_template( - cg_context, ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/mako_renderer.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/mako_renderer.py -@@ -105,7 +105,7 @@ class MakoRenderer(object): - on_error = self._caller_stack_on_error - if (len(current) <= len(on_error) - and all(current[i] == on_error[i] -- for i in xrange(len(current)))): -+ for i in range(len(current)))): - pass # Error happened in a deeper caller. - else: - self._caller_stack_on_error = list(self._caller_stack) ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py -@@ -70,8 +70,13 @@ def _invoke_format_command(command_line, filename, con - - - def _invoke_format_command(command_line, filename, contents): -- proc = subprocess.Popen( -- command_line, stdin=subprocess.PIPE, stdout=subprocess.PIPE) -+ kwargs = {} -+ if sys.version_info.major != 2: -+ kwargs['encoding'] = 'utf-8' -+ proc = subprocess.Popen(command_line, -+ stdin=subprocess.PIPE, -+ stdout=subprocess.PIPE, -+ **kwargs) - stdout_output, stderr_output = proc.communicate(input=contents) - exit_code = proc.wait() - ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/task_queue.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/task_queue.py -@@ -2,6 +2,7 @@ - # Use of this source code is governed by a BSD-style license that can be - # found in the LICENSE file. - -+import functools - import multiprocessing - - from .package_initializer import package_initializer -@@ -76,7 +77,7 @@ class TaskQueue(object): - if not report_progress: - return - -- done_count = reduce( -+ done_count = functools.reduce( - lambda count, worker_task: count + bool(worker_task.ready()), - self._worker_tasks, 0) - report_progress(len(self._worker_tasks), done_count) -@@ -85,4 +86,4 @@ def _task_queue_run_tasks(tasks): - def _task_queue_run_tasks(tasks): - for task in tasks: - func, args, kwargs = task -- apply(func, args, kwargs) -+ func(*args, **kwargs) ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/code_generator.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/code_generator.py -@@ -13,6 +13,7 @@ from idl_types import set_ancestors, IdlType - import sys - - from idl_types import set_ancestors, IdlType -+from itertools import groupby - from v8_globals import includes - from v8_interface import constant_filters - from v8_types import set_component_dirs -@@ -43,6 +44,7 @@ import jinja2 - # after path[0] == invoking script dir - sys.path.insert(1, THIRD_PARTY_DIR) - import jinja2 -+from jinja2.filters import make_attrgetter, environmentfilter - - - def generate_indented_conditional(code, conditional): -@@ -88,6 +90,13 @@ def runtime_enabled_if(code, name): - return generate_indented_conditional(code, function) - - -+@environmentfilter -+def do_stringify_key_group_by(environment, value, attribute): -+ expr = make_attrgetter(environment, attribute) -+ key = lambda item: '' if expr(item) is None else str(expr(item)) -+ return groupby(sorted(value, key=key), expr) -+ -+ - def initialize_jinja_env(cache_dir): - jinja_env = jinja2.Environment( - loader=jinja2.FileSystemLoader(TEMPLATES_DIR), -@@ -117,6 +126,7 @@ def initialize_jinja_env(cache_dir): - }) - jinja_env.filters.update(constant_filters()) - jinja_env.filters.update(method_filters()) -+ jinja_env.filters["stringifykeygroupby"] = do_stringify_key_group_by - return jinja_env - - ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/generate_origin_trial_features.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/generate_origin_trial_features.py -@@ -80,7 +80,7 @@ def read_idl_file(reader, idl_filename): - assert len(interfaces) == 1, ( - "Expected one interface in file %r, found %d" % - (idl_filename, len(interfaces))) -- return (interfaces.values()[0], includes) -+ return (list(interfaces.values())[0], includes) - - - def interface_is_global(interface): -@@ -281,7 +281,7 @@ def main(): - - info_provider = create_component_info_provider( - os.path.normpath(options.info_dir), options.target_component) -- idl_filenames = map(str.strip, open(options.idl_files_list)) -+ idl_filenames = list(map(str.strip, open(options.idl_files_list))) - - generate_origin_trial_features(info_provider, options, idl_filenames) - return 0 ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/idl_definitions.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/idl_definitions.py -@@ -394,7 +394,8 @@ class IdlInterface(object): - else: - raise ValueError('Unrecognized node class: %s' % child_class) - -- if len(filter(None, [self.iterable, self.maplike, self.setlike])) > 1: -+ if len(list(filter(None, -+ [self.iterable, self.maplike, self.setlike]))) > 1: - raise ValueError( - 'Interface can only have one of iterable<>, maplike<> and setlike<>.' - ) -@@ -512,7 +513,10 @@ class IdlAttribute(TypedObject): - def accept(self, visitor): - visitor.visit_attribute(self) - -+ def __lt__(self, other): -+ return self.name < other.name - -+ - ################################################################################ - # Constants - ################################################################################ -@@ -852,7 +856,7 @@ class IdlIncludes(object): - ################################################################################ - - --class Exposure: -+class Exposure(object): - """An Exposure holds one Exposed or RuntimeEnabled condition. - Each exposure has two properties: exposed and runtime_enabled. - Exposure(e, r) corresponds to [Exposed(e r)]. Exposure(e) corresponds to ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/idl_reader.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/idl_reader.py -@@ -55,8 +55,8 @@ def validate_blink_idl_definitions(idl_filename, idl_f - definitions. There is no filename convention in this case. - - Otherwise, an IDL file is invalid. - """ -- targets = ( -- definitions.interfaces.values() + definitions.dictionaries.values()) -+ targets = (list(definitions.interfaces.values()) + -+ list(definitions.dictionaries.values())) - number_of_targets = len(targets) - if number_of_targets > 1: - raise Exception( ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/idl_types.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/idl_types.py -@@ -349,7 +349,7 @@ class IdlUnionType(IdlTypeBase): - return True - - def single_matching_member_type(self, predicate): -- matching_types = filter(predicate, self.flattened_member_types) -+ matching_types = list(filter(predicate, self.flattened_member_types)) - if len(matching_types) > 1: - raise ValueError('%s is ambiguous.' % self.name) - return matching_types[0] if matching_types else None ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/utilities.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/utilities.py -@@ -196,8 +196,9 @@ class ComponentInfoProviderModules(ComponentInfoProvid - - @property - def callback_functions(self): -- return dict(self._component_info_core['callback_functions'].items() + -- self._component_info_modules['callback_functions'].items()) -+ return dict( -+ list(self._component_info_core['callback_functions'].items()) + -+ list(self._component_info_modules['callback_functions'].items())) - - @property - def specifier_for_export(self): -@@ -209,8 +210,8 @@ def load_interfaces_info_overall_pickle(info_dir): - - - def load_interfaces_info_overall_pickle(info_dir): -- with open(os.path.join(info_dir, -- 'interfaces_info.pickle')) as interface_info_file: -+ with open(os.path.join(info_dir, 'interfaces_info.pickle'), -+ mode='rb') as interface_info_file: - return pickle.load(interface_info_file) - - -@@ -236,23 +237,20 @@ def create_component_info_provider_core(info_dir): - - def create_component_info_provider_core(info_dir): - interfaces_info = load_interfaces_info_overall_pickle(info_dir) -- with open( -- os.path.join(info_dir, 'core', -- 'component_info_core.pickle')) as component_info_file: -+ with open(os.path.join(info_dir, 'core', 'component_info_core.pickle'), -+ mode='rb') as component_info_file: - component_info = pickle.load(component_info_file) - return ComponentInfoProviderCore(interfaces_info, component_info) - - - def create_component_info_provider_modules(info_dir): - interfaces_info = load_interfaces_info_overall_pickle(info_dir) -- with open( -- os.path.join(info_dir, 'core', -- 'component_info_core.pickle')) as component_info_file: -+ with open(os.path.join(info_dir, 'core', 'component_info_core.pickle'), -+ mode='rb') as component_info_file: - component_info_core = pickle.load(component_info_file) -- with open( -- os.path.join( -- info_dir, 'modules', -- 'component_info_modules.pickle')) as component_info_file: -+ with open(os.path.join(info_dir, 'modules', -+ 'component_info_modules.pickle'), -+ mode='rb') as component_info_file: - component_info_modules = pickle.load(component_info_file) - return ComponentInfoProviderModules(interfaces_info, component_info_core, - component_info_modules) -@@ -356,7 +354,7 @@ def write_pickle_file(pickle_filename, data): - pickle_filename = abs(pickle_filename) - # If |data| is same with the file content, we skip updating. - if os.path.isfile(pickle_filename): -- with open(pickle_filename) as pickle_file: -+ with open(pickle_filename, 'rb') as pickle_file: - try: - if pickle.load(pickle_file) == data: - return ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/v8_interface.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/v8_interface.py -@@ -189,7 +189,7 @@ def context_enabled_features(attributes): - return sorted([ - member for member in members - if member.get(KEY) and not member.get('exposed_test') -- ]) -+ ], key=lambda item: item['name']) - - def member_filter_by_name(members, name): - return [member for member in members if member[KEY] == name] -@@ -612,7 +612,8 @@ def interface_context(interface, interfaces, component - sorted( - origin_trial_features(interface, context['constants'], - context['attributes'], context['methods']) + -- context_enabled_features(context['attributes'])), -+ context_enabled_features(context['attributes']), -+ key=lambda item: item['name']), - }) - if context['optional_features']: - includes.add('platform/bindings/v8_per_context_data.h') -@@ -1356,9 +1357,9 @@ def resolution_tests_methods(effective_overloads): - - # Extract argument and IDL type to simplify accessing these in each loop. - arguments = [method['arguments'][index] for method in methods] -- arguments_methods = zip(arguments, methods) -+ arguments_methods = list(zip(arguments, methods)) - idl_types = [argument['idl_type_object'] for argument in arguments] -- idl_types_methods = zip(idl_types, methods) -+ idl_types_methods = list(zip(idl_types, methods)) - - # We can’t do a single loop through all methods or simply sort them, because - # a method may be listed in multiple steps of the resolution algorithm, and ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/v8_methods.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/v8_methods.py -@@ -46,6 +46,10 @@ from v8_utilities import (has_extended_attribute_value - import v8_utilities - from v8_utilities import (has_extended_attribute_value, is_unforgeable) - -+# TODO: Remove this once Python2 is obsoleted. -+if sys.version_info.major != 2: -+ basestring = str -+ - - def method_is_visible(method, interface_is_partial): - if 'overloads' in method: ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/v8_utilities.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/v8_utilities.py -@@ -271,7 +271,7 @@ EXPOSED_WORKERS = set([ - ]) - - --class ExposureSet: -+class ExposureSet(object): - """An ExposureSet is a collection of Exposure instructions.""" - - def __init__(self, exposures=None): ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/callback_interface.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/callback_interface.py -@@ -91,11 +91,13 @@ class CallbackInterface(UserDefinedType, WithExtendedA - for operation_ir in ir.operations - ]) - self._operation_groups = tuple([ -- OperationGroup( -- operation_group_ir, -- filter(lambda x: x.identifier == operation_group_ir.identifier, -- self._operations), -- owner=self) for operation_group_ir in ir.operation_groups -+ OperationGroup(operation_group_ir, -+ list( -+ filter( -+ lambda x: x.identifier == operation_group_ir -+ .identifier, self._operations)), -+ owner=self) -+ for operation_group_ir in ir.operation_groups - ]) - - @property ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/database.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/database.py -@@ -156,4 +156,4 @@ class Database(object): - return self._view_by_kind(Database._Kind.UNION) - - def _view_by_kind(self, kind): -- return self._impl.find_by_kind(kind).values() -+ return list(self._impl.find_by_kind(kind).values()) ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/exposure.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/exposure.py -@@ -8,8 +8,11 @@ class _Feature(str): - class _Feature(str): - """Represents a runtime-enabled feature.""" - -+ def __new__(cls, value): -+ return str.__new__(cls, value) -+ - def __init__(self, value): -- str.__init__(self, value) -+ str.__init__(self) - self._is_context_dependent = ( - RuntimeEnabledFeatures.is_context_dependent(self)) - ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/function_like.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/function_like.py -@@ -71,8 +71,9 @@ class FunctionLike(WithIdentifier): - def num_of_required_arguments(self): - """Returns the number of required arguments.""" - return len( -- filter(lambda arg: not (arg.is_optional or arg.is_variadic), -- self.arguments)) -+ list( -+ filter(lambda arg: not (arg.is_optional or arg.is_variadic), -+ self.arguments))) - - - class OverloadGroup(WithIdentifier): -@@ -171,8 +172,7 @@ class OverloadGroup(WithIdentifier): - Returns the effective overload set. - https://heycam.github.io/webidl/#compute-the-effective-overload-set - """ -- assert argument_count is None or isinstance(argument_count, -- (int, long)) -+ assert argument_count is None or isinstance(argument_count, int) - - N = argument_count - S = [] -@@ -188,21 +188,21 @@ class OverloadGroup(WithIdentifier): - - S.append( - OverloadGroup.EffectiveOverloadItem( -- X, map(lambda arg: arg.idl_type, X.arguments), -- map(lambda arg: arg.optionality, X.arguments))) -+ X, list(map(lambda arg: arg.idl_type, X.arguments)), -+ list(map(lambda arg: arg.optionality, X.arguments)))) - - if X.is_variadic: -- for i in xrange(n, max(maxarg, N)): -- t = map(lambda arg: arg.idl_type, X.arguments) -- o = map(lambda arg: arg.optionality, X.arguments) -- for _ in xrange(n, i + 1): -+ for i in range(n, max(maxarg, N)): -+ t = list(map(lambda arg: arg.idl_type, X.arguments)) -+ o = list(map(lambda arg: arg.optionality, X.arguments)) -+ for _ in range(n, i + 1): - t.append(X.arguments[-1].idl_type) - o.append(X.arguments[-1].optionality) - S.append(OverloadGroup.EffectiveOverloadItem(X, t, o)) - -- t = map(lambda arg: arg.idl_type, X.arguments) -- o = map(lambda arg: arg.optionality, X.arguments) -- for i in xrange(n - 1, -1, -1): -+ t = list(map(lambda arg: arg.idl_type, X.arguments)) -+ o = list(map(lambda arg: arg.optionality, X.arguments)) -+ for i in range(n - 1, -1, -1): - if X.arguments[i].optionality == IdlType.Optionality.REQUIRED: - break - S.append(OverloadGroup.EffectiveOverloadItem(X, t[:i], o[:i])) -@@ -222,7 +222,7 @@ class OverloadGroup(WithIdentifier): - for item in items) - assert len(items) > 1 - -- for index in xrange(len(items[0].type_list)): -+ for index in range(len(items[0].type_list)): - # Assume that the given items are valid, and we only need to test - # the two types. - if OverloadGroup.are_distinguishable_types( ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/idl_compiler.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/idl_compiler.py -@@ -149,8 +149,8 @@ class IdlCompiler(object): - for old_ir in old_irs: - new_ir = make_copy(old_ir) - self._ir_map.add(new_ir) -- new_ir.attributes = filter(not_disabled, new_ir.attributes) -- new_ir.operations = filter(not_disabled, new_ir.operations) -+ new_ir.attributes = list(filter(not_disabled, new_ir.attributes)) -+ new_ir.operations = list(filter(not_disabled, new_ir.operations)) - - def _record_defined_in_partial_and_mixin(self): - old_irs = self._ir_map.irs_of_kinds( -@@ -231,7 +231,7 @@ class IdlCompiler(object): - only_to_members_of_partial_or_mixin=False) - propagate_to_exposure(propagate) - -- map(process_member_like, ir.iter_all_members()) -+ list(map(process_member_like, ir.iter_all_members())) - - def process_member_like(ir): - propagate = functools.partial(propagate_extattr, ir=ir) -@@ -257,7 +257,7 @@ class IdlCompiler(object): - - self._ir_map.move_to_new_phase() - -- map(process_interface_like, old_irs) -+ list(map(process_interface_like, old_irs)) - - def _determine_blink_headers(self): - irs = self._ir_map.irs_of_kinds( -@@ -422,9 +422,9 @@ class IdlCompiler(object): - assert not new_interface.deriveds - derived_set = identifier_to_derived_set.get( - new_interface.identifier, set()) -- new_interface.deriveds = map( -- lambda id_: self._ref_to_idl_def_factory.create(id_), -- sorted(derived_set)) -+ new_interface.deriveds = list( -+ map(lambda id_: self._ref_to_idl_def_factory.create(id_), -+ sorted(derived_set))) - - def _supplement_missing_html_constructor_operation(self): - # Temporary mitigation of misuse of [HTMLConstructor] -@@ -553,7 +553,8 @@ class IdlCompiler(object): - self._ir_map.add(new_ir) - - for group in new_ir.iter_all_overload_groups(): -- exposures = map(lambda overload: overload.exposure, group) -+ exposures = list(map(lambda overload: overload.exposure, -+ group)) - - # [Exposed] - if any(not exposure.global_names_and_features -@@ -653,8 +654,8 @@ class IdlCompiler(object): - constructs = set() - for global_name in global_names: - constructs.update(exposed_map.get(global_name, [])) -- new_ir.exposed_constructs = map( -- self._ref_to_idl_def_factory.create, sorted(constructs)) -+ new_ir.exposed_constructs = list( -+ map(self._ref_to_idl_def_factory.create, sorted(constructs))) - - assert not new_ir.legacy_window_aliases - if new_ir.identifier != 'Window': ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/interface.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/interface.py -@@ -180,8 +180,9 @@ class Interface(UserDefinedType, WithExtendedAttribute - self._constructor_groups = tuple([ - ConstructorGroup( - group_ir, -- filter(lambda x: x.identifier == group_ir.identifier, -- self._constructors), -+ list( -+ filter(lambda x: x.identifier == group_ir.identifier, -+ self._constructors)), - owner=self) for group_ir in ir.constructor_groups - ]) - assert len(self._constructor_groups) <= 1 -@@ -192,8 +193,9 @@ class Interface(UserDefinedType, WithExtendedAttribute - self._named_constructor_groups = tuple([ - ConstructorGroup( - group_ir, -- filter(lambda x: x.identifier == group_ir.identifier, -- self._named_constructors), -+ list( -+ filter(lambda x: x.identifier == group_ir.identifier, -+ self._named_constructors)), - owner=self) for group_ir in ir.named_constructor_groups - ]) - self._operations = tuple([ -@@ -203,22 +205,23 @@ class Interface(UserDefinedType, WithExtendedAttribute - self._operation_groups = tuple([ - OperationGroup( - group_ir, -- filter(lambda x: x.identifier == group_ir.identifier, -- self._operations), -+ list( -+ filter(lambda x: x.identifier == group_ir.identifier, -+ self._operations)), - owner=self) for group_ir in ir.operation_groups - ]) - self._exposed_constructs = tuple(ir.exposed_constructs) - self._legacy_window_aliases = tuple(ir.legacy_window_aliases) - self._indexed_and_named_properties = None -- indexed_and_named_property_operations = filter( -- lambda x: x.is_indexed_or_named_property_operation, -- self._operations) -+ indexed_and_named_property_operations = list( -+ filter(lambda x: x.is_indexed_or_named_property_operation, -+ self._operations)) - if indexed_and_named_property_operations: - self._indexed_and_named_properties = IndexedAndNamedProperties( - indexed_and_named_property_operations, owner=self) - self._stringifier = None -- stringifier_operation_irs = filter(lambda x: x.is_stringifier, -- ir.operations) -+ stringifier_operation_irs = list( -+ filter(lambda x: x.is_stringifier, ir.operations)) - if stringifier_operation_irs: - assert len(stringifier_operation_irs) == 1 - op_ir = make_copy(stringifier_operation_irs[0]) -@@ -231,8 +234,9 @@ class Interface(UserDefinedType, WithExtendedAttribute - attribute = None - if operation.stringifier_attribute: - attr_id = operation.stringifier_attribute -- attributes = filter(lambda x: x.identifier == attr_id, -- self._attributes) -+ attributes = list( -+ filter(lambda x: x.identifier == attr_id, -+ self._attributes)) - assert len(attributes) == 1 - attribute = attributes[0] - self._stringifier = Stringifier(operation, attribute, owner=self) -@@ -578,8 +582,9 @@ class Iterable(WithDebugInfo): - self._operation_groups = tuple([ - OperationGroup( - group_ir, -- filter(lambda x: x.identifier == group_ir.identifier, -- self._operations), -+ list( -+ filter(lambda x: x.identifier == group_ir.identifier, -+ self._operations)), - owner=owner) for group_ir in ir.operation_groups - ]) - -@@ -666,8 +671,9 @@ class Maplike(WithDebugInfo): - self._operation_groups = tuple([ - OperationGroup( - group_ir, -- filter(lambda x: x.identifier == group_ir.identifier, -- self._operations), -+ list( -+ filter(lambda x: x.identifier == group_ir.identifier, -+ self._operations)), - owner=owner) for group_ir in ir.operation_groups - ]) - -@@ -755,8 +761,9 @@ class Setlike(WithDebugInfo): - self._operation_groups = tuple([ - OperationGroup( - group_ir, -- filter(lambda x: x.identifier == group_ir.identifier, -- self._operations), -+ list( -+ filter(lambda x: x.identifier == group_ir.identifier, -+ self._operations)), - owner=owner) for group_ir in ir.operation_groups - ]) - ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/ir_builder.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/ir_builder.py -@@ -2,6 +2,8 @@ - # Use of this source code is governed by a BSD-style license that can be - # found in the LICENSE file. - -+import sys -+ - from .argument import Argument - from .ast_group import AstGroup - from .attribute import Attribute -@@ -30,6 +32,11 @@ from .typedef import Typedef - from .typedef import Typedef - - -+# TODO: Remove this once Python2 is obsoleted. -+if sys.version_info.major != 2: -+ long = int -+ -+ - def load_and_register_idl_definitions(filepaths, register_ir, - create_ref_to_idl_def, idl_type_factory): - """ -@@ -160,7 +167,7 @@ class _IRBuilder(object): - child_nodes = list(node.GetChildren()) - extended_attributes = self._take_extended_attributes(child_nodes) - -- members = map(self._build_interface_member, child_nodes) -+ members = list(map(self._build_interface_member, child_nodes)) - attributes = [] - constants = [] - operations = [] -@@ -302,7 +309,7 @@ class _IRBuilder(object): - child_nodes = list(node.GetChildren()) - inherited = self._take_inheritance(child_nodes) - extended_attributes = self._take_extended_attributes(child_nodes) -- own_members = map(self._build_dictionary_member, child_nodes) -+ own_members = list(map(self._build_dictionary_member, child_nodes)) - - return Dictionary.IR( - identifier=Identifier(node.GetName()), -@@ -336,7 +343,7 @@ class _IRBuilder(object): - - child_nodes = list(node.GetChildren()) - extended_attributes = self._take_extended_attributes(child_nodes) -- members = map(self._build_interface_member, child_nodes) -+ members = list(map(self._build_interface_member, child_nodes)) - constants = [] - operations = [] - for member in members: -@@ -456,8 +463,8 @@ class _IRBuilder(object): - assert len(child_nodes) == 1 - child = child_nodes[0] - if child.GetClass() == 'Arguments': -- arguments = map(build_extattr_argument, -- child.GetChildren()) -+ arguments = list( -+ map(build_extattr_argument, child.GetChildren())) - elif child.GetClass() == 'Call': - assert len(child.GetChildren()) == 1 - grand_child = child.GetChildren()[0] -@@ -486,7 +493,9 @@ class _IRBuilder(object): - - assert node.GetClass() == 'ExtAttributes' - return ExtendedAttributes( -- filter(None, map(build_extended_attribute, node.GetChildren()))) -+ list( -+ filter(None, map(build_extended_attribute, -+ node.GetChildren())))) - - def _build_inheritance(self, node): - assert node.GetClass() == 'Inherit' -@@ -506,7 +515,7 @@ class _IRBuilder(object): - - def _build_iterable(self, node): - assert node.GetClass() == 'Iterable' -- types = map(self._build_type, node.GetChildren()) -+ types = list(map(self._build_type, node.GetChildren())) - assert len(types) == 1 or len(types) == 2 - if len(types) == 1: # value iterator - key_type, value_type = (None, types[0]) -@@ -584,7 +593,7 @@ class _IRBuilder(object): - def _build_maplike(self, node, interface_identifier): - assert node.GetClass() == 'Maplike' - assert isinstance(interface_identifier, Identifier) -- types = map(self._build_type, node.GetChildren()) -+ types = list(map(self._build_type, node.GetChildren())) - assert len(types) == 2 - key_type, value_type = types - is_readonly = bool(node.GetProperty('READONLY')) -@@ -676,7 +685,7 @@ class _IRBuilder(object): - def _build_setlike(self, node, interface_identifier): - assert node.GetClass() == 'Setlike' - assert isinstance(interface_identifier, Identifier) -- types = map(self._build_type, node.GetChildren()) -+ types = list(map(self._build_type, node.GetChildren())) - assert len(types) == 1 - value_type = types[0] - is_readonly = bool(node.GetProperty('READONLY')) -@@ -838,7 +847,7 @@ class _IRBuilder(object): - - def build_union_type(node, extended_attributes): - return self._idl_type_factory.union_type( -- member_types=map(self._build_type, node.GetChildren()), -+ member_types=list(map(self._build_type, node.GetChildren())), - is_optional=is_optional, - extended_attributes=extended_attributes, - debug_info=self._build_debug_info(node)) ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/make_copy.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/make_copy.py -@@ -3,6 +3,13 @@ - # found in the LICENSE file. - - -+import sys -+ -+# TODO: Remove this once Python2 is obsoleted. -+if sys.version_info.major != 2: -+ long = int -+ basestring = str -+ - def make_copy(obj, memo=None): - """ - Creates a copy of the given object, which should be an IR or part of IR. ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/namespace.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/scripts/web_idl/namespace.py -@@ -107,11 +107,13 @@ class Namespace(UserDefinedType, WithExtendedAttribute - for operation_ir in ir.operations - ]) - self._operation_groups = tuple([ -- OperationGroup( -- operation_group_ir, -- filter(lambda x: x.identifier == operation_group_ir.identifier, -- self._operations), -- owner=self) for operation_group_ir in ir.operation_groups -+ OperationGroup(operation_group_ir, -+ list( -+ filter( -+ lambda x: x.identifier == operation_group_ir -+ .identifier, self._operations)), -+ owner=self) -+ for operation_group_ir in ir.operation_groups - ]) - - @property ---- src/3rdparty/chromium/third_party/blink/renderer/bindings/templates/dictionary_v8.cc.tmpl.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/bindings/templates/dictionary_v8.cc.tmpl -@@ -59,9 +59,9 @@ void {{v8_class}}::ToImpl(v8::Isolate* isolate, v8::Lo - DCHECK(executionContext); - {% endif %}{# has_origin_trial_members #} - {% endif %}{# members #} -- {% for origin_trial_test, origin_trial_member_list in members | groupby('origin_trial_feature_name') %} -+ {% for origin_trial_test, origin_trial_member_list in members | stringifykeygroupby('origin_trial_feature_name') %} - {% filter origin_trial_enabled(origin_trial_test, "executionContext") %} -- {% for feature_name, member_list in origin_trial_member_list | groupby('runtime_enabled_feature_name') %} -+ {% for feature_name, member_list in origin_trial_member_list | stringifykeygroupby('runtime_enabled_feature_name') %} - {% filter runtime_enabled(feature_name) %} - {% for member in member_list %} - v8::Local {{member.v8_value}}; -@@ -147,9 +147,9 @@ bool toV8{{cpp_class}}(const {{cpp_class}}* impl, v8:: - DCHECK(executionContext); - {% endif %}{# has_origin_trial_members #} - {% endif %}{# members #} -- {% for origin_trial_test, origin_trial_member_list in members | groupby('origin_trial_feature_name') %} -+ {% for origin_trial_test, origin_trial_member_list in members | stringifykeygroupby('origin_trial_feature_name') %} - {% filter origin_trial_enabled(origin_trial_test, "executionContext") %} -- {% for feature_name, member_list in origin_trial_member_list | groupby('runtime_enabled_feature_name') %} -+ {% for feature_name, member_list in origin_trial_member_list | stringifykeygroupby('runtime_enabled_feature_name') %} - {% filter runtime_enabled(feature_name) %} - {% for member in member_list %} - v8::Local {{member.v8_value}}; ---- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/core/css/make_style_shorthands.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/core/css/make_style_shorthands.py -@@ -71,7 +71,7 @@ class Expansion(object): - def enabled_longhands(self): - include = lambda longhand: not longhand[ - 'runtime_flag'] or self.is_enabled(longhand['runtime_flag']) -- return filter(include, self._longhands) -+ return list(filter(include, self._longhands)) - - @property - def index(self): -@@ -87,8 +87,9 @@ def create_expansions(longhands): - - def create_expansions(longhands): - flags = collect_runtime_flags(longhands) -- expansions = map(lambda mask: Expansion(longhands, flags, mask), -- range(1 << len(flags))) -+ expansions = list( -+ map(lambda mask: Expansion(longhands, flags, mask), -+ range(1 << len(flags)))) - assert len(expansions) > 0 - # We generate 2^N expansions for N flags, so enforce some limit. - assert len(flags) <= 4, 'Too many runtime flags for a single shorthand' -@@ -114,14 +115,14 @@ class StylePropertyShorthandWriter(json5_generator.Wri - - self._longhand_dictionary = defaultdict(list) - for property_ in json5_properties.shorthands: -- property_['longhand_enum_keys'] = map(enum_key_for_css_property, -- property_['longhands']) -- property_['longhand_property_ids'] = map(id_for_css_property, -- property_['longhands']) -+ property_['longhand_enum_keys'] = list( -+ map(enum_key_for_css_property, property_['longhands'])) -+ property_['longhand_property_ids'] = list( -+ map(id_for_css_property, property_['longhands'])) - -- longhands = map( -- lambda name: json5_properties.properties_by_name[name], -- property_['longhands']) -+ longhands = list( -+ map(lambda name: json5_properties.properties_by_name[name], -+ property_['longhands'])) - property_['expansions'] = create_expansions(longhands) - for longhand_enum_key in property_['longhand_enum_keys']: - self._longhand_dictionary[longhand_enum_key].append(property_) ---- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_instances.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_instances.py -@@ -42,8 +42,8 @@ class CSSPropertyInstancesWriter(json5_generator.Write - aliases = self._css_properties.aliases - - # Lists of PropertyClassData. -- self._property_classes_by_id = map(self.get_class, properties) -- self._alias_classes_by_id = map(self.get_class, aliases) -+ self._property_classes_by_id = list(map(self.get_class, properties)) -+ self._alias_classes_by_id = list(map(self.get_class, aliases)) - - # Sort by enum value. - self._property_classes_by_id.sort(key=lambda t: t.enum_value) ---- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/gperf.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/gperf.py -@@ -95,7 +95,7 @@ def main(): - - open(args.output_file, 'wb').write( - generate_gperf(gperf_path, -- open(infile).read(), gperf_args)) -+ open(infile).read(), gperf_args).encode('utf-8')) - - - if __name__ == '__main__': ---- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/in_file.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/in_file.py -@@ -66,7 +66,7 @@ class InFile(object): - self._defaults = defaults - self._valid_values = copy.deepcopy( - valid_values if valid_values else {}) -- self._parse(map(str.strip, lines)) -+ self._parse(list(map(str.strip, lines))) - - @classmethod - def load_from_files(self, file_paths, defaults, valid_values, ---- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/in_generator.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/in_generator.py -@@ -32,9 +32,14 @@ import shutil - import os.path - import shlex - import shutil -+import sys - import optparse - - from in_file import InFile -+ -+# TODO: Remove this once Python2 is obsoleted. -+if sys.version_info.major != 2: -+ basestring = str - - - ######################################################### ---- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/make_runtime_features.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/make_runtime_features.py -@@ -138,7 +138,7 @@ class RuntimeFeatureWriter(BaseRuntimeFeatureWriter): - except Exception: - # If trouble unpickling, overwrite - pass -- with open(os.path.abspath(file_name), 'w') as pickle_file: -+ with open(os.path.abspath(file_name), 'wb') as pickle_file: - pickle.dump(features_map, pickle_file) - - def _template_inputs(self): ---- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/element_factory.cc.tmpl.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/element_factory.cc.tmpl -@@ -26,7 +26,7 @@ static {{namespace}}FunctionMap* g_{{namespace|lower}} - - static {{namespace}}FunctionMap* g_{{namespace|lower}}_constructors = nullptr; - --{% for tag in tags|sort if not tag.noConstructor %} -+{% for tag in tags|sort(attribute='name') if not tag.noConstructor %} - static {{namespace}}Element* {{namespace}}{{tag.name.to_upper_camel_case()}}Constructor( - Document& document, const CreateElementFlags flags) { - {% if tag.runtimeEnabled %} -@@ -52,7 +52,7 @@ static void Create{{namespace}}FunctionMap() { - // Empty array initializer lists are illegal [dcl.init.aggr] and will not - // compile in MSVC. If tags list is empty, add check to skip this. - static const Create{{namespace}}FunctionMapData data[] = { -- {% for tag in tags|sort if not tag.noConstructor %} -+ {% for tag in tags|sort(attribute='name') if not tag.noConstructor %} - { {{cpp_namespace}}::{{tag|symbol}}Tag, {{namespace}}{{tag.name.to_upper_camel_case()}}Constructor }, - {% endfor %} - }; ---- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.cc.tmpl.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.cc.tmpl -@@ -22,7 +22,7 @@ HTMLTypeMap CreateHTMLTypeMap() { - const char* name; - HTMLElementType type; - } kTags[] = { -- {% for tag in tags|sort %} -+ {% for tag in tags|sort(attribute='name') %} - { "{{tag.name}}", HTMLElementType::k{{tag.js_interface}} }, - {% endfor %} - }; -@@ -42,7 +42,7 @@ HTMLElementType htmlElementTypeForTag(const AtomicStri - if (it == html_type_map.end()) - return HTMLElementType::kHTMLUnknownElement; - -- {% for tag in tags|sort %} -+ {% for tag in tags|sort(attribute='name') %} - {% if tag.runtimeEnabled %} - if (tagName == "{{tag.name}}") { - if (!RuntimeEnabledFeatures::{{tag.runtimeEnabled}}Enabled(document->GetExecutionContext())) { ---- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.h.tmpl.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.h.tmpl -@@ -15,7 +15,7 @@ class Document; - class Document; - - // Type checking. --{% for tag in tags|sort if not tag.multipleTagNames and not tag.noTypeHelpers %} -+{% for tag in tags|sort(attribute='name') if not tag.multipleTagNames and not tag.noTypeHelpers %} - class {{tag.interface}}; - template <> - inline bool IsElementOfType(const Node& node) { ---- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/macros.tmpl.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/macros.tmpl -@@ -25,7 +25,7 @@ - - - {% macro trie_leaf(index, object, return_macro, lowercase_data) %} --{% set name, value = object.items()[0] %} -+{% set name, value = (object.items()|list)[0] %} - {% if name|length %} - if ( - {%- for c in name -%} -@@ -45,7 +45,7 @@ return {{ return_macro(value) }}; - - - {% macro trie_switch(trie, index, return_macro, lowercase_data) %} --{% if trie|length == 1 and trie.values()[0] is string %} -+{% if trie|length == 1 and (trie.values()|list)[0] is string %} - {{ trie_leaf(index, trie, return_macro, lowercase_data) -}} - {% else %} - {% if lowercase_data %} ---- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/make_qualified_names.h.tmpl.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/templates/make_qualified_names.h.tmpl -@@ -24,12 +24,12 @@ namespace {{cpp_namespace}} { - {{symbol_export}}extern const WTF::AtomicString& {{namespace_prefix}}NamespaceURI; - - // Tags --{% for tag in tags|sort %} -+{% for tag in tags|sort(attribute='name') %} - {{symbol_export}}extern const blink::{{namespace}}QualifiedName& {{tag|symbol}}Tag; - {% endfor %} - - // Attributes --{% for attr in attrs|sort %} -+{% for attr in attrs|sort(attribute='name') %} - {{symbol_export}}extern const blink::QualifiedName& {{attr|symbol}}Attr; - {% endfor %} - ---- src/3rdparty/chromium/third_party/dawn/generator/generator_lib.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/dawn/generator/generator_lib.py -@@ -201,6 +201,10 @@ def _compute_python_dependencies(root_dir=None): - - paths = set() - for path in module_paths: -+ # Builtin/namespaced modules may return None for the file path. -+ if not path: -+ continue -+ - path = os.path.abspath(path) - - if not path.startswith(root_dir): ---- src/3rdparty/chromium/third_party/devtools-frontend/src/BUILD.gn.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/devtools-frontend/src/BUILD.gn -@@ -2,6 +2,8 @@ - # Use of this source code is governed by a BSD-style license that can be - # found in the LICENSE file. - -+import("//build/config/python.gni") -+ - import("//third_party/blink/public/public_features.gni") - import("./all_devtools_files.gni") - import("./all_devtools_modules.gni") ---- src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/build_inspector_overlay.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/build_inspector_overlay.py -@@ -45,7 +45,8 @@ def rollup(input_path, output_path, filename, max_size - ['--format', 'iife', '-n', 'InspectorOverlay'] + ['--input', target] + - ['--plugin', rollup_plugin], - stdout=subprocess.PIPE, -- stderr=subprocess.PIPE) -+ stderr=subprocess.PIPE, -+ text=True) - out, error = rollup_process.communicate() - if not out: - raise Exception("rollup failed: " + error) ---- src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/build_release_applications.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/build_release_applications.py -@@ -10,7 +10,7 @@ and the application loader into a single script - and the application loader into a single script. - """ - --from cStringIO import StringIO -+from io import StringIO - from os import path - from os.path import join - import copy -@@ -145,8 +145,7 @@ class ReleaseBuilder(object): - resource_content = read_file(path.join(self.application_dir, resource_name)) - if not (resource_name.endswith('.html') - or resource_name.endswith('md')): -- resource_content += resource_source_url(resource_name).encode( -- 'utf-8') -+ resource_content += resource_source_url(resource_name) - resource_content = resource_content.replace('\\', '\\\\') - resource_content = resource_content.replace('\n', '\\n') - resource_content = resource_content.replace('"', '\\"') -@@ -173,7 +172,9 @@ class ReleaseBuilder(object): - def _concatenate_application_script(self, output): - output.write('Root.allDescriptors.push(...%s);' % self._release_module_descriptors()) - if self.descriptors.extends: -- output.write('Root.applicationDescriptor.modules.push(...%s);' % json.dumps(self.descriptors.application.values())) -+ output.write( -+ 'Root.applicationDescriptor.modules.push(...%s);' % -+ json.dumps(list(self.descriptors.application.values()))) - else: - output.write('Root.applicationDescriptor = %s;' % self.descriptors.application_json()) - ---- src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/generate_devtools_grd.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/generate_devtools_grd.py -@@ -123,7 +123,7 @@ def main(argv): - - try: - os.makedirs(path.join(output_directory, 'Images')) -- except OSError, e: -+ except OSError as e: - if e.errno != errno.EEXIST: - raise e - -@@ -147,7 +147,7 @@ def main(argv): - shutil.copy(path.join(dirname, filename), path.join(output_directory, 'Images')) - add_file_to_grd(doc, path.join('Images', filename)) - -- with open(parsed_args.output_filename, 'w') as output_file: -+ with open(parsed_args.output_filename, 'wb') as output_file: - output_file.write(doc.toxml(encoding='UTF-8')) - - ---- src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/modular_build.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/modular_build.py -@@ -7,6 +7,8 @@ Utilities for the modular DevTools build. - Utilities for the modular DevTools build. - """ - -+from __future__ import print_function -+ - import collections - from os import path - import os -@@ -40,7 +42,7 @@ def load_and_parse_json(filename): - try: - return json.loads(read_file(filename)) - except: -- print 'ERROR: Failed to parse %s' % filename -+ print('ERROR: Failed to parse %s' % filename) - raise - - class Descriptors: -@@ -57,7 +59,7 @@ class Descriptors: - - def application_json(self): - result = dict() -- result['modules'] = self.application.values() -+ result['modules'] = list(self.application.values()) - return json.dumps(result) - - def all_compiled_files(self): ---- src/3rdparty/chromium/third_party/jinja2/tests.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/jinja2/tests.py -@@ -10,7 +10,7 @@ import re - """ - import operator - import re --from collections import Mapping -+from collections.abc import Mapping - from jinja2.runtime import Undefined - from jinja2._compat import text_type, string_types, integer_types - import decimal ---- src/3rdparty/chromium/third_party/webrtc/test/BUILD.gn.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/third_party/webrtc/test/BUILD.gn -@@ -258,10 +258,6 @@ rtc_library("perf_test") { - absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] - if (rtc_enable_protobuf) { - sources += [ "testsupport/perf_test_histogram_writer.cc" ] -- deps += [ -- "//third_party/catapult/tracing/tracing:histogram", -- "//third_party/catapult/tracing/tracing:reserved_infos", -- ] - } else { - sources += [ "testsupport/perf_test_histogram_writer_no_protobuf.cc" ] - } -@@ -566,7 +562,6 @@ if (rtc_include_tests) { - - if (rtc_enable_protobuf) { - sources += [ "testsupport/perf_test_histogram_writer_unittest.cc" ] -- deps += [ "//third_party/catapult/tracing/tracing:histogram" ] - } - - data = test_support_unittests_resources ---- src/3rdparty/chromium/tools/binary_size/BUILD.gn.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/tools/binary_size/BUILD.gn -@@ -18,7 +18,6 @@ python_library("sizes_py") { - python_library("sizes_py") { - testonly = true - pydeps_file = "sizes.pydeps" -- data_deps = [ "//third_party/catapult/tracing:convert_chart_json" ] - } - - if (is_linux || is_chromeos) { ---- src/3rdparty/chromium/tools/grit/BUILD.gn.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/tools/grit/BUILD.gn -@@ -33,7 +33,6 @@ group("grit_python_unittests") { - "//testing/scripts/run_isolated_script_test.py", - "//testing/xvfb.py", - "//tools/grit/", -- "//third_party/catapult/third_party/typ/", - ] - } - ---- src/3rdparty/chromium/tools/grit/grit/util.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/tools/grit/grit/util.py -@@ -211,7 +211,7 @@ def ReadFile(filename, encoding): - mode = 'rb' - encoding = None - else: -- mode = 'rU' -+ mode = 'r' - - with io.open(abs(filename), mode, encoding=encoding) as f: - return f.read() ---- src/3rdparty/chromium/tools/gritsettings/resource_ids.spec.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/tools/gritsettings/resource_ids.spec -@@ -499,12 +499,6 @@ - "content/shell/shell_resources.grd": { - "includes": [2940], - }, -- -- # This file is generated during the build. -- "<(SHARED_INTERMEDIATE_DIR)/content/browser/tracing/tracing_resources.grd": { -- "META": {"sizes": {"includes": [20],}}, -- "includes": [2960], -- }, - # END content/ section. - - # START ios/web/ section. ---- src/3rdparty/chromium/tools/metrics/BUILD.gn.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/tools/metrics/BUILD.gn -@@ -56,7 +56,6 @@ group("metrics_python_tests") { - "//testing/scripts/common.py", - "//testing/xvfb.py", - "//testing/test_env.py", -- "//third_party/catapult/third_party/typ/", - - # Scripts we depend on. Their unit tests are also included. - "//tools/json_comment_eater/json_comment_eater.py", ---- src/3rdparty/chromium/tools/metrics/ukm/gen_builders.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/tools/metrics/ukm/gen_builders.py -@@ -48,9 +48,10 @@ def ReadFilteredData(path): - data = ukm_model.UKM_XML_TYPE.Parse(ukm_file.read()) - event_tag = ukm_model._EVENT_TYPE.tag - metric_tag = ukm_model._METRIC_TYPE.tag -- data[event_tag] = filter(ukm_model.IsNotObsolete, data[event_tag]) -+ data[event_tag] = list(filter(ukm_model.IsNotObsolete, data[event_tag])) - for event in data[event_tag]: -- event[metric_tag] = filter(ukm_model.IsNotObsolete, event[metric_tag]) -+ event[metric_tag] = list( -+ filter(ukm_model.IsNotObsolete, event[metric_tag])) - return data - - ---- src/3rdparty/chromium/tools/metrics/ukm/ukm_model.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/tools/metrics/ukm/ukm_model.py -@@ -42,7 +42,7 @@ _STATISTICS_TYPE = models.ObjectNodeType( - _STATISTICS_TYPE = models.ObjectNodeType( - 'statistics', - attributes=[ -- ('export', str, r'^(?i)(|true|false)$'), -+ ('export', str, r'(?i)^(|true|false)$'), - ], - children=[ - models.ChildType(_QUANTILES_TYPE.tag, _QUANTILES_TYPE, multiple=False), -@@ -94,7 +94,7 @@ _EVENT_TYPE = models.ObjectNodeType( - 'event', - attributes=[ - ('name', str, r'^[A-Za-z0-9.]+$'), -- ('singular', str, r'^(?i)(|true|false)$'), -+ ('singular', str, r'(?i)^(|true|false)$'), - ], - alphabetization=[ - (_OBSOLETE_TYPE.tag, _KEEP_ORDER), ---- src/3rdparty/chromium/tools/perf/chrome_telemetry_build/BUILD.gn.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/tools/perf/chrome_telemetry_build/BUILD.gn -@@ -107,7 +107,6 @@ group("telemetry_chrome_test_without_chrome") { - "//tools/perf/core/", # chrome_telemetry_build/ depends on core/ - ] - data_deps = [ -- "//third_party/catapult:telemetry_chrome_test_support", - "//tools/metrics:metrics_python_tests", - ] - -@@ -151,7 +150,5 @@ group("telemetry_chrome_test_without_chrome") { - "//build/android:devil_chromium_py", - "//build/android:stack_tools", - ] -- } else if (!is_fuchsia) { -- data_deps += [ "//third_party/catapult/telemetry:bitmaptools" ] - } - } ---- src/3rdparty/chromium/tools/perf/core/perfetto_binary_roller/BUILD.gn.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/tools/perf/core/perfetto_binary_roller/BUILD.gn -@@ -7,7 +7,6 @@ generate_wrapper("upload_trace_processor") { - generate_wrapper("upload_trace_processor") { - testonly = true - data_deps = [ -- "//third_party/catapult:telemetry_chrome_test_support", - "//third_party/perfetto/src/trace_processor:trace_processor_shell", - ] - data = [ ---- src/3rdparty/chromium/tools/polymer/BUILD.gn.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/tools/polymer/BUILD.gn -@@ -10,6 +10,5 @@ group("polymer_tools_python_unittests") { - "//testing/scripts/run_isolated_script_test.py", - "//testing/xvfb.py", - "//tools/polymer/", -- "//third_party/catapult/third_party/typ/", - ] - } ---- src/3rdparty/chromium/ui/ozone/generate_constructor_list.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/ui/ozone/generate_constructor_list.py -@@ -45,12 +45,15 @@ Example Output: ./ui/ozone/generate_constructor_list.p - } // namespace ui - """ - -+try: -+ from StringIO import StringIO # for Python 2 -+except ImportError: -+ from io import StringIO # for Python 3 - import optparse - import os - import collections - import re - import sys --import string - - - def GetTypedefName(typename): -@@ -68,7 +71,7 @@ def GetConstructorName(typename, platform): - This is just "Create" + typename + platform. - """ - -- return 'Create' + typename + string.capitalize(platform) -+ return 'Create' + typename + platform.capitalize() - - - def GenerateConstructorList(out, namespace, export, typenames, platforms, -@@ -163,12 +166,14 @@ def main(argv): - sys.exit(1) - - # Write to standard output or file specified by --output_cc. -- out_cc = sys.stdout -+ out_cc = getattr(sys.stdout, 'buffer', sys.stdout) - if options.output_cc: - out_cc = open(options.output_cc, 'wb') - -- GenerateConstructorList(out_cc, options.namespace, options.export, -+ out_cc_str = StringIO() -+ GenerateConstructorList(out_cc_str, options.namespace, options.export, - typenames, platforms, includes, usings) -+ out_cc.write(out_cc_str.getvalue().encode('utf-8')) - - if options.output_cc: - out_cc.close() ---- src/3rdparty/chromium/ui/ozone/generate_ozone_platform_list.py.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/ui/ozone/generate_ozone_platform_list.py -@@ -49,12 +49,15 @@ Example Output: ./generate_ozone_platform_list.py --de - - """ - -+try: -+ from StringIO import StringIO # for Python 2 -+except ImportError: -+ from io import StringIO # for Python 3 - import optparse - import os - import collections - import re - import sys --import string - - - def GetConstantName(name): -@@ -63,7 +66,7 @@ def GetConstantName(name): - We just capitalize the platform name and prepend "CreateOzonePlatform". - """ - -- return 'kPlatform' + string.capitalize(name) -+ return 'kPlatform' + name.capitalize() - - - def GeneratePlatformListText(out, platforms): -@@ -149,9 +152,9 @@ def main(argv): - platforms.insert(0, options.default) - - # Write to standard output or file specified by --output_{cc,h}. -- out_cc = sys.stdout -- out_h = sys.stdout -- out_txt = sys.stdout -+ out_cc = getattr(sys.stdout, 'buffer', sys.stdout) -+ out_h = getattr(sys.stdout, 'buffer', sys.stdout) -+ out_txt = getattr(sys.stdout, 'buffer', sys.stdout) - if options.output_cc: - out_cc = open(options.output_cc, 'wb') - if options.output_h: -@@ -159,9 +162,16 @@ def main(argv): - if options.output_txt: - out_txt = open(options.output_txt, 'wb') - -- GeneratePlatformListText(out_txt, platforms) -- GeneratePlatformListHeader(out_h, platforms) -- GeneratePlatformListSource(out_cc, platforms) -+ out_txt_str = StringIO() -+ out_h_str = StringIO() -+ out_cc_str = StringIO() -+ -+ GeneratePlatformListText(out_txt_str, platforms) -+ out_txt.write(out_txt_str.getvalue().encode('utf-8')) -+ GeneratePlatformListHeader(out_h_str, platforms) -+ out_h.write(out_h_str.getvalue().encode('utf-8')) -+ GeneratePlatformListSource(out_cc_str, platforms) -+ out_cc.write(out_cc_str.getvalue().encode('utf-8')) - - if options.output_cc: - out_cc.close() ---- src/3rdparty/chromium/v8/tools/BUILD.gn.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/v8/tools/BUILD.gn -@@ -31,10 +31,6 @@ group("v8_android_test_runner_deps") { - - if (is_android && !build_with_chromium) { - data_deps = [ "//build/android:test_runner_py" ] -- data = [ -- # This is used by android.py, but not included by test_runner_py above. -- "//third_party/catapult/devil/devil/android/perf/", -- ] - } - } - ---- src/3rdparty/chromium/weblayer/shell/BUILD.gn.orig 2023-07-14 13:25:01 UTC -+++ src/3rdparty/chromium/weblayer/shell/BUILD.gn -@@ -161,7 +161,6 @@ repack("support_pak") { - "$root_gen_dir/components/strings/components_locale_settings_en-US.pak", - "$root_gen_dir/components/strings/components_strings_en-US.pak", - "$root_gen_dir/content/app/resources/content_resources_100_percent.pak", -- "$root_gen_dir/content/browser/tracing/tracing_resources.pak", - "$root_gen_dir/content/content_resources.pak", - "$root_gen_dir/content/dev_ui_content_resources.pak", - "$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak", -@@ -182,7 +181,6 @@ repack("support_pak") { - "//content:content_resources", - "//content:dev_ui_content_resources", - "//content/app/resources", -- "//content/browser/tracing:resources", - "//mojo/public/js:resources", - "//net:net_resources", - "//third_party/blink/public:resources", diff --git a/www/qt5-webengine/files/patch-security-rollup b/www/qt5-webengine/files/patch-security-rollup deleted file mode 100644 index 7cc2fb5af05e..000000000000 --- a/www/qt5-webengine/files/patch-security-rollup +++ /dev/null @@ -1,2509 +0,0 @@ -Add security patches to this file. - -Addresses the following security issues: -- CVE-2023-6347 -- CVE-2023-6510 -- Security bug 1488199 -- CVE-2023-6345 -- CVE-2023-6702 -- Security bug 1505632 -- CVE-2024-0222 -- CVE-2024-0333 -- CVE-2024-0518 -- CVE-2024-0519 -- Security bug 1506535 -- CVE-2023-7024 -- CVE-2024-0224 -- Security bug 1511689 -- CVE-2024-0807 -- CVE-2024-0808 -- Security bug 1519980 -- CVE-2024-1077 -- CVE-2024-1060 -- CVE-2024-1283 - -From 8ca846140881c9480b18bc9645b38fb9ea565ea3 Mon Sep 17 00:00:00 2001 -From: Ken Rockot -Date: Thu, 16 Nov 2023 23:23:22 +0000 -Subject: [PATCH] [Backport] CVE-2023-6347: Use after free in Mojo - -Cherry-pick of patch originally reviewed on -https://chromium-review.googlesource.com/c/chromium/src/+/5038080: -Reland: Fix IPC Channel pipe teardown - -This is a reland with the new test temporarily disabled on Android -until it can run without disrupting other tests. - -(cherry picked from commit cd4c1f165c16c6d8161b5372ef7f61c715e01a42) - -Fixed: 1494461 -Change-Id: If1d83c2dce62020f78dd50abc460973759002a1a -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5015115 -Commit-Queue: Ken Rockot -Reviewed-by: Robert Sesek -Cr-Original-Commit-Position: refs/heads/main@{#1221953} -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5038080 -Auto-Submit: Ken Rockot -Commit-Queue: Daniel Cheng -Reviewed-by: Daniel Cheng -Cr-Commit-Position: refs/branch-heads/6045@{#1383} -Cr-Branched-From: 905e8bdd32d891451d94d1ec71682e989da2b0a1-refs/heads/main@{#1204232} -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/522256 -Reviewed-by: Michal Klocek ---- - chromium/ipc/ipc_mojo_bootstrap.cc | 43 ++++++++++++++++++++++-------- - 1 file changed, 32 insertions(+), 11 deletions(-) - -diff --git a/chromium/ipc/ipc_mojo_bootstrap.cc b/chromium/ipc/ipc_mojo_bootstrap.cc -index 616382cb8f9c..9a9eeef84755 100644 ---- src/3rdparty/chromium/ipc/ipc_mojo_bootstrap.cc.orig -+++ src/3rdparty/chromium/ipc/ipc_mojo_bootstrap.cc -@@ -702,13 +702,12 @@ class ChannelAssociatedGroupController - // handle. - DCHECK(!endpoint->client()); - DCHECK(endpoint->peer_closed()); -- MarkClosedAndMaybeRemove(endpoint); -+ MarkClosed(endpoint); - } else { -- MarkPeerClosedAndMaybeRemove(endpoint); -+ MarkPeerClosed(endpoint); - } - } -- -- DCHECK(endpoints_.empty()); -+ endpoints_.clear(); - - GetMemoryDumpProvider().RemoveController(this); - } -@@ -755,15 +754,19 @@ class ChannelAssociatedGroupController - base::AutoLock locker(lock_); - encountered_error_ = true; - -+ std::vector endpoints_to_remove; - std::vector> endpoints_to_notify; - for (auto iter = endpoints_.begin(); iter != endpoints_.end();) { - Endpoint* endpoint = iter->second.get(); - ++iter; - -- if (endpoint->client()) -+ if (endpoint->client()) { - endpoints_to_notify.push_back(endpoint); -+ } - -- MarkPeerClosedAndMaybeRemove(endpoint); -+ if (MarkPeerClosed(endpoint)) { -+ endpoints_to_remove.push_back(endpoint->id()); -+ } - } - - for (auto& endpoint : endpoints_to_notify) { -@@ -772,6 +775,10 @@ class ChannelAssociatedGroupController - if (endpoint->client()) - NotifyEndpointOfError(endpoint.get(), false /* force_async */); - } -+ -+ for (uint32_t id : endpoints_to_remove) { -+ endpoints_.erase(id); -+ } - } - - void NotifyEndpointOfError(Endpoint* endpoint, bool force_async) { -@@ -806,19 +813,33 @@ class ChannelAssociatedGroupController - NotifyEndpointOfError(endpoint, false /* force_async */); - } - -- void MarkClosedAndMaybeRemove(Endpoint* endpoint) { -+ // Marks `endpoint` as closed and returns true if and only if its peer was -+ // also already closed. -+ bool MarkClosed(Endpoint* endpoint) { - lock_.AssertAcquired(); - endpoint->set_closed(); -- if (endpoint->closed() && endpoint->peer_closed()) -- endpoints_.erase(endpoint->id()); -+ return endpoint->peer_closed(); - } - -- void MarkPeerClosedAndMaybeRemove(Endpoint* endpoint) { -+ // Marks `endpoint` as having a closed peer and returns true if and only if -+ // `endpoint` itself was also already closed. -+ bool MarkPeerClosed(Endpoint* endpoint) { - lock_.AssertAcquired(); - endpoint->set_peer_closed(); - endpoint->SignalSyncMessageEvent(); -- if (endpoint->closed() && endpoint->peer_closed()) -+ return endpoint->closed(); -+ } -+ -+ void MarkClosedAndMaybeRemove(Endpoint* endpoint) { -+ if (MarkClosed(endpoint)) { - endpoints_.erase(endpoint->id()); -+ } -+ } -+ -+ void MarkPeerClosedAndMaybeRemove(Endpoint* endpoint) { -+ if (MarkPeerClosed(endpoint)) { -+ endpoints_.erase(endpoint->id()); -+ } - } - - Endpoint* FindOrInsertEndpoint(mojo::InterfaceId id, bool* inserted) { -From 4d095ba080045a255cb93ecadb9f3358fdc7cd80 Mon Sep 17 00:00:00 2001 -From: Jordan Bayles -Date: Fri, 6 Oct 2023 23:50:59 +0000 -Subject: [PATCH] [Backport] CVE-2023-6510: Use after free in Media Capture - -Manual backport of patch originally reviewed on -Fix UaF in WebContentsFrameTracker - -This patch fixes a use-after-free by moving to a base::WeakPtr -instead of a raw_ptr. Looking at the callstack in the referenced bug, what is clearly happening is that the frame tracker is deleted AFTER the capture device. I believe that this is due to the MouseCursorOverlayController being deleted through the DeleteOnUIThread destructor, which, if you are already on the UI thread, is synchronous: - -https://source.chromium.org/chromium/chromium/src/+/main:content/public/browser/browser_thread.h;l=141?q=BrowserThread::DeleteOnThread&ss=chromium%2Fchromium%2Fsrc - -In comparison, the WebContentsFrameTracker is implemented using base::SequenceBound, which ends up calling an internal destruct method that ALWAYS posts back a task: - -https://source.chromium.org/chromium/chromium/src/+/main:base/threading/sequence_bound_internal.h;drc=f5bdc89c7395ed24f1b8d196a3bdd6232d5bf771;l=122 - -So, this bug is ultimately caused by the simple fact that base::SequenceBound does NOT have an optimization to not post a deletion task if we are already running on that sequence. There may be a good followup task here to change either DeleteOnThread or base::SequenceBound to have the same behavior, however I think this change a good first step. - -Bug: 1480152 -Change-Id: Iee2d41e66b10403d6c78547bcbe84d2454236d5b -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4908770 -Reviewed-by: Mark Foltz -Commit-Queue: Jordan Bayles -Cr-Commit-Position: refs/heads/main@{#1206698} -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/523700 -Reviewed-by: Michal Klocek ---- - .../web_contents_video_capture_device.cc | 19 ++++++++++++------- - 1 file changed, 12 insertions(+), 7 deletions(-) - -diff --git a/chromium/content/browser/media/capture/web_contents_video_capture_device.cc b/chromium/content/browser/media/capture/web_contents_video_capture_device.cc -index 0093df22c2b2..6100fe816784 100644 ---- src/3rdparty/chromium/content/browser/media/capture/web_contents_video_capture_device.cc.orig -+++ src/3rdparty/chromium/content/browser/media/capture/web_contents_video_capture_device.cc -@@ -41,7 +41,7 @@ class WebContentsVideoCaptureDevice::FrameTracker - int main_render_frame_id) - : device_(std::move(device)), - device_task_runner_(base::ThreadTaskRunnerHandle::Get()), -- cursor_controller_(cursor_controller) { -+ cursor_controller_(cursor_controller->GetWeakPtr()) { - DCHECK(device_task_runner_); - DCHECK(cursor_controller_); - -@@ -184,7 +184,9 @@ class WebContentsVideoCaptureDevice::FrameTracker - // Note: MouseCursorOverlayController runs on the UI thread. It's also - // important that SetTargetView() be called in the current stack while - // |native_view| is known to be a valid pointer. http://crbug.com/818679 -- cursor_controller_->SetTargetView(native_view); -+ if (cursor_controller_) { -+ cursor_controller_->SetTargetView(native_view); -+ } - } - } else { - device_task_runner_->PostTask( -@@ -192,7 +194,9 @@ class WebContentsVideoCaptureDevice::FrameTracker - base::BindOnce( - &WebContentsVideoCaptureDevice::OnTargetPermanentlyLost, - device_)); -- cursor_controller_->SetTargetView(gfx::NativeView()); -+ if (cursor_controller_) { -+ cursor_controller_->SetTargetView(gfx::NativeView()); -+ } - } - } - -@@ -200,10 +204,11 @@ class WebContentsVideoCaptureDevice::FrameTracker - const base::WeakPtr device_; - const scoped_refptr device_task_runner_; - -- // Owned by FrameSinkVideoCaptureDevice. This will be valid for the life of -- // FrameTracker because the FrameTracker deleter task will be posted to the UI -- // thread before the MouseCursorOverlayController deleter task. -- MouseCursorOverlayController* const cursor_controller_; -+ // Owned by FrameSinkVideoCaptureDevice. This may only be accessed on the -+ // UI thread. This is not guaranteed to be valid and must be checked before -+ // use. -+ // https://crbug.com/1480152 -+ const base::WeakPtr cursor_controller_; - - viz::FrameSinkId target_frame_sink_id_; - gfx::NativeView target_native_view_ = gfx::NativeView(); -From 6a382d96ac3becf92f28f8549318390193da1ddd Mon Sep 17 00:00:00 2001 -From: pthier -Date: Tue, 24 Oct 2023 13:28:22 +0200 -Subject: [PATCH] [Backport] Security bug 1488199 (1/2) - -Manual backport of patch originally reviewed on -https://chromium-review.googlesource.com/c/v8/v8/+/4971832: -[regexp] Fix stack check in native code when interrupt was requested - -When an interrupt was requested at the time we hit the stack check, the -check to ensure we have enough space for local variables was skipped. - -Bug: chromium:1488199 -Change-Id: I95d82fe737420d2ef43c1ace35560cfd5860829b -Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4971832 -Commit-Queue: Patrick Thier -Reviewed-by: Jakob Linke -Cr-Commit-Position: refs/heads/main@{#90560} -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/523701 -Reviewed-by: Michal Klocek ---- - .../regexp/arm/regexp-macro-assembler-arm.cc | 22 +++++++----- - .../regexp/arm/regexp-macro-assembler-arm.h | 5 +-- - .../arm64/regexp-macro-assembler-arm64.cc | 21 ++++++----- - .../arm64/regexp-macro-assembler-arm64.h | 6 ++-- - .../ia32/regexp-macro-assembler-ia32.cc | 19 ++++++---- - .../regexp/ia32/regexp-macro-assembler-ia32.h | 5 +-- - .../v8/src/regexp/regexp-macro-assembler.cc | 5 +-- - .../v8/src/regexp/regexp-macro-assembler.h | 2 +- - .../regexp/x64/regexp-macro-assembler-x64.cc | 35 ++++++++++++------- - .../regexp/x64/regexp-macro-assembler-x64.h | 4 +-- - 10 files changed, 78 insertions(+), 46 deletions(-) - -diff --git a/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc b/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc -index 78b586e265d0..099fc62fa07b 100644 ---- src/3rdparty/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc.orig -+++ src/3rdparty/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc -@@ -670,11 +670,13 @@ Handle RegExpMacroAssemblerARM::GetCode(Handle source) { - __ mov(r0, Operand(stack_limit)); - __ ldr(r0, MemOperand(r0)); - __ sub(r0, sp, r0, SetCC); -+ Operand extra_space_for_variables(num_registers_ * kPointerSize); -+ - // Handle it if the stack pointer is already below the stack limit. - __ b(ls, &stack_limit_hit); - // Check if there is room for the variable number of registers above - // the stack limit. -- __ cmp(r0, Operand(num_registers_ * kPointerSize)); -+ __ cmp(r0, extra_space_for_variables); - __ b(hs, &stack_ok); - // Exit with OutOfMemory exception. There is not enough space on the stack - // for our working registers. -@@ -682,7 +684,7 @@ Handle RegExpMacroAssemblerARM::GetCode(Handle source) { - __ jmp(&return_r0); - - __ bind(&stack_limit_hit); -- CallCheckStackGuardState(); -+ CallCheckStackGuardState(extra_space_for_variables); - __ cmp(r0, Operand::Zero()); - // If returned value is non-zero, we exit with the returned value as result. - __ b(ne, &return_r0); -@@ -1048,16 +1050,18 @@ void RegExpMacroAssemblerARM::WriteStackPointerToRegister(int reg) { - - // Private methods: - --void RegExpMacroAssemblerARM::CallCheckStackGuardState() { -+void RegExpMacroAssemblerARM::CallCheckStackGuardState(Operand extra_space) { - DCHECK(!isolate()->IsGeneratingEmbeddedBuiltins()); - DCHECK(!masm_->options().isolate_independent_code); - -- __ PrepareCallCFunction(3); -+ __ PrepareCallCFunction(4); - -+ // Extra space for variables to consider in stack check. -+ __ mov(arg_reg_4, extra_space); - // RegExp code frame pointer. -- __ mov(r2, frame_pointer()); -+ __ mov(arg_reg3, frame_pointer()); - // Code of self. -- __ mov(r1, Operand(masm_->CodeObject())); -+ __ mov(arg_reg2, Operand(masm_->CodeObject())); - - // We need to make room for the return address on the stack. - int stack_alignment = base::OS::ActivationFrameAlignment(); -@@ -1101,7 +1105,8 @@ static T* frame_entry_address(Address re_frame, int frame_offset) { - - int RegExpMacroAssemblerARM::CheckStackGuardState(Address* return_address, - Address raw_code, -- Address re_frame) { -+ Address re_frame, -+ uintptr_t extra_space) { - Code re_code = Code::cast(Object(raw_code)); - return NativeRegExpMacroAssembler::CheckStackGuardState( - frame_entry(re_frame, kIsolate), -@@ -1110,7 +1115,8 @@ int RegExpMacroAssemblerARM::CheckStackGuardState(Address* return_address, - return_address, re_code, - frame_entry_address
(re_frame, kInputString), - frame_entry_address(re_frame, kInputStart), -- frame_entry_address(re_frame, kInputEnd)); -+ frame_entry_address(re_frame, kInputEnd), -+ extra_space); - } - - -diff --git a/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.h b/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.h -index 910e5c46079a..114120755fcb 100644 ---- src/3rdparty/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.h.orig -+++ src/3rdparty/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.h -@@ -89,7 +89,7 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerARM - // returning. - // {raw_code} is an Address because this is called via ExternalReference. - static int CheckStackGuardState(Address* return_address, Address raw_code, -- Address re_frame); -+ Address re_frame, uintptr_t extra_space); - - private: - // Offsets from frame_pointer() of function parameters and stored registers. -@@ -134,7 +134,8 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerARM - - - // Generate a call to CheckStackGuardState. -- void CallCheckStackGuardState(); -+ void CallCheckStackGuardState( -+ Operand extra_space_for_variables = Operand::Zero()); - - // The ebp-relative location of a regexp register. - MemOperand register_location(int register_index); -diff --git a/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc b/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc -index ac33f8631ffe..1e5342dd42e5 100644 ---- src/3rdparty/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc.orig -+++ src/3rdparty/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc -@@ -781,13 +781,14 @@ Handle RegExpMacroAssemblerARM64::GetCode(Handle source) { - __ Mov(x10, stack_limit); - __ Ldr(x10, MemOperand(x10)); - __ Subs(x10, sp, x10); -+ Operand extra_space_for_variables(num_wreg_to_allocate * kWRegSize); - - // Handle it if the stack pointer is already below the stack limit. - __ B(ls, &stack_limit_hit); - - // Check if there is room for the variable number of registers above - // the stack limit. -- __ Cmp(x10, num_wreg_to_allocate * kWRegSize); -+ __ Cmp(x10, extra_space_for_variables); - __ B(hs, &stack_ok); - - // Exit with OutOfMemory exception. There is not enough space on the stack -@@ -796,7 +797,7 @@ Handle RegExpMacroAssemblerARM64::GetCode(Handle source) { - __ B(&return_w0); - - __ Bind(&stack_limit_hit); -- CallCheckStackGuardState(x10); -+ CallCheckStackGuardState(x10, extra_space_for_variables); - // If returned value is non-zero, we exit with the returned value as result. - __ Cbnz(w0, &return_w0); - -@@ -1332,13 +1333,14 @@ static T* frame_entry_address(Address re_frame, int frame_offset) { - - int RegExpMacroAssemblerARM64::CheckStackGuardState( - Address* return_address, Address raw_code, Address re_frame, -- int start_index, const byte** input_start, const byte** input_end) { -+ int start_index, const byte** input_start, const byte** input_end, -+ uintptr_t extra_space) { - Code re_code = Code::cast(Object(raw_code)); - return NativeRegExpMacroAssembler::CheckStackGuardState( - frame_entry(re_frame, kIsolate), start_index, - static_cast(frame_entry(re_frame, kDirectCall)), - return_address, re_code, frame_entry_address
(re_frame, kInput), -- input_start, input_end); -+ input_start, input_end, extra_space); - } - - -@@ -1357,21 +1359,24 @@ void RegExpMacroAssemblerARM64::CheckPosition(int cp_offset, - - // Private methods: - --void RegExpMacroAssemblerARM64::CallCheckStackGuardState(Register scratch) { -+void RegExpMacroAssemblerARM64::CallCheckStackGuardState(Register scratch, -+ Operand extra_space) { - DCHECK(!isolate()->IsGeneratingEmbeddedBuiltins()); - DCHECK(!masm_->options().isolate_independent_code); - - // Allocate space on the stack to store the return address. The - // CheckStackGuardState C++ function will override it if the code -- // moved. Allocate extra space for 2 arguments passed by pointers. -- // AAPCS64 requires the stack to be 16 byte aligned. -+ // moved. Allocate extra space for 3 arguments (2 for input start/end and 1 -+ // for gap). AAPCS64 requires the stack to be 16 byte aligned. - int alignment = masm_->ActivationFrameAlignment(); - DCHECK_EQ(alignment % 16, 0); - int align_mask = (alignment / kXRegSize) - 1; -- int xreg_to_claim = (3 + align_mask) & ~align_mask; -+ int xreg_to_claim = (4 + align_mask) & ~align_mask; - - __ Claim(xreg_to_claim); - -+ __ Mov(x0, extra_space); -+ __ Poke(x0, 3 * kSystemPointerSize); - // CheckStackGuardState needs the end and start addresses of the input string. - __ Poke(input_end(), 2 * kSystemPointerSize); - __ Add(x5, sp, 2 * kSystemPointerSize); -diff --git a/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.h b/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.h -index aeb49aa9fff3..e4c4b0ac34f3 100644 ---- src/3rdparty/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.h.orig -+++ src/3rdparty/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.h -@@ -97,7 +97,8 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerARM64 - static int CheckStackGuardState(Address* return_address, Address raw_code, - Address re_frame, int start_offset, - const byte** input_start, -- const byte** input_end); -+ const byte** input_end, -+ uintptr_t extra_space); - - private: - // Above the frame pointer - Stored registers and stack passed parameters. -@@ -145,7 +146,8 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerARM64 - void CheckStackLimit(); - - // Generate a call to CheckStackGuardState. -- void CallCheckStackGuardState(Register scratch); -+ void CallCheckStackGuardState(Register scratch, -+ Operand extra_space = Operand(0)); - - // Location of a 32 bit position register. - MemOperand register_location(int register_index); -diff --git a/chromium/v8/src/regexp/ia32/regexp-macro-assembler-ia32.cc b/chromium/v8/src/regexp/ia32/regexp-macro-assembler-ia32.cc -index 2135e977a742..d5fbd960675e 100644 ---- src/3rdparty/chromium/v8/src/regexp/ia32/regexp-macro-assembler-ia32.cc.orig -+++ src/3rdparty/chromium/v8/src/regexp/ia32/regexp-macro-assembler-ia32.cc -@@ -700,11 +700,13 @@ Handle RegExpMacroAssemblerIA32::GetCode(Handle source) { - ExternalReference::address_of_jslimit(isolate()); - __ mov(ecx, esp); - __ sub(ecx, StaticVariable(stack_limit)); -+ Immediate extra_space_for_variables(num_registers_ * kSystemPointerSize); -+ - // Handle it if the stack pointer is already below the stack limit. - __ j(below_equal, &stack_limit_hit); - // Check if there is room for the variable number of registers above - // the stack limit. -- __ cmp(ecx, num_registers_ * kSystemPointerSize); -+ __ cmp(ecx, extra_space_for_variables); - __ j(above_equal, &stack_ok); - // Exit with OutOfMemory exception. There is not enough space on the stack - // for our working registers. -@@ -712,7 +714,7 @@ Handle RegExpMacroAssemblerIA32::GetCode(Handle source) { - __ jmp(&return_eax); - - __ bind(&stack_limit_hit); -- CallCheckStackGuardState(ebx); -+ CallCheckStackGuardState(ebx, extra_space_for_variables); - __ or_(eax, eax); - // If returned value is non-zero, we exit with the returned value as result. - __ j(not_zero, &return_eax); -@@ -1080,9 +1082,12 @@ void RegExpMacroAssemblerIA32::WriteStackPointerToRegister(int reg) { - - // Private methods: - --void RegExpMacroAssemblerIA32::CallCheckStackGuardState(Register scratch) { -- static const int num_arguments = 3; -+void RegExpMacroAssemblerIA32::CallCheckStackGuardState(Register scratch, -+ Immediate extra_space) { -+ static const int num_arguments = 4; - __ PrepareCallCFunction(num_arguments, scratch); -+ // Extra space for variables. -+ __ mov(Operand(esp, 3 * kSystemPointerSize), extra_space); - // RegExp code frame pointer. - __ mov(Operand(esp, 2 * kSystemPointerSize), ebp); - // Code of self. -@@ -1113,7 +1118,8 @@ static T* frame_entry_address(Address re_frame, int frame_offset) { - - int RegExpMacroAssemblerIA32::CheckStackGuardState(Address* return_address, - Address raw_code, -- Address re_frame) { -+ Address re_frame, -+ uintptr_t extra_space) { - Code re_code = Code::cast(Object(raw_code)); - return NativeRegExpMacroAssembler::CheckStackGuardState( - frame_entry(re_frame, kIsolate), -@@ -1122,7 +1128,8 @@ int RegExpMacroAssemblerIA32::CheckStackGuardState(Address* return_address, - return_address, re_code, - frame_entry_address
(re_frame, kInputString), - frame_entry_address(re_frame, kInputStart), -- frame_entry_address(re_frame, kInputEnd)); -+ frame_entry_address(re_frame, kInputEnd), -+ extra_space); - } - - -diff --git a/chromium/v8/src/regexp/ia32/regexp-macro-assembler-ia32.h b/chromium/v8/src/regexp/ia32/regexp-macro-assembler-ia32.h -index a30bff29a15c..620e7fb2982e 100644 ---- src/3rdparty/chromium/v8/src/regexp/ia32/regexp-macro-assembler-ia32.h.orig -+++ src/3rdparty/chromium/v8/src/regexp/ia32/regexp-macro-assembler-ia32.h -@@ -88,7 +88,7 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerIA32 - // returning. - // {raw_code} is an Address because this is called via ExternalReference. - static int CheckStackGuardState(Address* return_address, Address raw_code, -- Address re_frame); -+ Address re_frame, uintptr_t extra_space); - - private: - Operand StaticVariable(const ExternalReference& ext); -@@ -133,7 +133,8 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerIA32 - void CheckStackLimit(); - - // Generate a call to CheckStackGuardState. -- void CallCheckStackGuardState(Register scratch); -+ void CallCheckStackGuardState(Register scratch, -+ Immediate extra_space = Immediate(0)); - - // The ebp-relative location of a regexp register. - Operand register_location(int register_index); -diff --git a/chromium/v8/src/regexp/regexp-macro-assembler.cc b/chromium/v8/src/regexp/regexp-macro-assembler.cc -index cf4346309eb2..009027c10398 100644 ---- src/3rdparty/chromium/v8/src/regexp/regexp-macro-assembler.cc.orig -+++ src/3rdparty/chromium/v8/src/regexp/regexp-macro-assembler.cc -@@ -168,14 +168,15 @@ bool NativeRegExpMacroAssembler::CanReadUnaligned() { - int NativeRegExpMacroAssembler::CheckStackGuardState( - Isolate* isolate, int start_index, RegExp::CallOrigin call_origin, - Address* return_address, Code re_code, Address* subject, -- const byte** input_start, const byte** input_end) { -+ const byte** input_start, const byte** input_end, -+ uintptr_t gap) { - DisallowHeapAllocation no_gc; - Address old_pc = PointerAuthentication::AuthenticatePC(return_address, 0); - DCHECK_LE(re_code.raw_instruction_start(), old_pc); - DCHECK_LE(old_pc, re_code.raw_instruction_end()); - - StackLimitCheck check(isolate); -- bool js_has_overflowed = check.JsHasOverflowed(); -+ bool js_has_overflowed = check.JsHasOverflowed(gap); - - if (call_origin == RegExp::CallOrigin::kFromJs) { - // Direct calls from JavaScript can be interrupted in two ways: -diff --git a/chromium/v8/src/regexp/regexp-macro-assembler.h b/chromium/v8/src/regexp/regexp-macro-assembler.h -index 52465610cb66..da233d3c73df 100644 ---- src/3rdparty/chromium/v8/src/regexp/regexp-macro-assembler.h.orig -+++ src/3rdparty/chromium/v8/src/regexp/regexp-macro-assembler.h -@@ -261,7 +261,7 @@ class NativeRegExpMacroAssembler: public RegExpMacroAssembler { - RegExp::CallOrigin call_origin, - Address* return_address, Code re_code, - Address* subject, const byte** input_start, -- const byte** input_end); -+ const byte** input_end, uintptr_t gap); - - // Byte map of one byte characters with a 0xff if the character is a word - // character (digit, letter or underscore) and 0x00 otherwise. -diff --git a/chromium/v8/src/regexp/x64/regexp-macro-assembler-x64.cc b/chromium/v8/src/regexp/x64/regexp-macro-assembler-x64.cc -index da0397689fba..6ae1114f24ef 100644 ---- src/3rdparty/chromium/v8/src/regexp/x64/regexp-macro-assembler-x64.cc.orig -+++ src/3rdparty/chromium/v8/src/regexp/x64/regexp-macro-assembler-x64.cc -@@ -736,11 +736,13 @@ Handle RegExpMacroAssemblerX64::GetCode(Handle source) { - __ movq(rcx, rsp); - __ Move(kScratchRegister, stack_limit); - __ subq(rcx, Operand(kScratchRegister, 0)); -+ Immediate extra_space_for_variables(num_registers_ * kSystemPointerSize); -+ - // Handle it if the stack pointer is already below the stack limit. - __ j(below_equal, &stack_limit_hit); - // Check if there is room for the variable number of registers above - // the stack limit. -- __ cmpq(rcx, Immediate(num_registers_ * kSystemPointerSize)); -+ __ cmpq(rcx, extra_space_for_variables); - __ j(above_equal, &stack_ok); - // Exit with OutOfMemory exception. There is not enough space on the stack - // for our working registers. -@@ -749,7 +751,8 @@ Handle RegExpMacroAssemblerX64::GetCode(Handle source) { - - __ bind(&stack_limit_hit); - __ Move(code_object_pointer(), masm_.CodeObject()); -- CallCheckStackGuardState(); // Preserves no registers beside rbp and rsp. -+ // CallCheckStackGuardState preserves no registers beside rbp and rsp. -+ CallCheckStackGuardState(extra_space_for_variables); - __ testq(rax, rax); - // If returned value is non-zero, we exit with the returned value as result. - __ j(not_zero, &return_rax); -@@ -1147,27 +1150,31 @@ void RegExpMacroAssemblerX64::WriteStackPointerToRegister(int reg) { - - // Private methods: - --void RegExpMacroAssemblerX64::CallCheckStackGuardState() { -+void RegExpMacroAssemblerX64::CallCheckStackGuardState(Immediate extra_space) { - // This function call preserves no register values. Caller should - // store anything volatile in a C call or overwritten by this function. -- static const int num_arguments = 3; -+ static const int num_arguments = 4; - __ PrepareCallCFunction(num_arguments); - #ifdef V8_TARGET_OS_WIN -- // Second argument: Code of self. (Do this before overwriting r8). -- __ movq(rdx, code_object_pointer()); -+ // Fourth argument: Extra space for variables. -+ __ movq(arg_reg_4, extra_space); -+ // Second argument: Code of self. (Do this before overwriting r8 (arg_reg_3)). -+ __ movq(arg_reg_2, code_object_pointer()); - // Third argument: RegExp code frame pointer. -- __ movq(r8, rbp); -+ __ movq(arg_reg_3, rbp); - // First argument: Next address on the stack (will be address of - // return address). -- __ leaq(rcx, Operand(rsp, -kSystemPointerSize)); -+ __ leaq(arg_reg_1, Operand(rsp, -kSystemPointerSize)); - #else -+ // Fourth argument: Extra space for variables. -+ __ movq(arg_reg_4, extra_space); - // Third argument: RegExp code frame pointer. -- __ movq(rdx, rbp); -+ __ movq(arg_reg_3, rbp); - // Second argument: Code of self. -- __ movq(rsi, code_object_pointer()); -+ __ movq(arg_reg_2, code_object_pointer()); - // First argument: Next address on the stack (will be address of - // return address). -- __ leaq(rdi, Operand(rsp, -kSystemPointerSize)); -+ __ leaq(arg_reg_1, Operand(rsp, -kSystemPointerSize)); - #endif - ExternalReference stack_check = - ExternalReference::re_check_stack_guard_state(isolate()); -@@ -1189,7 +1196,8 @@ static T* frame_entry_address(Address re_frame, int frame_offset) { - - int RegExpMacroAssemblerX64::CheckStackGuardState(Address* return_address, - Address raw_code, -- Address re_frame) { -+ Address re_frame, -+ uintptr_t extra_space) { - Code re_code = Code::cast(Object(raw_code)); - return NativeRegExpMacroAssembler::CheckStackGuardState( - frame_entry(re_frame, kIsolate), -@@ -1198,7 +1206,8 @@ int RegExpMacroAssemblerX64::CheckStackGuardState(Address* return_address, - return_address, re_code, - frame_entry_address
(re_frame, kInputString), - frame_entry_address(re_frame, kInputStart), -- frame_entry_address(re_frame, kInputEnd)); -+ frame_entry_address(re_frame, kInputEnd), -+ extra_space); - } - - -diff --git a/chromium/v8/src/regexp/x64/regexp-macro-assembler-x64.h b/chromium/v8/src/regexp/x64/regexp-macro-assembler-x64.h -index ea4d45edba83..6e5dcd18c286 100644 ---- src/3rdparty/chromium/v8/src/regexp/x64/regexp-macro-assembler-x64.h.orig -+++ src/3rdparty/chromium/v8/src/regexp/x64/regexp-macro-assembler-x64.h -@@ -82,7 +82,7 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerX64 - // returning. - // {raw_code} is an Address because this is called via ExternalReference. - static int CheckStackGuardState(Address* return_address, Address raw_code, -- Address re_frame); -+ Address re_frame, uintptr_t extra_space); - - private: - // Offsets from rbp of function parameters and stored registers. -@@ -166,7 +166,7 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerX64 - void CheckStackLimit(); - - // Generate a call to CheckStackGuardState. -- void CallCheckStackGuardState(); -+ void CallCheckStackGuardState(Immediate extra_space = Immediate(0)); - - // The rbp-relative location of a regexp register. - Operand register_location(int register_index); -From a3a63cf72f11a9e1a40fd076dea0ce8f532251ba Mon Sep 17 00:00:00 2001 -From: pthier -Date: Mon, 30 Oct 2023 11:59:09 +0100 -Subject: [PATCH] [Backport] Security bug 1488199 (2/2) - -Manual backport of patch originally reviewed on -https://chromium-review.googlesource.com/c/v8/v8/+/4987306: -[regexp][arm64] Fix stack check extra space argument - -Pass argument in register instead of the stack. - -Bug: chromium:1488199, v8:14415 -Change-Id: Ic9967c9f2ca5da1981a0138ddb5f0335ab7f1425 -Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4987306 -Commit-Queue: Patrick Thier -Reviewed-by: Camillo Bruni -Cr-Commit-Position: refs/heads/main@{#90669} -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/523702 -Reviewed-by: Michal Klocek ---- - .../v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc | 9 ++++----- - 1 file changed, 4 insertions(+), 5 deletions(-) - -diff --git a/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc b/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc -index 1e5342dd42e..aaab0c52344 100644 ---- src/3rdparty/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc.orig -+++ src/3rdparty/chromium/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc -@@ -1366,17 +1366,16 @@ void RegExpMacroAssemblerARM64::CallCheckStackGuardState(Register scratch, - - // Allocate space on the stack to store the return address. The - // CheckStackGuardState C++ function will override it if the code -- // moved. Allocate extra space for 3 arguments (2 for input start/end and 1 -- // for gap). AAPCS64 requires the stack to be 16 byte aligned. -+ // moved. Allocate extra space for 2 arguments passed by pointers. -+ // AAPCS64 requires the stack to be 16 byte aligned. - int alignment = masm_->ActivationFrameAlignment(); - DCHECK_EQ(alignment % 16, 0); - int align_mask = (alignment / kXRegSize) - 1; -- int xreg_to_claim = (4 + align_mask) & ~align_mask; -+ int xreg_to_claim = (3 + align_mask) & ~align_mask; - - __ Claim(xreg_to_claim); - -- __ Mov(x0, extra_space); -- __ Poke(x0, 3 * kSystemPointerSize); -+ __ Mov(x6, extra_space); - // CheckStackGuardState needs the end and start addresses of the input string. - __ Poke(input_end(), 2 * kSystemPointerSize); - __ Add(x5, sp, 2 * kSystemPointerSize); -From 7eb931bc199e72fbf95aed22c9dd370269862c6c Mon Sep 17 00:00:00 2001 -From: Michal Klocek -Date: Mon, 8 Jan 2024 11:23:07 +0100 -Subject: [PATCH] [Backport] CVE-2023-6345: Integer overflow in Skia -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Cherry-pick of patch originally reviewed on -https://skia-review.googlesource.com/c/skia/+/782936: -Avoid combining extremely large meshes. - -Bug: chromium:1505053 - -Fixes: QTBUG-120589 -Change-Id: I42f2ff872bbf054686ec7af0cc85ff63055fcfbf -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/528729 -Reviewed-by: Michael Brüning ---- - chromium/third_party/skia/src/gpu/ops/GrDrawVerticesOp.cpp | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/chromium/third_party/skia/src/gpu/ops/GrDrawVerticesOp.cpp b/chromium/third_party/skia/src/gpu/ops/GrDrawVerticesOp.cpp -index 0a80e674325f..e50293b4dfe9 100644 ---- src/3rdparty/chromium/third_party/skia/src/gpu/ops/GrDrawVerticesOp.cpp -+++ src/3rdparty/chromium/third_party/skia/src/gpu/ops/GrDrawVerticesOp.cpp -@@ -757,7 +757,11 @@ GrOp::CombineResult DrawVerticesOp::onCombineIfPossible(GrOp* t, GrRecordingCont - return CombineResult::kCannotCombine; - } - -- if (fVertexCount + that->fVertexCount > SkTo(UINT16_MAX)) { -+ if (fVertexCount > INT32_MAX - that->fVertexCount) { -+ return CombineResult::kCannotCombine; -+ } -+ -+ if (fVertexCount > SkTo(UINT16_MAX) - that->fVertexCount) { - return CombineResult::kCannotCombine; - } - -From 31c7c9445955762102fdcd04e71da6114e1fcb4c Mon Sep 17 00:00:00 2001 -From: Zakhar Voit -Date: Thu, 14 Dec 2023 11:11:43 +0000 -Subject: [PATCH] [Backport] CVE-2023-6702: Type Confusion in V8 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Manual backport of patch originally reviewed on -https://chromium-review.googlesource.com/c/v8/v8/+/5110982: -[M114-LTS][promises, async stack traces] Fix the case when the closure has run - -M114 changes: -- replace IsNativeContext(*context) by context->IsNativeContext() - -We were using the closure pointing to NativeContext as a marker that the -closure has run, but async stack trace code was confused about it. - -(cherry picked from commit bde3d360097607f36cd1d17cbe8412b84eae0a7f) - -Bug: chromium:1501326 -Change-Id: I30d438f3b2e3fdd7562ea9a79dde4561ce9b0083 -Cr-Original-Commit-Position: refs/heads/main@{#90949} -Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5110982 -Commit-Queue: Marja Hölttä -Auto-Submit: Marja Hölttä -Cr-Commit-Position: refs/branch-heads/12.0@{#18} -Cr-Branched-From: ed7b4caf1fb8184ad9e24346c84424055d4d430a-refs/heads/12.0.267@{#1} -Cr-Branched-From: 210e75b19db4352c9b78dce0bae11c2dc3077df4-refs/heads/main@{#90651} -(cherry picked from commit cbd09b2ca928f1fd929ef52e173aa81213e38cb8) -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/526232 -Reviewed-by: Michal Klocek ---- - chromium/v8/src/execution/isolate.cc | 16 ++++++++++++++-- - 1 file changed, 14 insertions(+), 2 deletions(-) - -diff --git a/chromium/v8/src/execution/isolate.cc b/chromium/v8/src/execution/isolate.cc -index c1c3bd1b24a6..99b851ef96d7 100644 ---- src/3rdparty/chromium/v8/src/execution/isolate.cc -+++ src/3rdparty/chromium/v8/src/execution/isolate.cc -@@ -944,7 +944,13 @@ void CaptureAsyncStackTrace(Isolate* isolate, Handle promise, - builder->AppendPromiseCombinatorFrame(function, combinator, - FrameArray::kIsPromiseAll, context); - -- // Now peak into the Promise.all() resolve element context to -+ if (context->IsNativeContext()) { -+ // NativeContext is used as a marker that the closure was already -+ // called. We can't access the reject element context any more. -+ return; -+ } -+ -+ // Now peek into the Promise.all() resolve element context to - // find the promise capability that's being resolved when all - // the concurrent promises resolve. - int const index = -@@ -963,7 +969,13 @@ void CaptureAsyncStackTrace(Isolate* isolate, Handle promise, - builder->AppendPromiseCombinatorFrame(function, combinator, - FrameArray::kIsPromiseAny, context); - -- // Now peak into the Promise.any() reject element context to -+ if (context->IsNativeContext()) { -+ // NativeContext is used as a marker that the closure was already -+ // called. We can't access the reject element context any more. -+ return; -+ } -+ -+ // Now peek into the Promise.any() reject element context to - // find the promise capability that's being resolved when any of - // the concurrent promises resolve. - int const index = PromiseBuiltins::kPromiseAnyRejectElementCapabilitySlot; -From 73c9c09a8b314b8c66bbe3d2648d6bfe18d5d4a8 Mon Sep 17 00:00:00 2001 -From: Kai Ninomiya -Date: Wed, 29 Nov 2023 17:44:48 +0000 -Subject: [PATCH] [Backport] Security bug 1505632 - -Manual backport of patch originally reviewed on -https://chromium-review.googlesource.com/c/chromium/src/+/5069480: -Fix reinit order in ContextProviderCommandBuffer::BindToCurrentSequence - -See comments for explanation. - -Bug: 1505632 -Change-Id: I0f43821a9708af91303048332e9fae5e100deee5 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5069480 -Reviewed-by: Saifuddin Hitawala -Commit-Queue: Kai Ninomiya -Reviewed-by: Brendon Tiszka -Cr-Commit-Position: refs/heads/main@{#1230735} -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/526233 -Reviewed-by: Michal Klocek ---- - .../gpu/context_provider_command_buffer.cc | 24 +++++++++---- - .../cpp/gpu/context_provider_command_buffer.h | 34 ++++++++++++++++--- - 2 files changed, 47 insertions(+), 11 deletions(-) - -diff --git a/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.cc b/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.cc -index e8b9ff4983d4..d79b97fd3748 100644 ---- src/3rdparty/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.cc -+++ src/3rdparty/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.cc -@@ -164,13 +164,13 @@ gpu::ContextResult ContextProviderCommandBuffer::BindToCurrentThread() { - } - - // The transfer buffer is used to serialize Dawn commands -- transfer_buffer_ = -+ auto transfer_buffer = - std::make_unique(webgpu_helper.get()); - - // The WebGPUImplementation exposes the WebGPUInterface, as well as the - // gpu::ContextSupport interface. - auto webgpu_impl = std::make_unique( -- webgpu_helper.get(), transfer_buffer_.get(), command_buffer_.get()); -+ webgpu_helper.get(), transfer_buffer.get(), command_buffer_.get()); - bind_result_ = webgpu_impl->Initialize(memory_limits_); - if (bind_result_ != gpu::ContextResult::kSuccess) { - DLOG(ERROR) << "Failed to initialize WebGPUImplementation."; -@@ -182,8 +182,11 @@ gpu::ContextResult ContextProviderCommandBuffer::BindToCurrentThread() { - std::string unique_context_name = - base::StringPrintf("%s-%p", type_name.c_str(), webgpu_impl.get()); - -+ // IMPORTANT: These hold raw_ptrs to each other, so must be set together. -+ // See note in the header (and keep it up to date if things change). - impl_ = webgpu_impl.get(); - webgpu_interface_ = std::move(webgpu_impl); -+ transfer_buffer_ = std::move(transfer_buffer); - helper_ = std::move(webgpu_helper); - } else if (attributes_.enable_raster_interface && - !attributes_.enable_gles2_interface && -@@ -201,14 +204,14 @@ gpu::ContextResult ContextProviderCommandBuffer::BindToCurrentThread() { - } - // The transfer buffer is used to copy resources between the client - // process and the GPU process. -- transfer_buffer_ = -+ auto transfer_buffer = - std::make_unique(raster_helper.get()); - - // The RasterImplementation exposes the RasterInterface, as well as the - // gpu::ContextSupport interface. - DCHECK(channel_); - auto raster_impl = std::make_unique( -- raster_helper.get(), transfer_buffer_.get(), -+ raster_helper.get(), transfer_buffer.get(), - attributes_.bind_generates_resource, - attributes_.lose_context_when_out_of_memory, command_buffer_.get(), - channel_->image_decode_accelerator_proxy()); -@@ -225,8 +228,11 @@ gpu::ContextResult ContextProviderCommandBuffer::BindToCurrentThread() { - raster_impl->TraceBeginCHROMIUM("gpu_toplevel", - unique_context_name.c_str()); - -+ // IMPORTANT: These hold raw_ptrs to each other, so must be set together. -+ // See note in the header (and keep it up to date if things change). - impl_ = raster_impl.get(); - raster_interface_ = std::move(raster_impl); -+ transfer_buffer_ = std::move(transfer_buffer); - helper_ = std::move(raster_helper); - } else { - // The GLES2 helper writes the command buffer protocol. -@@ -241,7 +247,7 @@ gpu::ContextResult ContextProviderCommandBuffer::BindToCurrentThread() { - - // The transfer buffer is used to copy resources between the client - // process and the GPU process. -- transfer_buffer_ = -+ auto transfer_buffer = - std::make_unique(gles2_helper.get()); - - // The GLES2Implementation exposes the OpenGLES2 API, as well as the -@@ -254,13 +260,13 @@ gpu::ContextResult ContextProviderCommandBuffer::BindToCurrentThread() { - // we only use it if grcontext_support was requested. - gles2_impl = std::make_unique< - skia_bindings::GLES2ImplementationWithGrContextSupport>( -- gles2_helper.get(), /*share_group=*/nullptr, transfer_buffer_.get(), -+ gles2_helper.get(), /*share_group=*/nullptr, transfer_buffer.get(), - attributes_.bind_generates_resource, - attributes_.lose_context_when_out_of_memory, - support_client_side_arrays, command_buffer_.get()); - } else { - gles2_impl = std::make_unique( -- gles2_helper.get(), /*share_group=*/nullptr, transfer_buffer_.get(), -+ gles2_helper.get(), /*share_group=*/nullptr, transfer_buffer.get(), - attributes_.bind_generates_resource, - attributes_.lose_context_when_out_of_memory, - support_client_side_arrays, command_buffer_.get()); -@@ -271,8 +277,11 @@ gpu::ContextResult ContextProviderCommandBuffer::BindToCurrentThread() { - return bind_result_; - } - -+ // IMPORTANT: These hold raw_ptrs to each other, so must be set together. -+ // See note in the header (and keep it up to date if things change). - impl_ = gles2_impl.get(); - gles2_impl_ = std::move(gles2_impl); -+ transfer_buffer_ = std::move(transfer_buffer); - helper_ = std::move(gles2_helper); - } - -@@ -306,6 +315,7 @@ gpu::ContextResult ContextProviderCommandBuffer::BindToCurrentThread() { - switches::kEnableGpuClientTracing)) { - // This wraps the real GLES2Implementation and we should always use this - // instead when it's present. -+ // IMPORTANT: This holds a raw_ptr to gles2_impl_. - trace_impl_ = std::make_unique( - gles2_impl_.get()); - gl = trace_impl_.get(); -diff --git a/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.h b/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.h -index 22d80baf765b..9a867177048e 100644 ---- src/3rdparty/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.h -+++ src/3rdparty/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.h -@@ -156,18 +156,44 @@ class ContextProviderCommandBuffer - // associated shared images are destroyed. - std::unique_ptr shared_image_interface_; - -- base::Lock context_lock_; // Referenced by command_buffer_. -+ ////////////////////////////////////////////////////////////////////////////// -+ // IMPORTANT NOTE: All of the objects in this block are part of a complex // -+ // graph of raw pointers (holder or pointee of various raw_ptrs). They are // -+ // defined in topological order: only later items point to earlier items. // -+ // - When writing any member, always ensure its pointers to earlier members -+ // are guaranteed to stay alive. -+ // - When clearing OR overwriting any member, always ensure objects that -+ // point to it have already been cleared. -+ // - The topological order of definitions guarantees that the -+ // destructors will be called in the correct order (bottom to top). -+ // - When overwriting multiple members, similarly do so in reverse order. -+ // -+ // Please note these comments are likely not to stay perfectly up-to-date. -+ -+ base::Lock context_lock_; -+ // Points to the context_lock_ field of `this`. - std::unique_ptr command_buffer_; -+ -+ // Points to command_buffer_. - std::unique_ptr helper_; -+ // Points to helper_. - std::unique_ptr transfer_buffer_; - -- // Owned by either gles2_impl_ or raster_interface_, not both. -- gpu::ImplementationBase* impl_; -+ // Points to transfer_buffer_, helper_, and command_buffer_. - std::unique_ptr gles2_impl_; -+ // Points to gles2_impl_. - std::unique_ptr trace_impl_; -- std::unique_ptr raster_interface_; -+ // Points to transfer_buffer_, helper_, and command_buffer_. -+ std::unique_ptr raster_interface_; -+ // Points to transfer_buffer_, helper_, and command_buffer_. - std::unique_ptr webgpu_interface_; - -+ // END IMPORTANT NOTE // -+ ////////////////////////////////////////////////////////////////////////////// -+ -+ // Owned by either gles2_impl_ or raster_interface_, not both. -+ gpu::ImplementationBase* impl_; -+ - std::unique_ptr gr_context_; - #if BUILDFLAG(SKIA_USE_DAWN) - std::unique_ptr -From 2d8ce130db72ce75e2ca8b51f3c32938fbff9143 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20Br=C3=BCning?= -Date: Mon, 8 Jan 2024 15:39:03 +0100 -Subject: [PATCH] Fixup: [Backport] Security bug 1505632 - -Change-Id: I8af12a1fecededb373145fd89362e08b030f1d7f -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/528821 -Reviewed-by: Michal Klocek ---- - .../viz/public/cpp/gpu/context_provider_command_buffer.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.h b/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.h -index 9a867177048..0ac70dae7e9 100644 ---- src/3rdparty/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.h -+++ src/3rdparty/chromium/services/viz/public/cpp/gpu/context_provider_command_buffer.h -@@ -192,7 +192,7 @@ class ContextProviderCommandBuffer - ////////////////////////////////////////////////////////////////////////////// - - // Owned by either gles2_impl_ or raster_interface_, not both. -- gpu::ImplementationBase* impl_; -+ gpu::ImplementationBase* impl_ = nullptr; - - std::unique_ptr gr_context_; - #if BUILDFLAG(SKIA_USE_DAWN) -From c8088aea77818f87d42f709ddcb743b907c38e9c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20Br=C3=BCning?= -Date: Sun, 14 Jan 2024 23:48:08 +0100 -Subject: [PATCH] Fixup: [Backport] Security bug 1488199 - -Add register aliases following respective platform calling -conventions. Also fix a typo. - -Change-Id: I8f844cd4db35393580f2a0adae6a4095584087a5 -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/530618 -Reviewed-by: Allan Sandfeld Jensen ---- - chromium/v8/src/codegen/arm/register-arm.h | 6 ++++++ - chromium/v8/src/codegen/arm64/register-arm64.h | 6 ++++++ - chromium/v8/src/codegen/mips64/register-mips64.h | 6 ++++++ - chromium/v8/src/codegen/ppc/register-ppc.h | 6 ++++++ - chromium/v8/src/codegen/s390/register-s390.h | 6 ++++++ - chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc | 4 ++-- - 6 files changed, 32 insertions(+), 2 deletions(-) - -diff --git a/chromium/v8/src/codegen/arm/register-arm.h b/chromium/v8/src/codegen/arm/register-arm.h -index 6cb6c602c254..8deddc5804b1 100644 ---- src/3rdparty/chromium/v8/src/codegen/arm/register-arm.h -+++ src/3rdparty/chromium/v8/src/codegen/arm/register-arm.h -@@ -119,6 +119,12 @@ GENERAL_REGISTERS(DECLARE_REGISTER) - #undef DECLARE_REGISTER - constexpr Register no_reg = Register::no_reg(); - -+// ARM calling convention -+constexpr Register arg_reg_1 = r0; -+constexpr Register arg_reg_2 = r1; -+constexpr Register arg_reg_3 = r2; -+constexpr Register arg_reg_4 = r3; -+ - constexpr bool kPadArguments = false; - constexpr bool kSimpleFPAliasing = false; - constexpr bool kSimdMaskRegisters = false; -diff --git a/chromium/v8/src/codegen/arm64/register-arm64.h b/chromium/v8/src/codegen/arm64/register-arm64.h -index fbbb0a18dadf..06026a065bbf 100644 ---- src/3rdparty/chromium/v8/src/codegen/arm64/register-arm64.h -+++ src/3rdparty/chromium/v8/src/codegen/arm64/register-arm64.h -@@ -482,6 +482,12 @@ ALIAS_REGISTER(VRegister, fp_scratch2, d31); - - #undef ALIAS_REGISTER - -+// Arm64 calling convention -+constexpr Register arg_reg_1 = x0; -+constexpr Register arg_reg_2 = x1; -+constexpr Register arg_reg_3 = x2; -+constexpr Register arg_reg_4 = x3; -+ - // AreAliased returns true if any of the named registers overlap. Arguments set - // to NoReg are ignored. The system stack pointer may be specified. - V8_EXPORT_PRIVATE bool AreAliased( -diff --git a/chromium/v8/src/codegen/mips64/register-mips64.h b/chromium/v8/src/codegen/mips64/register-mips64.h -index d7b45eda3838..05aba9fcbd2f 100644 ---- src/3rdparty/chromium/v8/src/codegen/mips64/register-mips64.h -+++ src/3rdparty/chromium/v8/src/codegen/mips64/register-mips64.h -@@ -362,6 +362,12 @@ DEFINE_REGISTER_NAMES(FPURegister, DOUBLE_REGISTERS) - DEFINE_REGISTER_NAMES(MSARegister, SIMD128_REGISTERS) - - // Give alias names to registers for calling conventions. -+ -+constexpr Register arg_reg_1 = a0; -+constexpr Register arg_reg_2 = a1; -+constexpr Register arg_reg_3 = a2; -+constexpr Register arg_reg_4 = a3; -+ - constexpr Register kReturnRegister0 = v0; - constexpr Register kReturnRegister1 = v1; - constexpr Register kReturnRegister2 = a0; -diff --git a/chromium/v8/src/codegen/ppc/register-ppc.h b/chromium/v8/src/codegen/ppc/register-ppc.h -index eded9622c4cc..352b95192023 100644 ---- src/3rdparty/chromium/v8/src/codegen/ppc/register-ppc.h -+++ src/3rdparty/chromium/v8/src/codegen/ppc/register-ppc.h -@@ -209,6 +209,12 @@ constexpr Register kConstantPoolRegister = r28; // Constant pool. - constexpr Register kRootRegister = r29; // Roots array pointer. - constexpr Register cp = r30; // JavaScript context pointer. - -+// PPC64 calling convention -+constexpr Register arg_reg_1 = r3; -+constexpr Register arg_reg_2 = r4; -+constexpr Register arg_reg_3 = r5; -+constexpr Register arg_reg_4 = r6; -+ - constexpr bool kPadArguments = false; - constexpr bool kSimpleFPAliasing = true; - constexpr bool kSimdMaskRegisters = false; -diff --git a/chromium/v8/src/codegen/s390/register-s390.h b/chromium/v8/src/codegen/s390/register-s390.h -index 009248a65ca0..6904802d0150 100644 ---- src/3rdparty/chromium/v8/src/codegen/s390/register-s390.h -+++ src/3rdparty/chromium/v8/src/codegen/s390/register-s390.h -@@ -167,6 +167,12 @@ constexpr Register no_reg = Register::no_reg(); - constexpr Register kRootRegister = r10; // Roots array pointer. - constexpr Register cp = r13; // JavaScript context pointer. - -+// s390x calling convention -+constexpr Register arg_reg_1 = r2; -+constexpr Register arg_reg_2 = r3; -+constexpr Register arg_reg_3 = r4; -+constexpr Register arg_reg_4 = r5; -+ - constexpr bool kPadArguments = false; - constexpr bool kSimpleFPAliasing = true; - constexpr bool kSimdMaskRegisters = false; -diff --git a/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc b/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc -index 099fc62fa07b..5580b24308a7 100644 ---- src/3rdparty/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc -+++ src/3rdparty/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc -@@ -1059,9 +1059,9 @@ void RegExpMacroAssemblerARM::CallCheckStackGuardState(Operand extra_space) { - // Extra space for variables to consider in stack check. - __ mov(arg_reg_4, extra_space); - // RegExp code frame pointer. -- __ mov(arg_reg3, frame_pointer()); -+ __ mov(arg_reg_3, frame_pointer()); - // Code of self. -- __ mov(arg_reg2, Operand(masm_->CodeObject())); -+ __ mov(arg_reg_2, Operand(masm_->CodeObject())); - - // We need to make room for the return address on the stack. - int stack_alignment = base::OS::ActivationFrameAlignment(); -From aac73f3a715655476ce5b347a9614d1ca0ba9b93 Mon Sep 17 00:00:00 2001 -From: Shahbaz Youssefi -Date: Tue, 5 Dec 2023 13:36:53 -0500 -Subject: [PATCH] [Backport] CVE-2024-0222: Use after free in ANGLE - -Manual cherry-pick of patch originally reviewed on -https://chromium-review.googlesource.com/c/angle/angle/+/5143829: -M120: Vulkan: Don't crash when glCopyTexImage2D redefines itself - -The Vulkan backend marks a level being redefined as such before doing -the copy. If a single-level texture was being redefined, it releases it -so it can be immediately reallocated. If the source of the copy is the -same texture, this causes a crash. - -This can be properly supported by using a temp image to do the copy, but -that is not implemented in this change. - -Bug: chromium:1501798 -Change-Id: I3a902b1e9eec41afd385d9c75a8c95dc986070a8 -Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5143829 -Reviewed-by: Cody Northrop -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/532069 -Reviewed-by: Michal Klocek ---- - .../libANGLE/renderer/vulkan/TextureVk.cpp | 23 ++++++++++++++++++- - 1 file changed, 22 insertions(+), 1 deletion(-) - -diff --git a/chromium/third_party/angle/src/libANGLE/renderer/vulkan/TextureVk.cpp b/chromium/third_party/angle/src/libANGLE/renderer/vulkan/TextureVk.cpp -index 1950375b9b19..a098da4bfd33 100644 ---- src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/vulkan/TextureVk.cpp -+++ src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/vulkan/TextureVk.cpp -@@ -466,8 +466,28 @@ angle::Result TextureVk::copyImage(const gl::Context *context, - gl::GetInternalFormatInfo(internalFormat, GL_UNSIGNED_BYTE); - const vk::Format &vkFormat = renderer->getFormat(internalFormatInfo.sizedInternalFormat); - -+ // The texture level being redefined might be the same as the one bound to the framebuffer. -+ // This _could_ be supported by using a temp image before redefining the level (and potentially -+ // discarding the image). However, this is currently unimplemented. -+ FramebufferVk *framebufferVk = vk::GetImpl(source); -+ RenderTargetVk *colorReadRT = framebufferVk->getColorReadRenderTarget(); -+ vk::ImageHelper *srcImage = &colorReadRT->getImageForCopy(); -+ const bool isCubeMap = index.getType() == gl::TextureType::CubeMap; -+ gl::LevelIndex levelIndex(getNativeImageIndex(index).getLevelIndex()); -+ const uint32_t layerIndex = index.hasLayer() ? index.getLayerIndex() : 0; -+ const uint32_t redefinedFace = isCubeMap ? layerIndex : 0; -+ const uint32_t sourceFace = isCubeMap ? colorReadRT->getLayerIndex() : 0; -+ const bool isSelfCopy = mImage == srcImage && levelIndex == colorReadRT->getLevelIndex() && -+ redefinedFace == sourceFace; -+ - ANGLE_TRY(redefineLevel(context, index, vkFormat, newImageSize)); - -+ if (isSelfCopy) -+ { -+ UNIMPLEMENTED(); -+ return angle::Result::Continue; -+ } -+ - return copySubImageImpl(context, index, gl::Offset(0, 0, 0), sourceArea, internalFormatInfo, - source); - } -@@ -1393,7 +1413,8 @@ angle::Result TextureVk::redefineLevel(const gl::Context *context, - mImage->getLevelCount() == 1 && mImage->getBaseLevel() == levelIndexGL; - - // If incompatible, and redefining the single-level image, release it so it can be -- // recreated immediately. This is an optimization to avoid an extra copy. -+ // recreated immediately. This is needed so that the texture can be reallocated with -+ // the correct format/size. - if (!isCompatibleRedefinition && isUpdateToSingleLevelImage) - { - releaseImage(contextVk); -From b3bd93f5093ceef2bcf0c2346a2b761455ab842a Mon Sep 17 00:00:00 2001 -From: Joshua Pawlicki -Date: Wed, 20 Dec 2023 22:33:06 +0000 -Subject: [PATCH] [Backport] CVE-2024-0333: Insufficient data validation in - Extensions - -Manual cherry-pick of patch originally reviewed on -https://chromium-review.googlesource.com/c/chromium/src/+/5141787: -crx_file: Error early for CRXs with ZIP markers in header. - -Bug: 1513379 -Change-Id: I029b4f15778df0c150866b1f49a9b5b2924690ed -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5141787 -Commit-Queue: Joshua Pawlicki -Auto-Submit: Joshua Pawlicki -Code-Coverage: findit-for-me@appspot.gserviceaccount.com -Commit-Queue: Sorin Jianu -Reviewed-by: Sorin Jianu -Cr-Commit-Position: refs/heads/main@{#1239849} -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/532070 -Reviewed-by: Michal Klocek ---- - chromium/components/crx_file/crx_verifier.cc | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) - -diff --git a/chromium/components/crx_file/crx_verifier.cc b/chromium/components/crx_file/crx_verifier.cc -index cbd7d777b6a6..d03cadb150db 100644 ---- src/3rdparty/chromium/components/crx_file/crx_verifier.cc -+++ src/3rdparty/chromium/components/crx_file/crx_verifier.cc -@@ -4,6 +4,7 @@ - - #include "components/crx_file/crx_verifier.h" - -+#include - #include - #include - #include -@@ -44,6 +45,9 @@ constexpr uint8_t kPublisherTestKeyHash[] = { - 0x5f, 0x64, 0xf3, 0xa6, 0x17, 0x03, 0x0d, 0xde, 0x21, 0x61, 0xbe, - 0xb7, 0x95, 0x91, 0x95, 0x83, 0x68, 0x12, 0xe9, 0x78, 0x1e}; - -+constexpr uint8_t kEocd[] = {'P', 'K', 0x05, 0x06}; -+constexpr uint8_t kEocd64[] = {'P', 'K', 0x06, 0x07}; -+ - using VerifierCollection = - std::vector>; - using RepeatedProof = google::protobuf::RepeatedPtrField; -@@ -109,6 +113,18 @@ VerifierResult VerifyCrx3( - if (ReadAndHashBuffer(header_bytes.data(), header_size, file, hash) != - static_cast(header_size)) - return VerifierResult::ERROR_HEADER_INVALID; -+ -+ // If the header contains a ZIP EOCD or EOCD64 token, unzipping may not work -+ // correctly. -+ if (std::search(std::begin(header_bytes), std::end(header_bytes), -+ std::begin(kEocd), -+ std::end(kEocd)) != std::end(header_bytes) || -+ std::search(std::begin(header_bytes), std::end(header_bytes), -+ std::begin(kEocd64), -+ std::end(kEocd64)) != std::end(header_bytes)) { -+ return VerifierResult::ERROR_HEADER_INVALID; -+ } -+ - CrxFileHeader header; - if (!header.ParseFromArray(header_bytes.data(), header_size)) - return VerifierResult::ERROR_HEADER_INVALID; -From 520c290ba211017b31324cc9f361c0388433616a Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Dominik=20Inf=C3=BChr?= -Date: Mon, 18 Dec 2023 09:15:00 +0100 -Subject: [PATCH] [Backport] CVE-2024-0518: Type Confusion in V8 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Manual backport of patch originally reviewed on -https://chromium-review.googlesource.com/c/v8/v8/+/5125960: -[codegen] Install BytecodeArray last in SharedFunctionInfo - -Maglev assumes that when a SharedFunctionInfo has a BytecodeArray, -then it should also have FeedbackMetadata. However, this may not -hold with concurrent compilation when the SharedFunctionInfo is -re-compiled after being flushed. Here the BytecodeArray was installed -on the SFI before the FeedbackMetadata and a concurrent thread could -observe the BytecodeArray but not the FeedbackMetadata. - -Drive-by: Reset the age field before setting the BytecodeArray as -well. This ensures that the concurrent marker will not observe the -old age for the new BytecodeArray. - -Bug: chromium:1507412 -Change-Id: I8855ed7ecc50c4a47d2c89043d62ac053858bc75 -Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5125960 -Reviewed-by: Leszek Swirski -Commit-Queue: Dominik Inführ -Cr-Commit-Position: refs/heads/main@{#91568} -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/532071 -Reviewed-by: Allan Sandfeld Jensen ---- - chromium/v8/src/codegen/compiler.cc | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/chromium/v8/src/codegen/compiler.cc b/chromium/v8/src/codegen/compiler.cc -index f09658ebdf62..f963b0d92684 100644 ---- src/3rdparty/chromium/v8/src/codegen/compiler.cc -+++ src/3rdparty/chromium/v8/src/codegen/compiler.cc -@@ -543,11 +543,11 @@ void InstallUnoptimizedCode(UnoptimizedCompilationInfo* compilation_info, - shared_info->set_is_asm_wasm_broken(true); - } - -- shared_info->set_bytecode_array(*compilation_info->bytecode_array()); -- - Handle feedback_metadata = FeedbackMetadata::New( - isolate, compilation_info->feedback_vector_spec()); - shared_info->set_feedback_metadata(*feedback_metadata); -+ -+ shared_info->set_bytecode_array(*compilation_info->bytecode_array()); - } else { - DCHECK(compilation_info->has_asm_wasm_data()); - // We should only have asm/wasm data when finalizing on the main thread. -From 6fb8d851a5048e85877ae33b1800c122c8cd034d Mon Sep 17 00:00:00 2001 -From: Toon Verwaest -Date: Thu, 11 Jan 2024 10:47:17 +0100 -Subject: [PATCH] [Backport] CVE-2024-0519: Out of bounds memory access in V8 - -Manual cherry-pick of patch originally reviewed on -https://chromium-review.googlesource.com/c/v8/v8/+/5192447: -Merged: [runtime] Drop fast last-property deletion - -This interacts badly with other optimizations and isn't particularly -common. - -Bug: chromium:1517354 -(cherry picked from commit 389ea9be7d68bb189e16da79f6414edbd4f7594f) - -Change-Id: Ie16aa38e8984c4879491c0d9a0ca9df0e041fd1d -Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5192447 -Auto-Submit: Toon Verwaest -Reviewed-by: Leszek Swirski -Cr-Commit-Position: refs/branch-heads/12.0@{#32} -Cr-Branched-From: ed7b4caf1fb8184ad9e24346c84424055d4d430a-refs/heads/12.0.267@{#1} -Cr-Branched-From: 210e75b19db4352c9b78dce0bae11c2dc3077df4-refs/heads/main@{#90651} -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/532072 -Reviewed-by: Allan Sandfeld Jensen ---- - chromium/v8/src/runtime/runtime-object.cc | 160 ---------------------- - 1 file changed, 160 deletions(-) - -diff --git a/chromium/v8/src/runtime/runtime-object.cc b/chromium/v8/src/runtime/runtime-object.cc -index bd5d23dce45f..075bc0c665d3 100644 ---- src/3rdparty/chromium/v8/src/runtime/runtime-object.cc -+++ src/3rdparty/chromium/v8/src/runtime/runtime-object.cc -@@ -92,170 +92,10 @@ MaybeHandle Runtime::HasProperty(Isolate* isolate, - : ReadOnlyRoots(isolate).false_value_handle(); - } - --namespace { -- --void GeneralizeAllTransitionsToFieldAsMutable(Isolate* isolate, Handle map, -- Handle name) { -- InternalIndex descriptor(map->NumberOfOwnDescriptors()); -- -- Handle target_maps[kPropertyAttributesCombinationsCount]; -- int target_maps_count = 0; -- -- // Collect all outgoing field transitions. -- { -- DisallowHeapAllocation no_gc; -- TransitionsAccessor transitions(isolate, *map, &no_gc); -- transitions.ForEachTransitionTo( -- *name, -- [&](Map target) { -- DCHECK_EQ(descriptor, target.LastAdded()); -- DCHECK_EQ(*name, target.GetLastDescriptorName(isolate)); -- PropertyDetails details = target.GetLastDescriptorDetails(isolate); -- // Currently, we track constness only for fields. -- if (details.kind() == kData && -- details.constness() == PropertyConstness::kConst) { -- target_maps[target_maps_count++] = handle(target, isolate); -- } -- DCHECK_IMPLIES(details.kind() == kAccessor, -- details.constness() == PropertyConstness::kConst); -- }, -- &no_gc); -- CHECK_LE(target_maps_count, kPropertyAttributesCombinationsCount); -- } -- -- for (int i = 0; i < target_maps_count; i++) { -- Handle target = target_maps[i]; -- PropertyDetails details = -- target->instance_descriptors(isolate) -- .GetDetails(descriptor); -- Handle field_type( -- target->instance_descriptors(isolate) -- .GetFieldType(descriptor), -- isolate); -- Map::GeneralizeField(isolate, target, descriptor, -- PropertyConstness::kMutable, details.representation(), -- field_type); -- DCHECK_EQ(PropertyConstness::kMutable, -- target->instance_descriptors(isolate) -- .GetDetails(descriptor) -- .constness()); -- } --} -- --bool DeleteObjectPropertyFast(Isolate* isolate, Handle receiver, -- Handle raw_key) { -- // This implements a special case for fast property deletion: when the -- // last property in an object is deleted, then instead of normalizing -- // the properties, we can undo the last map transition, with a few -- // prerequisites: -- // (1) The receiver must be a regular object and the key a unique name. -- Handle receiver_map(receiver->map(), isolate); -- if (receiver_map->IsSpecialReceiverMap()) return false; -- DCHECK(receiver_map->IsJSObjectMap()); -- -- if (!raw_key->IsUniqueName()) return false; -- Handle key = Handle::cast(raw_key); -- // (2) The property to be deleted must be the last property. -- int nof = receiver_map->NumberOfOwnDescriptors(); -- if (nof == 0) return false; -- InternalIndex descriptor(nof - 1); -- Handle descriptors(receiver_map->instance_descriptors(), -- isolate); -- if (descriptors->GetKey(descriptor) != *key) return false; -- // (3) The property to be deleted must be deletable. -- PropertyDetails details = descriptors->GetDetails(descriptor); -- if (!details.IsConfigurable()) return false; -- // (4) The map must have a back pointer. -- Handle backpointer(receiver_map->GetBackPointer(), isolate); -- if (!backpointer->IsMap()) return false; -- Handle parent_map = Handle::cast(backpointer); -- // (5) The last transition must have been caused by adding a property -- // (and not any kind of special transition). -- if (parent_map->NumberOfOwnDescriptors() != nof - 1) return false; -- -- // Preconditions successful. No more bailouts after this point. -- -- // Zap the property to avoid keeping objects alive. Zapping is not necessary -- // for properties stored in the descriptor array. -- if (details.location() == kField) { -- DisallowHeapAllocation no_allocation; -- -- // Invalidate slots manually later in case we delete an in-object tagged -- // property. In this case we might later store an untagged value in the -- // recorded slot. -- isolate->heap()->NotifyObjectLayoutChange(*receiver, no_allocation, -- InvalidateRecordedSlots::kNo); -- FieldIndex index = -- FieldIndex::ForPropertyIndex(*receiver_map, details.field_index()); -- // Special case deleting the last out-of object property. -- if (!index.is_inobject() && index.outobject_array_index() == 0) { -- DCHECK(!parent_map->HasOutOfObjectProperties()); -- // Clear out the properties backing store. -- receiver->SetProperties(ReadOnlyRoots(isolate).empty_fixed_array()); -- } else { -- Object filler = ReadOnlyRoots(isolate).one_pointer_filler_map(); -- JSObject::cast(*receiver).RawFastPropertyAtPut(index, filler); -- // We must clear any recorded slot for the deleted property, because -- // subsequent object modifications might put a raw double there. -- // Slot clearing is the reason why this entire function cannot currently -- // be implemented in the DeleteProperty stub. -- if (index.is_inobject() && !receiver_map->IsUnboxedDoubleField(index)) { -- // We need to clear the recorded slot in this case because in-object -- // slack tracking might not be finished. This ensures that we don't -- // have recorded slots in free space. -- isolate->heap()->ClearRecordedSlot(*receiver, -- receiver->RawField(index.offset())); -- MemoryChunk* chunk = MemoryChunk::FromHeapObject(*receiver); -- chunk->InvalidateRecordedSlots(*receiver); -- } -- } -- } -- // If the {receiver_map} was marked stable before, then there could be -- // optimized code that depends on the assumption that no object that -- // reached this {receiver_map} transitions away from it without triggering -- // the "deoptimize dependent code" mechanism. -- receiver_map->NotifyLeafMapLayoutChange(isolate); -- // Finally, perform the map rollback. -- receiver->synchronized_set_map(*parent_map); --#if VERIFY_HEAP -- receiver->HeapObjectVerify(isolate); -- receiver->property_array().PropertyArrayVerify(isolate); --#endif -- -- // If the {descriptor} was "const" so far, we need to update the -- // {receiver_map} here, otherwise we could get the constants wrong, i.e. -- // -- // o.x = 1; -- // [change o.x's attributes or reconfigure property kind] -- // delete o.x; -- // o.x = 2; -- // -- // could trick V8 into thinking that `o.x` is still 1 even after the second -- // assignment. -- -- // Step 1: Migrate object to an up-to-date shape. -- if (parent_map->is_deprecated()) { -- JSObject::MigrateInstance(isolate, Handle::cast(receiver)); -- parent_map = handle(receiver->map(), isolate); -- } -- -- // Step 2: Mark outgoing transitions from the up-to-date version of the -- // parent_map to same property name of any kind or attributes as mutable. -- // Also migrate object to the up-to-date map to make the object shapes -- // converge sooner. -- GeneralizeAllTransitionsToFieldAsMutable(isolate, parent_map, key); -- -- return true; --} -- --} // namespace -- - Maybe Runtime::DeleteObjectProperty(Isolate* isolate, - Handle receiver, - Handle key, - LanguageMode language_mode) { -- if (DeleteObjectPropertyFast(isolate, receiver, key)) return Just(true); -- - bool success = false; - LookupIterator::Key lookup_key(isolate, key, &success); - if (!success) return Nothing(); -From 1dbdcfd64885f0dc034e73dacf6ef4e20f8351bf Mon Sep 17 00:00:00 2001 -From: Mike Wasserman -Date: Tue, 9 Jan 2024 01:07:39 +0000 -Subject: [PATCH] [Backport] Security bug 1506535 - -Manual cherry-pick of patch originally reviewed on -https://chromium-review.googlesource.com/c/chromium/src/+/5146875: -[M120 merge] Speculative fix for UAF in content::WebContentsImpl::ExitFullscreenMode - -(cherry picked from commit c1cda70a433a0c625b280eb88ed6ff4f4feffa12) - -Bug: 1506535, 854815 -Change-Id: Iace64d63f8cea2dbfbc761ad233db42451ec101c -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5146875 -Commit-Queue: John Abd-El-Malek -Auto-Submit: Mike Wasserman -Reviewed-by: John Abd-El-Malek -Cr-Original-Commit-Position: refs/heads/main@{#1240353} -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5178801 -Cr-Commit-Position: refs/branch-heads/6099@{#1727} -Cr-Branched-From: e6ee4500f7d6549a9ac1354f8d056da49ef406be-refs/heads/main@{#1217362} -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/532073 -Reviewed-by: Michal Klocek ---- - chromium/content/browser/web_contents/web_contents_impl.cc | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/chromium/content/browser/web_contents/web_contents_impl.cc b/chromium/content/browser/web_contents/web_contents_impl.cc -index 0627170ed036..23d4268a1b67 100644 ---- src/3rdparty/chromium/content/browser/web_contents/web_contents_impl.cc -+++ src/3rdparty/chromium/content/browser/web_contents/web_contents_impl.cc -@@ -3278,7 +3278,12 @@ void WebContentsImpl::ExitFullscreenMode(bool will_cause_resize) { - } - - if (delegate_) { -+ // This may spin the message loop and destroy this object crbug.com/1506535 -+ base::WeakPtr weak_ptr = weak_factory_.GetWeakPtr(); - delegate_->ExitFullscreenModeForTab(this); -+ if (!weak_ptr) { -+ return; -+ } - - if (keyboard_lock_widget_) - delegate_->CancelKeyboardLockRequest(this); -From 1c6050c84b2a8bd14a96787ca845a3aec0d87a4f Mon Sep 17 00:00:00 2001 -From: Gustaf Ullberg -Date: Tue, 19 Dec 2023 18:08:19 +0000 -Subject: [PATCH] [Backport] CVE-2023-7024: Heap buffer overflow in WebRTC - -Cherry-pick of patch originally reviewed on -https://chromium-review.googlesource.com/c/chromium/src/+/5136295: -WebRtcAudioSink: Stop on invalid configuration - -Bug: 1513170 -Change-Id: Ia4ca55e9eafb81789b28b8b8c54e615ac28df633 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5136295 -Reviewed-by: Harald Alvestrand -Commit-Queue: Gustaf Ullberg -Cr-Commit-Position: refs/heads/main@{#1239233} -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/532066 -Reviewed-by: Michal Klocek ---- - .../blink/renderer/platform/peerconnection/webrtc_audio_sink.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/chromium/third_party/blink/renderer/platform/peerconnection/webrtc_audio_sink.cc b/chromium/third_party/blink/renderer/platform/peerconnection/webrtc_audio_sink.cc -index a0f2c5e8005f..0542a9a7d4c0 100644 ---- src/3rdparty/chromium/third_party/blink/renderer/platform/peerconnection/webrtc_audio_sink.cc -+++ src/3rdparty/chromium/third_party/blink/renderer/platform/peerconnection/webrtc_audio_sink.cc -@@ -115,7 +115,7 @@ void WebRtcAudioSink::OnData(const media::AudioBus& audio_bus, - } - - void WebRtcAudioSink::OnSetFormat(const media::AudioParameters& params) { -- DCHECK(params.IsValid()); -+ CHECK(params.IsValid()); - SendLogMessage(base::StringPrintf("OnSetFormat([label=%s] {params=[%s]})", - adapter_->label().c_str(), - params.AsHumanReadableString().c_str())); -From 525ae23fbd019ab819a2f7e26e43bfce4ee79c51 Mon Sep 17 00:00:00 2001 -From: Hongchan Choi -Date: Tue, 12 Dec 2023 02:36:08 +0000 -Subject: [PATCH] [Backport] CVE-2024-0224: Use after free in WebAudio - -Manual cherry-pick of patch originally reviewed on -https://chromium-review.googlesource.com/c/chromium/src/+/5112992: -Wrap buffer read index in delay kernel - -The current code assumes that the first buffer read index in the delay -kernel does not go out of bound. This CL applies the wrapping function -to the read index array. - -(cherry picked from commit fb96fd5f41bec823dbb208d9a7d53fbbf4d16ce4) - -Bug: 1505086 -Test: Locally confirmed the repro does not crash anymore -Change-Id: Idca3dfc7dec5b5a7f9b22d87135e2d775729631a -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5072113 -Commit-Queue: Hongchan Choi -Reviewed-by: Michael Wilson -Cr-Original-Commit-Position: refs/heads/main@{#1231040} -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5112992 -Auto-Submit: Hongchan Choi -Commit-Queue: Rubber Stamper -Bot-Commit: Rubber Stamper -Cr-Commit-Position: refs/branch-heads/6099@{#1498} -Cr-Branched-From: e6ee4500f7d6549a9ac1354f8d056da49ef406be-refs/heads/main@{#1217362} -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/532067 -Reviewed-by: Michal Klocek ---- - .../renderer/platform/audio/audio_delay_dsp_kernel.cc | 2 +- - .../audio/cpu/arm/audio_delay_dsp_kernel_neon.cc | 7 +++++-- - .../audio/cpu/x86/audio_delay_dsp_kernel_sse2.cc | 10 +++++++--- - 3 files changed, 13 insertions(+), 6 deletions(-) - -diff --git a/chromium/third_party/blink/renderer/platform/audio/audio_delay_dsp_kernel.cc b/chromium/third_party/blink/renderer/platform/audio/audio_delay_dsp_kernel.cc -index 25818dcf2aa7..c34118e953ac 100644 ---- src/3rdparty/chromium/third_party/blink/renderer/platform/audio/audio_delay_dsp_kernel.cc -+++ src/3rdparty/chromium/third_party/blink/renderer/platform/audio/audio_delay_dsp_kernel.cc -@@ -150,7 +150,7 @@ int AudioDelayDSPKernel::ProcessARateScalar(unsigned start, - const float* delay_times = delay_times_.Data(); - - for (unsigned i = start; i < frames_to_process; ++i) { -- double delay_time = delay_times[i]; -+ double delay_time = std::fmax(delay_times[i], 0); - double desired_delay_frames = delay_time * sample_rate; - - double read_position = w_index + buffer_length - desired_delay_frames; -diff --git a/chromium/third_party/blink/renderer/platform/audio/cpu/arm/audio_delay_dsp_kernel_neon.cc b/chromium/third_party/blink/renderer/platform/audio/cpu/arm/audio_delay_dsp_kernel_neon.cc -index 2843bd60b8ba..803f3e724423 100644 ---- src/3rdparty/chromium/third_party/blink/renderer/platform/audio/cpu/arm/audio_delay_dsp_kernel_neon.cc -+++ src/3rdparty/chromium/third_party/blink/renderer/platform/audio/cpu/arm/audio_delay_dsp_kernel_neon.cc -@@ -60,6 +60,7 @@ std::tuple AudioDelayDSPKernel::ProcessARateVector( - int w_index = write_index_; - - const float32x4_t v_sample_rate = vdupq_n_f32(sample_rate); -+ const float32x4_t v_all_zeros = vdupq_n_f32(0); - - // The buffer length as a float and as an int so we don't need to constant - // convert from one to the other. -@@ -87,7 +88,8 @@ std::tuple AudioDelayDSPKernel::ProcessARateVector( - int k = 0; - - for (int n = 0; n < number_of_loops; ++n, k += 4) { -- const float32x4_t v_delay_time = vld1q_f32(delay_times + k); -+ const float32x4_t v_delay_time = vmaxq_f32(vld1q_f32(delay_times + k), -+ v_all_zeros); - const float32x4_t v_desired_delay_frames = - vmulq_f32(v_delay_time, v_sample_rate); - -@@ -100,7 +102,8 @@ std::tuple AudioDelayDSPKernel::ProcessARateVector( - WrapPositionVector(v_read_position, v_buffer_length_float); - - // Get indices into the buffer for the samples we need for interpolation. -- const int32x4_t v_read_index1 = vcvtq_s32_f32(v_read_position); -+ const int32x4_t v_read_index1 = WrapIndexVector( -+ vcvtq_s32_f32(v_read_position), v_buffer_length_int); - const int32x4_t v_read_index2 = WrapIndexVector( - vaddq_s32(v_read_index1, vdupq_n_s32(1)), v_buffer_length_int); - -diff --git a/chromium/third_party/blink/renderer/platform/audio/cpu/x86/audio_delay_dsp_kernel_sse2.cc b/chromium/third_party/blink/renderer/platform/audio/cpu/x86/audio_delay_dsp_kernel_sse2.cc -index fe2aef95aeda..dd368ee4b0f4 100644 ---- src/3rdparty/chromium/third_party/blink/renderer/platform/audio/cpu/x86/audio_delay_dsp_kernel_sse2.cc -+++ src/3rdparty/chromium/third_party/blink/renderer/platform/audio/cpu/x86/audio_delay_dsp_kernel_sse2.cc -@@ -56,10 +56,10 @@ std::tuple AudioDelayDSPKernel::ProcessARateVector( - - const float sample_rate = this->SampleRate(); - const float* delay_times = delay_times_.Data(); -- - int w_index = write_index_; - - const __m128 v_sample_rate = _mm_set1_ps(sample_rate); -+ const __m128 v_all_zeros = _mm_setzero_ps(); - - // The buffer length as a float and as an int so we don't need to constant - // convert from one to the other. -@@ -82,7 +82,10 @@ std::tuple AudioDelayDSPKernel::ProcessARateVector( - int k = 0; - - for (int n = 0; n < number_of_loops; ++n, k += 4) { -- const __m128 v_delay_time = _mm_loadu_ps(delay_times + k); -+ // It's possible that `delay_time` contains negative values. Make sure -+ // they are greater than zero. -+ const __m128 v_delay_time = _mm_max_ps(_mm_loadu_ps(delay_times + k), -+ v_all_zeros); - const __m128 v_desired_delay_frames = - _mm_mul_ps(v_delay_time, v_sample_rate); - -@@ -95,7 +98,8 @@ std::tuple AudioDelayDSPKernel::ProcessARateVector( - WrapPositionVector(v_read_position, v_buffer_length_float); - - // Get indices into the buffer for the samples we need for interpolation. -- const __m128i v_read_index1 = _mm_cvttps_epi32(v_read_position); -+ const __m128i v_read_index1 = WrapIndexVector( -+ _mm_cvttps_epi32(v_read_position), v_buffer_length_int); - const __m128i v_read_index2 = WrapIndexVector( - _mm_add_epi32(v_read_index1, _mm_set1_epi32(1)), v_buffer_length_int); - -From c96132ccf271137bbd3f5b1a8c9c172650e69526 Mon Sep 17 00:00:00 2001 -From: Evan Stade -Date: Fri, 15 Dec 2023 21:38:02 +0000 -Subject: [PATCH] [Backport] Security bug 1511689 - -Manual cherry-pick of patch originally reviewed on -https://chromium-review.googlesource.com/c/chromium/deps/sqlite/+/5123910: -Fix a spurious "misuse of aggregate function" error that could occur when an aggregate function was used within the FROM clause of a sub-select of the select that owns the aggregate. e.g. "SELECT (SELECT x FROM (SELECT sum(t1.a) AS x)) FROM t1". [forum:/forumpost/c9970a37ed | Forum post c9970a37ed]. - -FossilOrigin-Name: 4470f657d2069972d02a00983252dec1f814d90c0d8d0906e320e955111e8c11 -(cherry picked from commit 5e4233a9e48b124d4d342b757b34e4ae849f5cf8) - -Bug: 1511689 -Change-Id: I69263fc0a5fa66df5c09b964864568f2fc7a6ca5 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/deps/sqlite/+/5123910 -Auto-Submit: Evan Stade -Commit-Queue: Ayu Ishii -Reviewed-by: Ayu Ishii -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/532068 -Reviewed-by: Michal Klocek ---- - chromium/third_party/sqlite/src/amalgamation/sqlite3.c | 6 +++++- - chromium/third_party/sqlite/src/amalgamation_dev/sqlite3.c | 6 +++++- - chromium/third_party/sqlite/src/src/resolve.c | 7 +++++-- - chromium/third_party/sqlite/src/src/sqliteInt.h | 1 + - 4 files changed, 16 insertions(+), 4 deletions(-) - -diff --git a/chromium/third_party/sqlite/src/amalgamation/sqlite3.c b/chromium/third_party/sqlite/src/amalgamation/sqlite3.c -index d7766b7d7ec..b353aa88348 100644 ---- src/3rdparty/chromium/third_party/sqlite/src/amalgamation/sqlite3.c -+++ src/3rdparty/chromium/third_party/sqlite/src/amalgamation/sqlite3.c -@@ -18804,6 +18804,7 @@ struct NameContext { - int nRef; /* Number of names resolved by this context */ - int nNcErr; /* Number of errors encountered while resolving names */ - int ncFlags; /* Zero or more NC_* flags defined below */ -+ int nNestedSelect; /* Number of nested selects using this NC */ - Select *pWinSelect; /* SELECT statement for any window functions */ - }; - -@@ -104749,11 +104750,12 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){ - while( pNC2 - && sqlite3ReferencesSrcList(pParse, pExpr, pNC2->pSrcList)==0 - ){ -- pExpr->op2++; -+ pExpr->op2 += (1 + pNC2->nNestedSelect); - pNC2 = pNC2->pNext; - } - assert( pDef!=0 || IN_RENAME_OBJECT ); - if( pNC2 && pDef ){ -+ pExpr->op2 += pNC2->nNestedSelect; - assert( SQLITE_FUNC_MINMAX==NC_MinMaxAgg ); - assert( SQLITE_FUNC_ANYORDER==NC_OrderAgg ); - testcase( (pDef->funcFlags & SQLITE_FUNC_MINMAX)!=0 ); -@@ -105314,6 +105316,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){ - - /* Recursively resolve names in all subqueries in the FROM clause - */ -+ if( pOuterNC ) pOuterNC->nNestedSelect++; - for(i=0; ipSrc->nSrc; i++){ - SrcItem *pItem = &p->pSrc->a[i]; - if( pItem->pSelect && (pItem->pSelect->selFlags & SF_Resolved)==0 ){ -@@ -105338,6 +105341,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){ - } - } - } -+ if( pOuterNC ) pOuterNC->nNestedSelect--; - - /* Set up the local name-context to pass to sqlite3ResolveExprNames() to - ** resolve the result-set expression list. -diff --git a/chromium/third_party/sqlite/src/amalgamation_dev/sqlite3.c b/chromium/third_party/sqlite/src/amalgamation_dev/sqlite3.c -index 0819ea6a615..5c72a44dd6b 100644 ---- src/3rdparty/chromium/third_party/sqlite/src/amalgamation_dev/sqlite3.c -+++ src/3rdparty/chromium/third_party/sqlite/src/amalgamation_dev/sqlite3.c -@@ -18817,6 +18817,7 @@ struct NameContext { - int nRef; /* Number of names resolved by this context */ - int nNcErr; /* Number of errors encountered while resolving names */ - int ncFlags; /* Zero or more NC_* flags defined below */ -+ int nNestedSelect; /* Number of nested selects using this NC */ - Select *pWinSelect; /* SELECT statement for any window functions */ - }; - -@@ -104762,11 +104763,12 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){ - while( pNC2 - && sqlite3ReferencesSrcList(pParse, pExpr, pNC2->pSrcList)==0 - ){ -- pExpr->op2++; -+ pExpr->op2 += (1 + pNC2->nNestedSelect); - pNC2 = pNC2->pNext; - } - assert( pDef!=0 || IN_RENAME_OBJECT ); - if( pNC2 && pDef ){ -+ pExpr->op2 += pNC2->nNestedSelect; - assert( SQLITE_FUNC_MINMAX==NC_MinMaxAgg ); - assert( SQLITE_FUNC_ANYORDER==NC_OrderAgg ); - testcase( (pDef->funcFlags & SQLITE_FUNC_MINMAX)!=0 ); -@@ -105327,6 +105329,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){ - - /* Recursively resolve names in all subqueries in the FROM clause - */ -+ if( pOuterNC ) pOuterNC->nNestedSelect++; - for(i=0; ipSrc->nSrc; i++){ - SrcItem *pItem = &p->pSrc->a[i]; - if( pItem->pSelect && (pItem->pSelect->selFlags & SF_Resolved)==0 ){ -@@ -105351,6 +105354,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){ - } - } - } -+ if( pOuterNC ) pOuterNC->nNestedSelect--; - - /* Set up the local name-context to pass to sqlite3ResolveExprNames() to - ** resolve the result-set expression list. -diff --git a/chromium/third_party/sqlite/src/src/resolve.c b/chromium/third_party/sqlite/src/src/resolve.c -index 4b36ecca348..c5228a7f097 100644 ---- src/3rdparty/chromium/third_party/sqlite/src/src/resolve.c -+++ src/3rdparty/chromium/third_party/sqlite/src/src/resolve.c -@@ -1211,11 +1211,12 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){ - while( pNC2 - && sqlite3ReferencesSrcList(pParse, pExpr, pNC2->pSrcList)==0 - ){ -- pExpr->op2++; -+ pExpr->op2 += (1 + pNC2->nNestedSelect); - pNC2 = pNC2->pNext; - } - assert( pDef!=0 || IN_RENAME_OBJECT ); - if( pNC2 && pDef ){ -+ pExpr->op2 += pNC2->nNestedSelect; - assert( SQLITE_FUNC_MINMAX==NC_MinMaxAgg ); - assert( SQLITE_FUNC_ANYORDER==NC_OrderAgg ); - testcase( (pDef->funcFlags & SQLITE_FUNC_MINMAX)!=0 ); -@@ -1776,6 +1777,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){ - - /* Recursively resolve names in all subqueries in the FROM clause - */ -+ if( pOuterNC ) pOuterNC->nNestedSelect++; - for(i=0; ipSrc->nSrc; i++){ - SrcItem *pItem = &p->pSrc->a[i]; - if( pItem->pSelect && (pItem->pSelect->selFlags & SF_Resolved)==0 ){ -@@ -1800,7 +1802,8 @@ static int resolveSelectStep(Walker *pWalker, Select *p){ - } - } - } -- -+ if( pOuterNC ) pOuterNC->nNestedSelect--; -+ - /* Set up the local name-context to pass to sqlite3ResolveExprNames() to - ** resolve the result-set expression list. - */ -diff --git a/chromium/third_party/sqlite/src/src/sqliteInt.h b/chromium/third_party/sqlite/src/src/sqliteInt.h -index 2614f4be458..07bc4def106 100644 ---- src/3rdparty/chromium/third_party/sqlite/src/src/sqliteInt.h -+++ src/3rdparty/chromium/third_party/sqlite/src/src/sqliteInt.h -@@ -3321,6 +3321,7 @@ struct NameContext { - int nRef; /* Number of names resolved by this context */ - int nNcErr; /* Number of errors encountered while resolving names */ - int ncFlags; /* Zero or more NC_* flags defined below */ -+ int nNestedSelect; /* Number of nested selects using this NC */ - Select *pWinSelect; /* SELECT statement for any window functions */ - }; - -From f1ef87d506845dd62bb0802e80092d53100222f4 Mon Sep 17 00:00:00 2001 -From: Hongchan Choi -Date: Fri, 12 Jan 2024 22:57:22 +0000 -Subject: [PATCH] [Backport] CVE-2024-0807: Use after free in WebAudio - -Manual cherry-pick of patch originally reviewed on -https://chromium-review.googlesource.com/c/chromium/src/+/5225523: -Update rendering state of automatic pull nodes before graph rendering - -M114 merge issues: - third_party/blink/renderer/modules/webaudio/analyser_handler.cc: -PullInputs/CheckNumberOfChannelsForInput not present in 114. - -In rare cases, the rendering fan out count of automatic pull node -does not match the main thread fan out count after recreating -a platform destination followed by disconnection. - -This CL forces the update of the rendering state of automatic -pull nodes before graph rendering to make sure that fan out counts -are synchronized before executing the audio processing function call. - -NOTE: This change makes 2 WPTs fail. The follow-up work is planned -to address them once this patch is merged. - -Bug: 1505080 -Test: Locally confirmed that ASAN doesn't crash on all repro cases. -Change-Id: I6768cd8bc64525ea9d56a19b9c58439e9cdab9a8 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5131958 -Commit-Queue: Hongchan Choi -Cr-Commit-Position: refs/heads/main@{#1246718} -(cherry picked from commit f4bffa09b46c21147431179e1e6dd2b27bc35fbc) -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/537374 -Reviewed-by: Michal Klocek ---- - .../renderer/modules/webaudio/analyser_node.cc | 11 +++++++++-- - .../renderer/modules/webaudio/audio_worklet_node.cc | 13 +++++++++---- - .../modules/webaudio/audio_worklet_processor.cc | 6 ++++++ - .../modules/webaudio/deferred_task_handler.cc | 10 ++++++++++ - 4 files changed, 34 insertions(+), 6 deletions(-) - -diff --git a/chromium/third_party/blink/renderer/modules/webaudio/analyser_node.cc b/chromium/third_party/blink/renderer/modules/webaudio/analyser_node.cc -index cb281f5b728f..9f515af5d9a9 100644 ---- src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/analyser_node.cc -+++ src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/analyser_node.cc -@@ -51,9 +51,11 @@ AnalyserHandler::~AnalyserHandler() { - } - - void AnalyserHandler::Process(uint32_t frames_to_process) { -- AudioBus* output_bus = Output(0).Bus(); -+ DCHECK(Context()->IsAudioThread()); - -- if (!IsInitialized()) { -+ AudioBus* output_bus = Output(0).RenderingFanOutCount() > 0 ? Output(0).Bus() : nullptr; -+ -+ if (!IsInitialized() && output_bus) { - output_bus->Zero(); - return; - } -@@ -65,6 +67,11 @@ void AnalyserHandler::Process(uint32_t frames_to_process) { - // Analyser reflects the current input. - analyser_.WriteInput(input_bus.get(), frames_to_process); - -+ // Subsequent steps require `output_bus` to be valid. -+ if (!output_bus) { -+ return; -+ } -+ - if (!Input(0).IsConnected()) { - // No inputs, so clear the output, and propagate the silence hint. - output_bus->Zero(); -diff --git a/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_node.cc b/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_node.cc -index eccf002b6da6..5f18c4cd12d2 100644 ---- src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_node.cc -+++ src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_node.cc -@@ -102,11 +102,16 @@ void AudioWorkletHandler::Process(uint32_t frames_to_process) { - // We also need to check if the global scope is valid before we request - // the rendering in the AudioWorkletGlobalScope. - if (processor_ && !processor_->hasErrorOccurred()) { -- // If the input is not connected, inform the processor with nullptr. -- for (unsigned i = 0; i < NumberOfInputs(); ++i) -+ // If the input or the output is not connected, inform the processor with -+ // nullptr. -+ for (unsigned i = 0; i < NumberOfInputs(); ++i) { - inputs_[i] = Input(i).IsConnected() ? Input(i).Bus() : nullptr; -- for (unsigned i = 0; i < NumberOfOutputs(); ++i) -- outputs_[i] = WrapRefCounted(Output(i).Bus()); -+ } -+ for (unsigned i = 0; i < NumberOfOutputs(); ++i) { -+ outputs_[i] = Output(i).RenderingFanOutCount() > 0 -+ ? WrapRefCounted(Output(i).Bus()) -+ : nullptr; -+ } - - for (const auto& param_name : param_value_map_.Keys()) { - auto* const param_handler = param_handler_map_.at(param_name); -diff --git a/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.cc b/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.cc -index e68b1c1b2f6b..84ab72b9774c 100644 ---- src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.cc -+++ src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.cc -@@ -343,6 +343,12 @@ void AudioWorkletProcessor::CopyArrayBuffersToPort( - - for (uint32_t bus_index = 0; bus_index < audio_port.size(); ++bus_index) { - const scoped_refptr& audio_bus = audio_port[bus_index]; -+ -+ // nullptr indicates the output bus is not connected. Do not proceed. -+ if (!audio_bus) { -+ break; -+ } -+ - for (uint32_t channel_index = 0; - channel_index < audio_bus->NumberOfChannels(); ++channel_index) { - const v8::ArrayBuffer::Contents& contents = -diff --git a/chromium/third_party/blink/renderer/modules/webaudio/deferred_task_handler.cc b/chromium/third_party/blink/renderer/modules/webaudio/deferred_task_handler.cc -index 76aa9acccd30..88e4228caefa 100644 ---- src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/deferred_task_handler.cc -+++ src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/deferred_task_handler.cc -@@ -169,6 +169,16 @@ void DeferredTaskHandler::UpdateAutomaticPullNodes() { - if (try_locker.Locked()) { - CopyToVector(automatic_pull_handlers_, - rendering_automatic_pull_handlers_); -+ -+ // In rare cases, it is possible for automatic pull nodes' output bus -+ // to become stale. Make sure update their rendering output counts. -+ // crbug.com/1505080. -+ for (auto& handler : rendering_automatic_pull_handlers_) { -+ for (unsigned i = 0; i < handler->NumberOfOutputs(); ++i) { -+ handler->Output(i).UpdateRenderingState(); -+ } -+ } -+ - automatic_pull_handlers_need_updating_ = false; - } - } -From 850527b41e56a8b48d99513eddcc75d4efe3c16d Mon Sep 17 00:00:00 2001 -From: Lyra Rebane -Date: Mon, 8 Jan 2024 13:39:46 +0000 -Subject: [PATCH] [Backport] CVE-2024-0808: Integer underflow in WebUI -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Manual backport of patch originally reviewed on -https://chromium-review.googlesource.com/c/chromium/src/+/5177426: -[M114-LTS] Verify resource order in data pack files - -This CL adds a resource order check when loading a data pack or calling DataPack::GetStringPiece to make sure the resources are ordered sequentially in memory. - -Bug: 1504936 -Change-Id: Ie3bf1d9dbac937407355935a859a5daa9ce84350 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5059113 -Commit-Queue: Peter Boström -Cr-Commit-Position: refs/heads/main@{#1238675} -(cherry picked from commit c4b2e6246ad0e95eaf0727bb25a2e4969155e989) -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/537375 -Reviewed-by: Michal Klocek ---- - chromium/AUTHORS | 1 + - chromium/ui/base/resource/data_pack.cc | 19 ++++++++++++++++++- - .../ui/base/resource/data_pack_literal.cc | 12 ++++++++++++ - chromium/ui/base/resource/data_pack_literal.h | 2 ++ - 4 files changed, 33 insertions(+), 1 deletion(-) - -diff --git a/chromium/AUTHORS b/chromium/AUTHORS -index 92f53ac669a0..9d61a61e57b9 100644 ---- src/3rdparty/chromium/AUTHORS -+++ src/3rdparty/chromium/AUTHORS -@@ -631,6 +631,7 @@ Luke Inman-Semerau - Luke Seunghoe Gu - Luke Zarko - Luoxi Pan -+Lyra Rebane - Maarten Lankhorst - Magnus Danielsson - Mahesh Kulkarni -diff --git a/chromium/ui/base/resource/data_pack.cc b/chromium/ui/base/resource/data_pack.cc -index 09513e6aed24..4e522c9ad758 100644 ---- src/3rdparty/chromium/ui/base/resource/data_pack.cc -+++ src/3rdparty/chromium/ui/base/resource/data_pack.cc -@@ -400,7 +400,16 @@ bool DataPack::LoadImpl(std::unique_ptr data_source) { - } - } - -- // 3) Verify the aliases are within the appropriate bounds. -+ // 3) Verify the entries are ordered correctly. -+ for (size_t i = 0; i < resource_count_; ++i) { -+ if (resource_table_[i].file_offset > resource_table_[i + 1].file_offset) { -+ LOG(ERROR) << "Data pack file corruption: " -+ << "Entry #" << i + 1 << " before Entry #" << i << "."; -+ return false; -+ } -+ } -+ -+ // 4) Verify the aliases are within the appropriate bounds. - for (size_t i = 0; i < alias_count_; ++i) { - if (alias_table_[i].entry_index >= resource_count_) { - LOG(ERROR) << "Data pack file corruption: " -@@ -461,6 +470,14 @@ bool DataPack::GetStringPiece(uint16_t resource_id, - << "file modified?"; - return false; - } -+ if (target->file_offset > next_entry->file_offset) { -+ size_t entry_index = target - resource_table_; -+ size_t next_index = next_entry - resource_table_; -+ LOG(ERROR) << "Entry #" << next_index << " in data pack is before Entry #" -+ << entry_index << ". This should have been caught when loading. " -+ << "Was the file modified?"; -+ return false; -+ } - - MaybePrintResourceId(resource_id); - size_t length = next_entry->file_offset - target->file_offset; -diff --git a/chromium/ui/base/resource/data_pack_literal.cc b/chromium/ui/base/resource/data_pack_literal.cc -index f6669ed82447..70e225b6e84e 100644 ---- src/3rdparty/chromium/ui/base/resource/data_pack_literal.cc -+++ src/3rdparty/chromium/ui/base/resource/data_pack_literal.cc -@@ -91,6 +91,18 @@ const char kSampleCorruptPakContents[] = { - - const size_t kSampleCorruptPakSize = sizeof(kSampleCorruptPakContents); - -+const uint8_t kSampleMisorderedPakContents[] = { -+ 0x05, 0x00, 0x00, 0x00, // version -+ 0x01, 0x00, 0x00, 0x00, // encoding + padding -+ 0x02, 0x00, 0x00, 0x00, // num_resources, num_aliases -+ 0x06, 0x00, 0x2a, 0x00, 0x00, 0x00, // index entry 6 (wrong order) -+ 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, // index entry 4 -+ 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, // extra entry for the size of last -+ 't', 'h', 'i', 's', ' ', 'i', 's', ' ', 'i', 'd', ' ', '4', -+ 't', 'h', 'i', 's', ' ', 'i', 's', ' ', 'i', 'd', ' ', '6'}; -+ -+const size_t kSampleMisorderedPakSize = sizeof(kSampleMisorderedPakContents); -+ - const char kSamplePakContents2x[] = { - 0x04, 0x00, 0x00, 0x00, // header(version - 0x01, 0x00, 0x00, 0x00, // no. entries -diff --git a/chromium/ui/base/resource/data_pack_literal.h b/chromium/ui/base/resource/data_pack_literal.h -index 83a8dc04c141..a7fcf2bf85c7 100644 ---- src/3rdparty/chromium/ui/base/resource/data_pack_literal.h -+++ src/3rdparty/chromium/ui/base/resource/data_pack_literal.h -@@ -19,6 +19,8 @@ extern const char kEmptyPakContents[]; - extern const size_t kEmptyPakSize; - extern const char kSampleCorruptPakContents[]; - extern const size_t kSampleCorruptPakSize; -+extern const uint8_t kSampleMisorderedPakContents[]; -+extern const size_t kSampleMisorderedPakSize; - - } // namespace ui - -From 629a490cede4673cec29addd4629c432319a3b6f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Peter=20Bostr=C3=B6m?= -Date: Tue, 23 Jan 2024 01:06:06 +0000 -Subject: [PATCH] [Backport] Security bug 1519980 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Manual cherry-pick of patch originally reviewed on -https://chromium-review.googlesource.com/c/chromium/src/+/5226127: -Speculatively fix race in mojo ShutDownOnIOThread - -This acquires `write_lock_` before resetting handles used by WriteNoLock -(which is called under the same lock in another thread). We also set -`reject_writes_` to prevent future write attempts after shutdown. That -seems strictly more correct. - -We also acquire `fds_to_close_lock_` before clearing the FDs. - -I was unable to repro locally as content_browsertests just times out -in my local setup without reporting anything interesting. This seems -strictly more correct though. - -Bug: 1519980 -Change-Id: I96279936ca908ecb98eddd381df20d61597cba43 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5226127 -Auto-Submit: Peter Boström -Reviewed-by: Ken Rockot -Commit-Queue: Ken Rockot -Commit-Queue: Peter Boström -Cr-Commit-Position: refs/heads/main@{#1250580} -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/537376 -Reviewed-by: Michal Klocek ---- - chromium/mojo/core/channel_posix.cc | 27 ++++++++++++++++----------- - 1 file changed, 16 insertions(+), 11 deletions(-) - -diff --git a/chromium/mojo/core/channel_posix.cc b/chromium/mojo/core/channel_posix.cc -index d7d9d6cfee15..e17aa8d82a91 100644 ---- src/3rdparty/chromium/mojo/core/channel_posix.cc -+++ src/3rdparty/chromium/mojo/core/channel_posix.cc -@@ -242,18 +242,23 @@ class ChannelPosix : public Channel, - void ShutDownOnIOThread() { - base::CurrentThread::Get()->RemoveDestructionObserver(this); - -- read_watcher_.reset(); -- write_watcher_.reset(); -- if (leak_handle_) { -- ignore_result(socket_.release()); -- server_.TakePlatformHandle().release(); -- } else { -- socket_.reset(); -- ignore_result(server_.TakePlatformHandle()); -+ { -+ base::AutoLock lock(write_lock_); -+ reject_writes_ = true; -+ read_watcher_.reset(); -+ write_watcher_.reset(); -+ if (leak_handle_) { -+ std::ignore = socket_.release(); -+ server_.TakePlatformHandle().release(); -+ } else { -+ socket_.reset(); -+ std::ignore = server_.TakePlatformHandle(); -+ } -+ #if defined(OS_IOS) -+ base::AutoLock fd_lock(fds_to_close_lock_); -+ fds_to_close_.clear(); -+ #endif - } --#if defined(OS_IOS) -- fds_to_close_.clear(); --#endif - - // May destroy the |this| if it was the last reference. - self_ = nullptr; -From 024962f9456bbb5823a877441e92ca3af30279a6 Mon Sep 17 00:00:00 2001 -From: Tsuyoshi Horo -Date: Tue, 9 Jan 2024 08:40:00 +0000 -Subject: [PATCH] [Backport] CVE-2024-1077: Use after free in Network - -Cherry-pick of patch originally reviewed on -https://chromium-review.googlesource.com/c/chromium/src/+/5179746: -Fix UAF in SourceStreamToDataPipe - -SourceStreamToDataPipe::ReadMore() is passing a callback with -Unretained(this) to net::SourceStream::Read(). But this callback may be -called even after the SourceStream is destructed. This is causing UAF -issue (crbug.com/1511085). - -To solve this problem, this CL changes ReadMore() method to pass a -callback with a weak ptr of this. - -Bug: 1511085 -Change-Id: Idd4e34ff300ff5db2de1de7b303841c7db3a964a -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5179746 -Reviewed-by: Adam Rice -Commit-Queue: Tsuyoshi Horo -Cr-Commit-Position: refs/heads/main@{#1244526} -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/537377 -Reviewed-by: Michal Klocek ---- - .../network/public/cpp/source_stream_to_data_pipe.cc | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/chromium/services/network/public/cpp/source_stream_to_data_pipe.cc b/chromium/services/network/public/cpp/source_stream_to_data_pipe.cc -index d6ade7b0ec52..615804ad8d29 100644 ---- src/3rdparty/chromium/services/network/public/cpp/source_stream_to_data_pipe.cc -+++ src/3rdparty/chromium/services/network/public/cpp/source_stream_to_data_pipe.cc -@@ -53,9 +53,9 @@ void SourceStreamToDataPipe::ReadMore() { - - scoped_refptr buffer( - new network::NetToMojoIOBuffer(pending_write_.get())); -- int result = source_->Read( -- buffer.get(), base::checked_cast(num_bytes), -- base::BindOnce(&SourceStreamToDataPipe::DidRead, base::Unretained(this))); -+ int result = source_->Read(buffer.get(), base::checked_cast(num_bytes), -+ base::BindOnce(&SourceStreamToDataPipe::DidRead, -+ weak_factory_.GetWeakPtr())); - - if (result != net::ERR_IO_PENDING) - DidRead(result); -From 06e89516b94241e088f6d350bc3a113e726355cd Mon Sep 17 00:00:00 2001 -From: Jean-Philippe Gravel -Date: Wed, 17 Jan 2024 17:45:45 +0000 -Subject: [PATCH] [Backport] CVE-2024-1060: Use after free in Canvas - -Manual backport of patch originally reviewed on -https://chromium-review.googlesource.com/c/chromium/src/+/5198419: -Fix use-after-free in DrawTextInternal - -DrawTextInternal was calling GetOrCreatePaintCanvas multiple times, -once at the start of the function, once inside of the -BaseRenderingContext2DAutoRestoreSkCanvas helper class and once in the -Draw call. GetOrCreatePaintCanvas destroys the canvas resource provider -if the GPU context is lost. If this happens on the second call to -GetOrCreatePaintCanvas, destroying the resource provider will -invalidate the cc::PaintCanvas returned by the first call to -GetOrCreatePaintCanvas. - -The GPU process can technically crash at any point during the renderer -process execution (perhaps because of something another renderer -process did). We therefore have to assume that any call to -GetOrCreatePaintCanvas can invalidate previously returned -cc::PaintCanvas. - -Change-Id: Ifa77735ab1b2b55b3d494f886b8566299937f6fe -Fixed: 1511567 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5198419 -Reviewed-by: Fernando Serboncini -Commit-Queue: Jean-Philippe Gravel -Cr-Commit-Position: refs/heads/main@{#1248204} -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/537378 -Reviewed-by: Michal Klocek ---- - .../canvas2d/canvas_rendering_context_2d.cc | 50 ++++++------------- - .../canvas2d/canvas_rendering_context_2d.h | 2 - - 2 files changed, 16 insertions(+), 36 deletions(-) - -diff --git a/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc b/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc -index ade14e0102ae..fe8c4cd277ce 100644 ---- src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc -+++ src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc -@@ -86,35 +86,6 @@ static bool ContextLostRestoredEventsEnabled() { - return RuntimeEnabledFeatures::Canvas2dContextLostRestoredEnabled(); - } - --// Drawing methods need to use this instead of SkAutoCanvasRestore in case --// overdraw detection substitutes the recording canvas (to discard overdrawn --// draw calls). --class CanvasRenderingContext2DAutoRestoreSkCanvas { -- STACK_ALLOCATED(); -- -- public: -- explicit CanvasRenderingContext2DAutoRestoreSkCanvas( -- CanvasRenderingContext2D* context) -- : context_(context), save_count_(0) { -- DCHECK(context_); -- cc::PaintCanvas* c = context_->GetOrCreatePaintCanvas(); -- if (c) { -- save_count_ = c->getSaveCount(); -- } -- } -- -- ~CanvasRenderingContext2DAutoRestoreSkCanvas() { -- cc::PaintCanvas* c = context_->GetOrCreatePaintCanvas(); -- if (c) -- c->restoreToCount(save_count_); -- context_->ValidateStateStack(); -- } -- -- private: -- CanvasRenderingContext2D* context_; -- int save_count_; --}; -- - CanvasRenderingContext2D::CanvasRenderingContext2D( - HTMLCanvasElement* canvas, - const CanvasContextCreationAttributesCore& attrs) -@@ -850,9 +821,11 @@ void CanvasRenderingContext2D::DrawTextInternal( - // to 0, for example), so update style before grabbing the PaintCanvas. - canvas()->GetDocument().UpdateStyleAndLayoutTreeForNode(canvas()); - -- cc::PaintCanvas* c = GetOrCreatePaintCanvas(); -- if (!c) -+ // Abort if we don't have a paint canvas (e.g. the context was lost). -+ cc::PaintCanvas* paint_canvas = GetOrCreatePaintCanvas(); -+ if (!paint_canvas) { - return; -+ } - - if (!std::isfinite(x) || !std::isfinite(y)) - return; -@@ -920,14 +893,13 @@ void CanvasRenderingContext2D::DrawTextInternal( - if (paint_type == CanvasRenderingContext2DState::kStrokePaintType) - InflateStrokeRect(bounds); - -- CanvasRenderingContext2DAutoRestoreSkCanvas state_restorer(this); - if (use_max_width) { -- c->save(); -+ paint_canvas->save(); - // We draw when fontWidth is 0 so compositing operations (eg, a "copy" op) - // still work. As the width of canvas is scaled, so text can be scaled to - // match the given maxwidth, update text location so it appears on desired - // place. -- c->scale(clampTo(width / font_width), 1); -+ paint_canvas->scale(clampTo(width / font_width), 1); - location.SetX(location.X() / clampTo(width / font_width)); - } - -@@ -942,6 +914,16 @@ void CanvasRenderingContext2D::DrawTextInternal( - [](const SkIRect& rect) // overdraw test lambda - { return false; }, - bounds, paint_type, CanvasRenderingContext2DState::kNoImage); -+ -+ if (use_max_width) { -+ // Cannot use `paint_canvas` in case recording canvas was substituted or -+ // destroyed during draw call. -+ cc::PaintCanvas* c = GetPaintCanvas(); -+ if (c) { -+ c->restore(); -+ } -+ } -+ ValidateStateStack(); - } - - const Font& CanvasRenderingContext2D::AccessFont() { -diff --git a/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h b/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h -index ac10ae4389a8..b0d09f182a7d 100644 ---- src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h -+++ src/3rdparty/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h -@@ -236,8 +236,6 @@ class MODULES_EXPORT CanvasRenderingContext2D final - void WillOverwriteCanvas() override; - - private: -- friend class CanvasRenderingContext2DAutoRestoreSkCanvas; -- - void DispatchContextLostEvent(TimerBase*); - void DispatchContextRestoredEvent(TimerBase*); - void TryRestoreContextEvent(TimerBase*); -From 6f0832285560ce72dfe1403a1c2d7a53f6bf7f55 Mon Sep 17 00:00:00 2001 -From: John Stiles -Date: Mon, 29 Jan 2024 23:50:14 +0000 -Subject: [PATCH] [Backport] CVE-2024-1283: Heap buffer overflow in Skia - -Manual cherry-pick of patch originally reviewed on -https://chromium-review.googlesource.com/c/chromium/src/+/5241305: -Fix a crash when a BMP image contains an unnecessary EOF code. - -Previously, this would try to perform color correction on a row -one past the end of the image data. - -Bug: 1521893 -Change-Id: I425437005b9ef400138556705616095857d2cf0d -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5241305 -Auto-Submit: John Stiles -Commit-Queue: John Stiles -Reviewed-by: Peter Kasting -Cr-Commit-Position: refs/heads/main@{#1253633} -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/538168 -Reviewed-by: Michal Klocek ---- - .../image-decoders/bmp/bmp_image_reader.cc | 18 +++++++++++++++--- - 1 file changed, 15 insertions(+), 3 deletions(-) - -diff --git a/chromium/third_party/blink/renderer/platform/image-decoders/bmp/bmp_image_reader.cc b/chromium/third_party/blink/renderer/platform/image-decoders/bmp/bmp_image_reader.cc -index 562223397030..662e66cab884 100644 ---- src/3rdparty/chromium/third_party/blink/renderer/platform/image-decoders/bmp/bmp_image_reader.cc -+++ src/3rdparty/chromium/third_party/blink/renderer/platform/image-decoders/bmp/bmp_image_reader.cc -@@ -827,8 +827,11 @@ BMPImageReader::ProcessingResult BMPImageReader::ProcessRLEData() { - // the image. - const uint8_t count = ReadUint8(0); - const uint8_t code = ReadUint8(1); -- if ((count || (code != 1)) && PastEndOfImage(0)) -+ const bool is_past_end_of_image = PastEndOfImage(0); -+ if ((count || (code != 1)) && is_past_end_of_image) { - return kFailure; -+ } -+ - - // Decode. - if (!count) { -@@ -849,7 +852,9 @@ BMPImageReader::ProcessingResult BMPImageReader::ProcessRLEData() { - (is_top_down_ ? (coord_.Y() < (parent_->Size().Height() - 1)) - : (coord_.Y() > 0))) - buffer_->SetHasAlpha(true); -- ColorCorrectCurrentRow(); -+ if (!is_past_end_of_image) { -+ ColorCorrectCurrentRow(); -+ } - // There's no need to move |coord_| here to trigger the caller - // to call SetPixelsChanged(). If the only thing that's changed - // is the alpha state, that will be properly written into the -@@ -1061,6 +1066,13 @@ void BMPImageReader::ColorCorrectCurrentRow() { - const ColorProfileTransform* const transform = parent_->ColorTransform(); - if (!transform) - return; -+ int decoder_width = parent_->Size().Width(); -+ // Enforce 0 ≤ current row < bitmap height. -+ CHECK_GE(coord_.Y(), 0); -+ CHECK_LT(coord_.Y(), buffer_->Bitmap().height()); -+ // Enforce decoder width == bitmap width exactly. (The bitmap rowbytes might -+ // add a bit of padding, but we are only converting one row at a time.) -+ CHECK_EQ(decoder_width, buffer_->Bitmap().width()); - ImageFrame::PixelData* const row = buffer_->GetAddr(0, coord_.Y()); - const skcms_PixelFormat fmt = XformColorFormat(); - const skcms_AlphaFormat alpha = -@@ -1069,7 +1081,7 @@ void BMPImageReader::ColorCorrectCurrentRow() { - : skcms_AlphaFormat_Unpremul; - const bool success = - skcms_Transform(row, fmt, alpha, transform->SrcProfile(), row, fmt, alpha, -- transform->DstProfile(), parent_->Size().Width()); -+ transform->DstProfile(), decoder_width); - DCHECK(success); - buffer_->SetPixelsChanged(true); - } diff --git a/www/qt5-webengine/files/patch-src_buildtools_config_support.pri b/www/qt5-webengine/files/patch-src_buildtools_config_support.pri index a09e6b92f707..c54180a33f81 100644 --- a/www/qt5-webengine/files/patch-src_buildtools_config_support.pri +++ b/www/qt5-webengine/files/patch-src_buildtools_config_support.pri @@ -1,81 +1,55 @@ -* Rename Python2 functions to generic Python ones [1] * Add support for FreeBSD -[1] Obtained from: - -https://gitlab.archlinux.org/archlinux/packaging/packages/qt5-webengine/-/raw/main/qt5-webengine-python3.patch?ref_type=heads - ---- src/buildtools/config/support.pri.orig 2023-07-20 09:52:10 UTC +--- src/buildtools/config/support.pri.orig 2024-03-27 11:26:34 UTC +++ src/buildtools/config/support.pri @@ -5,7 +5,7 @@ defineReplace(qtwebengine_checkWebEngineCoreError) { # this should match webengine-core-support defineReplace(qtwebengine_checkWebEngineCoreError) { - !linux:!win32:!macos { + !linux:!win32:!macos:!unix { qtwebengine_skipBuild("QtWebEngine can be built only on Linux, Windows or macOS.") return(false) } -@@ -21,17 +21,17 @@ defineReplace(qtwebengine_checkWebEngineCoreError) { - !qtwebengine_checkForGperf(QtWebEngine):return(false) - !qtwebengine_checkForBison(QtWebEngine):return(false) - !qtwebengine_checkForFlex(QtWebEngine):return(false) -- !qtwebengine_checkForPython2(QtWebEngine):return(false) -+ !qtwebengine_checkForPython(QtWebEngine):return(false) +@@ -24,14 +24,14 @@ defineReplace(qtwebengine_checkWebEngineCoreError) { + !qtwebengine_checkForPython(QtWebEngine):return(false) !qtwebengine_checkForNodejs(QtWebEngine):return(false) !qtwebengine_checkForSanitizer(QtWebEngine):return(false) - linux:!qtwebengine_checkForPkgCfg(QtWebEngine):return(false) - linux:!qtwebengine_checkForHostPkgCfg(QtWebEngine):return(false) + unix:!qtwebengine_checkForPkgCfg(QtWebEngine):return(false) + unix:!qtwebengine_checkForHostPkgCfg(QtWebEngine):return(false) linux:!qtwebengine_checkForGlibc(QtWebEngine):return(false) - linux:!qtwebengine_checkForKhronos(QtWebEngine):return(false) - linux:!qtwebengine_checkForPackage(QtWebEngine,nss):return(false) - linux:!qtwebengine_checkForPackage(QtWebEngine,dbus):return(false) - linux:!qtwebengine_checkForPackage(QtWebEngine,fontconfig):return(false) - linux:!qtwebengine_checkForQpaXcb(QtWebEngine):return(false) + unix:!qtwebengine_checkForKhronos(QtWebEngine):return(false) + unix:!qtwebengine_checkForPackage(QtWebEngine,nss):return(false) + unix:!qtwebengine_checkForPackage(QtWebEngine,dbus):return(false) + unix:!qtwebengine_checkForPackage(QtWebEngine,fontconfig):return(false) + unix:!qtwebengine_checkForQpaXcb(QtWebEngine):return(false) win32:!qtwebengine_checkForCompiler64(QtWebEngine):return(false) win32:!qtwebengine_checkForWinVersion(QtWebEngine):return(false) return(true) @@ -39,7 +39,7 @@ defineReplace(qtwebengine_checkPdfError) { # this shuold match webengine-qtpdf-support defineReplace(qtwebengine_checkPdfError) { - !linux:!win32:!macos:!ios { + !linux:!win32:!macos:!ios:!unix { qtwebengine_skipBuild("QtPdf can be built only on Linux, Windows, macOS or iOS.") return(false) } -@@ -51,10 +51,12 @@ defineReplace(qtwebengine_checkPdfError) { - !qtwebengine_checkForGperf(QtPdf):return(false) - !qtwebengine_checkForBison(QtPdf):return(false) +@@ -53,8 +53,8 @@ defineReplace(qtwebengine_checkPdfError) { !qtwebengine_checkForFlex(QtPdf):return(false) -- !qtwebengine_checkForPython2(QtPdf):return(false) -+ !qtwebengine_checkForPython(QtPdf):return(false) + !qtwebengine_checkForPython(QtPdf):return(false) !qtwebengine_checkForSanitizer(QtPdf):return(false) - linux:!qtwebengine_checkForPkgCfg(QtPdf):return(false) - linux:!qtwebengine_checkForHostPkgCfg(QtPdf):return(false) +- linux:!qtwebengine_checkForPkgCfg(QtPdf):return(false) +- linux:!qtwebengine_checkForHostPkgCfg(QtPdf):return(false) + unix:!qtwebengine_checkForPkgCfg(QtPdf):return(false) + unix:!qtwebengine_checkForHostPkgCfg(QtPdf):return(false) win32:!qtwebengine_checkForWinVersion(QtPdf):return(false) return(true) } -@@ -143,10 +145,10 @@ defineTest(qtwebengine_checkForFlex) { - return(true) - } - --defineTest(qtwebengine_checkForPython2) { -+defineTest(qtwebengine_checkForPython) { - module = $$1 -- !qtConfig(webengine-python2) { -- qtwebengine_skipBuild("Python version 2 (2.7.5 or later) is required to build $${module}.") -+ !qtConfig(webengine-python) { -+ qtwebengine_skipBuild("Python is required to build $${module}.") - return(false) - } - return(true) diff --git a/www/qt5-webengine/files/patch-src_buildtools_configure.json b/www/qt5-webengine/files/patch-src_buildtools_configure.json index bc68f912b9b5..65c2d763d63b 100644 --- a/www/qt5-webengine/files/patch-src_buildtools_configure.json +++ b/www/qt5-webengine/files/patch-src_buildtools_configure.json @@ -1,106 +1,64 @@ -* Rename Python2 functions to generic Python ones [1] * Add support for FreeBSD -[1] Obtained from: - -https://gitlab.archlinux.org/archlinux/packaging/packages/qt5-webengine/-/raw/main/qt5-webengine-python3.patch?ref_type=heads - ---- src/buildtools/configure.json.orig 2023-11-09 12:28:27 UTC +--- src/buildtools/configure.json.orig 2024-03-27 11:26:34 UTC +++ src/buildtools/configure.json -@@ -147,7 +147,8 @@ +@@ -148,7 +148,8 @@ "int id = 0;", "fre2.Add(s, {}, &id);", "const RE2 &re2 = fre2.GetRE2(id);" - ] + ], + "qmake" : "CONFIG += c++1z" }, "headers": "re2/filtered_re2.h", "sources": [ -@@ -316,9 +317,9 @@ - "label": "system ninja", - "type": "detectNinja" - }, -- "webengine-python2": { -- "label": "python2", -- "type": "detectPython2", -+ "webengine-python": { -+ "label": "python", -+ "type": "detectPython", - "log": "location" - }, - "webengine-winversion": { -@@ -385,7 +386,7 @@ +@@ -386,7 +387,7 @@ "features": { "webengine-core-support": { "label": "Support Qt WebEngine Core", - "condition": "(config.linux || config.win32 || config.macos) + "condition": "(config.unix || config.win32 || config.macos) && !config.static && module.gui && features.webengine-submodule -@@ -395,24 +396,24 @@ - && features.webengine-gperf - && features.webengine-bison - && features.webengine-flex -- && features.webengine-python2 -+ && features.webengine-python +@@ -399,21 +400,21 @@ + && features.webengine-python && features.webengine-nodejs && (!config.sanitizer || features.webengine-sanitizer) - && (!config.linux || features.pkg-config) - && (!config.linux || features.webengine-host-pkg-config) + && (!config.unix || features.pkg-config) + && (!config.unix || features.webengine-host-pkg-config) && (!config.linux || features.webengine-system-glibc) - && (!config.linux || features.webengine-system-khr) - && (!config.linux || features.webengine-system-nss) - && (!config.linux || features.webengine-system-dbus) - && (!config.linux || features.webengine-system-fontconfig) - && (!config.linux || !features.pkg-config || !features.xcb || features.webengine-ozone-x11) + && (!config.unix || features.webengine-system-khr) + && (!config.unix || features.webengine-system-nss) + && (!config.unix || features.webengine-system-dbus) + && (!config.unix || features.webengine-system-fontconfig) + && (!config.unix || !features.pkg-config || !features.xcb || features.webengine-ozone-x11) && (!config.win32 || features.webengine-win-compiler64) && (!config.win32 || features.webengine-winversion)", "output": [ "privateFeature" ] }, "webengine-qtpdf-support": { "label": "Support Qt Pdf", - "condition": "(config.linux || config.win32 || config.macos || config.ios) + "condition": "(config.unix || config.win32 || config.macos || config.ios) && module.gui && features.webengine-submodule && features.webengine-nowhitespace -@@ -421,10 +422,10 @@ - && features.webengine-gperf - && features.webengine-bison +@@ -424,8 +425,8 @@ && features.webengine-flex -- && features.webengine-python2 -+ && features.webengine-python + && features.webengine-python && (!config.sanitizer || features.webengine-sanitizer) - && (!config.linux || features.pkg-config) - && (!config.linux || features.webengine-host-pkg-config) + && (!config.unix || features.pkg-config) + && (!config.unix || features.webengine-host-pkg-config) && (!config.win32 || features.webengine-winversion)", "output": [ "privateFeature" ] }, -@@ -444,12 +445,12 @@ - "autoDetect": "features.private_tests", - "output": [ "privateFeature" ] - }, -- "webengine-python2": { -- "label": "python2", -- "condition": "tests.webengine-python2", -+ "webengine-python": { -+ "label": "python", -+ "condition": "tests.webengine-python", - "output": [ - "privateFeature", -- { "type": "varAssign", "name": "QMAKE_PYTHON2", "value": "tests.webengine-python2.location" } -+ { "type": "varAssign", "name": "QMAKE_PYTHON", "value": "tests.webengine-python.location" } - ] - }, - "webengine-gperf": { diff --git a/www/qt5-webglplugin/distinfo b/www/qt5-webglplugin/distinfo index 9dc4f6b1e68b..7b47917a2f61 100644 --- a/www/qt5-webglplugin/distinfo +++ b/www/qt5-webglplugin/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809540 -SHA256 (KDE/Qt/5.15.12/kde-qtwebglplugin-5.15.12p0.tar.xz) = b8954afcf846388a2480160e9363f14fcbd79ffe463ee74ad3697e49bcd0e309 -SIZE (KDE/Qt/5.15.12/kde-qtwebglplugin-5.15.12p0.tar.xz) = 53672 +TIMESTAMP = 1711771163 +SHA256 (KDE/Qt/5.15.13/kde-qtwebglplugin-5.15.13p0.tar.xz) = e32e5eace4cb521fe175b137ff7cdef7e9fe5375a180923c24617740dbf89e8b +SIZE (KDE/Qt/5.15.13/kde-qtwebglplugin-5.15.13p0.tar.xz) = 53664 diff --git a/www/qt5-websockets-qml/distinfo b/www/qt5-websockets-qml/distinfo index ea2e23e9a53b..af1a0d120818 100644 --- a/www/qt5-websockets-qml/distinfo +++ b/www/qt5-websockets-qml/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703841366 -SHA256 (KDE/Qt/5.15.12/kde-qtwebsockets-5.15.12p2.tar.xz) = 37be6dac24eaaa58ac9995fbbb29209e8ce949f4a7cfede734cd176c5aa24515 -SIZE (KDE/Qt/5.15.12/kde-qtwebsockets-5.15.12p2.tar.xz) = 237092 +TIMESTAMP = 1711771164 +SHA256 (KDE/Qt/5.15.13/kde-qtwebsockets-5.15.13p2.tar.xz) = 9bbb2a1b028831875bf657e4afefd549ac4d4b8fdf36b843848454c1bb7493b9 +SIZE (KDE/Qt/5.15.13/kde-qtwebsockets-5.15.13p2.tar.xz) = 237296 diff --git a/www/qt5-websockets/distinfo b/www/qt5-websockets/distinfo index 93331e441235..4c17249a280f 100644 --- a/www/qt5-websockets/distinfo +++ b/www/qt5-websockets/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809537 -SHA256 (KDE/Qt/5.15.12/kde-qtwebsockets-5.15.12p2.tar.xz) = 37be6dac24eaaa58ac9995fbbb29209e8ce949f4a7cfede734cd176c5aa24515 -SIZE (KDE/Qt/5.15.12/kde-qtwebsockets-5.15.12p2.tar.xz) = 237092 +TIMESTAMP = 1711771166 +SHA256 (KDE/Qt/5.15.13/kde-qtwebsockets-5.15.13p2.tar.xz) = 9bbb2a1b028831875bf657e4afefd549ac4d4b8fdf36b843848454c1bb7493b9 +SIZE (KDE/Qt/5.15.13/kde-qtwebsockets-5.15.13p2.tar.xz) = 237296 diff --git a/www/qt5-webview/distinfo b/www/qt5-webview/distinfo index d8a8ac8d03f8..54ab4499f0fe 100644 --- a/www/qt5-webview/distinfo +++ b/www/qt5-webview/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809542 -SHA256 (KDE/Qt/5.15.12/kde-qtwebview-5.15.12p0.tar.xz) = d762c6445ce02129a7e7caee03429976d85b5136895de3f1e26c1ac751ab32c1 -SIZE (KDE/Qt/5.15.12/kde-qtwebview-5.15.12p0.tar.xz) = 112556 +TIMESTAMP = 1711771167 +SHA256 (KDE/Qt/5.15.13/kde-qtwebview-5.15.13p0.tar.xz) = b7ca9d2f392ec7ff8aeab4323f12fc9f459d0221a2ca8edbf4df93fb3bbd452d +SIZE (KDE/Qt/5.15.13/kde-qtwebview-5.15.13p0.tar.xz) = 112548 diff --git a/x11-toolkits/qt5-charts/distinfo b/x11-toolkits/qt5-charts/distinfo index e8cf2bc8db94..bacc5c3d1b22 100644 --- a/x11-toolkits/qt5-charts/distinfo +++ b/x11-toolkits/qt5-charts/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809525 -SHA256 (KDE/Qt/5.15.12/kde-qtcharts-5.15.12p0.tar.xz) = faca1b943016c8a46bcc202a230fd172fda3c4199a1e22850f2e9efc63030202 -SIZE (KDE/Qt/5.15.12/kde-qtcharts-5.15.12p0.tar.xz) = 4219108 +TIMESTAMP = 1711771168 +SHA256 (KDE/Qt/5.15.13/kde-qtcharts-5.15.13p0.tar.xz) = 65cd24c3423caf1f3420ad3eb6d8b0bf4c2fab2a3946533cd1e01e8c30ede8de +SIZE (KDE/Qt/5.15.13/kde-qtcharts-5.15.13p0.tar.xz) = 4219188 diff --git a/x11-toolkits/qt5-datavis3d/distinfo b/x11-toolkits/qt5-datavis3d/distinfo index 8e28f829df00..43159bfe38e0 100644 --- a/x11-toolkits/qt5-datavis3d/distinfo +++ b/x11-toolkits/qt5-datavis3d/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809527 -SHA256 (KDE/Qt/5.15.12/kde-qtdatavis3d-5.15.12p0.tar.xz) = fea5491328d45b5013038e38d965c3492d6f6657c33e04ed81de409c328c0a74 -SIZE (KDE/Qt/5.15.12/kde-qtdatavis3d-5.15.12p0.tar.xz) = 5159804 +TIMESTAMP = 1711771169 +SHA256 (KDE/Qt/5.15.13/kde-qtdatavis3d-5.15.13p0.tar.xz) = 186f2dfb218f86af09d9400807d71cc7b4d5a35759f550b8b36903c290efeebe +SIZE (KDE/Qt/5.15.13/kde-qtdatavis3d-5.15.13p0.tar.xz) = 5159904 diff --git a/x11-toolkits/qt5-declarative-test/distinfo b/x11-toolkits/qt5-declarative-test/distinfo index 31f8c9630268..e3313673b82c 100644 --- a/x11-toolkits/qt5-declarative-test/distinfo +++ b/x11-toolkits/qt5-declarative-test/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809496 -SHA256 (KDE/Qt/5.15.12/kde-qtdeclarative-5.15.12p32.tar.xz) = 5ab2a8cd15b43c2f333a9ff9d59c6a511b2616a3644238017f35cc217a83ead0 -SIZE (KDE/Qt/5.15.12/kde-qtdeclarative-5.15.12p32.tar.xz) = 21385552 +TIMESTAMP = 1711771170 +SHA256 (KDE/Qt/5.15.13/kde-qtdeclarative-5.15.13p30.tar.xz) = eb92bd79904a4b922ec127c6bfe1960c5cdafad62ad25595793c8f15297ab8c0 +SIZE (KDE/Qt/5.15.13/kde-qtdeclarative-5.15.13p30.tar.xz) = 21387588 diff --git a/x11-toolkits/qt5-declarative/distinfo b/x11-toolkits/qt5-declarative/distinfo index 418e2bde586a..376ea191cbdf 100644 --- a/x11-toolkits/qt5-declarative/distinfo +++ b/x11-toolkits/qt5-declarative/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809476 -SHA256 (KDE/Qt/5.15.12/kde-qtdeclarative-5.15.12p32.tar.xz) = 5ab2a8cd15b43c2f333a9ff9d59c6a511b2616a3644238017f35cc217a83ead0 -SIZE (KDE/Qt/5.15.12/kde-qtdeclarative-5.15.12p32.tar.xz) = 21385552 +TIMESTAMP = 1711771171 +SHA256 (KDE/Qt/5.15.13/kde-qtdeclarative-5.15.13p30.tar.xz) = eb92bd79904a4b922ec127c6bfe1960c5cdafad62ad25595793c8f15297ab8c0 +SIZE (KDE/Qt/5.15.13/kde-qtdeclarative-5.15.13p30.tar.xz) = 21387588 diff --git a/x11-toolkits/qt5-gamepad/distinfo b/x11-toolkits/qt5-gamepad/distinfo index 9cd8c919d45d..f1c3de053e04 100644 --- a/x11-toolkits/qt5-gamepad/distinfo +++ b/x11-toolkits/qt5-gamepad/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809533 -SHA256 (KDE/Qt/5.15.12/kde-qtgamepad-5.15.12p0.tar.xz) = e8b337a9a681a5090900f053fa2779ec05d8bac5ccb4bd6bbdf4d072e39baef5 -SIZE (KDE/Qt/5.15.12/kde-qtgamepad-5.15.12p0.tar.xz) = 365452 +TIMESTAMP = 1711771172 +SHA256 (KDE/Qt/5.15.13/kde-qtgamepad-5.15.13p0.tar.xz) = 4b96809fafb8896551c8adfd5a503ece46397840aed223f86e7a8fe6e8983065 +SIZE (KDE/Qt/5.15.13/kde-qtgamepad-5.15.13p0.tar.xz) = 365456 diff --git a/x11-toolkits/qt5-gui/distinfo b/x11-toolkits/qt5-gui/distinfo index 8e1999b411b0..56cf2f3cb010 100644 --- a/x11-toolkits/qt5-gui/distinfo +++ b/x11-toolkits/qt5-gui/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809469 -SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f -SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532 +TIMESTAMP = 1711771174 +SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb +SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504 diff --git a/x11-toolkits/qt5-quick3d/distinfo b/x11-toolkits/qt5-quick3d/distinfo index e519d9398f17..4851260cd518 100644 --- a/x11-toolkits/qt5-quick3d/distinfo +++ b/x11-toolkits/qt5-quick3d/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809531 -SHA256 (KDE/Qt/5.15.12/kde-qtquick3d-5.15.12p1.tar.xz) = cb7c4f301048c8a5366b869beeb92b21c48c2c4560c05c2cfad435240df9aed1 -SIZE (KDE/Qt/5.15.12/kde-qtquick3d-5.15.12p1.tar.xz) = 55694720 +TIMESTAMP = 1711771175 +SHA256 (KDE/Qt/5.15.13/kde-qtquick3d-5.15.13p1.tar.xz) = 2d9e45333f5ab46b96909a125729bc51edb7ab6e35deef40e8938ef1f49bc565 +SIZE (KDE/Qt/5.15.13/kde-qtquick3d-5.15.13p1.tar.xz) = 55708128 diff --git a/x11-toolkits/qt5-quickcontrols/distinfo b/x11-toolkits/qt5-quickcontrols/distinfo index 3ab85c6f7dcd..101aa94a5b6b 100644 --- a/x11-toolkits/qt5-quickcontrols/distinfo +++ b/x11-toolkits/qt5-quickcontrols/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809528 -SHA256 (KDE/Qt/5.15.12/kde-qtquickcontrols-5.15.12p0.tar.xz) = c4eeb8ea1beb6fa74acf37568a73889f5418f39fcfe199eb54b273d7ef5b7c45 -SIZE (KDE/Qt/5.15.12/kde-qtquickcontrols-5.15.12p0.tar.xz) = 5956968 +TIMESTAMP = 1711771176 +SHA256 (KDE/Qt/5.15.13/kde-qtquickcontrols-5.15.13p0.tar.xz) = 7bd6ebe30bda438c1c595ae1d0ab0531b050cfeb978410e6961c78a40f4739a8 +SIZE (KDE/Qt/5.15.13/kde-qtquickcontrols-5.15.13p0.tar.xz) = 5954816 diff --git a/x11-toolkits/qt5-quickcontrols2/distinfo b/x11-toolkits/qt5-quickcontrols2/distinfo index 64cd3c07625a..7b4ab3050896 100644 --- a/x11-toolkits/qt5-quickcontrols2/distinfo +++ b/x11-toolkits/qt5-quickcontrols2/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809530 -SHA256 (KDE/Qt/5.15.12/kde-qtquickcontrols2-5.15.12p5.tar.xz) = 7ffdf88df7dd8cf22d48e993790ad074679a38ab8ea055d77c5fa43d865963e2 -SIZE (KDE/Qt/5.15.12/kde-qtquickcontrols2-5.15.12p5.tar.xz) = 8249944 +TIMESTAMP = 1711771177 +SHA256 (KDE/Qt/5.15.13/kde-qtquickcontrols2-5.15.13p5.tar.xz) = 13d582e28ddd5544d078c7fc25a1ab1a57b7d9cb4846db0036670153e0b4b8d4 +SIZE (KDE/Qt/5.15.13/kde-qtquickcontrols2-5.15.13p5.tar.xz) = 8250152 diff --git a/x11-toolkits/qt5-quicktimeline/distinfo b/x11-toolkits/qt5-quicktimeline/distinfo index 0fe1c1e68505..346015a27a7c 100644 --- a/x11-toolkits/qt5-quicktimeline/distinfo +++ b/x11-toolkits/qt5-quicktimeline/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703841386 -SHA256 (KDE/Qt/5.15.12/kde-qtquicktimeline-5.15.12p0.tar.xz) = 59db9995660a50fd3e1f93cba2f1d906be7d3359ca7109c24d81b395307e6763 -SIZE (KDE/Qt/5.15.12/kde-qtquicktimeline-5.15.12p0.tar.xz) = 82148 +TIMESTAMP = 1711771178 +SHA256 (KDE/Qt/5.15.13/kde-qtquicktimeline-5.15.13p0.tar.xz) = df4ed9c56f7ef47b25dbe708bc1be142592788081cf0649f1040415d090a1fa4 +SIZE (KDE/Qt/5.15.13/kde-qtquicktimeline-5.15.13p0.tar.xz) = 82128 diff --git a/x11-toolkits/qt5-uiplugin/distinfo b/x11-toolkits/qt5-uiplugin/distinfo index 09309d6a7f03..a7dc15b5d797 100644 --- a/x11-toolkits/qt5-uiplugin/distinfo +++ b/x11-toolkits/qt5-uiplugin/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809486 -SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c -SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464 +TIMESTAMP = 1711771179 +SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7 +SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980 diff --git a/x11-toolkits/qt5-virtualkeyboard/distinfo b/x11-toolkits/qt5-virtualkeyboard/distinfo index a16adcfa22cc..2cb240d9d83f 100644 --- a/x11-toolkits/qt5-virtualkeyboard/distinfo +++ b/x11-toolkits/qt5-virtualkeyboard/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809534 -SHA256 (KDE/Qt/5.15.12/kde-qtvirtualkeyboard-5.15.12p0.tar.xz) = b768f5f1a0d709ea17b68134a96c62f599c5d6618c9c6e1bf38438a5dbaf8060 -SIZE (KDE/Qt/5.15.12/kde-qtvirtualkeyboard-5.15.12p0.tar.xz) = 10931040 +TIMESTAMP = 1711771180 +SHA256 (KDE/Qt/5.15.13/kde-qtvirtualkeyboard-5.15.13p0.tar.xz) = 31dbfc505c1bd593f5f0c677ef1d2a48030501c2cb818fd6bccdc1edb5a30efe +SIZE (KDE/Qt/5.15.13/kde-qtvirtualkeyboard-5.15.13p0.tar.xz) = 10934096 diff --git a/x11-toolkits/qt5-widgets/distinfo b/x11-toolkits/qt5-widgets/distinfo index 8a7857db7f06..7d0ed60996d2 100644 --- a/x11-toolkits/qt5-widgets/distinfo +++ b/x11-toolkits/qt5-widgets/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809471 -SHA256 (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = bca3c00f7bf842b3ee7c8c3c89ec369c3fb25cfc24bf705c6d1f6ce7e2882c5f -SIZE (KDE/Qt/5.15.12/kde-qtbase-5.15.12p148.tar.xz) = 50366532 +TIMESTAMP = 1711771182 +SHA256 (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 1fa166c50478b5d09250a352912449e16d6ad73de46275d92d0b4b90abe2dcdb +SIZE (KDE/Qt/5.15.13/kde-qtbase-5.15.13p142.tar.xz) = 50408504 diff --git a/x11/qt5-qev/distinfo b/x11/qt5-qev/distinfo index 5ea85ea5ac19..32d519ec1552 100644 --- a/x11/qt5-qev/distinfo +++ b/x11/qt5-qev/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703841392 -SHA256 (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 1786e2bc40586429f2cd5581cb307d728c770125e08c08949bfa3f659e916b0c -SIZE (KDE/Qt/5.15.12/kde-qttools-5.15.12p4.tar.xz) = 8844464 +TIMESTAMP = 1711771183 +SHA256 (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 6d1cceb50a604c95869adbe5aebebff7c205787a93adb7bfe89ef29b38071db7 +SIZE (KDE/Qt/5.15.13/kde-qttools-5.15.13p4.tar.xz) = 8843980 diff --git a/x11/qt5-x11extras/distinfo b/x11/qt5-x11extras/distinfo index 14fb6e69366b..87c400edc667 100644 --- a/x11/qt5-x11extras/distinfo +++ b/x11/qt5-x11extras/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1703809536 -SHA256 (KDE/Qt/5.15.12/kde-qtx11extras-5.15.12p0.tar.xz) = da5bfacdf4c638d5095c2464c6b98e3b309b3ed52bcfab4bff797e456fa0c9d7 -SIZE (KDE/Qt/5.15.12/kde-qtx11extras-5.15.12p0.tar.xz) = 123248 +TIMESTAMP = 1711771184 +SHA256 (KDE/Qt/5.15.13/kde-qtx11extras-5.15.13p0.tar.xz) = 3459673a4fd7da6595bb35da12e8677c54ec2fa42d1effccfb6b2a6c497e6a35 +SIZE (KDE/Qt/5.15.13/kde-qtx11extras-5.15.13p0.tar.xz) = 123296