Github messages for voidlinux
 help / color / mirror / Atom feed
From: MechDR <MechDR@users.noreply.github.com>
To: ml@inbox.vuxu.org
Subject: Re: [PR PATCH] [Updated] AnyDesk: update to 6.3.0, add armv7 support
Date: Fri, 15 Dec 2023 02:58:41 +0100	[thread overview]
Message-ID: <20231215015841.My4AScTzs0GxJiwZaz3FTYGj6tXsZKoAFgpxTB5otIs@z> (raw)
In-Reply-To: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-47656@inbox.vuxu.org>

[-- Attachment #1: Type: text/plain, Size: 1121 bytes --]

There is an updated pull request by MechDR against master on the void-packages repository

https://github.com/MechDR/void-packages anydesk
https://github.com/void-linux/void-packages/pull/47656

AnyDesk: update to 6.3.0, add armv7 support
Updated AnyDesk to version 6.3.0 and added repackage support for ARMv7 on RPi. Should also work on anything that is not an RPi but uses ARMv7HF or ARMv7L.

The binaries are only for the RPi3, so they are 32-bit only. AnyDesk still doesn't have any ARM64 binaries, so no RPi4 support. But, in theory, they should run without a problem on any ARMv7HF/L device.

Don't know if multilib is a thing on ARM64... I presume not...

<!-- Uncomment relevant sections and delete options which are not applicable -->

#### Testing the changes
- I tested the changes in this PR: **YES**

#### Local build testing
- I built this PR locally for my native architecture, (x86_64-glibc)
- I built this PR locally for these architectures (if supported. mark crossbuilds):
  - armv7l
  - armv7hf

A patch file from https://github.com/void-linux/void-packages/pull/47656.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-anydesk-47656.patch --]
[-- Type: text/x-diff, Size: 152231 bytes --]

From 43595210b52241ce184b1316c72f32eaed11c230 Mon Sep 17 00:00:00 2001
From: 0x5c <dev@0x5c.io>
Date: Wed, 13 Dec 2023 18:49:04 -0500
Subject: [PATCH] AnyDesk

---
 common/shlibs                                 |   3 +-
 srcpkgs/anydesk/template                      |  27 +-
 srcpkgs/atuin/template                        |   1 +
 srcpkgs/calibre/patches/python-3.12.patch     |  11 +
 srcpkgs/calibre/template                      |  34 +-
 srcpkgs/chromium/files/chromium.desktop       | 112 ----
 .../files/musl-patches/libc++-musl.patch      |  12 +
 .../chromium-118-python-3.12-deprecated.patch | 138 -----
 ...karound_clang_bug-structured_binding.patch |  96 ----
 .../patches/chromium-119-constexpr.patch      |  12 -
 ...tVideoDecoder-flag-on-VA-API-devices.patch | 195 -------
 ...-119-nullptr_t-without-namespace-std.patch |  21 -
 ...a-use-separate-bo-to-verify-modifier.patch | 164 ------
 .../chromium-120-arm64-memory_tagging.patch   |  14 +
 ...hromium-120-disable-FFmpegAllowLists.patch |  12 +
 ...ble-GlobalMediaControlsCastStartStop.patch |  14 +
 ...chromium-120-el7-clang-build-failure.patch | 230 ++++++++
 ...ium-120-el7-clang-build-failure.patch.args |   1 +
 ...romium-120-el7-clang-version-warning.patch |  16 +
 .../chromium-120-gn-workaround-atspi.patch    |  13 +
 ...> chromium-120-missing-header-files.patch} |  11 -
 ...hromium-120-no_matching_constructor.patch} | 493 ++++++++++--------
 ...20-split-threshold-for-reg-with-hint.patch |  28 +
 ...name.patch => chromium-120-typename.patch} |  41 ++
 ...karound_clang_bug-structured_binding.patch |  51 ++
 ...x-aarch64-musl-memory-tagging-macros.patch |   4 +-
 .../chromium/patches/musl-no-execinfo.patch   |   9 -
 .../chromium/patches/musl-no-mallinfo.patch   |   8 +-
 .../patches/musl-partition-atfork.patch       |   4 +-
 srcpkgs/chromium/patches/no-mte.patch         |  11 -
 srcpkgs/chromium/template                     |  38 +-
 srcpkgs/chromium/update                       |   4 +-
 srcpkgs/discord-ptb/template                  |   4 +-
 srcpkgs/hexyl/template                        |   4 +-
 srcpkgs/horizon/template                      |   4 +-
 srcpkgs/jq/template                           |   5 +-
 srcpkgs/knot/template                         |   4 +-
 srcpkgs/krename/patches/podofo-0.10.patch     | 107 ++++
 srcpkgs/krename/template                      |   2 +-
 srcpkgs/libpodofo0.9.7-devel                  |   1 +
 srcpkgs/libpodofo0.9.7/template               |  26 +
 srcpkgs/libxslt/template                      |   2 +-
 srcpkgs/linux6.6/template                     |   4 +-
 srcpkgs/mpvpaper/template                     |   4 +-
 srcpkgs/perl-Mozilla-CA/template              |   4 +-
 srcpkgs/podofo/template                       |  26 +-
 srcpkgs/scribus/template                      |   4 +-
 srcpkgs/vhs/template                          |   6 +-
 48 files changed, 958 insertions(+), 1077 deletions(-)
 create mode 100644 srcpkgs/calibre/patches/python-3.12.patch
 delete mode 100644 srcpkgs/chromium/files/chromium.desktop
 create mode 100644 srcpkgs/chromium/files/musl-patches/libc++-musl.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-118-python-3.12-deprecated.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-118-workaround_clang_bug-structured_binding.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-119-constexpr.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-119-hide-UseChromeOSDirectVideoDecoder-flag-on-VA-API-devices.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-119-nullptr_t-without-namespace-std.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-119-nvidia-use-separate-bo-to-verify-modifier.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-120-arm64-memory_tagging.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-120-disable-FFmpegAllowLists.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-120-disable-GlobalMediaControlsCastStartStop.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-120-el7-clang-build-failure.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-120-el7-clang-build-failure.patch.args
 create mode 100644 srcpkgs/chromium/patches/chromium-120-el7-clang-version-warning.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-120-gn-workaround-atspi.patch
 rename srcpkgs/chromium/patches/{chromium-119-missing-header-files.patch => chromium-120-missing-header-files.patch} (97%)
 rename srcpkgs/chromium/patches/{chromium-119-no_matching_constructor.patch => chromium-120-no_matching_constructor.patch} (67%)
 create mode 100644 srcpkgs/chromium/patches/chromium-120-split-threshold-for-reg-with-hint.patch
 rename srcpkgs/chromium/patches/{chromium-117-typename.patch => chromium-120-typename.patch} (83%)
 create mode 100644 srcpkgs/chromium/patches/chromium-120-workaround_clang_bug-structured_binding.patch
 delete mode 100644 srcpkgs/chromium/patches/no-mte.patch
 create mode 100644 srcpkgs/krename/patches/podofo-0.10.patch
 create mode 120000 srcpkgs/libpodofo0.9.7-devel
 create mode 100644 srcpkgs/libpodofo0.9.7/template

diff --git a/common/shlibs b/common/shlibs
index 5757ec96c6601..66d0045a2898f 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -2557,7 +2557,8 @@ libndpi.so.3 ndpi-3.4_1
 libKF5WidgetsAddons.so.5 kwidgetsaddons-5.26.0_1
 libsearpc.so.1 libsearpc-3.0.7_1
 libseafile.so.0 seafile-libclient-7.0.10_2
-libpodofo.so.0.9.7 libpodofo-0.9.7_2
+libpodofo.so.0.9.7 libpodofo0.9.7-0.9.7_1
+libpodofo.so.2 libpodofo-0.10.3_1
 libIrcUtil.so.3 libcommuni-3.4.0_1
 libIrcCore.so.3 libcommuni-3.4.0_1
 libIrcModel.so.3 libcommuni-3.4.0_1
diff --git a/srcpkgs/anydesk/template b/srcpkgs/anydesk/template
index eaec4b93ad602..5845dcba70ab8 100644
--- a/srcpkgs/anydesk/template
+++ b/srcpkgs/anydesk/template
@@ -1,31 +1,36 @@
 # Template file for 'anydesk'
 pkgname=anydesk
-version=6.2.1
+version=6.3.0
 revision=1
-archs="x86_64"
+archs="x86_64 armv7l armv7hf"
 create_wrksrc=yes
 hostmakedepends="patchelf"
 depends="hicolor-icon-theme gtkglext"
 short_desc="Fast remote desktop application"
 maintainer="mobinmob <mobinmob@disroot.org>"
 license="custom:Proprietary"
-#Free for personal use. Terms and conditions:https://anydesk.com/en/terms
+#Free for personal use. Terms and conditions: https://anydesk.com/en/terms
 homepage="https://anydesk.com/remote-desktop"
 nopie=yes
 restricted=yes
 
-distfiles="https://download.anydesk.com/linux/anydesk_${version}-1_x86_64.rpm
-	https://download.anydesk.com/linux/anydesk-${version}-amd64.tar.gz"
-checksum="68f8395a0c84f2560ffa425497fbf9846a61bb2dbc4b1010a8ffca7856514ab2
- 96a7ded2144ecdaff381c34e49eee3275caaaac00847e91abf5e7783706c989c"
-
+case "${XBPS_TARGET_MACHINE}" in
+	x86_64)
+		distfiles="https://download.anydesk.com/linux/anydesk_${version}-1_amd64.deb"
+		checksum="30f6e44cea28428d1cb645055fae72cf166f63318e0c94f2c12d18a3614ce30c"
+		;;
+	armv7*)
+		distfiles="https://download.anydesk.com/rpi/anydesk_${version}-1_armhf.deb"
+		checksum="10a8f442877d65458c800da2a4c772532c178a675c55604cca66156a5c812e1a"
+		;;
+esac
 
 do_build() {
 	patchelf --remove-needed libpangox-1.0.so.0 usr/bin/anydesk
 }
 
 do_install() {
-	vlicense "${pkgname}-${version}"/copyright
-	rm -rf "${pkgname}-${version}"
-	vcopy "*" /
+        echo "See: https://anydesk.com/en/terms" > LICENSE
+        vlicense LICENSE
+        vcopy usr /
 }
diff --git a/srcpkgs/atuin/template b/srcpkgs/atuin/template
index b3e264474336a..cd75af0b2d188 100644
--- a/srcpkgs/atuin/template
+++ b/srcpkgs/atuin/template
@@ -12,6 +12,7 @@ short_desc="Magical shell history"
 maintainer="Marcin Puc <tranzystorek.io@protonmail.com>"
 license="MIT"
 homepage="https://atuin.sh"
+changelog="https://raw.githubusercontent.com/atuinsh/atuin/main/CHANGELOG.md"
 distfiles="https://github.com/atuinsh/atuin/archive/refs/tags/v${version}.tar.gz"
 checksum=6a0b1542e7061e6a5bcdf3c284d3ad386e3504e040fcfa1500f530a5125b37b8
 
diff --git a/srcpkgs/calibre/patches/python-3.12.patch b/srcpkgs/calibre/patches/python-3.12.patch
new file mode 100644
index 0000000000000..8c309453a8d80
--- /dev/null
+++ b/srcpkgs/calibre/patches/python-3.12.patch
@@ -0,0 +1,11 @@
+--- a/calibre/src/templite/__init__.py
++++ b/calibre/src/templite/__init__.py
+@@ -30,7 +30,7 @@ import sys, re
+ from polyglot.builtins import unicode_type
+ 
+ class Templite:
+-    auto_emit = re.compile('(^[\'\"])|(^[a-zA-Z0-9_\[\]\'\"]+$)')
++    auto_emit = re.compile('(^[\'\"])|(^[a-zA-Z0-9_\\[\\]\'\"]+$)')
+ 
+     def __init__(self, template, start='${', end='}$'):
+         if len(start) != 2 or len(end) != 2:
diff --git a/srcpkgs/calibre/template b/srcpkgs/calibre/template
index 37b5c4c2a4f77..c6adc019548f7 100644
--- a/srcpkgs/calibre/template
+++ b/srcpkgs/calibre/template
@@ -1,7 +1,7 @@
 # Template file for 'calibre'
 pkgname=calibre
-version=6.17.0
-revision=4
+version=7.1.0
+revision=1
 build_wrksrc=calibre
 build_style=python3-module
 pycompile_dirs="/usr/lib/calibre/"
@@ -9,14 +9,14 @@ hostmakedepends="pkg-config cmake python3-BeautifulSoup4 python3-Pillow
  python3-apsw python3-css-parser python3-dateutil sip qt6-base python3-py7zr
  python3-html5-parser python3-msgpack python3-regex python3-mechanize
  mathjax liberation-fonts-ttf python3-zeroconf xdg-utils rapydscript-ng
- python3-PyQt-builder python3-Markdown"
+ python3-PyQt-builder python3-Markdown python3-xxhash"
 makedepends="libinput-devel libmagick-devel libmtp-devel libstemmer-devel
  libpodofo-devel libwmf-devel libxkbcommon-devel poppler-cpp-devel
  freetype-devel uchardet-devel openssl-devel icu-devel libusb-devel
  sqlite-devel tslib-devel hunspell-devel hyphen-devel libstemmer-devel
  python3-pyqt6-devel python3-pyqt6-webengine-devel"
 depends="desktop-file-utils optipng poppler python3-BeautifulSoup4
- qt6-imageformats python3-Pygments python3-pycryptodome
+ qt6-imageformats python3-Pygments python3-pycryptodome python3-xxhash
  python3-Markdown python3-Pillow python3-zeroconf python3-Pygments python3-apsw
  python3-css-parser python3-cssselect python3-dateutil python3-jeepney
  python3-dnspython python3-feedparser python3-html5-parser python3-mechanize
@@ -26,18 +26,18 @@ depends="desktop-file-utils optipng poppler python3-BeautifulSoup4
  python3-pyqt6-network python3-pyqt6-dbus python3-pyqt6-opengl-widgets
  python3-pyqt6-widgets python3-pyqt6-gui python3-pyqt6-declarative
  python3-pyqt6-printsupport python3-pyqt6-webchannel python3-pyqt6-svg
- python3-pyqt6-webengine python3-fonttools"
+ python3-pyqt6-pdf python3-pyqt6-webengine python3-fonttools"
 checkdepends="${depends} libjpeg-turbo-tools jxrlib"
 short_desc="Ebook management application"
 maintainer="skmpz <dem.procopiou@gmail.com>"
 license="GPL-3.0-only"
 homepage="https://calibre-ebook.com"
 changelog="https://raw.githubusercontent.com/kovidgoyal/calibre/master/Changelog.txt"
-_lover=7.4.3.2
+_lover=7.6.0.3
 distfiles="https://download.calibre-ebook.com/${version}/calibre-${version}.tar.xz
  https://download.documentfoundation.org/libreoffice/src/${_lover%.*}/libreoffice-dictionaries-${_lover}.tar.xz"
-checksum="1ca4abb8a5d850c1f5963e37080dd1a7795736538d5c4d4ff6014b687d7a368e
- 3a55d5807b763827f820c4aee0a0fd9f44520e70629c9eb9748e1f8c57c64389"
+checksum="70a515fad059e597579282dd24f75444a9d63f90798330944107a1550211824a
+ b932cdd6bd2ee717f3a09766c88fe90100b0c2c0509313c3ee297f95c084ee2e"
 python_version=3
 lib32disabled=yes
 nocross=yes
@@ -84,16 +84,16 @@ do_build() {
 		--path-to-liberation_fonts /usr/share/fonts/TTF/liberation
 	python3 setup.py mathjax \
 		--path-to-mathjax /usr/share/mathjax --system-mathjax
-	python3 setup.py iso639
-	python3 setup.py iso3166
+	# python3 setup.py iso639
+	# python3 setup.py iso3166
 	# python3 setup.py recent_uas
-	python3 setup.py rapydscript
-	python3 setup.py translations
-	python3 setup.py resources \
-		--path-to-hyphenation "$wrksrc/libreoffice-${_lover}/dictionaries" \
-		--system-liberation_fonts \
-		--path-to-liberation_fonts /usr/share/fonts/TTF/liberation \
-		--path-to-mathjax /usr/share/mathjax --system-mathjax
+	# python3 setup.py rapydscript
+	# python3 setup.py translations
+	# python3 setup.py resources \
+	# 	--path-to-hyphenation "$wrksrc/libreoffice-${_lover}/dictionaries" \
+	# 	--system-liberation_fonts \
+	# 	--path-to-liberation_fonts /usr/share/fonts/TTF/liberation \
+	# 	--path-to-mathjax /usr/share/mathjax --system-mathjax
 }
 
 do_check() {
diff --git a/srcpkgs/chromium/files/chromium.desktop b/srcpkgs/chromium/files/chromium.desktop
deleted file mode 100644
index 05788f7135daa..0000000000000
--- a/srcpkgs/chromium/files/chromium.desktop
+++ /dev/null
@@ -1,112 +0,0 @@
-[Desktop Entry]
-Name=Chromium
-# Only KDE 4 seems to use GenericName, so we reuse the KDE strings.
-# From Ubuntu's language-pack-kde-XX-base packages, version 9.04-20090413.
-GenericName=Web Browser
-GenericName[ar]=متصفح الشبكة
-GenericName[bg]=Уеб браузър
-GenericName[ca]=Navegador web
-GenericName[cs]=WWW prohlížeč
-GenericName[da]=Browser
-GenericName[de]=Web-Browser
-GenericName[el]=Περιηγητής ιστού
-GenericName[en_GB]=Web Browser
-GenericName[es]=Navegador web
-GenericName[et]=Veebibrauser
-GenericName[fi]=WWW-selain
-GenericName[fr]=Navigateur Web
-GenericName[gu]=વેબ બ્રાઉઝર
-GenericName[he]=דפדפן אינטרנט
-GenericName[hi]=वेब ब्राउज़र
-GenericName[hu]=Webböngésző
-GenericName[it]=Browser Web
-GenericName[ja]=ウェブブラウザ
-GenericName[kn]=ಜಾಲ ವೀಕ್ಷಕ
-GenericName[ko]=웹 브라우저
-GenericName[lt]=Žiniatinklio naršyklė
-GenericName[lv]=Tīmekļa pārlūks
-GenericName[ml]=വെബ് ബ്രൌസര്‍
-GenericName[mr]=वेब ब्राऊजर
-GenericName[nb]=Nettleser
-GenericName[nl]=Webbrowser
-GenericName[pl]=Przeglądarka WWW
-GenericName[pt]=Navegador Web
-GenericName[pt_BR]=Navegador da Internet
-GenericName[ro]=Navigator de Internet
-GenericName[ru]=Веб-браузер
-GenericName[sl]=Spletni brskalnik
-GenericName[sv]=Webbläsare
-GenericName[ta]=இணைய உலாவி
-GenericName[th]=เว็บเบราว์เซอร์
-GenericName[tr]=Web Tarayıcı
-GenericName[uk]=Навігатор Тенет
-GenericName[zh_CN]=网页浏览器
-GenericName[zh_HK]=網頁瀏覽器
-GenericName[zh_TW]=網頁瀏覽器
-# Not translated in KDE, from Epiphany 2.26.1-0ubuntu1.
-GenericName[bn]=ওয়েব ব্রাউজার
-GenericName[fil]=Web Browser
-GenericName[hr]=Web preglednik
-GenericName[id]=Browser Web
-GenericName[or]=ଓ୍ବେବ ବ୍ରାଉଜର
-GenericName[sk]=WWW prehliadač
-GenericName[sr]=Интернет прегледник
-GenericName[te]=మహాతల అన్వేషి
-GenericName[vi]=Bộ duyệt Web
-# Gnome and KDE 3 uses Comment.
-Comment=Access the Internet
-Comment[ar]=الدخول إلى الإنترنت
-Comment[bg]=Достъп до интернет
-Comment[bn]=ইন্টারনেটটি অ্যাক্সেস করুন
-Comment[ca]=Accedeix a Internet
-Comment[cs]=Přístup k internetu
-Comment[da]=Få adgang til internettet
-Comment[de]=Internetzugriff
-Comment[el]=Πρόσβαση στο Διαδίκτυο
-Comment[en_GB]=Access the Internet
-Comment[es]=Accede a Internet.
-Comment[et]=Pääs Internetti
-Comment[fi]=Käytä internetiä
-Comment[fil]=I-access ang Internet
-Comment[fr]=Accéder à Internet
-Comment[gu]=ઇંટરનેટ ઍક્સેસ કરો
-Comment[he]=גישה אל האינטרנט
-Comment[hi]=इंटरनेट तक पहुंच स्थापित करें
-Comment[hr]=Pristup Internetu
-Comment[hu]=Internetelérés
-Comment[id]=Akses Internet
-Comment[it]=Accesso a Internet
-Comment[ja]=インターネットにアクセス
-Comment[kn]=ಇಂಟರ್ನೆಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಿ
-Comment[ko]=인터넷 연결
-Comment[lt]=Interneto prieiga
-Comment[lv]=Piekļūt internetam
-Comment[ml]=ഇന്റര്‍‌നെറ്റ് ആക്‌സസ് ചെയ്യുക
-Comment[mr]=इंटरनेटमध्ये प्रवेश करा
-Comment[nb]=Gå til Internett
-Comment[nl]=Verbinding maken met internet
-Comment[or]=ଇଣ୍ଟର୍ନେଟ୍ ପ୍ରବେଶ କରନ୍ତୁ
-Comment[pl]=Skorzystaj z internetu
-Comment[pt]=Aceder à Internet
-Comment[pt_BR]=Acessar a internet
-Comment[ro]=Accesaţi Internetul
-Comment[ru]=Доступ в Интернет
-Comment[sk]=Prístup do siete Internet
-Comment[sl]=Dostop do interneta
-Comment[sr]=Приступите Интернету
-Comment[sv]=Gå ut på Internet
-Comment[ta]=இணையத்தை அணுகுதல்
-Comment[te]=ఇంటర్నెట్‌ను ఆక్సెస్ చెయ్యండి
-Comment[th]=เข้าถึงอินเทอร์เน็ต
-Comment[tr]=İnternet'e erişin
-Comment[uk]=Доступ до Інтернету
-Comment[vi]=Truy cập Internet
-Comment[zh_CN]=访问互联网
-Comment[zh_HK]=連線到網際網路
-Comment[zh_TW]=連線到網際網路
-Exec=chromium %U
-Terminal=false
-Icon=chromium
-Type=Application
-Categories=GTK;Network;WebBrowser;
-MimeType=text/html;text/xml;application/xhtml+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
diff --git a/srcpkgs/chromium/files/musl-patches/libc++-musl.patch b/srcpkgs/chromium/files/musl-patches/libc++-musl.patch
new file mode 100644
index 0000000000000..b90a54daa8b49
--- /dev/null
+++ b/srcpkgs/chromium/files/musl-patches/libc++-musl.patch
@@ -0,0 +1,12 @@
+Source: https://git.alpinelinux.org/aports/tree/community/chromium/yes-musl.patch
+--- ./buildtools/third_party/libc++/__config_site.orig
++++ ./buildtools/third_party/libc++/__config_site
+@@ -18,7 +18,7 @@
+ /* #undef _LIBCPP_ABI_FORCE_MICROSOFT */
+ /* #undef _LIBCPP_HAS_NO_THREADS */
+ /* #undef _LIBCPP_HAS_NO_MONOTONIC_CLOCK */
+-/* #undef _LIBCPP_HAS_MUSL_LIBC */
++#define _LIBCPP_HAS_MUSL_LIBC 1
+ /* #undef _LIBCPP_HAS_THREAD_API_PTHREAD */
+ /* #undef _LIBCPP_HAS_THREAD_API_EXTERNAL */
+ /* #undef _LIBCPP_HAS_THREAD_API_WIN32 */
diff --git a/srcpkgs/chromium/patches/chromium-118-python-3.12-deprecated.patch b/srcpkgs/chromium/patches/chromium-118-python-3.12-deprecated.patch
deleted file mode 100644
index 5837ae584117d..0000000000000
--- a/srcpkgs/chromium/patches/chromium-118-python-3.12-deprecated.patch
+++ /dev/null
@@ -1,138 +0,0 @@
-diff -up chromium-115.0.5790.102/base/write_build_date_header.py.me chromium-115.0.5790.102/base/write_build_date_header.py
---- chromium-115.0.5790.102/base/write_build_date_header.py.me	2023-07-22 14:23:42.620679397 +0200
-+++ chromium-115.0.5790.102/base/write_build_date_header.py	2023-07-22 15:24:46.833310310 +0200
-@@ -17,7 +17,7 @@ def main():
-   args = argument_parser.parse_args()
- 
-   date_val = int(args.timestamp)
--  date = datetime.datetime.utcfromtimestamp(date_val)
-+  date =  datetime.datetime.fromtimestamp(date_val, datetime.timezone.utc)
-   output = ('// Generated by //base/write_build_date_header.py\n'
-             '#ifndef BASE_GENERATED_BUILD_DATE_TIMESTAMP \n'
-             f'#define BASE_GENERATED_BUILD_DATE_TIMESTAMP {date_val}'
-diff -up chromium-115.0.5790.102/build/write_buildflag_header.py.me chromium-115.0.5790.102/build/write_buildflag_header.py
---- chromium-115.0.5790.102/build/write_buildflag_header.py.me	2023-07-22 14:16:14.196975451 +0200
-+++ chromium-115.0.5790.102/build/write_buildflag_header.py	2023-07-22 14:20:24.977239994 +0200
-@@ -44,7 +44,7 @@ def GetOptions():
-   header_guard = cmdline_options.output.upper()
-   if header_guard[0].isdigit():
-     header_guard = '_' + header_guard
--  header_guard = re.sub('[^\w]', '_', header_guard)
-+  header_guard = re.sub(r'[^\w]', '_', header_guard)
-   header_guard += '_'
- 
-   # The actual output file is inside the gen dir.
-diff -up chromium-115.0.5790.102/components/resources/protobufs/binary_proto_generator.py.me chromium-115.0.5790.102/components/resources/protobufs/binary_proto_generator.py
---- chromium-115.0.5790.102/components/resources/protobufs/binary_proto_generator.py.me	2023-07-22 14:47:34.230764210 +0200
-+++ chromium-115.0.5790.102/components/resources/protobufs/binary_proto_generator.py	2023-07-22 15:11:50.360983383 +0200
-@@ -9,7 +9,8 @@
- """
- from __future__ import print_function
- import abc
--import imp
-+import types
-+import importlib
- import optparse
- import os
- import re
-@@ -40,6 +41,12 @@ class GoogleProtobufModuleImporter:
-         return filepath
-     return None
- 
-+  def load_source(name: str, path: str) -> types.ModuleType:
-+    spec = importlib.util.spec_from_file_location(name, path)
-+    module = importlib.util.module_from_spec(spec)
-+    spec.loader.exec_module(module)
-+    return module
-+
-   def _module_exists(self, fullname):
-     return self._fullname_to_filepath(fullname) is not None
- 
-@@ -68,7 +75,7 @@ class GoogleProtobufModuleImporter:
-       raise ImportError(fullname)
- 
-     filepath = self._fullname_to_filepath(fullname)
--    return imp.load_source(fullname, filepath)
-+    return load_source(fullname, filepath)
- 
- class BinaryProtoGenerator:
- 
-diff -up chromium-115.0.5790.102/mojo/public/tools/bindings/concatenate_and_replace_closure_exports.py.me chromium-115.0.5790.102/mojo/public/tools/bindings/concatenate_and_replace_closure_exports.py
---- chromium-115.0.5790.102/mojo/public/tools/bindings/concatenate_and_replace_closure_exports.py.me	2023-07-22 15:17:19.114258801 +0200
-+++ chromium-115.0.5790.102/mojo/public/tools/bindings/concatenate_and_replace_closure_exports.py	2023-07-22 15:17:43.368200491 +0200
-@@ -32,7 +32,7 @@ def FilterLine(filename, line, output):
-     return
- 
-   if line.startswith("goog.provide"):
--    match = re.match("goog.provide\('([^']+)'\);", line)
-+    match = re.match(r"goog.provide\('([^']+)'\);", line)
-     if not match:
-       print("Invalid goog.provide line in %s:\n%s" % (filename, line))
-       sys.exit(1)
-diff -up chromium-115.0.5790.102/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py.me chromium-115.0.5790.102/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py
---- chromium-115.0.5790.102/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py.me	2023-07-22 15:12:41.850895179 +0200
-+++ chromium-115.0.5790.102/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py	2023-07-22 15:12:55.844871207 +0200
-@@ -18,7 +18,7 @@ class HTMLGenerationController(object):
- 
-   def GetHTMLForInlineStylesheet(self, contents):
-     if self.current_module is None:
--      if re.search('url\(.+\)', contents):
-+      if re.search(r'url\(.+\)', contents):
-         raise Exception(
-             'Default HTMLGenerationController cannot handle inline style urls')
-       return contents
-diff -up chromium-115.0.5790.102/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py.me chromium-115.0.5790.102/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py
---- chromium-115.0.5790.102/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py.me	2023-07-22 15:14:06.923717910 +0200
-+++ chromium-115.0.5790.102/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py	2023-07-22 15:18:03.704150614 +0200
-@@ -4,4 +4,4 @@
- 
- 
- def EscapeJSIfNeeded(js):
--  return js.replace('</script>', '<\/script>')
-+  return js.replace(r'</script>', r'<\/script>')
-diff -up chromium-115.0.5790.102/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py.me chromium-115.0.5790.102/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py
---- chromium-115.0.5790.102/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py.me	2023-07-22 15:14:30.105662532 +0200
-+++ chromium-115.0.5790.102/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py	2023-07-22 15:14:57.977595950 +0200
-@@ -293,6 +293,6 @@ class HTMLModuleParser():
-       html = ''
-     else:
-       if html.find('< /script>') != -1:
--        raise Exception('Escape script tags with <\/script>')
-+        raise Exception(r'Escape script tags with <\/script>')
- 
-     return HTMLModuleParserResults(html)
-diff -up chromium-115.0.5790.102/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py.me chromium-115.0.5790.102/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py
---- chromium-115.0.5790.102/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py.me	2023-07-22 15:13:12.316842990 +0200
-+++ chromium-115.0.5790.102/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py	2023-07-22 15:13:49.684759091 +0200
-@@ -60,7 +60,7 @@ class ParsedStyleSheet(object):
-       return 'url(data:image/%s;base64,%s)' % (ext[1:], data.decode('utf-8'))
- 
-     # I'm assuming we only have url()'s associated with images
--    return re.sub('url\((?P<quote>"|\'|)(?P<url>[^"\'()]*)(?P=quote)\)',
-+    return re.sub(r'url\((?P<quote>"|\'|)(?P<url>[^"\'()]*)(?P=quote)\)',
-                   InlineUrl, self.contents)
- 
-   def AppendDirectlyDependentFilenamesTo(self, dependent_filenames):
-@@ -72,7 +72,7 @@ class ParsedStyleSheet(object):
-       raise Exception('@imports are not supported')
- 
-     matches = re.findall(
--        'url\((?:["|\']?)([^"\'()]*)(?:["|\']?)\)',
-+        r'url\((?:["|\']?)([^"\'()]*)(?:["|\']?)\)',
-         self.contents)
- 
-     def resolve_url(url):
-diff -up chromium-115.0.5790.102/third_party/dawn/generator/generator_lib.py.me chromium-115.0.5790.102/third_party/dawn/generator/generator_lib.py
---- chromium-115.0.5790.102/third_party/dawn/generator/generator_lib.py.me	2023-07-22 15:11:56.826972306 +0200
-+++ chromium-115.0.5790.102/third_party/dawn/generator/generator_lib.py	2023-07-22 15:12:37.550902545 +0200
-@@ -119,8 +119,8 @@ class _PreprocessingLoader(jinja2.BaseLo
-             source = self.preprocess(f.read())
-         return source, path, lambda: mtime == os.path.getmtime(path)
- 
--    blockstart = re.compile('{%-?\s*(if|elif|else|for|block|macro)[^}]*%}')
--    blockend = re.compile('{%-?\s*(end(if|for|block|macro)|elif|else)[^}]*%}')
-+    blockstart = re.compile(r'{%-?\s*(if|elif|else|for|block|macro)[^}]*%}')
-+    blockend = re.compile(r'{%-?\s*(end(if|for|block|macro)|elif|else)[^}]*%}')
- 
-     def preprocess(self, source):
-         lines = source.split('\n')
diff --git a/srcpkgs/chromium/patches/chromium-118-workaround_clang_bug-structured_binding.patch b/srcpkgs/chromium/patches/chromium-118-workaround_clang_bug-structured_binding.patch
deleted file mode 100644
index 3b79f512487ae..0000000000000
--- a/srcpkgs/chromium/patches/chromium-118-workaround_clang_bug-structured_binding.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-diff -up chromium-115.0.5790.24/media/base/cdm_promise_adapter.cc.workaround_clang_bug-structured_binding chromium-115.0.5790.24/media/base/cdm_promise_adapter.cc
---- chromium-115.0.5790.24/media/base/cdm_promise_adapter.cc.workaround_clang_bug-structured_binding	2023-06-07 21:48:37.000000000 +0200
-+++ chromium-115.0.5790.24/media/base/cdm_promise_adapter.cc	2023-06-17 16:53:20.216628557 +0200
-@@ -94,7 +94,9 @@ void CdmPromiseAdapter::RejectPromise(ui
- void CdmPromiseAdapter::Clear(ClearReason reason) {
-   // Reject all outstanding promises.
-   DCHECK(thread_checker_.CalledOnValidThread());
--  for (auto& [promise_id, promise] : promises_) {
-+  for (auto& [p_i, p_e] : promises_) {
-+    auto& promise_id = p_i;
-+    auto& promise = p_e;
-     TRACE_EVENT_NESTABLE_ASYNC_END1(
-         "media", "CdmPromise", TRACE_ID_WITH_SCOPE("CdmPromise", promise_id),
-         "status", "cleared");
-diff -up chromium-115.0.5790.24/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc.workaround_clang_bug-structured_binding chromium-115.0.5790.24/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc
---- chromium-115.0.5790.24/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc.workaround_clang_bug-structured_binding	2023-06-07 21:48:41.000000000 +0200
-+++ chromium-115.0.5790.24/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc	2023-06-17 18:47:06.001403966 +0200
-@@ -655,8 +658,10 @@ NGGridSizingTree NGGridLayoutAlgorithm::
-   NGGridSizingTree sizing_tree;
- 
-   if (const auto* layout_subtree = ConstraintSpace().GridLayoutSubtree()) {
--    auto& [grid_items, layout_data, subtree_size] =
--        sizing_tree.CreateSizingData();
-+    auto& [g_i, l_d, s_s] = sizing_tree.CreateSizingData();
-+    auto& grid_items = g_i;
-+    auto& layout_data = l_d;
-+    auto& subtree_size = s_s;
- 
-     const auto& node = Node();
-     grid_items =
-@@ -1798,8 +1803,10 @@ void NGGridLayoutAlgorithm::CompleteTrac
-     bool* opt_needs_additional_pass) const {
-   DCHECK(sizing_subtree);
- 
--  auto& [grid_items, layout_data, subtree_size] =
--      sizing_subtree.SubtreeRootData();
-+  auto& [g_i, l_d, s_s] = sizing_subtree.SubtreeRootData();
-+  auto& grid_items = g_i;
-+  auto& layout_data = l_d;
-+  auto& subtree_size = s_s;
- 
-   const bool is_for_columns = track_direction == kForColumns;
-   const bool has_non_definite_track =
-@@ -1924,8 +1931,10 @@ template <typename CallbackFunc>
- void NGGridLayoutAlgorithm::ForEachSubgrid(
-     const NGGridSizingSubtree& sizing_subtree,
-     const CallbackFunc& callback_func) const {
--  auto& [grid_items, layout_data, subtree_size] =
--      sizing_subtree.SubtreeRootData();
-+  auto& [g_i, l_d, s_s] = sizing_subtree.SubtreeRootData();
-+  auto& grid_items = g_i;
-+  auto& layout_data = l_d;
-+  auto& subtree_size = s_s;
- 
-   // If we know this subtree doesn't have nested subgrids we can exit early
-   // instead of iterating over every grid item looking for them.
-diff -up chromium-115.0.5790.32/content/browser/service_worker/service_worker_context_wrapper.cc.me chromium-115.0.5790.32/content/browser/service_worker/service_worker_context_wrapper.cc
---- chromium-115.0.5790.32/content/browser/service_worker/service_worker_context_wrapper.cc.me	2023-06-19 08:04:02.287072722 +0200
-+++ chromium-115.0.5790.32/content/browser/service_worker/service_worker_context_wrapper.cc	2023-06-19 08:18:24.576814950 +0200
-@@ -1393,7 +1393,8 @@ void ServiceWorkerContextWrapper::MaybeP
-     return;
-   }
- 
--  auto [document_url, key, callback] = std::move(*request);
-+  auto [d_u, key, callback] = std::move(*request);
-+  auto document_url = d_u;
- 
-   DCHECK(document_url.is_valid());
-   TRACE_EVENT1("ServiceWorker",
-diff -up chromium-117.0.5938.62/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc.me chromium-117.0.5938.62/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc
---- chromium-117.0.5938.62/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc.me	2023-09-15 13:03:00.787257048 +0200
-+++ chromium-117.0.5938.62/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc	2023-09-15 13:15:05.502706522 +0200
-@@ -3437,7 +3437,10 @@ void NGGridLayoutAlgorithm::PlaceGridIte
-   DCHECK(out_row_break_between);
- 
-   const auto& container_space = ConstraintSpace();
--  const auto& [grid_items, layout_data, tree_size] = sizing_tree.TreeRootData();
-+  const auto& [g_i, l_d, t_s] = sizing_tree.TreeRootData();
-+  const auto& grid_items = g_i;
-+  const auto& layout_data = l_d;
-+  const auto& tree_size = t_s;
- 
-   const auto* cached_layout_subtree = container_space.GridLayoutSubtree();
-   const auto container_writing_direction =
-@@ -3601,7 +3604,10 @@ void NGGridLayoutAlgorithm::PlaceGridIte
- 
-   // TODO(ikilpatrick): Update |SetHasSeenAllChildren| and early exit if true.
-   const auto& constraint_space = ConstraintSpace();
--  const auto& [grid_items, layout_data, tree_size] = sizing_tree.TreeRootData();
-+  const auto& [g_i, l_d, t_s] = sizing_tree.TreeRootData();
-+  const auto& grid_items = g_i;
-+  const auto& layout_data = l_d;
-+  const auto& tree_size =t_s;
- 
-   const auto* cached_layout_subtree = constraint_space.GridLayoutSubtree();
-   const auto container_writing_direction =
diff --git a/srcpkgs/chromium/patches/chromium-119-constexpr.patch b/srcpkgs/chromium/patches/chromium-119-constexpr.patch
deleted file mode 100644
index b195ff408ba81..0000000000000
--- a/srcpkgs/chromium/patches/chromium-119-constexpr.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up chromium-119.0.6045.59/components/miracle_parameter/common/public/miracle_parameter.h.me chromium-119.0.6045.59/components/miracle_parameter/common/public/miracle_parameter.h
---- chromium-119.0.6045.59/components/miracle_parameter/common/public/miracle_parameter.h.me	2023-10-31 21:05:05.548565241 +0100
-+++ chromium-119.0.6045.59/components/miracle_parameter/common/public/miracle_parameter.h	2023-10-31 21:20:53.945532094 +0100
-@@ -93,7 +93,7 @@ class MiracleParameter {
- template <>
- class MiracleParameter<std::string> : public MiracleParameterBase<std::string> {
-  public:
--  constexpr MiracleParameter(const base::Feature* feature,
-+  MiracleParameter(const base::Feature* feature,
-                              const char* param_name,
-                              std::string default_value)
-       : MiracleParameterBase(feature, param_name, std::move(default_value)) {}
diff --git a/srcpkgs/chromium/patches/chromium-119-hide-UseChromeOSDirectVideoDecoder-flag-on-VA-API-devices.patch b/srcpkgs/chromium/patches/chromium-119-hide-UseChromeOSDirectVideoDecoder-flag-on-VA-API-devices.patch
deleted file mode 100644
index 88d675e8047f0..0000000000000
--- a/srcpkgs/chromium/patches/chromium-119-hide-UseChromeOSDirectVideoDecoder-flag-on-VA-API-devices.patch
+++ /dev/null
@@ -1,195 +0,0 @@
-commit 87fca7f1759e800bd72b5ab6511eea17d6400a76
-Author: Pilar Molina Lopez <pmolinalopez@chromium.org>
-Date:   Tue Oct 24 19:57:55 2023 +0000
-
-    video: hide UseChromeOSDirectVideoDecoder flag on VA-API devices
-    
-    We are seeing crashes causes by this CHECK statement:
-    https://source.chromium.org/chromium/chromium/src/+/main:content/public/browser/gpu_utils.cc;l=151;drc=0e777ba9b6c34611705d5b145c92bcd09539011c
-    It's triggered when the user manually disables the UseChromeOSDirectVideoDecoder
-    flag on VA-API devices (Intel and AMD). This flag is supported only on
-    non-Intel and non-AMD devices. This CL adds this information to the flag
-    description and hides the flag in case VA-API is used.
-    
-    Bug: 1469285
-    Test: manual test on volteer
-    Change-Id: I153b9ccb3815498c91ce5eee966834060749e247
-    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4960919
-    Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
-    Reviewed-by: Andres Calderon Jaramillo <andrescj@chromium.org>
-    Reviewed-by: Avi Drissman <avi@chromium.org>
-    Commit-Queue: Pilar Molina Lopez <pmolinalopez@chromium.org>
-    Cr-Commit-Position: refs/heads/main@{#1214411}
-
-diff --git a/chrome/browser/DEPS b/chrome/browser/DEPS
-index ee9fb206cde36..0fe18013ab044 100644
---- a/chrome/browser/DEPS
-+++ b/chrome/browser/DEPS
-@@ -418,6 +418,7 @@ include_rules = [
-   "+media/base",  # For media switches
-   "+media/capabilities", # For InMemoryVideoDecodeStatsDB
-   "+media/cdm",
-+  "+media/gpu/buildflags.h",
-   "+media/remoting/device_capability_checker.h",
-   "+media/capture",
-   "+media/midi",  # For midi switches
-diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
-index 84709afaa34d0..777bebeb33d9e 100644
---- a/chrome/browser/about_flags.cc
-+++ b/chrome/browser/about_flags.cc
-@@ -7578,11 +7578,13 @@ const FeatureEntry kFeatureEntries[] = {
- #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
- 
- #if BUILDFLAG(IS_CHROMEOS) && BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION)
-+#if !BUILDFLAG(USE_VAAPI)
-     {"chromeos-direct-video-decoder",
-      flag_descriptions::kChromeOSDirectVideoDecoderName,
-      flag_descriptions::kChromeOSDirectVideoDecoderDescription,
-      kOsCrOS | kOsLacros,
-      FEATURE_VALUE_TYPE(media::kUseChromeOSDirectVideoDecoder)},
-+#endif  // !BUILDFLAG(USE_VAAPI)
- 
-     {"enable-vbr-encode-acceleration",
-      flag_descriptions::kChromeOSHWVBREncodingName,
-diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
-index 318a8be9ab1a6..d2497d0c403f3 100644
---- a/chrome/browser/flag_descriptions.cc
-+++ b/chrome/browser/flag_descriptions.cc
-@@ -7,6 +7,7 @@
- #include "build/build_config.h"
- #include "build/chromeos_buildflags.h"
- #include "components/supervised_user/core/common/buildflags.h"
-+#include "media/gpu/buildflags.h"
- #include "pdf/buildflags.h"
- 
- // Keep in identical order as the header file, see the comment at the top
-@@ -7338,6 +7339,7 @@ const char kQuickOfficeForceFileDownloadDescription[] =
- #endif  // BUILDFLAG(IS_CHROMEOS)
- 
- #if BUILDFLAG(IS_CHROMEOS) && BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION)
-+#if !BUILDFLAG(USE_VAAPI)
- const char kChromeOSDirectVideoDecoderName[] = "ChromeOS Direct Video Decoder";
- const char kChromeOSDirectVideoDecoderDescription[] =
-     "Enables the hardware-accelerated ChromeOS direct media::VideoDecoder "
-@@ -7345,7 +7347,8 @@ const char kChromeOSDirectVideoDecoderDescription[] =
-     "--platform-disallows-chromeos-direct-video-decoder command line switch "
-     "which is added for platforms where said direct VideoDecoder does not work "
-     "or is not well tested (see the disable_cros_video_decoder USE flag in "
--    "ChromeOS)";
-+    "ChromeOS). This flag is supported only on non-Intel and non-AMD devices.";
-+#endif  // !BUILDFLAG(USE_VAAPI)
- const char kChromeOSHWVBREncodingName[] =
-     "ChromeOS Hardware Variable Bitrate Encoding";
- const char kChromeOSHWVBREncodingDescription[] =
-diff --git a/content/public/browser/gpu_utils.cc b/content/public/browser/gpu_utils.cc
-index dceeca9659a85..3d091359777cc 100644
---- a/content/public/browser/gpu_utils.cc
-+++ b/content/public/browser/gpu_utils.cc
-@@ -133,20 +133,26 @@ const gpu::GpuPreferences GetGpuPreferencesFromCommandLine() {
- #if BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION)
-   // The direct VideoDecoder is disallowed on some particular SoC/platforms.
-   const bool should_use_direct_video_decoder =
-+#if BUILDFLAG(USE_VAAPI)
-+      true;
-+#else
-       !command_line->HasSwitch(
-           switches::kPlatformDisallowsChromeOSDirectVideoDecoder) &&
-       base::FeatureList::IsEnabled(media::kUseChromeOSDirectVideoDecoder);
-+#endif  // BUILDFLAG(USE_VAAPI)
-+
-+  gpu_preferences.enable_chromeos_direct_video_decoder =
-+#if BUILDFLAG(USE_VAAPI)
-+      should_use_direct_video_decoder;
-+#else
-+      // For testing purposes, the following flag allows using the "other" video
-+      // decoder implementation.
-+      base::FeatureList::IsEnabled(
-+          media::kUseAlternateVideoDecoderImplementation)
-+          ? !should_use_direct_video_decoder
-+          : should_use_direct_video_decoder;
-+#endif  // BUILDFLAG(USE_VAAPI)
- 
--  // For testing purposes, the following flag allows using the "other" video
--  // decoder implementation.
--  if (base::FeatureList::IsEnabled(
--          media::kUseAlternateVideoDecoderImplementation)) {
--    gpu_preferences.enable_chromeos_direct_video_decoder =
--        !should_use_direct_video_decoder;
--  } else {
--    gpu_preferences.enable_chromeos_direct_video_decoder =
--        should_use_direct_video_decoder;
--  }
- #if BUILDFLAG(USE_VAAPI)
-   CHECK(gpu_preferences.enable_chromeos_direct_video_decoder);
- #endif  // BUILDFLAG(USE_VAAPI)
-diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
-index 1af4de46e2a02..3086b1bec2134 100644
---- a/media/base/media_switches.cc
-+++ b/media/base/media_switches.cc
-@@ -1192,6 +1192,7 @@ BASE_FEATURE(kChromeOSHWVBREncoding,
-              "ChromeOSHWVBREncoding",
-              base::FEATURE_DISABLED_BY_DEFAULT);
- 
-+#if !BUILDFLAG(USE_VAAPI)
- // Enable the hardware-accelerated direct video decoder instead of the one
- // needing the VdaVideoDecoder adapter. This flag is used mainly as a
- // chrome:flag for developers debugging issues as well as to be able to
-@@ -1200,6 +1201,7 @@ BASE_FEATURE(kChromeOSHWVBREncoding,
- BASE_FEATURE(kUseChromeOSDirectVideoDecoder,
-              "UseChromeOSDirectVideoDecoder",
-              base::FEATURE_ENABLED_BY_DEFAULT);
-+#endif  // !BUILDFLAG(USE_VAAPI)
- 
- // Limit the number of concurrent hardware decoder instances on ChromeOS.
- BASE_FEATURE(kLimitConcurrentDecoderInstances,
-@@ -1228,7 +1230,7 @@ BASE_FEATURE(kPreferSoftwareMT21,
-              "PreferSoftwareMT21",
-              base::FEATURE_DISABLED_BY_DEFAULT);
- #endif  // defined(ARCH_CPU_ARM_FAMILY)
--#if BUILDFLAG(IS_CHROMEOS)
-+#if BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(USE_VAAPI)
- // ChromeOS has one of two VideoDecoder implementations active based on
- // SoC/board specific configurations that are sent via command line flags. This
- // switch allows using the non default implementation for testing.
-@@ -1236,7 +1238,7 @@ BASE_FEATURE(kPreferSoftwareMT21,
- BASE_FEATURE(kUseAlternateVideoDecoderImplementation,
-              "UseAlternateVideoDecoderImplementation",
-              base::FEATURE_DISABLED_BY_DEFAULT);
--#endif  // BUILDFLAG(IS_CHROMEOS)
-+#endif  // BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(USE_VAAPI)
- #endif  // BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION)
- 
- #if BUILDFLAG(IS_WIN)
-diff --git a/media/base/media_switches.h b/media/base/media_switches.h
-index 1d9c2c2d9df73..96d9595be110e 100644
---- a/media/base/media_switches.h
-+++ b/media/base/media_switches.h
-@@ -14,6 +14,7 @@
- #include "build/build_config.h"
- #include "build/chromeos_buildflags.h"
- #include "media/base/media_export.h"
-+#include "media/gpu/buildflags.h"
- #include "media/media_buildflags.h"
- 
- namespace base {
-@@ -381,16 +382,18 @@ MEDIA_EXPORT BASE_DECLARE_FEATURE(kBuiltInHlsPlayer);
- #if BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION)
- MEDIA_EXPORT BASE_DECLARE_FEATURE(kChromeOSHWAV1Decoder);
- MEDIA_EXPORT BASE_DECLARE_FEATURE(kChromeOSHWVBREncoding);
-+#if !BUILDFLAG(USE_VAAPI)
- MEDIA_EXPORT BASE_DECLARE_FEATURE(kUseChromeOSDirectVideoDecoder);
-+#endif  // !BUILDFLAG(USE_VAAPI)
- MEDIA_EXPORT BASE_DECLARE_FEATURE(kLimitConcurrentDecoderInstances);
- MEDIA_EXPORT BASE_DECLARE_FEATURE(kUSeSequencedTaskRunnerForVEA);
- #if defined(ARCH_CPU_ARM_FAMILY)
- MEDIA_EXPORT BASE_DECLARE_FEATURE(kPreferGLImageProcessor);
- MEDIA_EXPORT BASE_DECLARE_FEATURE(kPreferSoftwareMT21);
- #endif  // defined(ARCH_CPU_ARM_FAMILY)
--#if BUILDFLAG(IS_CHROMEOS)
-+#if BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(USE_VAAPI)
- MEDIA_EXPORT BASE_DECLARE_FEATURE(kUseAlternateVideoDecoderImplementation);
--#endif  // BUILDFLAG(IS_CHROMEOS)
-+#endif  // BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(USE_VAAPI)
- #endif  // BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION)
- 
- #if BUILDFLAG(IS_WIN)
diff --git a/srcpkgs/chromium/patches/chromium-119-nullptr_t-without-namespace-std.patch b/srcpkgs/chromium/patches/chromium-119-nullptr_t-without-namespace-std.patch
deleted file mode 100644
index 5cb969f4f40cf..0000000000000
--- a/srcpkgs/chromium/patches/chromium-119-nullptr_t-without-namespace-std.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -up chromium-119.0.6045.59/third_party/blink/renderer/core/paint/fragment_data_iterator.h.me chromium-119.0.6045.59/third_party/blink/renderer/core/paint/fragment_data_iterator.h
---- chromium-119.0.6045.59/third_party/blink/renderer/core/paint/fragment_data_iterator.h.me	2023-10-27 20:07:16.421230815 +0200
-+++ chromium-119.0.6045.59/third_party/blink/renderer/core/paint/fragment_data_iterator.h	2023-10-27 20:07:36.883600085 +0200
-@@ -52,7 +52,7 @@ class FragmentDataIterator
-  public:
-   explicit FragmentDataIterator(const LayoutObject& object)
-       : FragmentDataIteratorBase(&object.FirstFragment()) {}
--  explicit FragmentDataIterator(nullptr_t)
-+  explicit FragmentDataIterator(std::nullptr_t)
-       : FragmentDataIteratorBase(nullptr) {}
- };
- 
-@@ -63,7 +63,7 @@ class MutableFragmentDataIterator
-   explicit MutableFragmentDataIterator(const LayoutObject& object)
-       : FragmentDataIteratorBase(
-             &object.GetMutableForPainting().FirstFragment()) {}
--  explicit MutableFragmentDataIterator(nullptr_t)
-+  explicit MutableFragmentDataIterator(std::nullptr_t)
-       : FragmentDataIteratorBase(nullptr) {}
- };
- 
diff --git a/srcpkgs/chromium/patches/chromium-119-nvidia-use-separate-bo-to-verify-modifier.patch b/srcpkgs/chromium/patches/chromium-119-nvidia-use-separate-bo-to-verify-modifier.patch
deleted file mode 100644
index 717d897446c7c..0000000000000
--- a/srcpkgs/chromium/patches/chromium-119-nvidia-use-separate-bo-to-verify-modifier.patch
+++ /dev/null
@@ -1,164 +0,0 @@
-commit bdcc23e0a5e7e220660d3f54c97262f9a4c31606
-Author: Nick Diego Yamane <nickdiego@igalia.com>
-Date:   Thu Nov 2 17:26:25 2023 +0000
-
-    gbm: nvidia: use separate bo to verify modifiers
-    
-    Buggy Nvidia drivers fail to return FDs for planes of a BO which had
-    already an imported BO destroyed before. This is a workaround for that
-    issue, which consists of creating/destroying a separate 1x1 BO for
-    validating the modifiers before actually creating the final requested
-    BO, which for now is limited to IS_LINUX builds.
-    
-    The Nvidia driver bug is being tracked under internal bug 4315529. There
-    seems to be other issues when running under Wayland with Nvidia, which
-    will be tracked and addressed in separate patches.
-    
-    R=dcastagna, msisov@igalia.com
-    
-      with ozone/wayland backend and verify GPU acceleration is not broken.
-    
-    Test: In a single Nvidia GPU setup, with proprietary driver, run Chrome
-    Bug: 1273758, 1478684, 1463851
-    Change-Id: I9f322bcf40b460bcd4ead02f05dd2e9a8d271cea
-    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4989782
-    Reviewed-by: Maksim Sisov <msisov@igalia.com>
-    Commit-Queue: Nick Yamane <nickdiego@igalia.com>
-    Cr-Commit-Position: refs/heads/main@{#1218924}
-
-diff --git a/ui/gfx/linux/gbm_wrapper.cc b/ui/gfx/linux/gbm_wrapper.cc
-index bf90b76605f68..14918c19c0ab0 100644
---- a/ui/gfx/linux/gbm_wrapper.cc
-+++ b/ui/gfx/linux/gbm_wrapper.cc
-@@ -11,6 +11,7 @@
- #include "base/logging.h"
- #include "base/memory/raw_ptr.h"
- #include "base/memory/raw_ptr_exclusion.h"
-+#include "base/numerics/safe_conversions.h"
- #include "base/posix/eintr_wrapper.h"
- #include "skia/ext/legacy_display_globals.h"
- #include "third_party/skia/include/core/SkSurface.h"
-@@ -71,6 +72,7 @@ base::ScopedFD GetPlaneFdForBo(gbm_bo* bo, size_t plane) {
-   int ret;
-   // Use DRM_RDWR to allow the fd to be mappable in another process.
-   ret = drmPrimeHandleToFD(dev_fd, plane_handle, DRM_CLOEXEC | DRM_RDWR, &fd);
-+  PLOG_IF(ERROR, ret != 0) << "Failed to get fd for plane.";
- 
-   // Older DRM implementations blocked DRM_RDWR, but gave a read/write mapping
-   // anyways
-@@ -301,58 +303,82 @@ class Device final : public ui::GbmDevice {
- 
-   std::unique_ptr<ui::GbmBuffer> CreateBufferWithModifiers(
-       uint32_t format,
--      const gfx::Size& size,
-+      const gfx::Size& requested_size,
-       uint32_t flags,
-       const std::vector<uint64_t>& modifiers) override {
--    if (modifiers.empty())
--      return CreateBuffer(format, size, flags);
--
--    std::vector<uint64_t> filtered_modifiers =
--        GetFilteredModifiers(format, flags, modifiers);
--    struct gbm_bo* bo = nullptr;
--    while (filtered_modifiers.size() > 0) {
--      bo = gbm_bo_create_with_modifiers(device_, size.width(), size.height(),
--                                        format, filtered_modifiers.data(),
--                                        filtered_modifiers.size());
--      if (!bo) {
-+    if (modifiers.empty()) {
-+      return CreateBuffer(format, requested_size, flags);
-+    }
-+
-+    // Buggy drivers prevent us from getting plane FDs from a BO which had its
-+    // previously imported BO destroyed. E.g: Nvidia. Thus, on Linux Desktop, we
-+    // do the create/import modifiers validation loop below using a separate set
-+    // of 1x1 BOs which are destroyed before creating the final BO creation used
-+    // to instantiate the returned GbmBuffer.
-+    gfx::Size size =
-+#if BUILDFLAG(IS_LINUX)
-+        gfx::Size(1, 1);
-+#else
-+        requested_size;
-+#endif
-+    auto filtered_modifiers = GetFilteredModifiers(format, flags, modifiers);
-+    struct gbm_bo* created_bo = nullptr;
-+    bool valid_modifiers = false;
-+
-+    while (!valid_modifiers && !filtered_modifiers.empty()) {
-+      created_bo = gbm_bo_create_with_modifiers(
-+          device_, size.width(), size.height(), format,
-+          filtered_modifiers.data(), filtered_modifiers.size());
-+      if (!created_bo) {
-         return nullptr;
-       }
- 
--      struct gbm_import_fd_modifier_data fd_data;
--      fd_data.width = size.width();
--      fd_data.height = size.height();
--      fd_data.format = format;
--      fd_data.num_fds = gbm_bo_get_plane_count(bo);
--      fd_data.modifier = gbm_bo_get_modifier(bo);
--
--      // Store fds in the vector of base::ScopedFDs. Will be released
--      // automatically.
-+      const int planes_count = gbm_bo_get_plane_count(created_bo);
-+      struct gbm_import_fd_modifier_data fd_data = {
-+          .width = base::checked_cast<uint32_t>(size.width()),
-+          .height = base::checked_cast<uint32_t>(size.height()),
-+          .format = format,
-+          .num_fds = base::checked_cast<uint32_t>(planes_count),
-+          .modifier = gbm_bo_get_modifier(created_bo)};
-+      // Store fds in a base::ScopedFDs vector. Will be released automatically.
-       std::vector<base::ScopedFD> fds;
-       for (size_t i = 0; i < static_cast<size_t>(fd_data.num_fds); ++i) {
--        fds.emplace_back(GetPlaneFdForBo(bo, i));
-+        fds.emplace_back(GetPlaneFdForBo(created_bo, i));
-         fd_data.fds[i] = fds.back().get();
--        fd_data.strides[i] = gbm_bo_get_stride_for_plane(bo, i);
--        fd_data.offsets[i] = gbm_bo_get_offset(bo, i);
-+        fd_data.strides[i] = gbm_bo_get_stride_for_plane(created_bo, i);
-+        fd_data.offsets[i] = gbm_bo_get_offset(created_bo, i);
-       }
- 
--      struct gbm_bo* bo_import =
-+      struct gbm_bo* imported_bo =
-           gbm_bo_import(device_, GBM_BO_IMPORT_FD_MODIFIER, &fd_data, flags);
--      if (bo_import) {
--        gbm_bo_destroy(bo_import);
--        break;
-+
-+      if (imported_bo) {
-+        valid_modifiers = true;
-+        gbm_bo_destroy(imported_bo);
-       } else {
--        gbm_bo_destroy(bo);
--        bo = nullptr;
-         AddModifierToBlocklist(format, flags, fd_data.modifier);
-         filtered_modifiers =
-             GetFilteredModifiers(format, flags, filtered_modifiers);
-       }
-+
-+      if (!valid_modifiers || size != requested_size) {
-+        gbm_bo_destroy(created_bo);
-+        created_bo = nullptr;
-+      }
-     }
--    if (!bo) {
--      return nullptr;
-+
-+    // If modifiers were successfully verified though `created_bo` is null here,
-+    // it it means that the buffer created for verification could not be reused,
-+    // ie: different size, so create it now with the `requested_size`.
-+    if (valid_modifiers && !created_bo) {
-+      created_bo = gbm_bo_create_with_modifiers(
-+          device_, requested_size.width(), requested_size.height(), format,
-+          filtered_modifiers.data(), filtered_modifiers.size());
-+      PLOG_IF(ERROR, !created_bo) << "Failed to create BO with modifiers.";
-     }
- 
--    return CreateBufferForBO(bo, format, size, flags);
-+    return created_bo ? CreateBufferForBO(created_bo, format, size, flags)
-+                      : nullptr;
-   }
- 
-   std::unique_ptr<ui::GbmBuffer> CreateBufferFromHandle(
diff --git a/srcpkgs/chromium/patches/chromium-120-arm64-memory_tagging.patch b/srcpkgs/chromium/patches/chromium-120-arm64-memory_tagging.patch
new file mode 100644
index 0000000000000..bb461ef3664a2
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-120-arm64-memory_tagging.patch
@@ -0,0 +1,14 @@
+--- chromium-120.0.6099.35/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h.than	2023-11-26 13:50:07.005519877 +0100
++++ chromium-120.0.6099.35/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h	2023-11-26 13:50:49.727267240 +0100
+@@ -152,10 +152,7 @@
+   (!BUILDFLAG(PUT_REF_COUNT_IN_PREVIOUS_SLOT) && \
+    defined(ARCH_CPU_LITTLE_ENDIAN))
+ 
+-#define PA_CONFIG_HAS_MEMORY_TAGGING()              \
+-  (defined(ARCH_CPU_ARM64) && defined(__clang__) && \
+-   !defined(ADDRESS_SANITIZER) &&                   \
+-   (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID)))
++#define PA_CONFIG_HAS_MEMORY_TAGGING() 0
+ 
+ #if PA_CONFIG(HAS_MEMORY_TAGGING)
+ static_assert(sizeof(void*) == 8);
diff --git a/srcpkgs/chromium/patches/chromium-120-disable-FFmpegAllowLists.patch b/srcpkgs/chromium/patches/chromium-120-disable-FFmpegAllowLists.patch
new file mode 100644
index 0000000000000..98216ddb465ca
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-120-disable-FFmpegAllowLists.patch
@@ -0,0 +1,12 @@
+diff -up chromium-120.0.6099.56/media/base/media_switches.cc.me chromium-120.0.6099.56/media/base/media_switches.cc
+--- chromium-120.0.6099.56/media/base/media_switches.cc.me	2023-12-02 11:43:21.990775897 +0100
++++ chromium-120.0.6099.56/media/base/media_switches.cc	2023-12-02 11:45:23.248006377 +0100
+@@ -1636,7 +1636,7 @@ BASE_FEATURE(kUseSharedImagesForPepperVi
+ // Enables FFmpeg allow lists for supported codecs / containers.
+ BASE_FEATURE(kFFmpegAllowLists,
+              "FFmpegAllowLists",
+-             base::FEATURE_ENABLED_BY_DEFAULT);
++             base::FEATURE_DISABLED_BY_DEFAULT);
+ 
+ #if BUILDFLAG(ENABLE_FFMPEG_VIDEO_DECODERS)
+ // Allows decoding of theora / vp3 content.
diff --git a/srcpkgs/chromium/patches/chromium-120-disable-GlobalMediaControlsCastStartStop.patch b/srcpkgs/chromium/patches/chromium-120-disable-GlobalMediaControlsCastStartStop.patch
new file mode 100644
index 0000000000000..6a2585b953c3b
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-120-disable-GlobalMediaControlsCastStartStop.patch
@@ -0,0 +1,14 @@
+--- chromium-120.0.6099.35/chrome/browser/media/router/media_router_feature.cc.orig	2023-11-26 13:25:34.724228755 +0100
++++ chromium-120.0.6099.35/chrome/browser/media/router/media_router_feature.cc	2023-11-26 13:28:26.452359146 +0100
+@@ -71,11 +71,7 @@
+ // TODO(b/202294946): Remove when enabled by default on ChromeOS.
+ BASE_FEATURE(kGlobalMediaControlsCastStartStop,
+              "GlobalMediaControlsCastStartStop",
+-#if BUILDFLAG(IS_CHROMEOS)
+              base::FEATURE_DISABLED_BY_DEFAULT);
+-#else
+-             base::FEATURE_ENABLED_BY_DEFAULT);
+-#endif  // BUILDFLAG(IS_CHROMEOS)
+ #endif  // !BUILDFLAG(IS_ANDROID)
+ 
+ namespace {
diff --git a/srcpkgs/chromium/patches/chromium-120-el7-clang-build-failure.patch b/srcpkgs/chromium/patches/chromium-120-el7-clang-build-failure.patch
new file mode 100644
index 0000000000000..96258e67aaebb
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-120-el7-clang-build-failure.patch
@@ -0,0 +1,230 @@
+commit 57526b8dc45b2e6c67bba7306f1dde73b1f2910c
+Author: sisidovski <sisidovski@chromium.org>
+Date:   Tue Oct 24 09:32:49 2023 +0000
+
+    Remove unused items from the RaceNetworkRequest hashmap
+    
+    When the AutoPreload or the race-network-and-fetch-handler option in the
+    static routing API is enabled, network requests are dispatched and
+    URLLoaderFactories are held in a hashmap in ServiceWorkerGlobalScope.
+    Those are consumed inside the fetch handler when fetch(e.request) is
+    called. But if the fetch handler doesn't call fetch() e.g. fallback,
+    those hashmap items does not have a chance to be removed.
+    
+    This CL changes the hashmap items to be removed when the fetch event
+    finishes, and the URLLoaderFactory is still not consumed at that time.
+    This may loose the dedupe capability if fetch() is called later e.g.
+    setTimeout(() => fetch()), but it makes sense to prioritize keeping the
+    hashmap small.
+    
+    Change-Id: I51bdc9d5eb5185f2b5b4df6ee785715b1180c848
+    Bug: 1492640
+    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4964840
+    Reviewed-by: Minoru Chikamune <chikamune@chromium.org>
+    Commit-Queue: Yoshisato Yanagisawa <yyanagisawa@chromium.org>
+    Reviewed-by: Yoshisato Yanagisawa <yyanagisawa@chromium.org>
+    Cr-Commit-Position: refs/heads/main@{#1214064}
+
+diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc
+index 02887edc10883..b3624fc0162df 100644
+--- a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc
++++ b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc
+@@ -46,6 +46,7 @@
+ #include "services/network/public/cpp/cross_origin_embedder_policy.h"
+ #include "services/network/public/mojom/cookie_manager.mojom-blink.h"
+ #include "services/network/public/mojom/cross_origin_embedder_policy.mojom.h"
++#include "services/network/public/mojom/url_loader_factory.mojom-blink.h"
+ #include "third_party/blink/public/common/features.h"
+ #include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-blink.h"
+ #include "third_party/blink/public/mojom/notifications/notification.mojom-blink.h"
+@@ -1096,6 +1097,10 @@ void ServiceWorkerGlobalScope::DidHandleFetchEvent(
+       TRACE_ID_WITH_SCOPE(kServiceWorkerGlobalScopeTraceScope,
+                           TRACE_ID_LOCAL(event_id)),
+       TRACE_EVENT_FLAG_FLOW_IN, "status", MojoEnumToString(status));
++
++  // Delete the URLLoaderFactory for the RaceNetworkRequest if it's not used.
++  RemoveItemFromRaceNetworkRequests(event_id);
++
+   if (!RunEventCallback(&fetch_event_callbacks_, event_queue_.get(), event_id,
+                         status)) {
+     // The event may have been aborted. Its response callback also needs to be
+@@ -1495,6 +1500,7 @@ void ServiceWorkerGlobalScope::AbortCallbackForFetchEvent(
+     response_callback_iter->value->TakeValue().reset();
+     fetch_response_callbacks_.erase(response_callback_iter);
+   }
++  RemoveItemFromRaceNetworkRequests(event_id);
+ 
+   // Run the event callback with the error code.
+   auto event_callback_iter = fetch_event_callbacks_.find(event_id);
+@@ -1551,52 +1557,11 @@ void ServiceWorkerGlobalScope::StartFetchEvent(
+ 
+   if (params->race_network_request_loader_factory &&
+       params->request->service_worker_race_network_request_token) {
+-    auto insert_result = race_network_request_loader_factories_.insert(
+-        String(params->request->service_worker_race_network_request_token
+-                   ->ToString()),
+-        std::move(params->race_network_request_loader_factory));
+-
+-    // DumpWithoutCrashing if the token is empty, or not inserted as a new entry
+-    // to |race_network_request_loader_factories_|.
+-    // TODO(crbug.com/1492640) Remove DumpWithoutCrashing once we collect data
+-    // and identify the cause.
+-    static bool has_dumped_without_crashing_for_empty_token = false;
+-    static bool has_dumped_without_crashing_for_not_new_entry = false;
+-    if (!has_dumped_without_crashing_for_empty_token &&
+-        params->request->service_worker_race_network_request_token
+-            ->is_empty()) {
+-      has_dumped_without_crashing_for_empty_token = true;
+-      SCOPED_CRASH_KEY_BOOL(
+-          "SWGlobalScope", "empty_race_token",
+-          params->request->service_worker_race_network_request_token
+-              ->is_empty());
+-      SCOPED_CRASH_KEY_STRING64(
+-          "SWGlobalScope", "race_token_string",
+-          params->request->service_worker_race_network_request_token
+-              ->ToString());
+-      SCOPED_CRASH_KEY_BOOL("SWGlobalScope", "race_insert_new_entry",
+-                            insert_result.is_new_entry);
+-      SCOPED_CRASH_KEY_STRING256("SWGlobalScope", "race_request_url",
+-                                 params->request->url.GetString().Utf8());
+-      base::debug::DumpWithoutCrashing();
+-    }
+-    if (!has_dumped_without_crashing_for_not_new_entry &&
+-        !insert_result.is_new_entry) {
+-      has_dumped_without_crashing_for_not_new_entry = true;
+-      SCOPED_CRASH_KEY_BOOL(
+-          "SWGlobalScope", "empty_race_token",
+-          params->request->service_worker_race_network_request_token
+-              ->is_empty());
+-      SCOPED_CRASH_KEY_STRING64(
+-          "SWGlobalScope", "race_token_string",
+-          params->request->service_worker_race_network_request_token
+-              ->ToString());
+-      SCOPED_CRASH_KEY_BOOL("SWGlobalScope", "race_insert_new_entry",
+-                            insert_result.is_new_entry);
+-      SCOPED_CRASH_KEY_STRING256("SWGlobalScope", "race_request_url",
+-                                 params->request->url.GetString().Utf8());
+-      base::debug::DumpWithoutCrashing();
+-    }
++    InsertNewItemToRaceNetworkRequests(
++        event_id,
++        params->request->service_worker_race_network_request_token.value(),
++        std::move(params->race_network_request_loader_factory),
++        params->request->url);
+   }
+ 
+   Request* request = Request::Create(
+@@ -2808,12 +2773,71 @@ bool ServiceWorkerGlobalScope::SetAttributeEventListener(
+ absl::optional<mojo::PendingRemote<network::mojom::blink::URLLoaderFactory>>
+ ServiceWorkerGlobalScope::FindRaceNetworkRequestURLLoaderFactory(
+     const base::UnguessableToken& token) {
+-  mojo::PendingRemote<network::mojom::blink::URLLoaderFactory> result =
+-      race_network_request_loader_factories_.Take(String(token.ToString()));
++  std::unique_ptr<RaceNetworkRequestInfo> result =
++      race_network_requests_.Take(String(token.ToString()));
+   if (result) {
+-    return result;
++    race_network_request_fetch_event_ids_.erase(result->fetch_event_id);
++    return absl::optional<
++        mojo::PendingRemote<network::mojom::blink::URLLoaderFactory>>(
++        std::move(result->url_loader_factory));
+   }
+   return absl::nullopt;
+ }
+ 
++void ServiceWorkerGlobalScope::InsertNewItemToRaceNetworkRequests(
++    int fetch_event_id,
++    const base::UnguessableToken& token,
++    mojo::PendingRemote<network::mojom::blink::URLLoaderFactory>
++        url_loader_factory,
++    const KURL& request_url) {
++  auto race_network_request_token = String(token.ToString());
++  auto info = std::make_unique<RaceNetworkRequestInfo>(
++      fetch_event_id, race_network_request_token,
++      std::move(url_loader_factory));
++  race_network_request_fetch_event_ids_.insert(fetch_event_id, info.get());
++  auto insert_result = race_network_requests_.insert(race_network_request_token,
++                                                     std::move(info));
++
++  // DumpWithoutCrashing if the token is empty, or not inserted as a new entry
++  // to |race_network_request_loader_factories_|.
++  // TODO(crbug.com/1492640) Remove DumpWithoutCrashing once we collect data
++  // and identify the cause.
++  static bool has_dumped_without_crashing_for_empty_token = false;
++  static bool has_dumped_without_crashing_for_not_new_entry = false;
++  if (!has_dumped_without_crashing_for_empty_token && token.is_empty()) {
++    has_dumped_without_crashing_for_empty_token = true;
++    SCOPED_CRASH_KEY_BOOL("SWGlobalScope", "empty_race_token",
++                          token.is_empty());
++    SCOPED_CRASH_KEY_STRING64("SWGlobalScope", "race_token_string",
++                              token.ToString());
++    SCOPED_CRASH_KEY_BOOL("SWGlobalScope", "race_insert_new_entry",
++                          insert_result.is_new_entry);
++    SCOPED_CRASH_KEY_STRING256("SWGlobalScope", "race_request_url",
++                               request_url.GetString().Utf8());
++    base::debug::DumpWithoutCrashing();
++  }
++  if (!has_dumped_without_crashing_for_not_new_entry &&
++      !insert_result.is_new_entry) {
++    has_dumped_without_crashing_for_not_new_entry = true;
++    SCOPED_CRASH_KEY_BOOL("SWGlobalScope", "empty_race_token",
++                          token.is_empty());
++    SCOPED_CRASH_KEY_STRING64("SWGlobalScope", "race_token_string",
++                              token.ToString());
++    SCOPED_CRASH_KEY_BOOL("SWGlobalScope", "race_insert_new_entry",
++                          insert_result.is_new_entry);
++    SCOPED_CRASH_KEY_STRING256("SWGlobalScope", "race_request_url",
++                               request_url.GetString().Utf8());
++    base::debug::DumpWithoutCrashing();
++  }
++}
++
++void ServiceWorkerGlobalScope::RemoveItemFromRaceNetworkRequests(
++    int fetch_event_id) {
++  RaceNetworkRequestInfo* info =
++      race_network_request_fetch_event_ids_.Take(fetch_event_id);
++  if (info) {
++    race_network_requests_.erase(info->token);
++  }
++}
++
+ }  // namespace blink
+diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h
+index 46c431b395825..ac4cac0b1d8fb 100644
+--- a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h
++++ b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h
+@@ -623,6 +623,14 @@ class MODULES_EXPORT ServiceWorkerGlobalScope final
+   // ServiceWorker.FetchEvent.QueuingTime histogram.
+   void RecordQueuingTime(base::TimeTicks created_time);
+ 
++  void InsertNewItemToRaceNetworkRequests(
++      int fetch_event_id,
++      const base::UnguessableToken& token,
++      mojo::PendingRemote<network::mojom::blink::URLLoaderFactory>
++          url_loader_factory,
++      const KURL& request_url);
++  void RemoveItemFromRaceNetworkRequests(int fetch_event_id);
++
+   Member<ServiceWorkerClients> clients_;
+   Member<ServiceWorkerRegistration> registration_;
+   Member<::blink::ServiceWorker> service_worker_;
+@@ -768,10 +776,17 @@ class MODULES_EXPORT ServiceWorkerGlobalScope final
+ 
+   blink::BlinkStorageKey storage_key_;
+ 
++  struct RaceNetworkRequestInfo {
++    int fetch_event_id;
++    String token;
++    mojo::PendingRemote<network::mojom::blink::URLLoaderFactory>
++        url_loader_factory;
++  };
+   // TODO(crbug.com/918702) WTF::HashMap cannot use base::UnguessableToken as a
+   // key. As a workaround uses WTF::String as a key instead.
+-  HashMap<String, mojo::PendingRemote<network::mojom::blink::URLLoaderFactory>>
+-      race_network_request_loader_factories_;
++  HashMap<String, std::unique_ptr<RaceNetworkRequestInfo>>
++      race_network_requests_;
++  HashMap<int, RaceNetworkRequestInfo*> race_network_request_fetch_event_ids_;
+ 
+   HeapMojoAssociatedRemote<mojom::blink::AssociatedInterfaceProvider>
+       remote_associated_interfaces_{this};
diff --git a/srcpkgs/chromium/patches/chromium-120-el7-clang-build-failure.patch.args b/srcpkgs/chromium/patches/chromium-120-el7-clang-build-failure.patch.args
new file mode 100644
index 0000000000000..8bbbbe9483632
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-120-el7-clang-build-failure.patch.args
@@ -0,0 +1 @@
+-RNp1
diff --git a/srcpkgs/chromium/patches/chromium-120-el7-clang-version-warning.patch b/srcpkgs/chromium/patches/chromium-120-el7-clang-version-warning.patch
new file mode 100644
index 0000000000000..112da65b4d9b6
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-120-el7-clang-version-warning.patch
@@ -0,0 +1,16 @@
+diff -up chromium-120.0.6099.56/third_party/libc++/src/include/__config.me chromium-120.0.6099.56/third_party/libc++/src/include/__config
+--- chromium-120.0.6099.56/third_party/libc++/src/include/__config.me	2023-12-03 00:05:51.254483474 +0100
++++ chromium-120.0.6099.56/third_party/libc++/src/include/__config	2023-12-03 00:06:05.872863168 +0100
+@@ -32,11 +32,7 @@
+ 
+ // Warn if a compiler version is used that is not supported anymore
+ // LLVM RELEASE Update the minimum compiler versions
+-#  if defined(_LIBCPP_CLANG_VER)
+-#    if _LIBCPP_CLANG_VER < 1500
+-#      warning "Libc++ only supports Clang 15 and later"
+-#    endif
+-#  elif defined(_LIBCPP_APPLE_CLANG_VER)
++#  if defined(_LIBCPP_APPLE_CLANG_VER)
+ #    if _LIBCPP_APPLE_CLANG_VER < 1500
+ #      warning "Libc++ only supports AppleClang 15 and later"
+ #    endif
diff --git a/srcpkgs/chromium/patches/chromium-120-gn-workaround-atspi.patch b/srcpkgs/chromium/patches/chromium-120-gn-workaround-atspi.patch
new file mode 100644
index 0000000000000..72c7b7ec41c28
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-120-gn-workaround-atspi.patch
@@ -0,0 +1,13 @@
+diff -up chromium-120.0.6099.35/build/config/linux/atspi2/BUILD.gn.me chromium-120.0.6099.35/build/config/linux/atspi2/BUILD.gn
+--- chromium-120.0.6099.35/build/config/linux/atspi2/BUILD.gn.me	2023-11-26 16:14:15.364064126 +0100
++++ chromium-120.0.6099.35/build/config/linux/atspi2/BUILD.gn	2023-11-26 16:41:16.877321990 +0100
+@@ -21,6 +21,9 @@ if (use_atk) {
+     minor = atspi_version[1]
+     micro = atspi_version[2]
+ 
++    # gn workaround for the error: Assignment had no effect
++    print("ATSPI Version: $major.$minor.$micro")
++
+     # ATSPI 2.49.90 now defines these for us and it's an error for us to
+     # redefine them on the compiler command line.
+     # See ATSPI 927344a34cd5bf81fc64da4968241735ecb4f03b
diff --git a/srcpkgs/chromium/patches/chromium-119-missing-header-files.patch b/srcpkgs/chromium/patches/chromium-120-missing-header-files.patch
similarity index 97%
rename from srcpkgs/chromium/patches/chromium-119-missing-header-files.patch
rename to srcpkgs/chromium/patches/chromium-120-missing-header-files.patch
index a2542ef420eaf..44f867475b218 100644
--- a/srcpkgs/chromium/patches/chromium-119-missing-header-files.patch
+++ b/srcpkgs/chromium/patches/chromium-120-missing-header-files.patch
@@ -131,17 +131,6 @@ diff -up chromium-109.0.5414.74/third_party/swiftshader/src/System/LRUCache.hpp.
  #include <cstddef>
  #include <functional>
  #include <unordered_set>
-diff -up chromium-109.0.5414.74/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h.me chromium-109.0.5414.74/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h
---- chromium-109.0.5414.74/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h.me	2023-01-17 15:40:23.854386206 +0100
-+++ chromium-109.0.5414.74/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h	2023-01-17 16:58:19.397862885 +0100
-@@ -2388,6 +2388,7 @@ VMA_CALL_PRE void VMA_CALL_POST vmaFreeV
- #ifdef VMA_IMPLEMENTATION
- #undef VMA_IMPLEMENTATION
- 
-+#include <cstdio>
- #include <cstdint>
- #include <cstdlib>
- #include <cstring>
 diff -up chromium-109.0.5414.74/ui/gfx/geometry/linear_gradient.h.me chromium-109.0.5414.74/ui/gfx/geometry/linear_gradient.h
 --- chromium-109.0.5414.74/ui/gfx/geometry/linear_gradient.h.me	2023-01-17 18:08:25.745491353 +0100
 +++ chromium-109.0.5414.74/ui/gfx/geometry/linear_gradient.h	2023-01-17 18:08:35.777667632 +0100
diff --git a/srcpkgs/chromium/patches/chromium-119-no_matching_constructor.patch b/srcpkgs/chromium/patches/chromium-120-no_matching_constructor.patch
similarity index 67%
rename from srcpkgs/chromium/patches/chromium-119-no_matching_constructor.patch
rename to srcpkgs/chromium/patches/chromium-120-no_matching_constructor.patch
index a16c979c37f1c..b1d987adeff8d 100644
--- a/srcpkgs/chromium/patches/chromium-119-no_matching_constructor.patch
+++ b/srcpkgs/chromium/patches/chromium-120-no_matching_constructor.patch
@@ -1,6 +1,25 @@
-diff -up chromium-119.0.6045.59/base/trace_event/trace_log.cc.no_matching_constructor chromium-119.0.6045.59/base/trace_event/trace_log.cc
---- chromium-119.0.6045.59/base/trace_event/trace_log.cc.no_matching_constructor	2023-10-26 18:16:51.000000000 +0200
-+++ chromium-119.0.6045.59/base/trace_event/trace_log.cc	2023-10-30 16:51:02.270151487 +0100
+diff -up chromium-120.0.6099.56/base/metrics/persistent_histogram_allocator.cc.no_matching_constructor chromium-120.0.6099.56/base/metrics/persistent_histogram_allocator.cc
+--- chromium-120.0.6099.56/base/metrics/persistent_histogram_allocator.cc.no_matching_constructor	2023-11-29 22:39:40.000000000 +0100
++++ chromium-120.0.6099.56/base/metrics/persistent_histogram_allocator.cc	2023-12-03 17:31:25.748420189 +0100
+@@ -218,13 +218,13 @@ PersistentSparseHistogramDataManager::Lo
+     // The sample-record could be for any sparse histogram. Add the reference
+     // to the appropriate collection for later use.
+     if (found_id == match_id) {
+-      found_records.emplace_back(ref, value);
++      found_records.emplace_back() = {ref, value};
+       found = true;
+     } else {
+       std::vector<ReferenceAndSample>* samples =
+           GetSampleMapRecordsWhileLocked(found_id);
+       CHECK(samples);
+-      samples->emplace_back(ref, value);
++      samples->emplace_back() = {ref, value};
+     }
+   }
+ 
+diff -up chromium-120.0.6099.56/base/trace_event/trace_log.cc.no_matching_constructor chromium-120.0.6099.56/base/trace_event/trace_log.cc
+--- chromium-120.0.6099.56/base/trace_event/trace_log.cc.no_matching_constructor	2023-11-29 22:39:40.000000000 +0100
++++ chromium-120.0.6099.56/base/trace_event/trace_log.cc	2023-12-03 17:31:25.749420208 +0100
 @@ -2191,8 +2191,8 @@ void TraceLog::SetTraceBufferForTesting(
  #if BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY)
  void TraceLog::OnSetup(const perfetto::DataSourceBase::SetupArgs& args) {
@@ -12,9 +31,9 @@ diff -up chromium-119.0.6045.59/base/trace_event/trace_log.cc.no_matching_constr
  }
  
  void TraceLog::OnStart(const perfetto::DataSourceBase::StartArgs&) {
-diff -up chromium-119.0.6045.59/chrome/browser/content_settings/one_time_permission_provider.cc.no_matching_constructor chromium-119.0.6045.59/chrome/browser/content_settings/one_time_permission_provider.cc
---- chromium-119.0.6045.59/chrome/browser/content_settings/one_time_permission_provider.cc.no_matching_constructor	2023-10-26 18:16:57.000000000 +0200
-+++ chromium-119.0.6045.59/chrome/browser/content_settings/one_time_permission_provider.cc	2023-10-30 16:51:02.269151462 +0100
+diff -up chromium-120.0.6099.56/chrome/browser/content_settings/one_time_permission_provider.cc.no_matching_constructor chromium-120.0.6099.56/chrome/browser/content_settings/one_time_permission_provider.cc
+--- chromium-120.0.6099.56/chrome/browser/content_settings/one_time_permission_provider.cc.no_matching_constructor	2023-11-29 22:39:47.000000000 +0100
++++ chromium-120.0.6099.56/chrome/browser/content_settings/one_time_permission_provider.cc	2023-12-03 17:31:25.749420208 +0100
 @@ -226,8 +226,8 @@ void OneTimePermissionProvider::OnSuspen
  
        while (rule_iterator && rule_iterator->HasNext()) {
@@ -37,9 +56,9 @@ diff -up chromium-119.0.6045.59/chrome/browser/content_settings/one_time_permiss
        permissions::PermissionUmaUtil::RecordOneTimePermissionEvent(
            content_setting_type, trigger_event);
      }
-diff -up chromium-119.0.6045.59/chrome/browser/enterprise/profile_management/profile_management_navigation_throttle.cc.no_matching_constructor chromium-119.0.6045.59/chrome/browser/enterprise/profile_management/profile_management_navigation_throttle.cc
---- chromium-119.0.6045.59/chrome/browser/enterprise/profile_management/profile_management_navigation_throttle.cc.no_matching_constructor	2023-10-26 18:16:57.000000000 +0200
-+++ chromium-119.0.6045.59/chrome/browser/enterprise/profile_management/profile_management_navigation_throttle.cc	2023-10-30 16:51:02.267151412 +0100
+diff -up chromium-120.0.6099.56/chrome/browser/enterprise/profile_management/profile_management_navigation_throttle.cc.no_matching_constructor chromium-120.0.6099.56/chrome/browser/enterprise/profile_management/profile_management_navigation_throttle.cc
+--- chromium-120.0.6099.56/chrome/browser/enterprise/profile_management/profile_management_navigation_throttle.cc.no_matching_constructor	2023-11-29 22:39:48.000000000 +0100
++++ chromium-120.0.6099.56/chrome/browser/enterprise/profile_management/profile_management_navigation_throttle.cc	2023-12-03 17:31:25.749420208 +0100
 @@ -67,8 +67,8 @@ base::flat_map<std::string, SAMLProfileA
    // TODO(crbug.com/1445072): Add actual domains with attribute names.
    profile_attributes->insert(std::make_pair(
@@ -51,9 +70,9 @@ diff -up chromium-119.0.6045.59/chrome/browser/enterprise/profile_management/pro
  
    // Extract domains and attributes from the command line switch.
    const base::CommandLine& command_line =
-diff -up chromium-119.0.6045.59/chrome/browser/ui/omnibox/chrome_omnibox_client.cc.no_matching_constructor chromium-119.0.6045.59/chrome/browser/ui/omnibox/chrome_omnibox_client.cc
---- chromium-119.0.6045.59/chrome/browser/ui/omnibox/chrome_omnibox_client.cc.no_matching_constructor	2023-10-26 18:17:00.000000000 +0200
-+++ chromium-119.0.6045.59/chrome/browser/ui/omnibox/chrome_omnibox_client.cc	2023-10-30 16:51:02.262151288 +0100
+diff -up chromium-120.0.6099.56/chrome/browser/ui/omnibox/chrome_omnibox_client.cc.no_matching_constructor chromium-120.0.6099.56/chrome/browser/ui/omnibox/chrome_omnibox_client.cc
+--- chromium-120.0.6099.56/chrome/browser/ui/omnibox/chrome_omnibox_client.cc.no_matching_constructor	2023-11-29 22:39:52.000000000 +0100
++++ chromium-120.0.6099.56/chrome/browser/ui/omnibox/chrome_omnibox_client.cc	2023-12-03 17:31:25.749420208 +0100
 @@ -474,10 +474,10 @@ void ChromeOmniboxClient::OnAutocomplete
                alternative_nav_match);
  
@@ -67,9 +86,117 @@ diff -up chromium-119.0.6045.59/chrome/browser/ui/omnibox/chrome_omnibox_client.
  
    if (browser_) {
      auto navigation = chrome::OpenCurrentURL(browser_);
-diff -up chromium-119.0.6045.59/chrome/test/chromedriver/capabilities.cc.no_matching_constructor chromium-119.0.6045.59/chrome/test/chromedriver/capabilities.cc
---- chromium-119.0.6045.59/chrome/test/chromedriver/capabilities.cc.no_matching_constructor	2023-10-26 18:17:01.000000000 +0200
-+++ chromium-119.0.6045.59/chrome/test/chromedriver/capabilities.cc	2023-10-30 16:51:02.268151437 +0100
+diff -up chromium-120.0.6099.56/chrome/browser/ui/safety_hub/menu_notification_service.cc.no_matching_constructor chromium-120.0.6099.56/chrome/browser/ui/safety_hub/menu_notification_service.cc
+--- chromium-120.0.6099.56/chrome/browser/ui/safety_hub/menu_notification_service.cc.no_matching_constructor	2023-11-29 22:39:52.000000000 +0100
++++ chromium-120.0.6099.56/chrome/browser/ui/safety_hub/menu_notification_service.cc	2023-12-03 17:31:25.756420342 +0100
+@@ -148,8 +148,8 @@ SafetyHubMenuNotificationService::GetNot
+   // The information related to showing the notification needs to be persisted
+   // as well.
+   SaveNotificationsToPrefs();
+-  return MenuNotificationEntry(notification_to_show->GetNotificationCommandId(),
+-                               notification_to_show->GetNotificationString());
++  return MenuNotificationEntry{notification_to_show->GetNotificationCommandId(),
++                               notification_to_show->GetNotificationString()};
+ }
+ 
+ absl::optional<ResultMap>
+diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_ask_view.cc.no_matching_constructor chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_ask_view.cc
+--- chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_ask_view.cc.no_matching_constructor	2023-11-29 22:39:53.000000000 +0100
++++ chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_ask_view.cc	2023-12-03 17:31:25.749420208 +0100
+@@ -55,12 +55,12 @@ std::vector<EmbeddedPermissionPromptAskV
+ EmbeddedPermissionPromptAskView::GetButtonsConfiguration() const {
+   std::vector<ButtonConfiguration> buttons;
+   if (base::FeatureList::IsEnabled(permissions::features::kOneTimePermission)) {
+-    buttons.emplace_back(
++    buttons.emplace_back() = {
+         l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW_THIS_TIME),
+-        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal);
++        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal};
+   }
+-  buttons.emplace_back(l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW),
+-                       ButtonType::kAllow, ui::ButtonStyle::kTonal);
++  buttons.emplace_back() = {l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW),
++                       ButtonType::kAllow, ui::ButtonStyle::kTonal};
+   return buttons;
+ }
+ 
+diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_base_view.h.no_matching_constructor chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_base_view.h
+--- chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_base_view.h.no_matching_constructor	2023-11-29 22:39:53.000000000 +0100
++++ chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_base_view.h	2023-12-03 17:31:25.750420227 +0100
+@@ -86,6 +86,7 @@ class EmbeddedPermissionPromptBaseView :
+   struct RequestLineConfiguration {
+     const raw_ptr<const gfx::VectorIcon> icon;
+     std::u16string message;
++    RequestLineConfiguration(auto i, auto m) : icon(i), message(m) { }
+   };
+ 
+   struct ButtonConfiguration {
+diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_policy_view.cc.no_matching_constructor chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_policy_view.cc
+--- chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_policy_view.cc.no_matching_constructor	2023-11-29 22:39:53.000000000 +0100
++++ chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_policy_view.cc	2023-12-03 17:31:25.750420227 +0100
+@@ -48,8 +48,8 @@ EmbeddedPermissionPromptPolicyView::GetR
+ std::vector<EmbeddedPermissionPromptPolicyView::ButtonConfiguration>
+ EmbeddedPermissionPromptPolicyView::GetButtonsConfiguration() const {
+   std::vector<ButtonConfiguration> buttons;
+-  buttons.emplace_back(l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_OK_LABEL),
+-                       ButtonType::kPolicyOK, ui::ButtonStyle::kTonal);
++  buttons.emplace_back() = {l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_OK_LABEL),
++                       ButtonType::kPolicyOK, ui::ButtonStyle::kTonal};
+   return buttons;
+ }
+ 
+diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc.no_matching_constructor chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc
+--- chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc.no_matching_constructor	2023-11-29 22:39:53.000000000 +0100
++++ chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc	2023-12-03 17:31:25.756420342 +0100
+@@ -63,18 +63,18 @@ EmbeddedPermissionPromptPreviouslyDenied
+ std::vector<EmbeddedPermissionPromptPreviouslyDeniedView::ButtonConfiguration>
+ EmbeddedPermissionPromptPreviouslyDeniedView::GetButtonsConfiguration() const {
+   std::vector<ButtonConfiguration> buttons;
+-  buttons.emplace_back(
++  buttons.emplace_back() = {
+       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_CONTINUE_NOT_ALLOWING),
+-      ButtonType::kContinueNotAllowing, ui::ButtonStyle::kTonal);
++      ButtonType::kContinueNotAllowing, ui::ButtonStyle::kTonal};
+ 
+   if (base::FeatureList::IsEnabled(permissions::features::kOneTimePermission)) {
+-    buttons.emplace_back(
++    buttons.emplace_back() = {
+         l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW_THIS_TIME),
+-        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal);
++        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal};
+   } else {
+-    buttons.emplace_back(
++    buttons.emplace_back() = {
+         l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW_THIS_TIME),
+-        ButtonType::kAllow, ui::ButtonStyle::kTonal);
++        ButtonType::kAllow, ui::ButtonStyle::kTonal};
+   }
+   return buttons;
+ }
+diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.no_matching_constructor chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc
+--- chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.no_matching_constructor	2023-11-29 22:39:53.000000000 +0100
++++ chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc	2023-12-03 17:31:25.750420227 +0100
+@@ -57,13 +57,13 @@ EmbeddedPermissionPromptPreviouslyGrante
+ std::vector<EmbeddedPermissionPromptPreviouslyGrantedView::ButtonConfiguration>
+ EmbeddedPermissionPromptPreviouslyGrantedView::GetButtonsConfiguration() const {
+   std::vector<ButtonConfiguration> buttons;
+-  buttons.emplace_back(
++  buttons.emplace_back() = {
+       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_CONTINUE_ALLOWING),
+-      ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal);
++      ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal};
+ 
+-  buttons.emplace_back(
++  buttons.emplace_back() = {
+       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_STOP_ALLOWING),
+-      ButtonType::kStopAllowing, ui::ButtonStyle::kTonal);
++      ButtonType::kStopAllowing, ui::ButtonStyle::kTonal};
+   return buttons;
+ }
+ 
+diff -up chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc.no_matching_constructor chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc
+--- chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc.no_matching_constructor	2023-11-29 22:39:54.000000000 +0100
++++ chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc	2023-12-03 17:31:25.750420227 +0100
 @@ -346,7 +346,7 @@ Status ParseMobileEmulation(const base::
                          "'version' field of type string");
          }
@@ -88,10 +215,10 @@ diff -up chromium-119.0.6045.59/chrome/test/chromedriver/capabilities.cc.no_matc
        }
  
        client_hints.full_version_list = std::move(full_version_list);
-diff -up chromium-119.0.6045.59/components/autofill/core/browser/contact_info_sync_util.cc.no_matching_constructor chromium-119.0.6045.59/components/autofill/core/browser/contact_info_sync_util.cc
---- chromium-119.0.6045.59/components/autofill/core/browser/contact_info_sync_util.cc.no_matching_constructor	2023-10-30 16:51:02.273151562 +0100
-+++ chromium-119.0.6045.59/components/autofill/core/browser/contact_info_sync_util.cc	2023-10-30 17:41:12.685887538 +0100
-@@ -195,9 +195,9 @@ class ContactInfoProfileSetter {
+diff -up chromium-120.0.6099.56/components/autofill/core/browser/contact_info_sync_util.cc.no_matching_constructor chromium-120.0.6099.56/components/autofill/core/browser/contact_info_sync_util.cc
+--- chromium-120.0.6099.56/components/autofill/core/browser/contact_info_sync_util.cc.no_matching_constructor	2023-11-29 22:39:57.000000000 +0100
++++ chromium-120.0.6099.56/components/autofill/core/browser/contact_info_sync_util.cc	2023-12-03 17:31:25.750420227 +0100
+@@ -197,9 +197,9 @@ class ContactInfoProfileSetter {
        CHECK(observations.empty());
        for (const sync_pb::ContactInfoSpecifics::Observation& proto_observation :
             metadata.observations()) {
@@ -103,10 +230,38 @@ diff -up chromium-119.0.6045.59/components/autofill/core/browser/contact_info_sy
        }
      }
    }
-diff -up chromium-119.0.6045.59/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc.no_matching_constructor chromium-119.0.6045.59/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
---- chromium-119.0.6045.59/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc.no_matching_constructor	2023-10-26 18:17:12.000000000 +0200
-+++ chromium-119.0.6045.59/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc	2023-10-30 16:51:02.260151238 +0100
-@@ -1530,7 +1530,7 @@ void SkiaOutputSurfaceImplOnGpu::CopyOut
+diff -up chromium-120.0.6099.56/components/autofill/core/browser/webdata/autofill_table.cc.no_matching_constructor chromium-120.0.6099.56/components/autofill/core/browser/webdata/autofill_table.cc
+--- chromium-120.0.6099.56/components/autofill/core/browser/webdata/autofill_table.cc.no_matching_constructor	2023-11-29 22:39:57.000000000 +0100
++++ chromium-120.0.6099.56/components/autofill/core/browser/webdata/autofill_table.cc	2023-12-03 17:31:25.751420246 +0100
+@@ -1763,10 +1763,10 @@ std::unique_ptr<AutofillProfile> Autofil
+     }
+ 
+     base::span<const uint8_t> observations_data = s.ColumnBlob(3);
+-    field_type_values.emplace_back(
++    field_type_values.emplace_back() = {
+         type, s.ColumnString16(1), s.ColumnInt(2),
+         std::vector<uint8_t>(observations_data.begin(),
+-                             observations_data.end()));
++                             observations_data.end())};
+ 
+     if (type == ADDRESS_HOME_COUNTRY) {
+       country_code = base::UTF16ToUTF8(s.ColumnString16(1));
+diff -up chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc.no_matching_constructor chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc
+--- chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc.no_matching_constructor	2023-11-29 22:39:58.000000000 +0100
++++ chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc	2023-12-03 17:31:25.751420246 +0100
+@@ -630,7 +630,7 @@ void PasswordManager::OnUserModifiedNonP
+   // |driver| might be empty on iOS or in tests.
+   int driver_id = driver ? driver->GetId() : 0;
+   possible_usernames_.Put(
+-      PossibleUsernameFieldIdentifier(driver_id, renderer_id),
++      PossibleUsernameFieldIdentifier{driver_id, renderer_id},
+       PossibleUsernameData(GetSignonRealm(driver->GetLastCommittedURL()),
+                            renderer_id, value, base::Time::Now(), driver_id,
+                            autocomplete_attribute_has_username, is_likely_otp));
+diff -up chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc.no_matching_constructor chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
+--- chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc.no_matching_constructor	2023-11-29 22:40:01.000000000 +0100
++++ chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc	2023-12-03 17:31:25.751420246 +0100
+@@ -1567,7 +1567,7 @@ void SkiaOutputSurfaceImplOnGpu::CopyOut
  
        // Issue readbacks from the surfaces:
        for (size_t i = 0; i < CopyOutputResult::kNV12MaxPlanes; ++i) {
@@ -115,10 +270,10 @@ diff -up chromium-119.0.6045.59/components/viz/service/display_embedder/skia_out
          SkImageInfo dst_info = SkImageInfo::Make(
              size, (i == 0) ? kAlpha_8_SkColorType : kR8G8_unorm_SkColorType,
              kUnpremul_SkAlphaType);
-diff -up chromium-119.0.6045.59/content/browser/download/save_package.cc.no_matching_constructor chromium-119.0.6045.59/content/browser/download/save_package.cc
---- chromium-119.0.6045.59/content/browser/download/save_package.cc.no_matching_constructor	2023-10-26 18:17:12.000000000 +0200
-+++ chromium-119.0.6045.59/content/browser/download/save_package.cc	2023-10-30 16:51:02.271151512 +0100
-@@ -769,8 +769,8 @@ void SavePackage::Finish() {
+diff -up chromium-120.0.6099.56/content/browser/download/save_package.cc.no_matching_constructor chromium-120.0.6099.56/content/browser/download/save_package.cc
+--- chromium-120.0.6099.56/content/browser/download/save_package.cc.no_matching_constructor	2023-11-29 22:40:01.000000000 +0100
++++ chromium-120.0.6099.56/content/browser/download/save_package.cc	2023-12-03 17:31:25.752420265 +0100
+@@ -767,8 +767,8 @@ void SavePackage::Finish() {
    if (download_) {
      std::vector<download::DownloadSaveItemData::ItemInfo> files;
      for (auto& item : saved_success_items_) {
@@ -129,52 +284,76 @@ diff -up chromium-119.0.6045.59/content/browser/download/save_package.cc.no_matc
      }
      download::DownloadSaveItemData::AttachItemData(download_, std::move(files));
    }
-diff -up chromium-119.0.6045.59/content/browser/renderer_host/render_frame_host_impl.cc.no_matching_constructor chromium-119.0.6045.59/content/browser/renderer_host/render_frame_host_impl.cc
---- chromium-119.0.6045.59/content/browser/renderer_host/render_frame_host_impl.cc.no_matching_constructor	2023-10-26 18:17:12.000000000 +0200
-+++ chromium-119.0.6045.59/content/browser/renderer_host/render_frame_host_impl.cc	2023-10-30 17:38:09.351389984 +0100
-@@ -8567,7 +8567,7 @@ void RenderFrameHostImpl::SendFencedFram
+diff -up chromium-120.0.6099.56/content/browser/interest_group/interest_group_storage.cc.no_matching_constructor chromium-120.0.6099.56/content/browser/interest_group/interest_group_storage.cc
+--- chromium-120.0.6099.56/content/browser/interest_group/interest_group_storage.cc.no_matching_constructor	2023-11-29 22:40:01.000000000 +0100
++++ chromium-120.0.6099.56/content/browser/interest_group/interest_group_storage.cc	2023-12-03 17:31:25.752420265 +0100
+@@ -3002,10 +3002,10 @@ DoGetKAnonymityData(sql::Database& db,
+ 
+   std::vector<StorageInterestGroup::KAnonymityData> k_anon_data;
+   while (interest_group_kanon_query.Step()) {
+-    k_anon_data.emplace_back(
++    k_anon_data.emplace_back() = {
+         /*key=*/interest_group_kanon_query.ColumnString(0),
+         /*is_k_anonymous=*/interest_group_kanon_query.ColumnBool(1),
+-        /*last_updated=*/interest_group_kanon_query.ColumnTime(2));
++        /*last_updated=*/interest_group_kanon_query.ColumnTime(2)};
+   }
+   if (!interest_group_kanon_query.Succeeded()) {
+     return absl::nullopt;
+diff -up chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc.no_matching_constructor chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc
+--- chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc.no_matching_constructor	2023-11-29 22:40:01.000000000 +0100
++++ chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc	2023-12-03 20:49:28.059042672 +0100
+@@ -8685,7 +8685,7 @@ void RenderFrameHostImpl::SendFencedFram
    for (const blink::FencedFrame::ReportingDestination& destination :
         destinations) {
      SendFencedFrameReportingBeaconInternal(
 -        DestinationEnumEvent(event_type, event_data), destination,
 +        DestinationEnumEvent{event_type, event_data}, destination,
-         /*from_renderer=*/true, attribution_reporting_runtime_features,
-         GetFrameTreeNodeId());
+         /*from_renderer=*/true, attribution_reporting_runtime_features);
    }
-@@ -8603,7 +8603,7 @@ void RenderFrameHostImpl::SendFencedFram
+ }
+@@ -8720,7 +8720,7 @@ void RenderFrameHostImpl::SendFencedFram
    }
  
    SendFencedFrameReportingBeaconInternal(
 -      DestinationURLEvent(destination_url),
 +      DestinationURLEvent{destination_url},
        blink::FencedFrame::ReportingDestination::kBuyer,
-       /*from_renderer=*/true, attribution_reporting_runtime_features,
-       GetFrameTreeNodeId());
-@@ -8703,8 +8703,8 @@ void RenderFrameHostImpl::MaybeSendFence
+       /*from_renderer=*/true, attribution_reporting_runtime_features);
+ }
+@@ -8820,7 +8820,7 @@ void RenderFrameHostImpl::MaybeSendFence
          data = info->data;
        }
        initiator_rfh->SendFencedFrameReportingBeaconInternal(
--          DestinationEnumEvent(blink::kFencedFrameTopNavigationBeaconType,
--                               data),
-+          DestinationEnumEvent{blink::kFencedFrameTopNavigationBeaconType,
-+                               data},
-           destination,
+-          AutomaticBeaconEvent(event_type, data), destination,
++          AutomaticBeaconEvent{event_type, data}, destination,
            /*from_renderer=*/false, attribution_reporting_features,
-           GetFrameTreeNodeId(), navigation_request.GetNavigationId());
-@@ -8717,8 +8717,8 @@ void RenderFrameHostImpl::MaybeSendFence
+           navigation_request.GetNavigationId());
+     }
+@@ -8832,7 +8832,7 @@ void RenderFrameHostImpl::MaybeSendFence
      for (blink::FencedFrame::ReportingDestination destination :
           info->destinations) {
        initiator_rfh->SendFencedFrameReportingBeaconInternal(
--          DestinationEnumEvent(blink::kFencedFrameTopNavigationBeaconType,
--                               info->data),
-+          DestinationEnumEvent{blink::kFencedFrameTopNavigationBeaconType,
-+                               info->data},
-           destination,
+-          AutomaticBeaconEvent(event_type, info->data), destination,
++          AutomaticBeaconEvent{event_type, info->data}, destination,
            /*from_renderer=*/false, info->attribution_reporting_runtime_features,
-           GetFrameTreeNodeId(), navigation_request.GetNavigationId());
-diff -up chromium-119.0.6045.59/third_party/blink/renderer/platform/fonts/font_palette.h.no_matching_constructor chromium-119.0.6045.59/third_party/blink/renderer/platform/fonts/font_palette.h
---- chromium-119.0.6045.59/third_party/blink/renderer/platform/fonts/font_palette.h.no_matching_constructor	2023-10-26 18:17:24.000000000 +0200
-+++ chromium-119.0.6045.59/third_party/blink/renderer/platform/fonts/font_palette.h	2023-10-30 16:51:02.262151288 +0100
+           navigation_request.GetNavigationId());
+     }
+diff -up chromium-120.0.6099.56/net/dns/host_resolver_cache.cc.no_matching_constructor chromium-120.0.6099.56/net/dns/host_resolver_cache.cc
+--- chromium-120.0.6099.56/net/dns/host_resolver_cache.cc.no_matching_constructor	2023-11-29 22:40:07.000000000 +0100
++++ chromium-120.0.6099.56/net/dns/host_resolver_cache.cc	2023-12-03 17:31:25.754420303 +0100
+@@ -368,7 +368,7 @@ void HostResolverCache::Set(
+ 
+   std::string domain_name = result->domain_name();
+   entries_.emplace(
+-      Key(std::move(domain_name), network_anonymization_key),
++      Key{std::move(domain_name), network_anonymization_key},
+       Entry(std::move(result), source, secure, staleness_generation));
+ 
+   if (entries_.size() > max_entries_) {
+diff -up chromium-120.0.6099.56/third_party/blink/renderer/platform/fonts/font_palette.h.no_matching_constructor chromium-120.0.6099.56/third_party/blink/renderer/platform/fonts/font_palette.h
+--- chromium-120.0.6099.56/third_party/blink/renderer/platform/fonts/font_palette.h.no_matching_constructor	2023-11-29 22:40:12.000000000 +0100
++++ chromium-120.0.6099.56/third_party/blink/renderer/platform/fonts/font_palette.h	2023-12-03 17:31:25.754420303 +0100
 @@ -96,7 +96,7 @@ class PLATFORM_EXPORT FontPalette : publ
        Color::ColorSpace color_interpolation_space,
        absl::optional<Color::HueInterpolationMethod> hue_interpolation_method) {
@@ -193,9 +372,9 @@ diff -up chromium-119.0.6045.59/third_party/blink/renderer/platform/fonts/font_p
    }
  
    double GetAlphaMultiplier() const {
-diff -up chromium-119.0.6045.59/third_party/blink/renderer/platform/fonts/palette_interpolation.cc.no_matching_constructor chromium-119.0.6045.59/third_party/blink/renderer/platform/fonts/palette_interpolation.cc
---- chromium-119.0.6045.59/third_party/blink/renderer/platform/fonts/palette_interpolation.cc.no_matching_constructor	2023-10-26 18:17:24.000000000 +0200
-+++ chromium-119.0.6045.59/third_party/blink/renderer/platform/fonts/palette_interpolation.cc	2023-10-30 16:51:02.261151263 +0100
+diff -up chromium-120.0.6099.56/third_party/blink/renderer/platform/fonts/palette_interpolation.cc.no_matching_constructor chromium-120.0.6099.56/third_party/blink/renderer/platform/fonts/palette_interpolation.cc
+--- chromium-120.0.6099.56/third_party/blink/renderer/platform/fonts/palette_interpolation.cc.no_matching_constructor	2023-11-29 22:40:12.000000000 +0100
++++ chromium-120.0.6099.56/third_party/blink/renderer/platform/fonts/palette_interpolation.cc	2023-12-03 17:31:25.755420323 +0100
 @@ -31,7 +31,7 @@ Vector<FontPalette::FontPaletteOverride>
          color_interpolation_space, hue_interpolation_method, start_color,
          end_color, percentage, alpha_multiplier);
@@ -205,113 +384,22 @@ diff -up chromium-119.0.6045.59/third_party/blink/renderer/platform/fonts/palett
      result_color_records.push_back(result_color_record);
    }
    return result_color_records;
-diff -up chromium-119.0.6045.59/ui/gtk/gtk_ui.cc.no_matching_constructor chromium-119.0.6045.59/ui/gtk/gtk_ui.cc
---- chromium-119.0.6045.59/ui/gtk/gtk_ui.cc.no_matching_constructor	2023-10-26 18:18:14.000000000 +0200
-+++ chromium-119.0.6045.59/ui/gtk/gtk_ui.cc	2023-10-30 16:51:02.272151537 +0100
-@@ -993,11 +993,11 @@ ui::DisplayConfig GtkUi::GetDisplayConfi
-     GdkRectangle geometry;
-     gdk_monitor_get_geometry(monitor, &geometry);
-     int monitor_scale = std::max(1, gdk_monitor_get_scale_factor(monitor));
--    config.display_geometries.emplace_back(
-+    config.display_geometries.emplace_back() = {
-         gfx::Rect(monitor_scale * geometry.x, monitor_scale * geometry.y,
-                   monitor_scale * geometry.width,
-                   monitor_scale * geometry.height),
--        monitor_scale * font_scale);
-+        static_cast<float>(monitor_scale * font_scale)};
-   }
-   return config;
- }
-diff -up chromium-119.0.6045.59/base/metrics/persistent_histogram_allocator.cc.me chromium-119.0.6045.59/base/metrics/persistent_histogram_allocator.cc
---- chromium-119.0.6045.59/base/metrics/persistent_histogram_allocator.cc.me	2023-10-31 18:14:49.275728099 +0100
-+++ chromium-119.0.6045.59/base/metrics/persistent_histogram_allocator.cc	2023-10-31 18:19:54.599223239 +0100
-@@ -221,13 +221,13 @@ PersistentSparseHistogramDataManager::Lo
-     // The sample-record could be for any sparse histogram. Add the reference
-     // to the appropriate collection for later use.
-     if (found_id == match_id) {
--      found_records.emplace_back(ref, value);
-+      found_records.emplace_back() = {ref, value};
-       found = true;
+diff -up chromium-120.0.6099.56/third_party/pdfium/core/fpdfapi/render/cpdf_renderstatus.cpp.no_matching_constructor chromium-120.0.6099.56/third_party/pdfium/core/fpdfapi/render/cpdf_renderstatus.cpp
+--- chromium-120.0.6099.56/third_party/pdfium/core/fpdfapi/render/cpdf_renderstatus.cpp.no_matching_constructor	2023-11-29 22:41:46.000000000 +0100
++++ chromium-120.0.6099.56/third_party/pdfium/core/fpdfapi/render/cpdf_renderstatus.cpp	2023-12-03 17:31:25.756420342 +0100
+@@ -491,7 +491,7 @@ void CPDF_RenderStatus::ProcessClipPath(
      } else {
-       std::vector<ReferenceAndSample>* samples =
-           GetSampleMapRecordsWhileLocked(found_id);
-       CHECK(samples);
--      samples->emplace_back(ref, value);
-+      samples->emplace_back() = {ref, value};
+       m_pDevice->SetClip_PathFill(
+           *pPath, &mtObj2Device,
+-          CFX_FillRenderOptions(ClipPath.GetClipType(i)));
++          CFX_FillRenderOptions{ClipPath.GetClipType(i)});
      }
    }
  
-diff -up chromium-119.0.6045.59/net/dns/host_resolver_cache.cc.me chromium-119.0.6045.59/net/dns/host_resolver_cache.cc
---- chromium-119.0.6045.59/net/dns/host_resolver_cache.cc.me	2023-10-31 20:48:19.153868338 +0100
-+++ chromium-119.0.6045.59/net/dns/host_resolver_cache.cc	2023-10-31 20:51:37.634526549 +0100
-@@ -368,7 +368,7 @@ void HostResolverCache::Set(
- 
-   std::string domain_name = result->domain_name();
-   entries_.emplace(
--      Key(std::move(domain_name), network_anonymization_key),
-+      Key{std::move(domain_name), network_anonymization_key},
-       Entry(std::move(result), source, secure, staleness_generation));
- 
-   if (entries_.size() > max_entries_) {
-diff -up chromium-119.0.6045.59/components/autofill/core/browser/webdata/autofill_table.cc.me chromium-119.0.6045.59/components/autofill/core/browser/webdata/autofill_table.cc
---- chromium-119.0.6045.59/components/autofill/core/browser/webdata/autofill_table.cc.me	2023-10-31 22:32:58.995997897 +0100
-+++ chromium-119.0.6045.59/components/autofill/core/browser/webdata/autofill_table.cc	2023-10-31 22:33:28.290520601 +0100
-@@ -1733,10 +1733,10 @@ std::unique_ptr<AutofillProfile> Autofil
-     }
- 
-     base::span<const uint8_t> observations_data = s.ColumnBlob(3);
--    field_type_values.emplace_back(
-+    field_type_values.emplace_back() = {
-         type, s.ColumnString16(1), s.ColumnInt(2),
-         std::vector<uint8_t>(observations_data.begin(),
--                             observations_data.end()));
-+                             observations_data.end())};
- 
-     if (type == ADDRESS_HOME_COUNTRY) {
-       country_code = base::UTF16ToUTF8(s.ColumnString16(1));
-diff -up chromium-119.0.6045.59/components/password_manager/core/browser/password_manager.cc.than chromium-119.0.6045.59/components/password_manager/core/browser/password_manager.cc
---- chromium-119.0.6045.59/components/password_manager/core/browser/password_manager.cc.than	2023-10-31 22:41:22.850233005 +0100
-+++ chromium-119.0.6045.59/components/password_manager/core/browser/password_manager.cc	2023-10-31 22:42:37.276931933 +0100
-@@ -625,7 +625,7 @@ void PasswordManager::OnUserModifiedNonP
-   // |driver| might be empty on iOS or in tests.
-   int driver_id = driver ? driver->GetId() : 0;
-   possible_usernames_.Put(
--      PossibleUsernameFieldIdentifier(driver_id, renderer_id),
-+      PossibleUsernameFieldIdentifier{driver_id, renderer_id},
-       PossibleUsernameData(GetSignonRealm(driver->GetLastCommittedURL()),
-                            renderer_id, value, base::Time::Now(), driver_id,
-                            autocomplete_attribute_has_username, is_likely_otp));
-diff -up chromium-119.0.6045.59/content/browser/interest_group/interest_group_storage.cc.than chromium-119.0.6045.59/content/browser/interest_group/interest_group_storage.cc
---- chromium-119.0.6045.59/content/browser/interest_group/interest_group_storage.cc.than	2023-10-31 23:31:08.438267908 +0100
-+++ chromium-119.0.6045.59/content/browser/interest_group/interest_group_storage.cc	2023-10-31 23:32:08.979358711 +0100
-@@ -2854,10 +2854,10 @@ DoGetKAnonymityData(sql::Database& db,
- 
-   std::vector<StorageInterestGroup::KAnonymityData> k_anon_data;
-   while (interest_group_kanon_query.Step()) {
--    k_anon_data.emplace_back(
-+    k_anon_data.emplace_back() = {
-         /*key=*/interest_group_kanon_query.ColumnString(0),
-         /*is_k_anonymous=*/interest_group_kanon_query.ColumnBool(1),
--        /*last_updated=*/interest_group_kanon_query.ColumnTime(2));
-+        /*last_updated=*/interest_group_kanon_query.ColumnTime(2)};
-   }
-   if (!interest_group_kanon_query.Succeeded()) {
-     return absl::nullopt;
-diff -up chromium-119.0.6045.59/content/browser/webid/federated_auth_request_impl.cc.than chromium-119.0.6045.59/content/browser/webid/federated_auth_request_impl.cc
---- chromium-119.0.6045.59/content/browser/webid/federated_auth_request_impl.cc.than	2023-11-01 11:19:42.745395797 +0100
-+++ chromium-119.0.6045.59/content/browser/webid/federated_auth_request_impl.cc	2023-11-01 11:22:16.670920679 +0100
-@@ -1881,7 +1881,7 @@ void FederatedAuthRequestImpl::ShowError
-       base::BindOnce(&FederatedAuthRequestImpl::CompleteRequestWithError,
-                      weak_ptr_factory_.GetWeakPtr()));
-   absl::optional<TokenError> token_error =
--      error ? absl::make_optional<TokenError>(error->code, error->url)
-+      error ? absl::make_optional<TokenError>({error->code, error->url})
-             : absl::nullopt;
- 
-   // TODO(crbug.com/1485710): Refactor IdentityCredentialTokenError
---- chromium-119.0.6045.59/ui/base/wayland/color_manager_util.h.no_matching_constructor	2023-10-26 18:18:14.000000000 +0200
-+++ chromium-119.0.6045.59/ui/base/wayland/color_manager_util.h	2023-11-01 17:29:54.269820415 +0100
-@@ -52,53 +52,53 @@
+diff -up chromium-120.0.6099.56/ui/base/wayland/color_manager_util.h.no_matching_constructor chromium-120.0.6099.56/ui/base/wayland/color_manager_util.h
+--- chromium-120.0.6099.56/ui/base/wayland/color_manager_util.h.no_matching_constructor	2023-11-29 22:40:44.000000000 +0100
++++ chromium-120.0.6099.56/ui/base/wayland/color_manager_util.h	2023-12-03 17:31:25.755420323 +0100
+@@ -52,53 +52,53 @@ constexpr auto kChromaticityMap = base::
      zcr_color_manager_v1_chromaticity_names,
      PrimaryVersion>(
      {{ZCR_COLOR_MANAGER_V1_CHROMATICITY_NAMES_BT601_525_LINE,
@@ -391,7 +479,7 @@ diff -up chromium-119.0.6045.59/content/browser/webid/federated_auth_request_imp
  
  // A map from the zcr_color_manager_v1 eotf_names enum values
  // representing well-known EOTFs, to their equivalent TransferIDs.
-@@ -107,68 +107,68 @@
+@@ -107,68 +107,68 @@ constexpr auto kEotfMap = base::MakeFixe
      zcr_color_manager_v1_eotf_names,
      TransferVersion>({
      {ZCR_COLOR_MANAGER_V1_EOTF_NAMES_LINEAR,
@@ -498,7 +586,7 @@ diff -up chromium-119.0.6045.59/content/browser/webid/federated_auth_request_imp
  });
  
  // A map from the SDR zcr_color_manager_v1 eotf_names enum values
-@@ -177,18 +177,18 @@
+@@ -177,18 +177,18 @@ constexpr auto kEotfMap = base::MakeFixe
  constexpr auto kTransferMap =
      base::MakeFixedFlatMap<zcr_color_manager_v1_eotf_names, TransferFnVersion>({
          {ZCR_COLOR_MANAGER_V1_EOTF_NAMES_LINEAR,
@@ -524,7 +612,7 @@ diff -up chromium-119.0.6045.59/content/browser/webid/federated_auth_request_imp
      });
  
  // A map from the HDR zcr_color_manager_v1 eotf_names enum values
-@@ -197,70 +197,70 @@
+@@ -197,70 +197,70 @@ constexpr auto kTransferMap =
  constexpr auto kHDRTransferMap =
      base::MakeFixedFlatMap<zcr_color_manager_v1_eotf_names, TransferFnVersion>(
          {{ZCR_COLOR_MANAGER_V1_EOTF_NAMES_LINEAR,
@@ -628,76 +716,27 @@ diff -up chromium-119.0.6045.59/content/browser/webid/federated_auth_request_imp
  
  zcr_color_manager_v1_chromaticity_names ToColorManagerChromaticity(
      gfx::ColorSpace::PrimaryID primaryID,
-@@ -283,4 +283,4 @@
+@@ -283,4 +283,4 @@ zcr_color_manager_v1_eotf_names ToColorM
  
  }  // namespace ui::wayland
  
 -#endif  // UI_BASE_WAYLAND_COLOR_MANAGER_UTIL_H_
 \ Kein Zeilenumbruch am Dateiende.
 +#endif  // UI_BASE_WAYLAND_COLOR_MANAGER_UTIL_H_
-diff -up chromium-119.0.6045.59/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.me chromium-119.0.6045.59/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc
---- chromium-119.0.6045.59/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.me	2023-11-01 20:46:15.997861278 +0100
-+++ chromium-119.0.6045.59/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc	2023-11-01 20:49:33.603371680 +0100
-@@ -58,13 +58,13 @@ EmbeddedPermissionPromptPreviouslyGrante
- std::vector<EmbeddedPermissionPromptPreviouslyGrantedView::ButtonConfiguration>
- EmbeddedPermissionPromptPreviouslyGrantedView::GetButtonsConfiguration() {
-   std::vector<ButtonConfiguration> buttons;
--  buttons.emplace_back(
-+  buttons.emplace_back() = {
-       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_CONTINUE_ALLOWING),
--      ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal);
-+      ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal};
- 
--  buttons.emplace_back(
-+  buttons.emplace_back() = {
-       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_STOP_ALLOWING),
--      ButtonType::kStopAllowing, ui::ButtonStyle::kTonal);
-+      ButtonType::kStopAllowing, ui::ButtonStyle::kTonal};
-   return buttons;
- }
- 
-diff -up chromium-119.0.6045.59/chrome/browser/ui/views/permissions/embedded_permission_prompt_ask_view.cc.than chromium-119.0.6045.59/chrome/browser/ui/views/permissions/embedded_permission_prompt_ask_view.cc
---- chromium-119.0.6045.59/chrome/browser/ui/views/permissions/embedded_permission_prompt_ask_view.cc.than	2023-11-01 20:52:29.005464494 +0100
-+++ chromium-119.0.6045.59/chrome/browser/ui/views/permissions/embedded_permission_prompt_ask_view.cc	2023-11-01 21:14:12.741859604 +0100
-@@ -56,12 +56,12 @@ std::vector<EmbeddedPermissionPromptAskV
- EmbeddedPermissionPromptAskView::GetButtonsConfiguration() {
-   std::vector<ButtonConfiguration> buttons;
-   if (base::FeatureList::IsEnabled(permissions::features::kOneTimePermission)) {
--    buttons.emplace_back(
-+    buttons.emplace_back() = {
-         l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW_THIS_TIME),
--        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal);
-+        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal};
+diff -up chromium-120.0.6099.56/ui/gtk/gtk_ui.cc.no_matching_constructor chromium-120.0.6099.56/ui/gtk/gtk_ui.cc
+--- chromium-120.0.6099.56/ui/gtk/gtk_ui.cc.no_matching_constructor	2023-11-29 22:40:44.000000000 +0100
++++ chromium-120.0.6099.56/ui/gtk/gtk_ui.cc	2023-12-03 17:31:25.756420342 +0100
+@@ -1013,11 +1013,11 @@ ui::DisplayConfig GtkUi::GetDisplayConfi
+     GdkRectangle geometry;
+     gdk_monitor_get_geometry(monitor, &geometry);
+     int monitor_scale = std::max(1, gdk_monitor_get_scale_factor(monitor));
+-    config.display_geometries.emplace_back(
++    config.display_geometries.emplace_back() = {
+         gfx::Rect(monitor_scale * geometry.x, monitor_scale * geometry.y,
+                   monitor_scale * geometry.width,
+                   monitor_scale * geometry.height),
+-        monitor_scale * font_scale);
++        static_cast<float>(monitor_scale * font_scale)};
    }
--  buttons.emplace_back(l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW),
--                       ButtonType::kAllow, ui::ButtonStyle::kTonal);
-+  buttons.emplace_back() = {l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW),
-+                       ButtonType::kAllow, ui::ButtonStyle::kTonal};
-   return buttons;
- }
- 
-diff -up chromium-119.0.6045.59/chrome/browser/ui/views/permissions/embedded_permission_prompt_base_view.h.me chromium-119.0.6045.59/chrome/browser/ui/views/permissions/embedded_permission_prompt_base_view.h
---- chromium-119.0.6045.59/chrome/browser/ui/views/permissions/embedded_permission_prompt_base_view.h.me	2023-11-01 21:22:02.222646903 +0100
-+++ chromium-119.0.6045.59/chrome/browser/ui/views/permissions/embedded_permission_prompt_base_view.h	2023-11-01 21:19:58.769619393 +0100
-@@ -72,6 +72,7 @@ class EmbeddedPermissionPromptBaseView :
-   struct RequestLineConfiguration {
-     const raw_ptr<const gfx::VectorIcon> icon;
-     std::u16string message;
-+    RequestLineConfiguration(auto i, auto m) : icon(i), message(m) { }
-   };
- 
-   struct ButtonConfiguration {
-diff -up chromium-119.0.6045.59/chrome/browser/ui/views/permissions/embedded_permission_prompt_policy_view.cc.than chromium-119.0.6045.59/chrome/browser/ui/views/permissions/embedded_permission_prompt_policy_view.cc
---- chromium-119.0.6045.59/chrome/browser/ui/views/permissions/embedded_permission_prompt_policy_view.cc.than	2023-11-01 21:25:31.118626473 +0100
-+++ chromium-119.0.6045.59/chrome/browser/ui/views/permissions/embedded_permission_prompt_policy_view.cc	2023-11-01 21:30:06.383340274 +0100
-@@ -48,8 +48,8 @@ EmbeddedPermissionPromptPolicyView::GetR
- std::vector<EmbeddedPermissionPromptPolicyView::ButtonConfiguration>
- EmbeddedPermissionPromptPolicyView::GetButtonsConfiguration() {
-   std::vector<ButtonConfiguration> buttons;
--  buttons.emplace_back(l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_OK_LABEL),
--                       ButtonType::kPolicyOK, ui::ButtonStyle::kTonal);
-+  buttons.emplace_back() = {l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_OK_LABEL),
-+                       ButtonType::kPolicyOK, ui::ButtonStyle::kTonal};
-   return buttons;
+   return config;
  }
- 
diff --git a/srcpkgs/chromium/patches/chromium-120-split-threshold-for-reg-with-hint.patch b/srcpkgs/chromium/patches/chromium-120-split-threshold-for-reg-with-hint.patch
new file mode 100644
index 0000000000000..e80ed715aaf29
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-120-split-threshold-for-reg-with-hint.patch
@@ -0,0 +1,28 @@
+diff -up chromium-120.0.6099.35/build/config/compiler/BUILD.gn.than chromium-120.0.6099.35/build/config/compiler/BUILD.gn
+--- chromium-120.0.6099.35/build/config/compiler/BUILD.gn.than	2023-11-26 17:02:25.647022746 +0100
++++ chromium-120.0.6099.35/build/config/compiler/BUILD.gn	2023-11-26 17:15:58.025585358 +0100
+@@ -616,24 +616,6 @@ config("compiler") {
+       }
+     }
+ 
+-    # TODO(crbug.com/1488374): This causes binary size growth and potentially
+-    # other problems.
+-    # TODO(crbug.com/1491036): This isn't supported by Cronet's mainline llvm version.
+-    if (default_toolchain != "//build/toolchain/cros:target" &&
+-        !llvm_android_mainline) {
+-      cflags += [
+-        "-mllvm",
+-        "-split-threshold-for-reg-with-hint=0",
+-      ]
+-      if (use_thin_lto && is_a_target_toolchain) {
+-        if (is_win) {
+-          ldflags += [ "-mllvm:-split-threshold-for-reg-with-hint=0" ]
+-        } else {
+-          ldflags += [ "-Wl,-mllvm,-split-threshold-for-reg-with-hint=0" ]
+-        }
+-      }
+-    }
+-
+     # TODO(crbug.com/1235145): Investigate why/if this should be needed.
+     if (is_win) {
+       cflags += [ "/clang:-ffp-contract=off" ]
diff --git a/srcpkgs/chromium/patches/chromium-117-typename.patch b/srcpkgs/chromium/patches/chromium-120-typename.patch
similarity index 83%
rename from srcpkgs/chromium/patches/chromium-117-typename.patch
rename to srcpkgs/chromium/patches/chromium-120-typename.patch
index d3b00e7323603..9a2d878b12b54 100644
--- a/srcpkgs/chromium/patches/chromium-117-typename.patch
+++ b/srcpkgs/chromium/patches/chromium-120-typename.patch
@@ -1,3 +1,23 @@
+--- chromium-120.0.6099.56/base/containers/map_util.h.me	2023-12-02 19:00:19.696801563 +0100
++++ chromium-120.0.6099.56/base/containers/map_util.h	2023-12-02 19:00:47.049337547 +0100
+@@ -42,7 +42,7 @@
+ template <typename Map,
+           typename Key,
+           typename MappedElementType =
+-              std::pointer_traits<internal::MappedType<Map>>::element_type>
++              typename std::pointer_traits<internal::MappedType<Map>>::element_type>
+ constexpr const MappedElementType* FindPtrOrNull(const Map& map,
+                                                  const Key& key) {
+   auto it = map.find(key);
+@@ -58,7 +58,7 @@
+ template <typename Map,
+           typename Key,
+           typename MappedElementType =
+-              std::pointer_traits<internal::MappedType<Map>>::element_type>
++              typename std::pointer_traits<internal::MappedType<Map>>::element_type>
+ constexpr MappedElementType* FindPtrOrNull(Map& map, const Key& key) {
+   auto it = map.find(key);
+   return it != map.end() ? std::to_address(it->second) : nullptr;
 diff -up chromium-115.0.5790.24/chrome/browser/download/bubble/download_bubble_update_service.cc.me chromium-115.0.5790.24/chrome/browser/download/bubble/download_bubble_update_service.cc
 --- chromium-115.0.5790.24/chrome/browser/download/bubble/download_bubble_update_service.cc.me	2023-06-17 14:50:56.342591702 +0200
 +++ chromium-115.0.5790.24/chrome/browser/download/bubble/download_bubble_update_service.cc	2023-06-17 14:57:48.024377375 +0200
@@ -162,3 +182,24 @@ diff -up chromium-117.0.5938.62/components/supervised_user/core/browser/proto_fe
  
    // Remove fetcher under key from requests_in_flight_.
    void Remove(KeyType key);
+diff -up chromium-120.0.6099.56/third_party/blink/renderer/bindings/core/v8/async_iterable.h.me chromium-120.0.6099.56/third_party/blink/renderer/bindings/core/v8/async_iterable.h
+--- chromium-120.0.6099.56/third_party/blink/renderer/bindings/core/v8/async_iterable.h.me	2023-12-04 00:29:35.197209538 +0100
++++ chromium-120.0.6099.56/third_party/blink/renderer/bindings/core/v8/async_iterable.h	2023-12-04 00:30:24.436233249 +0100
+@@ -220,7 +220,7 @@ class PairAsyncIterable {
+  private:
+   virtual IterationSource* CreateIterationSource(
+       ScriptState* script_state,
+-      IterationSource::Kind kind,
++      typename IterationSource::Kind kind,
+       ExceptionState& exception_state) = 0;
+ };
+ 
+@@ -262,7 +262,7 @@ class ValueAsyncIterable {
+  private:
+   virtual IterationSource* CreateIterationSource(
+       ScriptState* script_state,
+-      IterationSource::Kind kind,
++      typename IterationSource::Kind kind,
+       ExceptionState& exception_state) = 0;
+ };
+ 
diff --git a/srcpkgs/chromium/patches/chromium-120-workaround_clang_bug-structured_binding.patch b/srcpkgs/chromium/patches/chromium-120-workaround_clang_bug-structured_binding.patch
new file mode 100644
index 0000000000000..b06e29f29047a
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-120-workaround_clang_bug-structured_binding.patch
@@ -0,0 +1,51 @@
+diff -up chromium-115.0.5790.24/media/base/cdm_promise_adapter.cc.workaround_clang_bug-structured_binding chromium-115.0.5790.24/media/base/cdm_promise_adapter.cc
+--- chromium-115.0.5790.24/media/base/cdm_promise_adapter.cc.workaround_clang_bug-structured_binding	2023-06-07 21:48:37.000000000 +0200
++++ chromium-115.0.5790.24/media/base/cdm_promise_adapter.cc	2023-06-17 16:53:20.216628557 +0200
+@@ -94,7 +94,9 @@ void CdmPromiseAdapter::RejectPromise(ui
+ void CdmPromiseAdapter::Clear(ClearReason reason) {
+   // Reject all outstanding promises.
+   DCHECK(thread_checker_.CalledOnValidThread());
+-  for (auto& [promise_id, promise] : promises_) {
++  for (auto& [p_i, p_e] : promises_) {
++    auto& promise_id = p_i;
++    auto& promise = p_e;
+     TRACE_EVENT_NESTABLE_ASYNC_END1(
+         "media", "CdmPromise", TRACE_ID_WITH_SCOPE("CdmPromise", promise_id),
+         "status", "cleared");
+diff -up chromium-115.0.5790.32/content/browser/service_worker/service_worker_context_wrapper.cc.me chromium-115.0.5790.32/content/browser/service_worker/service_worker_context_wrapper.cc
+--- chromium-115.0.5790.32/content/browser/service_worker/service_worker_context_wrapper.cc.me	2023-06-19 08:04:02.287072722 +0200
++++ chromium-115.0.5790.32/content/browser/service_worker/service_worker_context_wrapper.cc	2023-06-19 08:18:24.576814950 +0200
+@@ -1393,7 +1393,8 @@ void ServiceWorkerContextWrapper::MaybeP
+     return;
+   }
+ 
+-  auto [document_url, key, callback] = std::move(*request);
++  auto [d_u, key, callback] = std::move(*request);
++  auto document_url = d_u;
+ 
+   DCHECK(document_url.is_valid());
+   TRACE_EVENT1("ServiceWorker",
+diff -up chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc.me chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc
+--- chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc.me	2023-12-03 22:17:50.922083200 +0100
++++ chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc	2023-12-03 22:22:55.437484343 +0100
+@@ -3447,7 +3447,8 @@ void GridLayoutAlgorithm::PlaceGridItems
+   DCHECK(out_row_break_between);
+ 
+   const auto& container_space = ConstraintSpace();
+-  const auto& [grid_items, layout_data, tree_size] = sizing_tree.TreeRootData();
++  const auto& [grid_items, l_d, tree_size] = sizing_tree.TreeRootData();
++  const auto& layout_data = l_d;
+ 
+   const auto* cached_layout_subtree = container_space.GetGridLayoutSubtree();
+   const auto container_writing_direction =
+@@ -3611,7 +3612,9 @@ void GridLayoutAlgorithm::PlaceGridItems
+ 
+   // TODO(ikilpatrick): Update |SetHasSeenAllChildren| and early exit if true.
+   const auto& constraint_space = ConstraintSpace();
+-  const auto& [grid_items, layout_data, tree_size] = sizing_tree.TreeRootData();
++  const auto& [g_i, l_d, tree_size] = sizing_tree.TreeRootData();
++  const auto& grid_items = g_i;
++  const auto& layout_data = l_d;
+ 
+   const auto* cached_layout_subtree = constraint_space.GetGridLayoutSubtree();
+   const auto container_writing_direction =
diff --git a/srcpkgs/chromium/patches/fix-aarch64-musl-memory-tagging-macros.patch b/srcpkgs/chromium/patches/fix-aarch64-musl-memory-tagging-macros.patch
index afcdae179850a..b3dd2c33f0f21 100644
--- a/srcpkgs/chromium/patches/fix-aarch64-musl-memory-tagging-macros.patch
+++ b/srcpkgs/chromium/patches/fix-aarch64-musl-memory-tagging-macros.patch
@@ -1,5 +1,5 @@
---- a/base/allocator/partition_allocator/tagging.cc
-+++ b/base/allocator/partition_allocator/tagging.cc
+--- a/base/allocator/partition_allocator/src/partition_alloc/tagging.cc
++++ b/base/allocator/partition_allocator/src/partition_alloc/tagging.cc
 @@ -28,13 +28,25 @@
  #endif
  #endif
diff --git a/srcpkgs/chromium/patches/musl-no-execinfo.patch b/srcpkgs/chromium/patches/musl-no-execinfo.patch
index fac2b6d190e78..7407f1b9db38a 100644
--- a/srcpkgs/chromium/patches/musl-no-execinfo.patch
+++ b/srcpkgs/chromium/patches/musl-no-execinfo.patch
@@ -83,12 +83,3 @@ for discussion about this, see https://www.openwall.com/lists/musl/2021/07/16/1
  // StackTrace::OutputToStream() is not implemented under uclibc, nor AIX.
  // See https://crbug.com/706728
  
-@@ -156,7 +156,7 @@
- 
- #endif  // !defined(__UCLIBC__) && !defined(_AIX)
- 
--#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_ANDROID)
-+#if (BUILDFLAG(IS_POSIX) && defined(__GLIBC__)) && !BUILDFLAG(IS_ANDROID)
- #if !BUILDFLAG(IS_IOS)
- static char* newArray() {
-   // Clang warns about the mismatched new[]/delete if they occur in the same
diff --git a/srcpkgs/chromium/patches/musl-no-mallinfo.patch b/srcpkgs/chromium/patches/musl-no-mallinfo.patch
index cd728ecfb112d..a58ee08a435a0 100644
--- a/srcpkgs/chromium/patches/musl-no-mallinfo.patch
+++ b/srcpkgs/chromium/patches/musl-no-mallinfo.patch
@@ -101,8 +101,8 @@ musl does not implement mallinfo()/mallinfo2()
  
  /* Define to 1 if you have the <malloc.h> header file. */
  #define HAVE_MALLOC_H 1
---- a/base/allocator/partition_allocator/shim/allocator_shim_default_dispatch_to_partition_alloc.cc
-+++ b/base/allocator/partition_allocator/shim/allocator_shim_default_dispatch_to_partition_alloc.cc
+--- a/base/allocator/partition_allocator/src/partition_alloc/shim/allocator_shim_default_dispatch_to_partition_alloc.cc
++++ b/base/allocator/partition_allocator/src/partition_alloc/shim/allocator_shim_default_dispatch_to_partition_alloc.cc
 @@ -717,7 +717,7 @@
  
  #endif  // !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_ANDROID)
@@ -112,8 +112,8 @@ musl does not implement mallinfo()/mallinfo2()
  SHIM_ALWAYS_EXPORT struct mallinfo mallinfo(void) __THROW {
    base::SimplePartitionStatsDumper allocator_dumper;
    Allocator()->DumpStats("malloc", true, &allocator_dumper);
---- a/base/allocator/partition_allocator/shim/allocator_shim_default_dispatch_to_partition_alloc_unittest.cc
-+++ b/base/allocator/partition_allocator/shim/allocator_shim_default_dispatch_to_partition_alloc_unittest.cc
+--- a/base/allocator/partition_allocator/src/partition_alloc/shim/allocator_shim_default_dispatch_to_partition_alloc_unittest.cc
++++ b/base/allocator/partition_allocator/src/partition_alloc/shim/allocator_shim_default_dispatch_to_partition_alloc_unittest.cc
 @@ -24,7 +24,7 @@
  #if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC)
  
diff --git a/srcpkgs/chromium/patches/musl-partition-atfork.patch b/srcpkgs/chromium/patches/musl-partition-atfork.patch
index 2910aa2bbf9b1..35d810055fbb5 100644
--- a/srcpkgs/chromium/patches/musl-partition-atfork.patch
+++ b/srcpkgs/chromium/patches/musl-partition-atfork.patch
@@ -1,5 +1,5 @@
---- a/base/allocator/partition_allocator/partition_root.cc
-+++ b/base/allocator/partition_allocator/partition_root.cc
+--- a/base/allocator/partition_allocator/src/partition_alloc/partition_root.cc
++++ b/base/allocator/partition_allocator/src/partition_alloc/partition_root.cc
 @@ -239,7 +239,7 @@
    if (!g_global_init_called.compare_exchange_strong(expected, true))
      return;
diff --git a/srcpkgs/chromium/patches/no-mte.patch b/srcpkgs/chromium/patches/no-mte.patch
deleted file mode 100644
index 56167e1e5c576..0000000000000
--- a/srcpkgs/chromium/patches/no-mte.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/base/allocator/partition_allocator/partition_alloc_config.h
-+++ b/base/allocator/partition_allocator/partition_alloc_config.h
-@@ -153,7 +153,7 @@
-    defined(ARCH_CPU_LITTLE_ENDIAN))
- 
- #define PA_CONFIG_HAS_MEMORY_TAGGING()              \
--  (defined(ARCH_CPU_ARM64) && defined(__clang__) && \
-+  (0 && defined(ARCH_CPU_ARM64) && defined(__clang__) && \
-    !defined(ADDRESS_SANITIZER) &&                   \
-    (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID)))
- 
diff --git a/srcpkgs/chromium/template b/srcpkgs/chromium/template
index b023946f3ec7b..67c22d8c9f5ba 100644
--- a/srcpkgs/chromium/template
+++ b/srcpkgs/chromium/template
@@ -1,8 +1,8 @@
 # Template file for 'chromium'
 pkgname=chromium
 # See https://chromiumdash.appspot.com/releases?platform=Linux for the latest version
-version=119.0.6045.105
-revision=3
+version=120.0.6099.109
+revision=1
 archs="i686* x86_64* aarch64* armv7l*"
 hostmakedepends="
  $(vopt_if clang "clang lld llvm15")
@@ -10,12 +10,12 @@ hostmakedepends="
  libepoxy-devel libevent-devel libglib-devel"
 makedepends="
  alsa-lib-devel libdav1d-devel brotli-devel cups-devel elfutils-devel ffmpeg-devel
- fontconfig-devel freetype-devel gtk+3-devel jsoncpp-devel libXScrnSaver-devel
+ fontconfig-devel freetype-devel gtk+3-devel libXScrnSaver-devel
  libXcomposite-devel libXcursor-devel libXdamage-devel libXi-devel libXrandr-devel
  libavif-devel libcap-devel libcurl-devel libdrm-devel libevent-devel
  libexif-devel libflac-devel libgcrypt-devel libjpeg-turbo-devel libmtp-devel
  libpng-devel libva-devel libwebp-devel libxml2-devel libxshmfence-devel
- libxslt-devel woff2-devel minizip-devel mit-krb5-devel nss-devel opus-devel
+ libxslt-devel minizip-devel mit-krb5-devel nss-devel opus-devel
  pciutils-devel snappy-devel speech-dispatcher-devel speex-devel
  xcb-proto zlib-devel libaom-devel libffi-devel libevdev-devel
  $(vopt_if pipewire pipewire-devel)
@@ -27,13 +27,14 @@ maintainer="Duncaen <duncaen@voidlinux.org>"
 license="BSD-3-Clause"
 homepage="https://www.chromium.org/"
 distfiles="https://commondatastorage.googleapis.com/chromium-browser-official/${pkgname}-${version}.tar.xz"
-checksum=73cb8c39e928f8c627d747d37a3b020f08913ef5508f893758d70bdbd545dbcf
+checksum=87c00c525ee07c2233b78dbece1496b697f686244a67fac2c71e4a30bd96849b
 
 lib32disabled=yes
 
-build_options="clang debug vaapi pulseaudio sndio pipewire"
-build_options_default="clang vaapi pulseaudio pipewire"
+build_options="clang libcxx debug vaapi pulseaudio sndio pipewire"
+build_options_default="clang libcxx vaapi pulseaudio pipewire"
 desc_option_clang="Use clang to build"
+desc_option_libcxx="Use bundled libc++"
 desc_option_debug="Build with debug symbols"
 desc_option_pipewire="Enable support for screen sharing for WebRTC via PipeWire"
 
@@ -52,7 +53,7 @@ if [ "$CROSS_BUILD" ]; then
 	 $(vopt_if pipewire pipewire-devel) ffmpeg-devel opus-devel pango-devel libva-devel
 	 libcurl-devel snappy-devel libXrandr-devel libXcomposite-devel cups-devel
 	 mit-krb5-devel alsa-lib-devel libXdamage-devel libepoxy-devel libevdev-devel
-	 libavif-devel libaom-devel jsoncpp-devel woff2-devel libdav1d-devel libflac-devel
+	 libavif-devel libaom-devel libdav1d-devel libflac-devel
 	 libdrm-devel libgbm-devel"
 fi
 
@@ -82,6 +83,9 @@ post_patch() {
 	# allow system dependencies in "official builds"
 	vsed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
 		tools/generate_shim_headers/generate_shim_headers.py
+
+	mkdir -p third_party/node/linux/node-linux-x64/bin
+	ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/
 }
 
 _setup_clang() {
@@ -100,7 +104,7 @@ _setup_clang() {
 	export BUILD_NM=llvm-nm
 	export BUILD_CFLAGS="-Wno-unknown-warning-option"
 	export BUILD_CXXFLAGS="-Wno-unknown-warning-option"
-	if [ "$CROSS_BUILD" ]; then
+	if [[ -n "$CROSS_BUILD" && -z "$build_option_libcxx" ]]; then
 		CFLAGS+=" --gcc-toolchain=/usr"
 		CFLAGS+=" --sysroot=${XBPS_CROSS_BASE}"
 		CFLAGS+=" -nostdinc"
@@ -144,6 +148,8 @@ do_configure() {
 	# use_system_v8=1
 	# bzip2 xdg_utils speex
 	# XXX: harfbuzz-ng use builtin one until system-wide is updated >=3.0.0
+	# libcxx https://github.com/llvm/llvm-project/issues/61705:
+	# snappy
 	system="
 		ffmpeg
 		flac
@@ -157,7 +163,6 @@ do_configure() {
 		libxml
 		libxslt
 		opus
-		snappy
 	"
 
 	# remove build scripts for system provided dependencies - basically does the
@@ -192,7 +197,7 @@ do_configure() {
 		'clang_base_path="/usr"'
 
 		"gold_path=\"${XBPS_CROSS_BASE}/usr/bin/ld.gold\""
-		'use_custom_libcxx=false'
+		"use_custom_libcxx=$(vopt_if libcxx true false)" # https://github.com/llvm/llvm-project/issues/61705
 		'use_gold=false'
 
 		'rust_sysroot_absolute="/usr"'
@@ -304,7 +309,6 @@ do_install() {
 	vmkdir usr/lib/chromium/locales
 	vcopy "out/Release/locales/*.pak" usr/lib/chromium/locales
 
-	vinstall ${FILESDIR}/chromium.desktop 644 usr/share/applications
 
 	vinstall out/Release/icudtl.dat 0644 usr/lib/chromium
 
@@ -322,4 +326,14 @@ do_install() {
 	vbin ${FILESDIR}/chromium.sh chromium
 	vlicense LICENSE
 	ln -sf /usr/lib/chromium/chromedriver ${DESTDIR}/usr/bin/chromedriver
+
+	vinstall chrome/installer/linux/common/desktop.template 644 usr/share/applications chromium.desktop
+	vman chrome/app/resources/manpage.1.in chromium.1
+
+	sed -i \
+		-e 's/@@MENUNAME@@/Chromium/g' \
+		-e 's/@@PACKAGE@@/chromium/g' \
+		-e 's/@@USR_BIN_SYMLINK_NAME@@/chromium/g' \
+		${DESTDIR}/usr/share/man/man1/chromium.1 \
+		${DESTDIR}/usr/share/applications/chromium.desktop
 }
diff --git a/srcpkgs/chromium/update b/srcpkgs/chromium/update
index c035a8fe1c3b3..af42867275488 100644
--- a/srcpkgs/chromium/update
+++ b/srcpkgs/chromium/update
@@ -1,2 +1,2 @@
-site='https://omahaproxy.appspot.com/all'
-pattern='linux,stable,\K[^,]*'
+site='https://chromiumdash.appspot.com/fetch_releases?channel=Stable&platform=Linux&num=1&offset=0'
+pattern='"version":\s*"\K[^,]+(?=")'
diff --git a/srcpkgs/discord-ptb/template b/srcpkgs/discord-ptb/template
index d968ccf7c7438..3234d4d893180 100644
--- a/srcpkgs/discord-ptb/template
+++ b/srcpkgs/discord-ptb/template
@@ -1,6 +1,6 @@
 # Template file for 'discord-ptb'
 pkgname=discord-ptb
-version=0.0.59
+version=0.0.60
 revision=1
 archs="x86_64"
 depends="alsa-lib dbus-glib gtk+3 libnotify nss libXtst libcxx libatomic
@@ -10,7 +10,7 @@ maintainer="0x5c <dev@0x5c.io>"
 license="custom:Proprietary"
 homepage="https://discord.com/"
 distfiles="https://dl-ptb.discordapp.net/apps/linux/${version}/discord-ptb-${version}.tar.gz"
-checksum=5a10c4c91323bb2d9ed4de75b548f7bfded8d2a59a6c214f4e169e85a757156b
+checksum=84d8442c296b9ea6cc9237d4ec4815405ebf257789de029c5e84b8b78e6a8c55
 nopie=yes
 restricted=yes
 repository=nonfree
diff --git a/srcpkgs/hexyl/template b/srcpkgs/hexyl/template
index 48be35da1530a..834743966df3d 100644
--- a/srcpkgs/hexyl/template
+++ b/srcpkgs/hexyl/template
@@ -1,6 +1,6 @@
 # Template file for 'hexyl'
 pkgname=hexyl
-version=0.13.1
+version=0.14.0
 revision=1
 build_style=cargo
 short_desc="Command-line hex viewer"
@@ -9,7 +9,7 @@ license="Apache-2.0, MIT"
 homepage="https://github.com/sharkdp/hexyl"
 changelog="https://raw.githubusercontent.com/sharkdp/hexyl/master/CHANGELOG.md"
 distfiles="https://github.com/sharkdp/hexyl/archive/v${version}.tar.gz"
-checksum=a4b3009aa7210f7d80f91d6b01543d1544586c4509247f01e028f1a56781056d
+checksum=5205fa1a483c66997f5a7179cdd1a277ebb5e0a743bb269a962d20b29dd735f8
 
 post_install() {
 	vlicense LICENSE-MIT
diff --git a/srcpkgs/horizon/template b/srcpkgs/horizon/template
index 97ed737c2c561..47d681f66d75b 100644
--- a/srcpkgs/horizon/template
+++ b/srcpkgs/horizon/template
@@ -1,14 +1,14 @@
 # Template file for 'horizon'
 pkgname=horizon
 version=2.5.0
-revision=1
+revision=2
 build_style=gnu-makefile
 make_build_args="GOLD="
 make_install_target="install install-man"
 make_use_env=yes
 hostmakedepends="pkg-config glib-devel"
 makedepends="cairomm-devel librsvg-devel sqlite-devel
- glm libgit2-devel libcurl-devel occt-devel cppzmq libpodofo-devel libzip-devel
+ glm libgit2-devel libcurl-devel occt-devel cppzmq libpodofo0.9.7-devel libzip-devel
  gtkmm-devel libepoxy-devel libsodium-devel libarchive-devel libspnav-devel"
 short_desc="Free EDA package"
 maintainer="Érico Nogueira <ericonr@disroot.org>"
diff --git a/srcpkgs/jq/template b/srcpkgs/jq/template
index b8d4f9617d1d3..b7515b74a783c 100644
--- a/srcpkgs/jq/template
+++ b/srcpkgs/jq/template
@@ -1,6 +1,6 @@
 # Template file for 'jq'
 pkgname=jq
-version=1.7
+version=1.7.1
 revision=1
 build_style=gnu-configure
 hostmakedepends="automake libtool"
@@ -11,7 +11,7 @@ maintainer="Leah Neukirchen <leah@vuxu.org>"
 license="MIT"
 homepage="https://jqlang.github.io/jq/"
 distfiles="https://github.com/jqlang/jq/releases/download/jq-${version}/jq-${version}.tar.gz"
-checksum=402a0d6975d946e6f4e484d1a84320414a0ff8eb6cf49d2c11d144d4d344db62
+checksum=478c9ca129fd2e3443fe27314b455e211e0d8c60bc8ff7df703873deeee580c2
 CFLAGS=" -D_LARGE_FILE_SOURCE=1 -D_FILE_OFFSET_BITS=64"
 
 pre_configure() {
@@ -32,5 +32,6 @@ jq-devel_package() {
 		vmove usr/include
 		vmove usr/lib/*.a
 		vmove usr/lib/*.so
+		vmove usr/lib/pkgconfig
 	}
 }
diff --git a/srcpkgs/knot/template b/srcpkgs/knot/template
index fd8e9519c4be4..463006d556ae8 100644
--- a/srcpkgs/knot/template
+++ b/srcpkgs/knot/template
@@ -1,6 +1,6 @@
 # Template file for 'knot'
 pkgname=knot
-version=3.3.2
+version=3.3.3
 revision=1
 build_style=gnu-configure
 configure_args="
@@ -21,7 +21,7 @@ license="GPL-3.0-or-later"
 homepage="https://www.knot-dns.cz/"
 changelog="https://github.com/CZ-NIC/knot/raw/${version%*.*}/NEWS"
 distfiles="https://secure.nic.cz/files/knot-dns/knot-${version}.tar.xz"
-checksum=0d65d4b59f5df69b78c6295ade0a2ea7931831de7ef5eeee3e00f8a20af679e4
+checksum=aab40aab2acd735c500f296bacaa5c84ff0488221a4068ce9946e973beacc5ae
 
 system_accounts="_knot"
 _knot_homedir="/var/lib/knot"
diff --git a/srcpkgs/krename/patches/podofo-0.10.patch b/srcpkgs/krename/patches/podofo-0.10.patch
new file mode 100644
index 0000000000000..4cb7751408d20
--- /dev/null
+++ b/srcpkgs/krename/patches/podofo-0.10.patch
@@ -0,0 +1,107 @@
+From 056d614dc2166cd25749caf264b1b4d9d348f4d4 Mon Sep 17 00:00:00 2001
+From: Antonio Rojas <arojas@archlinux.org>
+Date: Mon, 17 Jul 2023 20:29:37 +0000
+Subject: [PATCH] Support podofo 0.10
+
+Version 0.10 of podofo is a complete rewrite. krename's use of it is minimal, so porting is easy.
+
+Switch the cmake module to use pkgconfig, which is available since 0.9.5 (release in 2017).
+
+Unfortunately, the hack to find the version number is still needed, since the pc file is buggy and ships an empty "Version" field.
+---
+ cmake/modules/FindPoDoFo.cmake | 31 +++++++++++++++----------------
+ src/podofoplugin.cpp           | 20 ++++++++++++++++++++
+ 2 files changed, 35 insertions(+), 16 deletions(-)
+
+--- a/cmake/modules/FindPoDoFo.cmake
++++ b/cmake/modules/FindPoDoFo.cmake
+@@ -36,15 +36,8 @@
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+-find_path(PoDoFo_INCLUDE_DIRS
+-  NAMES podofo/podofo.h
+-)
+-find_library(PoDoFo_LIBRARIES
+-  NAMES libpodofo podofo
+-)
+-
+-include(FindPackageHandleStandardArgs)
+-find_package_handle_standard_args(PoDoFo DEFAULT_MSG PoDoFo_LIBRARIES PoDoFo_INCLUDE_DIRS)
++include(FindPkgConfig)
++pkg_search_module(PoDoFo libpodofo libpodofo-0)
+ 
+ set(PoDoFo_DEFINITIONS)
+ if(PoDoFo_FOUND)
+@@ -61,17 +54,19 @@ if(PoDoFo_FOUND)
+     endif()
+   endif()
+ 
+-  # PoDoFo-0.9.5 unconditionally includes openssl/opensslconf.h in a public
+-  # header. The fix is in https://sourceforge.net/p/podofo/code/1830/ and will
+-  # hopefully be released soon with 0.9.6. Note that krename doesn't use
+-  # OpenSSL in any way.
+-  file(STRINGS "${PoDoFo_INCLUDE_DIRS}/podofo/base/podofo_config.h" PoDoFo_MAJOR_VER_LINE REGEX "^#define[ \t]+PODOFO_VERSION_MAJOR[ \t]+[0-9]+$")
+-  file(STRINGS "${PoDoFo_INCLUDE_DIRS}/podofo/base/podofo_config.h" PoDoFo_MINOR_VER_LINE REGEX "^#define[ \t]+PODOFO_VERSION_MINOR[ \t]+[0-9]+$")
+-  file(STRINGS "${PoDoFo_INCLUDE_DIRS}/podofo/base/podofo_config.h" PoDoFo_PATCH_VER_LINE REGEX "^#define[ \t]+PODOFO_VERSION_PATCH[ \t]+[0-9]+$")
++  find_file(PoDoFo_CONFIG podofo_config.h PATHS ${PoDoFo_INCLUDE_DIRS} PATH_SUFFIXES auxiliary base)
++  file(STRINGS "${PoDoFo_CONFIG}" PoDoFo_MAJOR_VER_LINE REGEX "^#define[ \t]+PODOFO_VERSION_MAJOR[ \t]+[0-9]+$")
++  file(STRINGS "${PoDoFo_CONFIG}" PoDoFo_MINOR_VER_LINE REGEX "^#define[ \t]+PODOFO_VERSION_MINOR[ \t]+[0-9]+$")
++  file(STRINGS "${PoDoFo_CONFIG}" PoDoFo_PATCH_VER_LINE REGEX "^#define[ \t]+PODOFO_VERSION_PATCH[ \t]+[0-9]+$")
+   string(REGEX REPLACE "^#define[ \t]+PODOFO_VERSION_MAJOR[ \t]+([0-9]+)$" "\\1" PoDoFo_MAJOR_VER "${PoDoFo_MAJOR_VER_LINE}")
+   string(REGEX REPLACE "^#define[ \t]+PODOFO_VERSION_MINOR[ \t]+([0-9]+)$" "\\1" PoDoFo_MINOR_VER "${PoDoFo_MINOR_VER_LINE}")
+   string(REGEX REPLACE "^#define[ \t]+PODOFO_VERSION_PATCH[ \t]+([0-9]+)$" "\\1" PoDoFo_PATCH_VER "${PoDoFo_PATCH_VER_LINE}")
+   set(PoDoFo_VERSION "${PoDoFo_MAJOR_VER}.${PoDoFo_MINOR_VER}.${PoDoFo_PATCH_VER}")
++
++  # PoDoFo-0.9.5 unconditionally includes openssl/opensslconf.h in a public
++  # header. The fix is in https://sourceforge.net/p/podofo/code/1830/ and will
++  # hopefully be released soon with 0.9.6. Note that krename doesn't use
++  # OpenSSL in any way.
+   if(PoDoFo_VERSION VERSION_EQUAL "0.9.5")
+     find_package(OpenSSL)
+     if (OpenSSL_FOUND)
+@@ -84,4 +79,8 @@ if(PoDoFo_FOUND)
+   endif()
+ endif()
+ 
++if(PoDoFo_VERSION VERSION_GREATER_EQUAL 0.10.0)
++  set(CMAKE_CXX_STANDARD 17)
++endif()
++
+ mark_as_advanced(PoDoFo_INCLUDE_DIRS PoDoFo_LIBRARIES PoDoFo_DEFINITIONS)
+--- a/src/podofoplugin.cpp
++++ b/src/podofoplugin.cpp
+@@ -61,6 +61,25 @@ QString PodofoPlugin::processFile(BatchR
+     try {
+         PdfMemDocument doc;
+         doc.Load(filename.toUtf8().data());
++#if (PODOFO_VERSION_MINOR>=10 || PODOFO_VERSION_MAJOR>=1)
++        const PdfInfo *info = doc.GetInfo();
++
++        if (token == "pdfauthor") {
++            return info->GetAuthor().has_value() ? QString::fromUtf8(info->GetAuthor()->GetString().c_str()) : QString();
++        } else if (token == "pdfcreator") {
++            return info->GetCreator().has_value() ? QString::fromUtf8(info->GetCreator()->GetString().c_str()) : QString();
++        } else if (token == "pdfkeywords") {
++            return info->GetKeywords().has_value() ? QString::fromUtf8(info->GetKeywords()->GetString().c_str()) : QString();
++        } else if (token == "pdfsubject") {
++            return info->GetSubject().has_value() ? QString::fromUtf8(info->GetSubject()->GetString().c_str()) : QString();
++        } else if (token == "pdftitle") {
++            return info->GetTitle().has_value() ? QString::fromUtf8(info->GetTitle()->GetString().c_str()) : QString();
++        } else if (token == "pdfproducer") {
++            return info->GetProducer().has_value() ? QString::fromUtf8(info->GetProducer()->GetString().c_str()) : QString();
++        } else if (token == "pdfpages") {
++            return QString::number(doc.GetPages().GetCount());
++        }
++#else
+         PdfInfo *info = doc.GetInfo();
+ 
+         if (token == "pdfauthor") {
+@@ -78,6 +97,7 @@ QString PodofoPlugin::processFile(BatchR
+         } else if (token == "pdfpages") {
+             return QString::number(doc.GetPageCount());
+         }
++#endif
+     } catch (PdfError &error) {
+         return QString::fromUtf8(error.what());
+     }
diff --git a/srcpkgs/krename/template b/srcpkgs/krename/template
index df5535007714a..2c4486a763144 100644
--- a/srcpkgs/krename/template
+++ b/srcpkgs/krename/template
@@ -1,7 +1,7 @@
 # Template file for 'krename'
 pkgname=krename
 version=5.0.2
-revision=2
+revision=3
 build_style=cmake
 hostmakedepends="extra-cmake-modules gettext kcoreaddons pkg-config qt5-host-tools qt5-qmake"
 makedepends="exiv2-devel freetype-devel kjs-devel kparts-devel libpodofo-devel
diff --git a/srcpkgs/libpodofo0.9.7-devel b/srcpkgs/libpodofo0.9.7-devel
new file mode 120000
index 0000000000000..4e2b28da11e22
--- /dev/null
+++ b/srcpkgs/libpodofo0.9.7-devel
@@ -0,0 +1 @@
+libpodofo0.9.7
\ No newline at end of file
diff --git a/srcpkgs/libpodofo0.9.7/template b/srcpkgs/libpodofo0.9.7/template
new file mode 100644
index 0000000000000..c49e8ebd7507e
--- /dev/null
+++ b/srcpkgs/libpodofo0.9.7/template
@@ -0,0 +1,26 @@
+# Template file for 'libpodofo0.9.7'
+pkgname=libpodofo0.9.7
+version=0.9.7
+revision=1
+build_style=cmake
+configure_args="-DPODOFO_BUILD_SHARED=TRUE -DPODOFO_BUILD_LIB_ONLY=TRUE"
+makedepends="fontconfig-devel libidn-devel openssl-devel lua53-devel tiff-devel"
+short_desc="Library to work with the PDF file format"
+maintainer="Andrea Brancaleoni <abc@pompel.me>"
+license="LGPL-2.1-or-later"
+homepage="https://github.com/podofo/podofo"
+distfiles="https://github.com/podofo/podofo/archive/refs/tags/${version}.tar.gz"
+checksum=42d7eaa3c8ffabf001121447830343c4362e562d0f12192b033a393f334a64a6
+disable_parallel_build=yes
+replaces="libpodofo<=${version}_999"
+provides="libpodofo-${version}_${revision}"
+
+libpodofo0.9.7-devel_package() {
+	short_desc+=" - development files"
+	depends="${sourcepkg}-${version}_${revision}"
+	conflicts="libpodofo-devel>=0"
+	pkg_install() {
+		vmove usr/include
+		vmove usr/lib/*.so
+	}
+}
diff --git a/srcpkgs/libxslt/template b/srcpkgs/libxslt/template
index a60b433342ed1..b4ebb999340d4 100644
--- a/srcpkgs/libxslt/template
+++ b/srcpkgs/libxslt/template
@@ -1,7 +1,7 @@
 # Template file for 'libxslt'
 pkgname=libxslt
 version=1.1.39
-revision=1
+revision=2
 build_style=gnu-configure
 configure_args="--enable-static --disable-dependency-tracking"
 hostmakedepends="docbook-xml docbook-xsl libtool pkg-config python3"
diff --git a/srcpkgs/linux6.6/template b/srcpkgs/linux6.6/template
index 59a7c71e9c916..54625c232d91f 100644
--- a/srcpkgs/linux6.6/template
+++ b/srcpkgs/linux6.6/template
@@ -1,6 +1,6 @@
 # Template file for 'linux6.6'
 pkgname=linux6.6
-version=6.6.6
+version=6.6.7
 revision=1
 short_desc="Linux kernel and modules (${version%.*} series)"
 maintainer="Duncaen <duncaen@voidlinux.org>"
@@ -14,7 +14,7 @@ if [ "${version##*.}" != 0 ]; then
 fi
 
 checksum="d926a06c63dd8ac7df3f86ee1ffc2ce2a3b81a2d168484e76b5b389aba8e56d0
- a886c592f43c0a975d40bb424b83a17f599d64bfb169e3fc9efd32eeb42b1eb2"
+ b227017c1aba9089054a2ca8b6671225de948a6643d7a759558386540f55d1e2"
 python_version=3
 
 # XXX Restrict archs until a proper <arch>-dotconfig is available in FILESDIR.
diff --git a/srcpkgs/mpvpaper/template b/srcpkgs/mpvpaper/template
index f68a0ae209126..b173195775572 100644
--- a/srcpkgs/mpvpaper/template
+++ b/srcpkgs/mpvpaper/template
@@ -1,6 +1,6 @@
 # Template file for 'mpvpaper'
 pkgname=mpvpaper
-version=1.3
+version=1.4
 revision=1
 build_style=meson
 hostmakedepends="pkg-config wayland-devel"
@@ -11,7 +11,7 @@ license="GPL-3.0-or-later"
 homepage="https://github.com/GhostNaN/mpvpaper"
 changelog="https://github.com/GhostNaN/mpvpaper/releases"
 distfiles="https://github.com/GhostNaN/mpvpaper/archive/refs/tags/${version}.tar.gz"
-checksum=57f7e21a18574813aedfa59259238563f75e8f37a13fd21fca7d2b613dd11e87
+checksum=e4033349c7a10be9094a282b6b5a645071e7fe505c0b4b2aa4a822297471232a
 
 do_install() {
 	vman mpvpaper.man mpvpaper.1
diff --git a/srcpkgs/perl-Mozilla-CA/template b/srcpkgs/perl-Mozilla-CA/template
index bc50f079586da..9b1deb6d62995 100644
--- a/srcpkgs/perl-Mozilla-CA/template
+++ b/srcpkgs/perl-Mozilla-CA/template
@@ -1,6 +1,6 @@
 # Template file for 'perl-Mozilla-CA'
 pkgname=perl-Mozilla-CA
-version=20230821
+version=20231213
 revision=1
 build_style=perl-module
 hostmakedepends="perl"
@@ -11,4 +11,4 @@ maintainer="Leah Neukirchen <leah@vuxu.org>"
 license="MPL-2.0"
 homepage="https://metacpan.org/release/Mozilla-CA"
 distfiles="${CPAN_SITE}/Mozilla/${pkgname/perl-/}-$version.tar.gz"
-checksum=32e1d0045299004045b9c4d16c2daae453a216208873deea2440f71260a7cda1
+checksum=421a12ba7cef443bd368671cee9c9b46a8b55c2ccf7ac76c42f99e23a06115df
diff --git a/srcpkgs/podofo/template b/srcpkgs/podofo/template
index b4537db37e1ea..c4eda21f6ec90 100644
--- a/srcpkgs/podofo/template
+++ b/srcpkgs/podofo/template
@@ -1,17 +1,27 @@
 # Template file for 'podofo'
 pkgname=podofo
-version=0.9.7
-revision=4
+version=0.10.3
+revision=1
 build_style=cmake
-configure_args="-DPODOFO_BUILD_SHARED=TRUE"
-makedepends="fontconfig-devel libidn-devel openssl-devel lua53-devel tiff-devel"
+configure_args="-DPODOFO_BUILD_STATIC=FALSE -DPODOFO_BUILD_TOOLS=TRUE
+ -DPODOFO_BUILD_TEST=TRUE"
+hostmakedepends="pkg-config"
+makedepends="fontconfig-devel libidn-devel openssl-devel lua53-devel tiff-devel
+ libxml2-devel zlib-devel libjpeg-turbo-devel libpng-devel freetype-devel"
 short_desc="Library to work with the PDF file format"
 maintainer="Andrea Brancaleoni <abc@pompel.me>"
 license="GPL-2.0-or-later, LGPL-2.1-or-later"
 homepage="https://github.com/podofo/podofo"
 distfiles="https://github.com/podofo/podofo/archive/refs/tags/${version}.tar.gz"
-checksum=42d7eaa3c8ffabf001121447830343c4362e562d0f12192b033a393f334a64a6
-disable_parallel_build=yes
+checksum=4be2232643f9e9dd7fbb02894d5a0394c3ca2826aab179654c2cc751074825ec
+# disable_parallel_build=yes
+
+post_install() {
+	local _f
+	for _f in man/*.1; do
+		vman "$_f"
+	done
+}
 
 libpodofo_package() {
 	replaces="podofo<0.9.3_1"
@@ -26,6 +36,8 @@ libpodofo-devel_package() {
 	depends="libpodofo-${version}_${revision}"
 	pkg_install() {
 		vmove usr/include
-		vmove usr/lib/*.so
+		vmove "usr/lib/*.so"
+		vmove usr/lib/pkgconfig
+		vmove "usr/share/podofo/*.cmake"
 	}
 }
diff --git a/srcpkgs/scribus/template b/srcpkgs/scribus/template
index 22630f1368191..3138a842546af 100644
--- a/srcpkgs/scribus/template
+++ b/srcpkgs/scribus/template
@@ -1,7 +1,7 @@
 # Template file for 'scribus'
 pkgname=scribus
 version=1.5.8
-revision=11
+revision=12
 build_style=cmake
 configure_args="-DCMAKE_SKIP_RPATH=TRUE -DQT_PREFIX=${XBPS_CROSS_BASE}/usr
  -DWANT_GRAPHICSMAGICK=1 -DWANT_CPP17=ON"
@@ -9,7 +9,7 @@ hostmakedepends="pkg-config qt5-qmake qt5-host-tools python3"
 makedepends="qt5-devel qt5-tools-devel zlib-devel cairo-devel lcms2-devel
  cups-devel libxml2-devel hyphen-devel ghostscript-devel boost-devel
  hunspell-devel poppler-cpp-devel python3-devel harfbuzz-devel
- libgraphicsmagick-devel libpodofo-devel libpagemaker-devel libqxp-devel
+ libgraphicsmagick-devel libpodofo0.9.7-devel libpagemaker-devel libqxp-devel
  libmspub-devel libcdr-devel libfreehand-devel libvisio-devel"
 depends="ghostscript"
 short_desc="Open Source DTP (Desktop Publishing) application"
diff --git a/srcpkgs/vhs/template b/srcpkgs/vhs/template
index 8ed8894538100..fad5d12379086 100644
--- a/srcpkgs/vhs/template
+++ b/srcpkgs/vhs/template
@@ -1,7 +1,7 @@
 # Template file for 'vhs'
 pkgname=vhs
-version=0.6.0
-revision=2
+version=0.7.1
+revision=1
 build_style=go
 build_helper=qemu
 go_import_path="github.com/charmbracelet/vhs"
@@ -13,7 +13,7 @@ license="MIT"
 homepage="https://github.com/charmbracelet/vhs"
 changelog="https://github.com/charmbracelet/vhs/releases"
 distfiles="https://github.com/charmbracelet/vhs/archive/refs/tags/v${version}.tar.gz"
-checksum=bf41f264730f18b5146c2269d82b5b69757470799a2cce6099e420b5f3ec7fa3
+checksum=90b3a38a76776fad1e6d989b4f4a6da2f877e6f832ad1d123ff608cffe2aab1c
 
 post_install() {
 	vdoc "${FILESDIR}/README.voidlinux"

  parent reply	other threads:[~2023-12-15  1:58 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-09  2:07 [PR PATCH] AnyDesk: update to v6.3.0 and added RPi3 armv7hf/armv7l support MechDR
2023-12-10  0:01 ` [PR REVIEW] " classabbyamp
2023-12-10  0:01 ` classabbyamp
2023-12-10  0:01 ` classabbyamp
2023-12-10  0:01 ` classabbyamp
2023-12-10  0:02 ` classabbyamp
2023-12-10  1:42 ` [PR PATCH] [Updated] " MechDR
2023-12-10  1:44 ` MechDR
2023-12-10  1:45 ` MechDR
2023-12-10  1:52 ` MechDR
2023-12-10  1:53 ` classabbyamp
2023-12-10  1:59 ` [PR REVIEW] " MechDR
2023-12-10  2:09 ` classabbyamp
2023-12-10  2:20 ` [PR PATCH] [Updated] " MechDR
2023-12-10  2:25 ` MechDR
2023-12-10  2:28 ` [PR REVIEW] " MechDR
2023-12-10  2:33 ` classabbyamp
2023-12-10  2:33 ` [PR REVIEW] " MechDR
2023-12-10  2:34 ` MechDR
2023-12-10  2:37 ` MechDR
2023-12-10  2:38 ` [PR REVIEW] " classabbyamp
2023-12-10  2:39 ` classabbyamp
2023-12-10  2:39 ` classabbyamp
2023-12-10  2:40 ` [PR REVIEW] " classabbyamp
2023-12-10  2:47 ` MechDR
2023-12-10  2:53 ` MechDR
2023-12-10  3:09 ` [PR REVIEW] " classabbyamp
2023-12-10  3:11 ` MechDR
2023-12-10  3:12 ` classabbyamp
2023-12-10  3:58 ` [PR PATCH] [Updated] " MechDR
2023-12-10  4:00 ` MechDR
2023-12-10  4:01 ` MechDR
2023-12-10  4:02 ` MechDR
2023-12-10  4:11 ` [PR REVIEW] " classabbyamp
2023-12-10  4:28 ` classabbyamp
2023-12-11 15:41 ` [PR PATCH] [Updated] " MechDR
2023-12-11 15:49 ` MechDR
2023-12-11 15:50 ` MechDR
2023-12-11 15:50 ` MechDR
2023-12-11 15:52 ` MechDR
2023-12-11 15:57 ` MechDR
2023-12-13 23:23 ` AnyDesk: update to 6.3.0, add armv7 support MechDR
2023-12-13 23:50 ` classabbyamp
2023-12-14  0:58 ` MechDR
2023-12-14  0:59 ` classabbyamp
2023-12-14  1:02 ` MechDR
2023-12-14  1:03 ` MechDR
2023-12-14  1:08 ` classabbyamp
2023-12-14  1:11 ` MechDR
2023-12-14  1:12 ` [PR PATCH] [Updated] " MechDR
2023-12-14  1:54 ` MechDR
2023-12-14  1:55 ` MechDR
2023-12-14  1:56 ` MechDR
2023-12-14 23:54 ` [PR PATCH] [Updated] " MechDR
2023-12-15  1:58 ` MechDR [this message]
2023-12-15  1:59 ` MechDR
2023-12-22 19:37 ` 0x5c
2023-12-23 16:58 ` MechDR
2023-12-23 17:03 ` classabbyamp
2023-12-23 17:23 ` MechDR
2023-12-23 17:25 ` 0x5c
2023-12-23 17:28 ` classabbyamp
2023-12-23 18:38 ` MechDR
2023-12-23 18:38 ` MechDR
2023-12-23 18:45 ` 0x5c
2023-12-23 19:32 ` MechDR
2023-12-23 19:44 ` [PR PATCH] [Updated] " MechDR
2023-12-23 19:46 ` MechDR
2023-12-23 22:51 ` MechDR
2023-12-23 22:51 ` MechDR
2023-12-23 22:54 ` [PR PATCH] [Updated] anydesk: " MechDR
2023-12-23 22:56 ` MechDR
2023-12-23 23:08 ` classabbyamp
2023-12-23 23:54 ` MechDR
2023-12-24  2:52 ` 0x5c
2023-12-24  3:06 ` MechDR
2023-12-24 12:24 ` [PR REVIEW] " ahesford
2023-12-24 12:31 ` ahesford
2023-12-24 12:49 ` [PR REVIEW] " classabbyamp
2023-12-24 12:57 ` ahesford
2023-12-25  8:08 ` MechDR
2023-12-25  8:08 ` MechDR
2023-12-25  8:09 ` MechDR
2023-12-25  8:12 ` MechDR
2023-12-25  9:48 ` [PR PATCH] [Updated] " MechDR
2024-01-21  2:48 ` MechDR
2024-02-15  5:32 ` [PR PATCH] [Closed]: " classabbyamp
2024-02-15  5:32 ` classabbyamp

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231215015841.My4AScTzs0GxJiwZaz3FTYGj6tXsZKoAFgpxTB5otIs@z \
    --to=mechdr@users.noreply.github.com \
    --cc=ml@inbox.vuxu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).