Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 19 Nov 2023 23:27:03 GMT
From:      "Jason E. Hale" <jhale@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: d53807cc0e30 - main - qt5-webengine: Track 5.15 branch
Message-ID:  <202311192327.3AJNR3LS018928@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by jhale:

URL: https://cgit.FreeBSD.org/ports/commit/?id=d53807cc0e309a0f9dc9be2931e9681281184403

commit d53807cc0e309a0f9dc9be2931e9681281184403
Author:     Jason E. Hale <jhale@FreeBSD.org>
AuthorDate: 2023-11-19 19:37:26 +0000
Commit:     Jason E. Hale <jhale@FreeBSD.org>
CommitDate: 2023-11-19 23:26:33 +0000

    qt5-webengine: Track 5.15 branch
    
    Since we roll our own distfile, this will make it easier to stay caught
    up with backported Chromium security patches. Currently, it is patched
    up to Chromium version 119.0.6045.123.
    
    Fix build with newer devel/re2 and unbundle. Add a few patches that
    reduce warnings that significantly increase build log size, some coming
    as a result of having to build with c++17 now.
    
    Add patches from Arch Linux [1] to finally remove dependency on the
    long-expired Python 2.7. Special thanks to kai@ for reworking theses
    patches for FreeBSD and testing them.
    
    Obtained from:  https://gitlab.archlinux.org/archlinux/packaging/packages/qt5-webengine/ [1]
    MFH:            2023Q4
    Security:       6e4e8e87-9fb8-4e32-9f8e-9b4303f4bfd5
    Security:       88754d55-521a-11ee-8290-a8a1599412c6
    Security:       5666688f-803b-4cf0-9cb1-08c088f2225a
    Security:       df0a2fd1-4c92-11ee-8290-a8a1599412c6
---
 Mk/Uses/qt-dist.mk                                 |    5 +-
 www/qt5-webengine/Makefile                         |    7 +-
 www/qt5-webengine/distinfo                         |    6 +-
 www/qt5-webengine/files/patch-configure.pri        |   67 +-
 .../files/patch-mkspecs_features_functions.prf     |   33 +-
 www/qt5-webengine/files/patch-python3-chromium     | 2140 ++++++++++++++++++++
 ...h-src_3rdparty_chromium_base_ranges_algorithm.h |   15 +
 ...ium_base_task_thread__pool_job__task__source.cc |   14 +
 ...tch-src_3rdparty_chromium_base_template__util.h |   27 +
 ...rdparty_chromium_base_threading_hang__watcher.h |   12 +
 ...rdparty_chromium_build_config_compiler_BUILD.gn |   47 +-
 ...gpu_command__buffer_service_program__manager.cc |   11 +-
 ...crolling_text__fragment__selector__generator.cc |   10 +
 ...third__party_pdfium_fxjs_cjs__publicmethods.cpp |    4 +-
 ...party_pdfium_third__party_base_template__util.h |   27 +
 ...tto_include_perfetto_ext_base_circular__queue.h |   20 +-
 ...perfetto_include_perfetto_ext_base_subprocess.h |   11 +
 .../patch-src_3rdparty_gn_base_template__util.h    |   27 +
 .../files/patch-src_buildtools_config_support.pri  |   42 +-
 .../files/patch-src_buildtools_configure.json      |   66 +-
 .../files/patch-src_core_config_linux.pri          |    8 -
 .../files/patch-src_core_core__common.pri          |   11 +
 .../patch-src_core_qtwebengine__resources.gni      |   24 +
 ...ne__convert__dict_qwebengine__convert__dict.pro |   11 +
 24 files changed, 2581 insertions(+), 64 deletions(-)

diff --git a/Mk/Uses/qt-dist.mk b/Mk/Uses/qt-dist.mk
index 68827ad7e620..df0f45d1c5a7 100644
--- a/Mk/Uses/qt-dist.mk
+++ b/Mk/Uses/qt-dist.mk
@@ -135,7 +135,8 @@ _KDE_translations=	0
 _KDE_virtualkeyboard=	0
 _KDE_wayland=		59
 _KDE_webchannel=	3
-_KDE_webengine=			0
+_KDE_webengine=			11
+_KDE_webengine_BRANCH=		5.15
 _KDE_webengine_ORIGIN_TAG=	v5.15.15-lts
 _KDE_webengine_VERSION=		5.15.15
 _KDE_webglplugin=	0
@@ -146,7 +147,7 @@ _KDE_xmlpatterns=	0
 
 .    if defined(_KDE_${_QT_DIST})
 .      if defined(_KDE_${_QT_DIST}_ORIGIN_TAG)
-_KDE_${_QT_DIST}_BRANCH=	${_KDE_${_QT_DIST}_VERSION}
+_KDE_${_QT_DIST}_BRANCH?=	${_KDE_${_QT_DIST}_VERSION}
 .      else
 _KDE_${_QT_DIST}_BRANCH=	kde/5.15
 COMMENT+=			(KDE patched)
diff --git a/www/qt5-webengine/Makefile b/www/qt5-webengine/Makefile
index 9913c92faa68..0f2fbe833971 100644
--- a/www/qt5-webengine/Makefile
+++ b/www/qt5-webengine/Makefile
@@ -43,6 +43,7 @@ LIB_DEPENDS=	libavcodec.so:multimedia/ffmpeg \
 		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
@@ -80,7 +81,7 @@ SNDIO_VARS_OFF=		QMAKE_CONFIGURE_ARGS+=-no-sndio
 # 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:2.7,build qmake:norecursive,outsource \
+		perl5 pkgconfig python:build qmake:norecursive,outsource \
 		qt-dist:5,webengine shebangfix xorg
 USE_GL=		gl
 USE_GNOME=	glib20 libxml2 libxslt
@@ -147,6 +148,8 @@ post-patch:
 		${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*} || ${ARCH} == sparc64
 	@${REINPLACE_CMD} -e 's/icudtl.dat/icudtb.dat/' \
@@ -165,8 +168,8 @@ pre-configure:
 # Rerun syncqt.pl -- otherwise the resulting package misses some forwarding headers.
 	cd ${WRKSRC} && ${QT_BINDIR}/syncqt.pl -version ${QT5_VERSION}
 
-# Fix version mismatches for CMake
 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
diff --git a/www/qt5-webengine/distinfo b/www/qt5-webengine/distinfo
index 29cf9116a9e9..79b60c2ddad1 100644
--- a/www/qt5-webengine/distinfo
+++ b/www/qt5-webengine/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1694754981
-SHA256 (KDE/Qt/5.15.15/kde-qtwebengine-5.15.15p0.tar.xz) = 1251d3fb06033483b4252ff43f1a5a11edfa00ec0746dd89787a8ce15654e442
-SIZE (KDE/Qt/5.15.15/kde-qtwebengine-5.15.15p0.tar.xz) = 315062708
+TIMESTAMP = 1700087947
+SHA256 (KDE/Qt/5.15.15/kde-qtwebengine-5.15.15p11.tar.xz) = e9cb2c943d411b06e559829ac8cdc31ea5612a35cf8e0b5554974394686508eb
+SIZE (KDE/Qt/5.15.15/kde-qtwebengine-5.15.15p11.tar.xz) = 314961788
diff --git a/www/qt5-webengine/files/patch-configure.pri b/www/qt5-webengine/files/patch-configure.pri
index 2db5be749dfe..32fe11de92cd 100644
--- a/www/qt5-webengine/files/patch-configure.pri
+++ b/www/qt5-webengine/files/patch-configure.pri
@@ -1,12 +1,69 @@
---- configure.pri.orig	2020-11-07 01:22:36 UTC
+* 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
-@@ -123,6 +123,9 @@ defineTest(qtConfTest_detectPlatform) {
+@@ -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) {
+     }
      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 7410d6d6af83..b8ac1d14ef88 100644
--- a/www/qt5-webengine/files/patch-mkspecs_features_functions.prf
+++ b/www/qt5-webengine/files/patch-mkspecs_features_functions.prf
@@ -1,6 +1,29 @@
---- mkspecs/features/functions.prf.orig	2021-12-15 16:12:54 UTC
+* 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
-@@ -84,6 +84,10 @@ defineReplace(gnWebEngineArgs) {
+@@ -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)
      }
@@ -11,7 +34,7 @@
      isEmpty(gn_args): error(No gn_args found please make sure you have valid configuration.)
      return($$gn_args)
  }
-@@ -93,6 +97,7 @@ defineReplace(gnPdfArgs) {
+@@ -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)
@@ -19,7 +42,7 @@
      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)
-@@ -107,6 +112,7 @@ defineReplace(gnArch) {
+@@ -112,6 +117,7 @@ defineReplace(gnArch) {
      contains(qtArch, "mips"): return(mipsel)
      contains(qtArch, "mips64"): return(mips64el)
      contains(qtArch, "mips64el"): return(mips64el)
@@ -27,7 +50,7 @@
      return(unknown)
  }
  
-@@ -114,6 +120,7 @@ defineReplace(gnOS) {
+@@ -119,6 +125,7 @@ defineReplace(gnOS) {
      macos: return(mac)
      win32: return(win)
      linux: return(linux)
diff --git a/www/qt5-webengine/files/patch-python3-chromium b/www/qt5-webengine/files/patch-python3-chromium
new file mode 100644
index 000000000000..b9b730755db2
--- /dev/null
+++ b/www/qt5-webengine/files/patch-python3-chromium
@@ -0,0 +1,2140 @@
+* 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<intptr_t>({}),".format(name)),
*** 2065 LINES SKIPPED ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202311192327.3AJNR3LS018928>