summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app-misc/ledit/Manifest4
-rw-r--r--app-misc/ledit/ledit-2.06.ebuild (renamed from app-misc/ledit/ledit-2.05.ebuild)0
-rw-r--r--dev-lang/rust/Manifest11
-rw-r--r--dev-lang/rust/files/1.67.0-doc-wasm.patch34
-rw-r--r--dev-lang/rust/files/1.85.0-cross-compile-libz.patch26
-rw-r--r--dev-lang/rust/files/1.85.0-musl-dynamic-linking.patch271
-rw-r--r--dev-lang/rust/rust-1.86.0-r991.ebuild816
-rw-r--r--dev-lang/rust/rust-1.87.0-r991.ebuild815
-rw-r--r--dev-lang/rust/rust-1.87.0-r992.ebuild821
-rw-r--r--media-sound/pineapple-tracker-player/Manifest2
-rw-r--r--media-sound/pineapple-tracker-player/pineapple-tracker-player-0.5.0.ebuild43
-rw-r--r--www-client/chromium/Manifest36
-rw-r--r--www-client/chromium/chromium-139.0.7219.3.ebuild (renamed from www-client/chromium/chromium-135.0.7023.0.ebuild)20
-rw-r--r--www-client/chromium/chromium-139.0.7246.0.ebuild (renamed from www-client/chromium/chromium-135.0.6999.2.ebuild)64
-rw-r--r--www-client/chromium/files/chromium-105-protobuf-RepeatedPtrField-export.patch13
-rw-r--r--www-client/chromium/files/chromium-109-minizip.patch147
-rw-r--r--www-client/chromium/files/chromium-122-VirtualCursor-std-layout.patch219
-rw-r--r--www-client/chromium/files/chromium-123-EnumTable-crash.patch76
-rw-r--r--www-client/chromium/files/chromium-123-compiler.patch317
-rw-r--r--www-client/chromium/files/chromium-125-compiler.patch317
-rw-r--r--www-client/chromium/files/chromium-125-revert-8a3bec6.patch450
-rw-r--r--www-client/chromium/files/chromium-126-EnumTable-crash.patch76
-rw-r--r--www-client/chromium/files/chromium-126-compiler-r1.patch317
-rw-r--r--www-client/chromium/files/chromium-126-compiler.patch317
-rw-r--r--www-client/chromium/files/chromium-126-use-oauth2-client-switches-as-default-r1.patch18
-rw-r--r--www-client/chromium/files/chromium-126-use-oauth2-client-switches-as-default.patch18
-rw-r--r--www-client/chromium/files/chromium-127-bindgen-include-temporary.patch13
-rw-r--r--www-client/chromium/files/chromium-128-compiler-r1.patch324
-rw-r--r--www-client/chromium/files/chromium-128-compiler.patch317
-rw-r--r--www-client/chromium/files/chromium-131-EnumTable-crash.patch79
-rw-r--r--www-client/chromium/files/chromium-131-text_codec_icu-system-icu.patch22
-rw-r--r--www-client/chromium/files/chromium-138-gn-exec_script_allowlist.patch (renamed from www-client/chromium/files/chromium-134-gn-exec_script_allowlist.patch)20
-rw-r--r--www-client/chromium/files/chromium-139-compiler-r1.patch (renamed from www-client/chromium/files/chromium-131-compiler.patch)188
-rw-r--r--www-client/chromium/files/chromium-139-compiler.patch (renamed from www-client/chromium/files/chromium-132-compiler.patch)144
-rw-r--r--www-client/chromium/files/chromium-139-mv2-ungoogled-r1.patch (renamed from www-client/chromium/files/chromium-135-mv2-ungoogled.patch)60
-rw-r--r--www-client/chromium/files/chromium-139-mv2-ungoogled.patch163
-rw-r--r--www-client/chromium/files/chromium-139-protobuf-RepeatedPtrField-export.patch (renamed from www-client/chromium/files/chromium-135-protobuf-RepeatedPtrField-export.patch)10
37 files changed, 3359 insertions, 3229 deletions
diff --git a/app-misc/ledit/Manifest b/app-misc/ledit/Manifest
index fa2dd99..628b25a 100644
--- a/app-misc/ledit/Manifest
+++ b/app-misc/ledit/Manifest
@@ -1,2 +1,2 @@
-DIST ledit-2-05.tar.gz 25220 BLAKE2B fb6251390ba75269022198defb8680f7b3fcf01c86f67cf207184abd7b66b0cfc1fca0cb1e1505e78933323470bff53f747335d5c92e3055e38cd1cc33ba4aed SHA512 1415ded092ed4b0c75dbc52508f8b4cdc3645b0cc63a50de613f4854fdeca05bf05ae335398f803cb28144650a35b4f7b9453fd0488fad217c1450dc64e0d04a
-EBUILD ledit-2.05.ebuild 1068 BLAKE2B 3f586a49be240f4c3d1e5e54eb6d44eefd8d93fdfc47a57097a6c6735c0182942aec59d17e9cd2f9b277401c94dd4460b78881a2fd300d8d391044dfa2eaa6ca SHA512 c16709e1470450a264a6f5e54a06b637eccb31c10036b362f9eb8867e0e973c393bbf5338abc07eadcb07a50d0653626bfd50bf8989eddd73d0590d2a1cce74a
+DIST ledit-2-06.tar.gz 25413 BLAKE2B a2116f3e723a712ab3afa97601e18310d7d6be35eed94ac7217f063023f1ab1c1cd1228077028e6c1bbd7b44232155fdca5a172084ebb6525d53dc0b630f01f7 SHA512 d82f89e329fc13262266c8d606bf4bc14d6d1a785d05e4d53fe169e07a8b0ab563d8d41c95eed0a3235d6795a5300b954a343c6e326bf04fa2eea50686a6aa89
+EBUILD ledit-2.06.ebuild 1068 BLAKE2B 3f586a49be240f4c3d1e5e54eb6d44eefd8d93fdfc47a57097a6c6735c0182942aec59d17e9cd2f9b277401c94dd4460b78881a2fd300d8d391044dfa2eaa6ca SHA512 c16709e1470450a264a6f5e54a06b637eccb31c10036b362f9eb8867e0e973c393bbf5338abc07eadcb07a50d0653626bfd50bf8989eddd73d0590d2a1cce74a
diff --git a/app-misc/ledit/ledit-2.05.ebuild b/app-misc/ledit/ledit-2.06.ebuild
index cbf9fd4..cbf9fd4 100644
--- a/app-misc/ledit/ledit-2.05.ebuild
+++ b/app-misc/ledit/ledit-2.06.ebuild
diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
new file mode 100644
index 0000000..a1c5ec5
--- /dev/null
+++ b/dev-lang/rust/Manifest
@@ -0,0 +1,11 @@
+AUX 1.67.0-doc-wasm.patch 1359 BLAKE2B 59293c5b61de7ca283629d7f65b965388a42527811fc8355cdf5320fee03d10560f34e9c9a25dbe91e5758c37484485581a5e524a497711f1e108e5ffde6c53c SHA512 f3bafc2d0d2569f0d6891e14aa307cd2425d6624832b27381ae9d6f7ced488eff6d5fa0cdcd77a98d1f92a10a9d832f3aa3c481d1abbb42a0882862bbb189346
+AUX 1.85.0-cross-compile-libz.patch 1130 BLAKE2B 145695a50ccf2db6f8060bf313924e4b337b63f4d1d8f49c7da014f9a3c9ab3849b7acdd6f0defd75f88852eafe5986019371b09c8305f65280883b7be7d9c70 SHA512 2c27d13ffb62143b1019b7568c7d1187744d9a4d01390d8dfb0d27fe758506dad317fafe0a12eeb13e785885c006cb4e72db104ef72229f51c276a3bfdf2bc9e
+AUX 1.85.0-musl-dynamic-linking.patch 15350 BLAKE2B 86704d0f99630153c10454d9776e8097f74e56abe69fcb71e6e9b62e8d8ee003cab981c9d2b719e4290249aece6b3b0fd547727ab89516500bfba18a8ffbb58b SHA512 31fec41ddd6c84988f22869ab7b81adc92ca5ebdce2f62ec4ddb6ed91e0bedcf3e34ddbd8a0725fa2ec50b84d0f87444c1beceaefb301f34864461ae071691f6
+DIST rust-patches-1.87.0-r1.tar.bz2 4635 BLAKE2B d813ec4a602d3bb879927a44a0b9f752aac255e31dfd13c56ab71b3fae7ce46a742c1d2e7494a7e17728f1edb2327ddd6ad6ebabc0c47d66326b766bbd323fbd SHA512 596ffe744a5849b443f077bbd4edbcbb240b9ac51c9d53e0e436e46d7c93a6734477d22eba4a066a0cf474503a6357a72dfa124e594f645be6f50d9bd25bdb10
+DIST rustc-1.86.0-src.tar.xz 275696736 BLAKE2B 9f33a710a3e567d92f56091920643f5ef2ddf2ad52acb5d9ee78496a7b5dbc10da5a51c72cf2a6f66d543a531d3138a49767c98501ae4e885e03988d2ccfbb59 SHA512 9ce195e24a03765f7163de16271e3d19d731d4b80fcc2bfd919106c9d42543eade018f712f6947ea3c6e57c6cb2e6841596aa668d608b8da15101a7da14f3097
+DIST rustc-1.86.0-src.tar.xz.asc 801 BLAKE2B 3e10a3894c7eee68d37bc5707d797548119f830667e27e652a199d13633199713bd01bd0f41a5f2af3c682561903e36abe27b36ef78d9a1d65bdf485527d2c15 SHA512 0b74dab9ee56d0a08e26e9cd40f722e4d99de63ac678f969f0c54d50737074fb28e170db5a36ce2627ec332e5ce3bb8a92167aefbccff7c70e4cb057bc0a94ac
+DIST rustc-1.87.0-src.tar.xz 283604208 BLAKE2B 7ede723121ff8df3908674631ceaec75797d91ccd6f1df4afd7187878adbb8d99c9e8a3b11c6027703b2e8d06785299d93d8649f3eda7f356dd2a6734d99d05b SHA512 2ef08c9be45434401f916d54b3739f52d255f8a3a4ce05a717499250c2333eeaf601f1d18085b878c027c609f44da74d0151f5bfc2c9ae1e01166919a91a1d2b
+DIST rustc-1.87.0-src.tar.xz.asc 801 BLAKE2B c9740c03baedcd70defba3fd37831692adaf0e984ef6b11d259244330d044fcacf935e6dd76caf126848da0c40f38e5368c60e8aabed5d3c2655a61fdbdc7564 SHA512 ebc13374381839a997c63455b733fd2a7960b4fd497f19c29be948cce8bb59a31ddda5da54ca154c16f7de43dd1bacd6c6bd76f3b6b36c5b43f4cfaf1746b952
+EBUILD rust-1.86.0-r991.ebuild 25752 BLAKE2B 012c5f50453277324d419691065bed55f1ad535391c2ff06b3bc7319a2cebccb60085bdd27de6f2c819551a267e3abb0131cb354ea4ec859138dfcaa9066f08b SHA512 3a974ec64dc53dfb2ef8eb52377edb13bd150ec9505243fca196dee3dcf1c9809500234b03cfc3ccc1cd3fab6749aab2e11a909945ff560f52ac1dcc9f296bfc
+EBUILD rust-1.87.0-r991.ebuild 25731 BLAKE2B 04d2691166b1a8225051c8f25d26ee34de1a4439018f7081091da193d0efd03c6293996e55ac2f834dd777fc040986bbff0dca18cf552239dc78aa3a315513e7 SHA512 dc640d8b6db55a803fcb14a38735b287bbd0ec116a01b2ac2f7ace2e9bca5d4bda7a46268664876e10bde2fec4ef97473eebe002c68c193f11a7d62cc39e8982
+EBUILD rust-1.87.0-r992.ebuild 26009 BLAKE2B 6e7f4e13a58b4ff6edabf8f0e2dcda75bb20775eec85dae4249b071898c4c98d5347964475916551ee14a527287f1711f898e5e6363f5c3703c0fd3462eda54b SHA512 b7749d604c0e10fa173884bc8e8ccbfb6c668a7eef6c41a6c3dfbe4bd9650552e0d85a5541b6a2e150f782464e154f308c70dc063ee2d31fb296a958a968cd7f
diff --git a/dev-lang/rust/files/1.67.0-doc-wasm.patch b/dev-lang/rust/files/1.67.0-doc-wasm.patch
new file mode 100644
index 0000000..06011de
--- /dev/null
+++ b/dev-lang/rust/files/1.67.0-doc-wasm.patch
@@ -0,0 +1,34 @@
+From 92aa5f6b272bcdc020a34f8d90f9ef851b5b4504 Mon Sep 17 00:00:00 2001
+From: John Millikin <john@john-millikin.com>
+Date: Mon, 9 Jan 2023 13:54:21 +0900
+Subject: [PATCH] Disable `linux_ext` in wasm32 and fortanix rustdoc builds.
+
+The `std::os::unix` module is stubbed out when building docs for these
+target platforms. The introduction of Linux-specific extension traits
+caused `std::os::net` to depend on sub-modules of `std::os::unix`,
+which broke rustdoc for the `wasm32-unknown-unknown` target.
+
+Adding an additional `#[cfg]` guard solves that rustdoc failure by
+not declaring `linux_ext` on targets with a stubbed `std::os::unix`.
+---
+ library/std/src/os/net/mod.rs | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/library/std/src/os/net/mod.rs b/library/std/src/os/net/mod.rs
+index 5ec267c41e97c..b7046dd7c598c 100644
+--- a/library/std/src/os/net/mod.rs
++++ b/library/std/src/os/net/mod.rs
+@@ -1,4 +1,13 @@
+ //! OS-specific networking functionality.
+
++// See cfg macros in `library/std/src/os/mod.rs` for why these platforms must
++// be special-cased during rustdoc generation.
++#[cfg(not(all(
++ doc,
++ any(
++ all(target_arch = "wasm32", not(target_os = "wasi")),
++ all(target_vendor = "fortanix", target_env = "sgx")
++ )
++)))]
+ #[cfg(any(target_os = "linux", target_os = "android", doc))]
+ pub(super) mod linux_ext;
diff --git a/dev-lang/rust/files/1.85.0-cross-compile-libz.patch b/dev-lang/rust/files/1.85.0-cross-compile-libz.patch
new file mode 100644
index 0000000..7bd45c4
--- /dev/null
+++ b/dev-lang/rust/files/1.85.0-cross-compile-libz.patch
@@ -0,0 +1,26 @@
+From 768f7e50a6d9a3db4e4eef45dcb4c56e9b580389 Mon Sep 17 00:00:00 2001
+From: Matt Jolly <kangie@gentoo.org>
+Date: Sun, 9 Feb 2025 21:12:43 +1000
+Subject: [PATCH] Update libz cross-compile patch for 9999 (1.86.0)
+
+See-also: https://paste.sr.ht/~kchibisov/682321e0fd4a3ece4a4b7b71591896f5cd3cdb22
+See-also: https://github.com/gentoo/gentoo/pull/35246#discussion_r1484525497
+--- a/compiler/rustc_llvm/build.rs
++++ b/compiler/rustc_llvm/build.rs
+@@ -219,13 +219,7 @@ fn main() {
+ // of llvm-config, not the target that we're attempting to link.
+ let mut cmd = Command::new(&llvm_config);
+ cmd.arg(llvm_link_arg).arg("--libs");
+-
+- // Don't link system libs if cross-compiling unless targeting Windows.
+- // On Windows system DLLs aren't linked directly, instead import libraries are used.
+- // These import libraries are independent of the host.
+- if !is_crossed || target.contains("windows") {
+- cmd.arg("--system-libs");
+- }
++ cmd.arg("--system-libs");
+
+ // We need libkstat for getHostCPUName on SPARC builds.
+ // See also: https://github.com/llvm/llvm-project/issues/64186
+--
+2.48.0
diff --git a/dev-lang/rust/files/1.85.0-musl-dynamic-linking.patch b/dev-lang/rust/files/1.85.0-musl-dynamic-linking.patch
new file mode 100644
index 0000000..a6ab967
--- /dev/null
+++ b/dev-lang/rust/files/1.85.0-musl-dynamic-linking.patch
@@ -0,0 +1,271 @@
+From be965af5421e55c0032a989b220bc0da005d2272 Mon Sep 17 00:00:00 2001
+From: Michal Rostecki <vadorovsky@protonmail.com>
+Date: Tue, 25 Feb 2025 16:24:21 +0100
+Subject: [PATCH] Enable dynamic linking by default for musl
+
+---
+ .../src/spec/targets/aarch64_unknown_linux_musl.rs | 3 ---
+ .../src/spec/targets/arm_unknown_linux_musleabi.rs | 3 +--
+ .../src/spec/targets/arm_unknown_linux_musleabihf.rs | 3 +--
+ .../src/spec/targets/armv5te_unknown_linux_musleabi.rs | 3 +--
+ .../src/spec/targets/armv7_unknown_linux_musleabi.rs | 3 +--
+ .../src/spec/targets/armv7_unknown_linux_musleabihf.rs | 3 +--
+ .../rustc_target/src/spec/targets/i586_unknown_linux_musl.rs | 2 --
+ .../rustc_target/src/spec/targets/i686_unknown_linux_musl.rs | 2 --
+ .../src/spec/targets/mips64_unknown_linux_muslabi64.rs | 3 +--
+ .../src/spec/targets/mips64el_unknown_linux_muslabi64.rs | 2 --
+ .../src/spec/targets/powerpc64_unknown_linux_musl.rs | 2 --
+ .../src/spec/targets/powerpc64le_unknown_linux_musl.rs | 2 --
+ .../src/spec/targets/powerpc_unknown_linux_musl.rs | 2 --
+ .../src/spec/targets/powerpc_unknown_linux_muslspe.rs | 2 --
+ .../src/spec/targets/riscv32gc_unknown_linux_musl.rs | 3 +--
+ .../rustc_target/src/spec/targets/s390x_unknown_linux_musl.rs | 2 --
+ .../src/spec/targets/thumbv7neon_unknown_linux_musleabihf.rs | 3 +--
+ .../rustc_target/src/spec/targets/x86_64_unknown_linux_musl.rs | 2 --
+ 18 files changed, 8 insertions(+), 37 deletions(-)
+
+diff --git a/compiler/rustc_target/src/spec/targets/aarch64_unknown_linux_musl.rs b/compiler/rustc_target/src/spec/targets/aarch64_unknown_linux_musl.rs
+index 4fefdfa5c5e..bb65048a56d 100644
+--- a/compiler/rustc_target/src/spec/targets/aarch64_unknown_linux_musl.rs
++++ b/compiler/rustc_target/src/spec/targets/aarch64_unknown_linux_musl.rs
+@@ -12,9 +12,6 @@ pub(crate) fn target() -> Target {
+ | SanitizerSet::MEMORY
+ | SanitizerSet::THREAD;
+
+- // FIXME(compiler-team#422): musl targets should be dynamically linked by default.
+- base.crt_static_default = true;
+-
+ Target {
+ llvm_target: "aarch64-unknown-linux-musl".into(),
+ metadata: crate::spec::TargetMetadata {
+diff --git a/compiler/rustc_target/src/spec/targets/arm_unknown_linux_musleabi.rs b/compiler/rustc_target/src/spec/targets/arm_unknown_linux_musleabi.rs
+index 26241dd0bd4..cab79e2bf7d 100644
+--- a/compiler/rustc_target/src/spec/targets/arm_unknown_linux_musleabi.rs
++++ b/compiler/rustc_target/src/spec/targets/arm_unknown_linux_musleabi.rs
+@@ -20,8 +20,7 @@ pub(crate) fn target() -> Target {
+ features: "+strict-align,+v6".into(),
+ max_atomic_width: Some(64),
+ mcount: "\u{1}mcount".into(),
+- // FIXME(compiler-team#422): musl targets should be dynamically linked by default.
+- crt_static_default: true,
++ crt_static_default: false,
+ ..base::linux_musl::opts()
+ },
+ }
+diff --git a/compiler/rustc_target/src/spec/targets/arm_unknown_linux_musleabihf.rs b/compiler/rustc_target/src/spec/targets/arm_unknown_linux_musleabihf.rs
+index 4bbde7667b9..c5f6c180a95 100644
+--- a/compiler/rustc_target/src/spec/targets/arm_unknown_linux_musleabihf.rs
++++ b/compiler/rustc_target/src/spec/targets/arm_unknown_linux_musleabihf.rs
+@@ -20,8 +20,7 @@ pub(crate) fn target() -> Target {
+ features: "+strict-align,+v6,+vfp2,-d32".into(),
+ max_atomic_width: Some(64),
+ mcount: "\u{1}mcount".into(),
+- // FIXME(compiler-team#422): musl targets should be dynamically linked by default.
+- crt_static_default: true,
++ crt_static_default: false,
+ ..base::linux_musl::opts()
+ },
+ }
+diff --git a/compiler/rustc_target/src/spec/targets/armv5te_unknown_linux_musleabi.rs b/compiler/rustc_target/src/spec/targets/armv5te_unknown_linux_musleabi.rs
+index 62619546891..680dafe6943 100644
+--- a/compiler/rustc_target/src/spec/targets/armv5te_unknown_linux_musleabi.rs
++++ b/compiler/rustc_target/src/spec/targets/armv5te_unknown_linux_musleabi.rs
+@@ -20,8 +20,7 @@ pub(crate) fn target() -> Target {
+ max_atomic_width: Some(32),
+ mcount: "\u{1}mcount".into(),
+ has_thumb_interworking: true,
+- // FIXME(compiler-team#422): musl targets should be dynamically linked by default.
+- crt_static_default: true,
++ crt_static_default: false,
+ ..base::linux_musl::opts()
+ },
+ }
+diff --git a/compiler/rustc_target/src/spec/targets/armv7_unknown_linux_musleabi.rs b/compiler/rustc_target/src/spec/targets/armv7_unknown_linux_musleabi.rs
+index 0436e0d8df4..e862b28ca92 100644
+--- a/compiler/rustc_target/src/spec/targets/armv7_unknown_linux_musleabi.rs
++++ b/compiler/rustc_target/src/spec/targets/armv7_unknown_linux_musleabi.rs
+@@ -24,8 +24,7 @@ pub(crate) fn target() -> Target {
+ features: "+v7,+thumb2,+soft-float,-neon".into(),
+ max_atomic_width: Some(64),
+ mcount: "\u{1}mcount".into(),
+- // FIXME(compiler-team#422): musl targets should be dynamically linked by default.
+- crt_static_default: true,
++ crt_static_default: false,
+ ..base::linux_musl::opts()
+ },
+ }
+diff --git a/compiler/rustc_target/src/spec/targets/armv7_unknown_linux_musleabihf.rs b/compiler/rustc_target/src/spec/targets/armv7_unknown_linux_musleabihf.rs
+index 22e49f2f1b0..acb7c99cdaf 100644
+--- a/compiler/rustc_target/src/spec/targets/armv7_unknown_linux_musleabihf.rs
++++ b/compiler/rustc_target/src/spec/targets/armv7_unknown_linux_musleabihf.rs
+@@ -23,8 +23,7 @@ pub(crate) fn target() -> Target {
+ features: "+v7,+vfp3,-d32,+thumb2,-neon".into(),
+ max_atomic_width: Some(64),
+ mcount: "\u{1}mcount".into(),
+- // FIXME(compiler-team#422): musl targets should be dynamically linked by default.
+- crt_static_default: true,
++ crt_static_default: false,
+ ..base::linux_musl::opts()
+ },
+ }
+diff --git a/compiler/rustc_target/src/spec/targets/i586_unknown_linux_musl.rs b/compiler/rustc_target/src/spec/targets/i586_unknown_linux_musl.rs
+index 8ad93496f3a..623422a89ea 100644
+--- a/compiler/rustc_target/src/spec/targets/i586_unknown_linux_musl.rs
++++ b/compiler/rustc_target/src/spec/targets/i586_unknown_linux_musl.rs
+@@ -4,7 +4,5 @@ pub(crate) fn target() -> Target {
+ let mut base = super::i686_unknown_linux_musl::target();
+ base.cpu = "pentium".into();
+ base.llvm_target = "i586-unknown-linux-musl".into();
+- // FIXME(compiler-team#422): musl targets should be dynamically linked by default.
+- base.crt_static_default = true;
+ base
+ }
+diff --git a/compiler/rustc_target/src/spec/targets/i686_unknown_linux_musl.rs b/compiler/rustc_target/src/spec/targets/i686_unknown_linux_musl.rs
+index 6ba87c732b7..b805b80b85b 100644
+--- a/compiler/rustc_target/src/spec/targets/i686_unknown_linux_musl.rs
++++ b/compiler/rustc_target/src/spec/targets/i686_unknown_linux_musl.rs
+@@ -6,8 +6,6 @@ pub(crate) fn target() -> Target {
+ base.max_atomic_width = Some(64);
+ base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32", "-Wl,-melf_i386"]);
+ base.stack_probes = StackProbeType::Inline;
+- // FIXME(compiler-team#422): musl targets should be dynamically linked by default.
+- base.crt_static_default = true;
+
+ // The unwinder used by i686-unknown-linux-musl, the LLVM libunwind
+ // implementation, apparently relies on frame pointers existing... somehow.
+diff --git a/compiler/rustc_target/src/spec/targets/mips64_unknown_linux_muslabi64.rs b/compiler/rustc_target/src/spec/targets/mips64_unknown_linux_muslabi64.rs
+index 32f5c79d653..9a25fe773fb 100644
+--- a/compiler/rustc_target/src/spec/targets/mips64_unknown_linux_muslabi64.rs
++++ b/compiler/rustc_target/src/spec/targets/mips64_unknown_linux_muslabi64.rs
+@@ -22,8 +22,7 @@ pub(crate) fn target() -> Target {
+ abi: "abi64".into(),
+ endian: Endian::Big,
+ mcount: "_mcount".into(),
+- // FIXME(compiler-team#422): musl targets should be dynamically linked by default.
+- crt_static_default: true,
++ crt_static_default: false,
+ ..base
+ },
+ }
+diff --git a/compiler/rustc_target/src/spec/targets/mips64el_unknown_linux_muslabi64.rs b/compiler/rustc_target/src/spec/targets/mips64el_unknown_linux_muslabi64.rs
+index 5e7c37fd46c..4f50e8b7033 100644
+--- a/compiler/rustc_target/src/spec/targets/mips64el_unknown_linux_muslabi64.rs
++++ b/compiler/rustc_target/src/spec/targets/mips64el_unknown_linux_muslabi64.rs
+@@ -5,8 +5,6 @@ pub(crate) fn target() -> Target {
+ base.cpu = "mips64r2".into();
+ base.features = "+mips64r2".into();
+ base.max_atomic_width = Some(64);
+- // FIXME(compiler-team#422): musl targets should be dynamically linked by default.
+- base.crt_static_default = true;
+ Target {
+ // LLVM doesn't recognize "muslabi64" yet.
+ llvm_target: "mips64el-unknown-linux-musl".into(),
+diff --git a/compiler/rustc_target/src/spec/targets/powerpc64_unknown_linux_musl.rs b/compiler/rustc_target/src/spec/targets/powerpc64_unknown_linux_musl.rs
+index a54b17c87a7..a964f417799 100644
+--- a/compiler/rustc_target/src/spec/targets/powerpc64_unknown_linux_musl.rs
++++ b/compiler/rustc_target/src/spec/targets/powerpc64_unknown_linux_musl.rs
+@@ -7,8 +7,6 @@ pub(crate) fn target() -> Target {
+ base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
+ base.max_atomic_width = Some(64);
+ base.stack_probes = StackProbeType::Inline;
+- // FIXME(compiler-team#422): musl targets should be dynamically linked by default.
+- base.crt_static_default = true;
+
+ Target {
+ llvm_target: "powerpc64-unknown-linux-musl".into(),
+diff --git a/compiler/rustc_target/src/spec/targets/powerpc64le_unknown_linux_musl.rs b/compiler/rustc_target/src/spec/targets/powerpc64le_unknown_linux_musl.rs
+index f763c37f535..d0335506f16 100644
+--- a/compiler/rustc_target/src/spec/targets/powerpc64le_unknown_linux_musl.rs
++++ b/compiler/rustc_target/src/spec/targets/powerpc64le_unknown_linux_musl.rs
+@@ -6,8 +6,6 @@ pub(crate) fn target() -> Target {
+ base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
+ base.max_atomic_width = Some(64);
+ base.stack_probes = StackProbeType::Inline;
+- // FIXME(compiler-team#422): musl targets should be dynamically linked by default.
+- base.crt_static_default = true;
+
+ Target {
+ llvm_target: "powerpc64le-unknown-linux-musl".into(),
+diff --git a/compiler/rustc_target/src/spec/targets/powerpc_unknown_linux_musl.rs b/compiler/rustc_target/src/spec/targets/powerpc_unknown_linux_musl.rs
+index 0cd0ea96ad3..5372a83e29a 100644
+--- a/compiler/rustc_target/src/spec/targets/powerpc_unknown_linux_musl.rs
++++ b/compiler/rustc_target/src/spec/targets/powerpc_unknown_linux_musl.rs
+@@ -6,8 +6,6 @@ pub(crate) fn target() -> Target {
+ base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32"]);
+ base.max_atomic_width = Some(32);
+ base.stack_probes = StackProbeType::Inline;
+- // FIXME(compiler-team#422): musl targets should be dynamically linked by default.
+- base.crt_static_default = true;
+
+ Target {
+ llvm_target: "powerpc-unknown-linux-musl".into(),
+diff --git a/compiler/rustc_target/src/spec/targets/powerpc_unknown_linux_muslspe.rs b/compiler/rustc_target/src/spec/targets/powerpc_unknown_linux_muslspe.rs
+index b86c3c2e8e0..2305db81c5e 100644
+--- a/compiler/rustc_target/src/spec/targets/powerpc_unknown_linux_muslspe.rs
++++ b/compiler/rustc_target/src/spec/targets/powerpc_unknown_linux_muslspe.rs
+@@ -6,8 +6,6 @@ pub(crate) fn target() -> Target {
+ base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-mspe"]);
+ base.max_atomic_width = Some(32);
+ base.stack_probes = StackProbeType::Inline;
+- // FIXME(compiler-team#422): musl targets should be dynamically linked by default.
+- base.crt_static_default = true;
+
+ Target {
+ llvm_target: "powerpc-unknown-linux-muslspe".into(),
+diff --git a/compiler/rustc_target/src/spec/targets/riscv32gc_unknown_linux_musl.rs b/compiler/rustc_target/src/spec/targets/riscv32gc_unknown_linux_musl.rs
+index a07429bb0c5..cf2d7669a8a 100644
+--- a/compiler/rustc_target/src/spec/targets/riscv32gc_unknown_linux_musl.rs
++++ b/compiler/rustc_target/src/spec/targets/riscv32gc_unknown_linux_musl.rs
+@@ -23,8 +23,7 @@ pub(crate) fn target() -> Target {
+ llvm_abiname: "ilp32d".into(),
+ max_atomic_width: Some(32),
+ supported_split_debuginfo: Cow::Borrowed(&[SplitDebuginfo::Off]),
+- // FIXME(compiler-team#422): musl targets should be dynamically linked by default.
+- crt_static_default: true,
++ crt_static_default: false,
+ ..base::linux_musl::opts()
+ },
+ }
+diff --git a/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_musl.rs b/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_musl.rs
+index fbe8c48eca7..7a78004927b 100644
+--- a/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_musl.rs
++++ b/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_musl.rs
+@@ -12,8 +12,6 @@ pub(crate) fn target() -> Target {
+ base.stack_probes = StackProbeType::Inline;
+ base.supported_sanitizers =
+ SanitizerSet::ADDRESS | SanitizerSet::LEAK | SanitizerSet::MEMORY | SanitizerSet::THREAD;
+- // FIXME(compiler-team#422): musl targets should be dynamically linked by default.
+- base.crt_static_default = true;
+
+ Target {
+ llvm_target: "s390x-unknown-linux-musl".into(),
+diff --git a/compiler/rustc_target/src/spec/targets/thumbv7neon_unknown_linux_musleabihf.rs b/compiler/rustc_target/src/spec/targets/thumbv7neon_unknown_linux_musleabihf.rs
+index 1149b6d16eb..e1e060c211d 100644
+--- a/compiler/rustc_target/src/spec/targets/thumbv7neon_unknown_linux_musleabihf.rs
++++ b/compiler/rustc_target/src/spec/targets/thumbv7neon_unknown_linux_musleabihf.rs
+@@ -27,8 +27,7 @@ pub(crate) fn target() -> Target {
+ features: "+v7,+thumb-mode,+thumb2,+vfp3,+neon".into(),
+ max_atomic_width: Some(64),
+ mcount: "\u{1}mcount".into(),
+- // FIXME(compiler-team#422): musl targets should be dynamically linked by default.
+- crt_static_default: true,
++ crt_static_default: false,
+ ..base::linux_musl::opts()
+ },
+ }
+diff --git a/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_musl.rs b/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_musl.rs
+index 8dcdc5be8a9..8be0f335db9 100644
+--- a/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_musl.rs
++++ b/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_musl.rs
+@@ -14,8 +14,6 @@ pub(crate) fn target() -> Target {
+ | SanitizerSet::MEMORY
+ | SanitizerSet::THREAD;
+ base.supports_xray = true;
+- // FIXME(compiler-team#422): musl targets should be dynamically linked by default.
+- base.crt_static_default = true;
+
+ Target {
+ llvm_target: "x86_64-unknown-linux-musl".into(),
+--
+2.45.3
+
diff --git a/dev-lang/rust/rust-1.86.0-r991.ebuild b/dev-lang/rust/rust-1.86.0-r991.ebuild
new file mode 100644
index 0000000..2f8bdf8
--- /dev/null
+++ b/dev-lang/rust/rust-1.86.0-r991.ebuild
@@ -0,0 +1,816 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LLVM_COMPAT=( 19 )
+PYTHON_COMPAT=( python3_{10..13} )
+
+RUST_MAX_VER=${PV%%_*}
+if [[ ${PV} == *9999* ]]; then
+ RUST_MIN_VER="1.85.0" # Update this as new `beta` releases come out.
+elif [[ ${PV} == *beta* ]]; then
+ # Enforce that `beta` is built from `stable`.
+ # While uncommon it is possible for feature changes within `beta` to result
+ # in an older snapshot being unable to build a newer one without modifying the sources.
+ # 'stable' releases should always be able to build a beta snapshot so just use those.
+ RUST_MAX_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).1"
+ RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
+else
+ RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
+fi
+
+inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing optfeature \
+ multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig
+
+if [[ ${PV} = *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/rust-lang/rust.git"
+ EGIT_SUBMODULES=(
+ "*"
+ "-src/gcc"
+ )
+elif [[ ${PV} == *beta* ]]; then
+ # Identify the snapshot date of the beta release:
+ # curl -Ls static.rust-lang.org/dist/channel-rust-beta.toml | grep beta-src.tar.xz
+ betaver=${PV//*beta}
+ BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
+ MY_P="rustc-beta"
+ SRC_URI="https://static.rust-lang.org/dist/${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz
+ verify-sig? ( https://static.rust-lang.org/dist/${BETA_SNAPSHOT}/rustc-beta-src.tar.xz.asc
+ -> rustc-${PV}-src.tar.xz.asc )
+ "
+ S="${WORKDIR}/${MY_P}-src"
+else
+ MY_P="rustc-${PV}"
+ SRC_URI="https://static.rust-lang.org/dist/${MY_P}-src.tar.xz
+ verify-sig? ( https://static.rust-lang.org/dist/${MY_P}-src.tar.xz.asc )
+ "
+ S="${WORKDIR}/${MY_P}-src"
+ KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+fi
+
+DESCRIPTION="Systems programming language originally developed by Mozilla"
+HOMEPAGE="https://www.rust-lang.org/"
+
+# keep in sync with llvm ebuild of the same version as bundled one.
+ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
+ LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE
+ WebAssembly X86 XCore Xtensa )
+ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
+LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
+
+# https://github.com/rust-lang/llvm-project/blob/rustc-1.84.0/llvm/CMakeLists.txt
+_ALL_RUST_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa )
+declare -A ALL_RUST_EXPERIMENTAL_TARGETS
+for _x in "${_ALL_RUST_EXPERIMENTAL_TARGETS[@]}"; do
+ ALL_RUST_EXPERIMENTAL_TARGETS["llvm_targets_${_x}"]=0
+done
+
+LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
+SLOT="${PV%%_*}" # Beta releases get to share the same SLOT as the eventual stable
+
+IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto rustfmt rust-analyzer rust-src +system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
+IUSE+=" nightly"
+
+if [[ ${PV} = *9999* ]]; then
+ # These USE flags require nightly rust
+ IUSE+=" miri"
+fi
+
+LLVM_DEPEND=()
+# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
+for _x in "${ALL_LLVM_TARGETS[@]}"; do
+ LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" )
+ if [[ -v ALL_RUST_EXPERIMENTAL_TARGETS["${_x}"] ]] ; then
+ ALL_RUST_EXPERIMENTAL_TARGETS["${_x}"]=1
+ fi
+done
+LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" )
+LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" )
+
+BDEPEND="${PYTHON_DEPS}
+ app-eselect/eselect-rust
+ || (
+ >=sys-devel/gcc-4.7[cxx]
+ >=llvm-core/clang-3.5
+ )
+ lto? ( system-llvm? (
+ || (
+ $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}')
+ sys-devel/mold
+ )
+ ) )
+ !system-llvm? (
+ >=dev-build/cmake-3.13.4
+ app-alternatives/ninja
+ )
+ test? ( dev-debug/gdb )
+ verify-sig? ( sec-keys/openpgp-keys-rust )
+"
+
+DEPEND="
+ >=app-arch/xz-utils-5.2
+ net-misc/curl:=[http2,ssl]
+ sys-libs/zlib:=
+ dev-libs/openssl:0=
+ system-llvm? (
+ ${LLVM_DEPEND[*]}
+ llvm-libunwind? ( llvm-runtimes/libunwind:= )
+ )
+ !system-llvm? (
+ !llvm-libunwind? (
+ elibc_musl? ( sys-libs/libunwind:= )
+ )
+ )
+"
+
+RDEPEND="${DEPEND}
+ app-eselect/eselect-rust
+ dev-lang/rust-common
+ sys-apps/lsb-release
+ !dev-lang/rust:stable
+ !dev-lang/rust:1.86
+ !dev-lang/rust-bin:stable
+"
+
+REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
+ rust-analyzer? ( rust-src )
+ test? ( ${ALL_LLVM_TARGETS[*]} )
+ wasm? ( llvm_targets_WebAssembly )
+ x86? ( cpu_flags_x86_sse2 )
+"
+
+# we don't use cmake.eclass, but can get a warning
+CMAKE_WARN_UNUSED_CLI=no
+
+QA_FLAGS_IGNORED="
+ usr/lib/${PN}/${SLOT}/bin/.*
+ usr/lib/${PN}/${SLOT}/libexec/.*
+ usr/lib/${PN}/${SLOT}/lib/lib.*.so
+ usr/lib/${PN}/${SLOT}/lib/rustlib/.*/bin/.*
+ usr/lib/${PN}/${SLOT}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_SONAME="
+ usr/lib/${PN}/${SLOT}/lib/lib.*.so.*
+ usr/lib/${PN}/${SLOT}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_PRESTRIPPED="
+ usr/lib/${PN}/${SLOT}/lib/rustlib/.*/bin/rust-llvm-dwp
+ usr/lib/${PN}/${SLOT}/lib/rustlib/.*/lib/self-contained/crtn.o
+"
+
+# An rmeta file is custom binary format that contains the metadata for the crate.
+# rmeta files do not support linking, since they do not contain compiled object files.
+# so we can safely silence the warning for this QA check.
+QA_EXECSTACK="usr/lib/${PN}/${SLOT}/lib/rustlib/*/lib*.rlib:lib.rmeta"
+
+# causes double bootstrap
+RESTRICT="test"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
+
+PATCHES=(
+ "${FILESDIR}"/1.85.0-cross-compile-libz.patch
+ "${FILESDIR}"/1.85.0-musl-dynamic-linking.patch
+ "${FILESDIR}"/1.67.0-doc-wasm.patch
+)
+
+clear_vendor_checksums() {
+ sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die
+}
+
+toml_usex() {
+ usex "${1}" true false
+}
+
+src_unpack() {
+ if [[ ${PV} = *9999* ]]; then
+ git-r3_src_unpack
+ mkdir "${S}/.cargo" || die # The vendor script has a check for .cargo/config{,.toml}
+ touch "${S}/.cargo/config.toml" || die
+ local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")"
+ local rust_build=""
+ local rust_host=""
+ # Configure vendor to use the portage-provided toolchain. This prevents it from
+ # attempting to fetch a `beta` toolchain from the internet.
+ cat <<- _EOF_ > "${T}/vendor-config.toml"
+ [build]
+ build = "$(rust_abi "${CBUILD}")"
+ host = ["$(rust_abi "${CHOST}")"]
+ target = ["$(rust_abi "${CHOST}")"]
+ cargo = "${rust_stage0_root}/bin/cargo"
+ rustc = "${rust_stage0_root}/bin/rustc"
+ rustfmt = "${rust_stage0_root}/bin/rustfmt"
+ _EOF_
+ # We're using git sources so we need to run the Vendor script
+ # to ensure that all dependencies are present and up-to-date
+ mkdir "${S}/vendor" || die
+ # This also compiles the 'build helper', there's no way to avoid this.
+ ${EPYTHON} "${S}"/x.py vendor -vvv --config="${T}"/vendor-config.toml -j$(makeopts_jobs) ||
+ die "Failed to vendor dependencies"
+ # TODO: This has to be generated somehow, this is from a 1.84.x tarball I had lying around.
+ cat <<- _EOF_ > "${S}/.cargo/config.toml"
+ [source.crates-io]
+ replace-with = "vendored-sources"
+
+ [source."git+https://github.com/rust-lang/team"]
+ git = "https://github.com/rust-lang/team"
+ replace-with = "vendored-sources"
+
+ [source.vendored-sources]
+ directory = "vendor"
+ _EOF_
+ else
+ verify-sig_src_unpack
+ fi
+}
+
+pre_build_checks() {
+ local M=9216
+ # multiply requirements by 1.3 if we are doing x86-multilib
+ if use amd64; then
+ M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
+ fi
+ M=$(( $(usex clippy 128 0) + ${M} ))
+ if [[ ${PV} == *9999* ]]; then
+ M=$(( $(usex miri 128 0) + ${M} ))
+ fi
+ M=$(( $(usex rustfmt 256 0) + ${M} ))
+ # add 2G if we compile llvm and 256M per llvm_target
+ if ! use system-llvm; then
+ M=$(( 2048 + ${M} ))
+ local ltarget
+ for ltarget in ${ALL_LLVM_TARGETS[@]}; do
+ M=$(( $(usex ${ltarget} 256 0) + ${M} ))
+ done
+ fi
+ M=$(( $(usex wasm 256 0) + ${M} ))
+ M=$(( $(usex debug 2 1) * ${M} ))
+ eshopts_push -s extglob
+ if is-flagq '-g?(gdb)?([1-9])'; then
+ M=$(( 15 * ${M} / 10 ))
+ fi
+ eshopts_pop
+ M=$(( $(usex doc 256 0) + ${M} ))
+ CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
+}
+
+llvm_check_deps() {
+ has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
+}
+
+# Is LLVM being linked against libc++?
+is_libcxx_linked() {
+ local code='#include <ciso646>
+#if defined(_LIBCPP_VERSION)
+ HAVE_LIBCXX
+#endif
+'
+ local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
+ [[ ${out} == *HAVE_LIBCXX* ]]
+}
+
+pkg_pretend() {
+ pre_build_checks
+}
+
+pkg_setup() {
+ pre_build_checks
+ python-any-r1_pkg_setup
+
+ export LIBGIT2_NO_PKG_CONFIG=1 #749381
+ if tc-is-cross-compiler; then
+ use system-llvm && die "USE=system-llvm not allowed when cross-compiling"
+ local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")"
+ use "llvm_targets_${cross_llvm_target}" || \
+ die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling"
+ fi
+
+ rust_pkg_setup
+
+ if use system-llvm; then
+ llvm-r1_pkg_setup
+
+ local llvm_config="$(get_llvm_prefix)/bin/llvm-config"
+ export LLVM_LINK_SHARED=1
+ export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
+ fi
+}
+
+src_prepare() {
+ if [[ ${PV} = *9999* ]]; then
+ # We need to update / generate lockfiles for the workspace
+ ${CARGO} generate-lockfile --offline
+
+ fi
+ # Rust baselines to Pentium4 on x86, this patch lowers the baseline to i586 when sse2 is not set.
+ if use x86; then
+ if ! use cpu_flags_x86_sse2; then
+ eapply "${FILESDIR}/1.82.0-i586-baseline.patch"
+ #grep -rl cmd.args.push\(\"-march=i686\" . | xargs sed -i 's/march=i686/-march=i586/g' || die
+ fi
+ fi
+
+ if use lto && tc-is-clang && ! tc-ld-is-lld && ! tc-ld-is-mold; then
+ export RUSTFLAGS+=" -C link-arg=-fuse-ld=lld"
+ fi
+
+ default
+}
+
+src_configure() {
+ if tc-is-cross-compiler; then
+ export PKG_CONFIG_ALLOW_CROSS=1
+ export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig"
+ export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include"
+ export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)"
+ fi
+
+ filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
+
+ local rust_target="" rust_targets="" arch_cflags
+
+ # Collect rust target names to compile standard libs for all ABIs.
+ for v in $(multilib_get_enabled_abi_pairs); do
+ rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
+ done
+ if use wasm; then
+ rust_targets+=",\"wasm32-unknown-unknown\""
+ if use system-llvm; then
+ # un-hardcode rust-lld linker for this target
+ # https://bugs.gentoo.org/715348
+ sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die
+ fi
+ fi
+ rust_targets="${rust_targets#,}"
+
+ # cargo and rustdoc are mandatory and should always be included
+ local tools='"cargo","rustdoc"'
+ use clippy && tools+=',"clippy"'
+ use rustfmt && tools+=',"rustfmt"'
+ use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"'
+ use rust-src && tools+=',"src"'
+
+ if [[ ${PV} == *9999* ]]; then
+ use miri && tools+=',"miri"'
+ fi
+
+ local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")"
+ # in case of prefix it will be already prefixed, as --print sysroot returns full path
+ [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
+
+ rust_target="$(rust_abi)"
+ rust_build="$(rust_abi "${CBUILD}")"
+ rust_host="$(rust_abi "${CHOST}")"
+
+ RUST_EXPERIMENTAL_TARGETS=()
+ for _x in "${!ALL_RUST_EXPERIMENTAL_TARGETS[@]}"; do
+ if [[ ${ALL_RUST_EXPERIMENTAL_TARGETS[${_x}]} == 1 ]] && use ${_x} ; then
+ RUST_EXPERIMENTAL_TARGETS+=( ${_x#llvm_targets_} )
+ fi
+ done
+ RUST_EXPERIMENTAL_TARGETS=${RUST_EXPERIMENTAL_TARGETS[@]}
+
+ local cm_btype="$(usex debug DEBUG RELEASE)"
+ local build_channel
+ local build_miri="false"
+ case "${PV}" in
+ *9999*)
+ build_channel="nightly"
+ ;;
+ *beta*)
+ build_channel="beta"
+ ;;
+ *)
+ build_channel="stable"
+ ;;
+ esac
+ use nightly && build_channel="nightly"
+ cat <<- _EOF_ > "${S}"/config.toml
+ # https://github.com/rust-lang/rust/issues/135358 (bug #947897)
+ profile = "dist"
+ [llvm]
+ download-ci-llvm = false
+ optimize = $(toml_usex !debug)
+ release-debuginfo = $(toml_usex debug)
+ assertions = $(toml_usex debug)
+ ninja = true
+ targets = "${LLVM_TARGETS// /;}"
+ experimental-targets = "${RUST_EXPERIMENTAL_TARGETS// /;}"
+ link-shared = $(toml_usex system-llvm)
+ $(if is_libcxx_linked; then
+ # https://bugs.gentoo.org/732632
+ echo "use-libcxx = true"
+ echo "static-libstdcpp = false"
+ fi)
+ $(case "${rust_target}" in
+ i586-*-linux-*)
+ # https://github.com/rust-lang/rust/issues/93059
+ echo 'cflags = "-fcf-protection=none"'
+ echo 'cxxflags = "-fcf-protection=none"'
+ echo 'ldflags = "-fcf-protection=none"'
+ ;;
+ *)
+ ;;
+ esac)
+ enable-warnings = false
+ [llvm.build-config]
+ CMAKE_VERBOSE_MAKEFILE = "ON"
+ $(if ! tc-is-cross-compiler; then
+ # When cross-compiling, LLVM is compiled twice, once for host and
+ # once for target. Unfortunately, this build configuration applies
+ # to both, which means any flags applicable to one target but not
+ # the other will break. Conditionally disable respecting user
+ # flags when cross-compiling.
+ echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\""
+ echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\""
+ echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+ echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+ echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+ echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\""
+ fi)
+ [build]
+ build-stage = 2
+ test-stage = 2
+ build = "${rust_build}"
+ host = ["${rust_host}"]
+ target = [${rust_targets}]
+ cargo = "${rust_stage0_root}/bin/cargo"
+ rustc = "${rust_stage0_root}/bin/rustc"
+ rustfmt = "${rust_stage0_root}/bin/rustfmt"
+ docs = $(toml_usex doc)
+ compiler-docs = false
+ submodules = false
+ python = "${EPYTHON}"
+ locked-deps = true
+ vendor = true
+ extended = true
+ tools = [${tools}]
+ verbose = 2
+ sanitizers = false
+ profiler = true
+ cargo-native-static = false
+ [install]
+ prefix = "${EPREFIX}/usr/lib/${PN}/${SLOT}"
+ sysconfdir = "etc"
+ docdir = "share/doc/rust"
+ bindir = "bin"
+ libdir = "lib"
+ mandir = "share/man"
+ [rust]
+ # https://github.com/rust-lang/rust/issues/54872
+ codegen-units-std = 1
+ optimize = true
+ debug = $(toml_usex debug)
+ debug-assertions = $(toml_usex debug)
+ debug-assertions-std = $(toml_usex debug)
+ debuginfo-level = $(usex debug 2 0)
+ debuginfo-level-rustc = $(usex debug 2 0)
+ debuginfo-level-std = $(usex debug 2 0)
+ debuginfo-level-tools = $(usex debug 2 0)
+ debuginfo-level-tests = 0
+ backtrace = true
+ incremental = false
+ $(if ! tc-is-cross-compiler; then
+ echo "default-linker = \"${CHOST}-cc\""
+ fi)
+ channel = "${build_channel}"
+ description = "gentoo"
+ rpath = true
+ verbose-tests = true
+ optimize-tests = $(toml_usex !debug)
+ codegen-tests = true
+ dist-src = false
+ remap-debuginfo = true
+ lld = $(usex system-llvm false $(toml_usex wasm))
+ $(if use lto && tc-is-clang && ! tc-ld-is-mold; then
+ echo "use-lld = true"
+ fi)
+ # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
+ # https://github.com/rust-lang/rust/issues/74976
+ # https://github.com/rust-lang/rust/issues/76526
+ deny-warnings = $(usex wasm $(usex doc false true) true)
+ backtrace-on-ice = true
+ jemalloc = false
+ # See https://github.com/rust-lang/rust/issues/121124
+ lto = "$(usex lto thin off)"
+ [dist]
+ src-tarball = false
+ compression-formats = ["xz"]
+ compression-profile = "balanced"
+ _EOF_
+
+ for v in $(multilib_get_enabled_abi_pairs); do
+ rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
+ arch_cflags="$(get_abi_CFLAGS ${v##*.})"
+
+ export CFLAGS_${rust_target//-/_}="${arch_cflags}"
+
+ cat <<- _EOF_ >> "${S}"/config.toml
+ [target.${rust_target}]
+ ar = "$(tc-getAR)"
+ cc = "$(tc-getCC)"
+ cxx = "$(tc-getCXX)"
+ linker = "$(tc-getCC)"
+ ranlib = "$(tc-getRANLIB)"
+ llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
+ _EOF_
+ if use system-llvm; then
+ cat <<- _EOF_ >> "${S}"/config.toml
+ llvm-config = "$(get_llvm_prefix)/bin/llvm-config"
+ _EOF_
+ fi
+ # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
+ # but we patch it and set to false here as well
+ if use elibc_musl; then
+ cat <<- _EOF_ >> "${S}"/config.toml
+ crt-static = false
+ musl-root = "$($(tc-getCC) -print-sysroot)/usr"
+ _EOF_
+ fi
+ done
+ if use wasm; then
+ wasm_target="wasm32-unknown-unknown"
+ export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")"
+ cat <<- _EOF_ >> "${S}"/config.toml
+ [target.wasm32-unknown-unknown]
+ linker = "$(usex system-llvm lld rust-lld)"
+ # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
+ profiler = false
+ _EOF_
+ fi
+
+ if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
+ # experimental cross support
+ # discussion: https://bugs.gentoo.org/679878
+ # TODO: c*flags, clang, system-llvm, cargo.eclass target support
+ # it would be much better if we could split out stdlib
+ # complilation to separate ebuild and abuse CATEGORY to
+ # just install to /usr/lib/rustlib/<target>
+
+ # extra targets defined as a bash array
+ # spec format: <LLVM target>:<rust-target>:<CTARGET>
+ # best place would be /etc/portage/env/dev-lang/rust
+ # Example:
+ # RUST_CROSS_TARGETS=(
+ # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
+ # )
+ # no extra hand holding is done, no target transformations, all
+ # values are passed as-is with just basic checks, so it's up to user to supply correct values
+ # valid rust targets can be obtained with
+ # rustc --print target-list
+ # matching cross toolchain has to be installed
+ # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
+ # only gcc toolchains installed with crossdev are checked for now.
+
+ # BUG: we can't pass host flags to cross compiler, so just filter for now
+ # BUG: this should be more fine-grained.
+ filter-flags '-mcpu=*' '-march=*' '-mtune=*'
+
+ local cross_target_spec
+ for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
+ # extracts first element form <LLVM target>:<rust-target>:<CTARGET>
+ local cross_llvm_target="${cross_target_spec%%:*}"
+ # extracts toolchain triples, <rust-target>:<CTARGET>
+ local cross_triples="${cross_target_spec#*:}"
+ # extracts first element after before : separator
+ local cross_rust_target="${cross_triples%%:*}"
+ # extracts last element after : separator
+ local cross_toolchain="${cross_triples##*:}"
+ use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
+ command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
+
+ cat <<- _EOF_ >> "${S}"/config.toml
+ [target.${cross_rust_target}]
+ ar = "${cross_toolchain}-ar"
+ cc = "${cross_toolchain}-gcc"
+ cxx = "${cross_toolchain}-g++"
+ linker = "${cross_toolchain}-gcc"
+ ranlib = "${cross_toolchain}-ranlib"
+ _EOF_
+ if use system-llvm; then
+ cat <<- _EOF_ >> "${S}"/config.toml
+ llvm-config = "$(get_llvm_prefix)/bin/llvm-config"
+ _EOF_
+ fi
+ if [[ "${cross_toolchain}" == *-musl* ]]; then
+ cat <<- _EOF_ >> "${S}"/config.toml
+ musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
+ _EOF_
+ fi
+
+ # append cross target to "normal" target list
+ # example 'target = ["powerpc64le-unknown-linux-gnu"]'
+ # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
+
+ rust_targets="${rust_targets},\"${cross_rust_target}\""
+ sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
+
+ ewarn
+ ewarn "Enabled ${cross_rust_target} rust target"
+ ewarn "Using ${cross_toolchain} cross toolchain"
+ ewarn
+ if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
+ ewarn "'sys-devel/binutils[multitarget]' is not installed"
+ ewarn "'strip' will be unable to strip cross libraries"
+ ewarn "cross targets will be installed with full debug information"
+ ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
+ ewarn
+ ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
+ ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
+ ewarn
+ fi
+ done
+ fi # I_KNOW_WHAT_I_AM_DOING_CROSS
+
+ einfo "Rust configured with the following flags:"
+ echo
+ echo RUSTFLAGS="\"${RUSTFLAGS}\""
+ echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
+ echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
+ echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
+ env | grep "CARGO_TARGET_.*_RUSTFLAGS="
+ env | grep "CFLAGS_.*"
+ echo
+ einfo "config.toml contents:"
+ cat "${S}"/config.toml || die
+ echo
+}
+
+src_compile() {
+ RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+}
+
+src_test() {
+ # https://rustc-dev-guide.rust-lang.org/tests/intro.html
+
+ # those are basic and codegen tests.
+ local tests=(
+ codegen
+ codegen-units
+ compile-fail
+ incremental
+ mir-opt
+ pretty
+ run-make
+ )
+
+ # fails if llvm is not built with ALL targets.
+ # and known to fail with system llvm sometimes.
+ use system-llvm || tests+=( assembly )
+
+ # fragile/expensive/less important tests
+ # or tests that require extra builds
+ # TODO: instead of skipping, just make some nonfatal.
+ if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then
+ tests+=(
+ rustdoc
+ rustdoc-js
+ rustdoc-js-std
+ rustdoc-ui
+ run-make-fulldeps
+ ui
+ ui-fulldeps
+ )
+ fi
+
+ local i failed=()
+ einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}"
+ for i in "${tests[@]}"; do
+ local t="src/test/${i}"
+ einfo "rust_src_test: running ${t}"
+ if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
+ -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
+ then
+ failed+=( "${t}" )
+ eerror "rust_src_test: ${t} failed"
+ fi
+ done
+
+ if [[ ${#failed[@]} -ne 0 ]]; then
+ eerror "rust_src_test: failure summary: ${failed[@]}"
+ die "aborting due to test failures"
+ fi
+}
+
+src_install() {
+ DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+
+ docompress /usr/lib/${PN}/${SLOT}/share/man/
+
+ # bug #689562, #689160
+ rm -v "${ED}/usr/lib/${PN}/${SLOT}/etc/bash_completion.d/cargo" || die
+ rmdir -v "${ED}/usr/lib/${PN}/${SLOT}"/etc{/bash_completion.d,} || die
+
+ local symlinks=(
+ cargo
+ rustc
+ rustdoc
+ rust-gdb
+ rust-gdbgui
+ rust-lldb
+ )
+
+ use clippy && symlinks+=( clippy-driver cargo-clippy )
+ if [[ ${PV} = *9999* ]]; then
+ use miri && symlinks+=( miri cargo-miri )
+ fi
+ use rustfmt && symlinks+=( rustfmt cargo-fmt )
+ use rust-analyzer && symlinks+=( rust-analyzer )
+
+ einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
+ local i
+ for i in "${symlinks[@]}"; do
+ # we need realpath on /usr/bin/* symlink return version-appended binary path.
+ # so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
+ # need to fix eselect-rust to remove this hack.
+ local ver_i="${i}-${PV%%_*}"
+ if [[ -f "${ED}/usr/lib/${PN}/${SLOT}/bin/${i}" ]]; then
+ einfo "Installing ${i} symlink"
+ ln -v "${ED}/usr/lib/${PN}/${SLOT}/bin/${i}" "${ED}/usr/lib/${PN}/${SLOT}/bin/${ver_i}" || die
+ else
+ ewarn "${i} symlink requested, but source file not found"
+ ewarn "please report this"
+ fi
+ dosym "../lib/${PN}/${SLOT}/bin/${ver_i}" "/usr/bin/${ver_i}"
+ done
+
+ # symlinks to switch components to active rust in eselect
+ dosym "${SLOT}/lib" "/usr/lib/${PN}/lib-${SLOT}"
+ use rust-analyzer && dosym "${SLOT}/libexec" "/usr/lib/${PN}/libexec-${SLOT}"
+ dosym "${SLOT}/share/man" "/usr/lib/${PN}/man-${SLOT}"
+ dosym "rust/${SLOT}/lib/rustlib" "/usr/lib/rustlib-${SLOT}"
+ dosym "../../lib/${PN}/${SLOT}/share/doc/rust" "/usr/share/doc/${P}"
+
+ newenvd - "50${P}" <<-_EOF_
+ MANPATH="${EPREFIX}/usr/lib/rust/man-${SLOT}"
+ _EOF_
+
+ rm -rf "${ED}/usr/lib/${PN}/${SLOT}"/*.old || die
+ rm -rf "${ED}/usr/lib/${PN}/${SLOT}/bin"/*.old || die
+ rm -rf "${ED}/usr/lib/${PN}/${SLOT}/doc"/*.old || die
+
+ # note: eselect-rust adds EROOT to all paths below
+ cat <<-_EOF_ > "${T}/provider-${PN}-${SLOT}"
+ /usr/bin/cargo
+ /usr/bin/rustdoc
+ /usr/bin/rust-gdb
+ /usr/bin/rust-gdbgui
+ /usr/bin/rust-lldb
+ /usr/lib/rustlib
+ /usr/lib/rust/lib
+ /usr/lib/rust/man
+ /usr/share/doc/rust
+ _EOF_
+
+ if use clippy; then
+ echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
+ echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
+ fi
+ if [[ ${SLOT} == *9999* ]] && use miri; then
+ echo /usr/bin/miri >> "${T}/provider-${P}"
+ echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
+ fi
+ if use rustfmt; then
+ echo /usr/bin/rustfmt >> "${T}/provider-${P}"
+ echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
+ fi
+ if use rust-analyzer; then
+ echo /usr/lib/rust/libexec >> "${T}/provider-${P}"
+ echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
+ fi
+
+ insinto /etc/env.d/rust
+ doins "${T}/provider-${PN}-${SLOT}"
+
+ if use dist; then
+ "${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+ insinto "/usr/lib/${PN}/${SLOT}/dist"
+ doins -r "${S}/build/dist/."
+ fi
+}
+
+pkg_postinst() {
+
+ eselect rust update
+
+ if has_version dev-debug/gdb || has_version llvm-core/lldb; then
+ elog "Rust installs helper scripts for calling GDB and LLDB,"
+ elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}."
+ fi
+
+ if has_version app-editors/emacs; then
+ optfeature "emacs support for rust" app-emacs/rust-mode
+ fi
+
+ if has_version app-editors/gvim || has_version app-editors/vim; then
+ optfeature "vim support for rust" app-vim/rust-vim
+ fi
+}
+
+pkg_postrm() {
+ eselect rust cleanup
+}
diff --git a/dev-lang/rust/rust-1.87.0-r991.ebuild b/dev-lang/rust/rust-1.87.0-r991.ebuild
new file mode 100644
index 0000000..32b35e3
--- /dev/null
+++ b/dev-lang/rust/rust-1.87.0-r991.ebuild
@@ -0,0 +1,815 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LLVM_COMPAT=( 20 )
+PYTHON_COMPAT=( python3_{11..14} )
+
+RUST_MAX_VER=${PV%%_*}
+if [[ ${PV} == *9999* ]]; then
+ RUST_MIN_VER="1.85.0" # Update this as new `beta` releases come out.
+elif [[ ${PV} == *beta* ]]; then
+ # Enforce that `beta` is built from `stable`.
+ # While uncommon it is possible for feature changes within `beta` to result
+ # in an older snapshot being unable to build a newer one without modifying the sources.
+ # 'stable' releases should always be able to build a beta snapshot so just use those.
+ RUST_MAX_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).1"
+ RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
+else
+ RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
+fi
+
+inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing optfeature \
+ multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig
+
+if [[ ${PV} = *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/rust-lang/rust.git"
+ EGIT_SUBMODULES=(
+ "*"
+ "-src/gcc"
+ )
+elif [[ ${PV} == *beta* ]]; then
+ # Identify the snapshot date of the beta release:
+ # curl -Ls static.rust-lang.org/dist/channel-rust-beta.toml | grep beta-src.tar.xz
+ betaver=${PV//*beta}
+ BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
+ MY_P="rustc-beta"
+ SRC_URI="https://static.rust-lang.org/dist/${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz
+ verify-sig? ( https://static.rust-lang.org/dist/${BETA_SNAPSHOT}/rustc-beta-src.tar.xz.asc
+ -> rustc-${PV}-src.tar.xz.asc )
+ "
+ S="${WORKDIR}/${MY_P}-src"
+else
+ MY_P="rustc-${PV}"
+ SRC_URI="https://static.rust-lang.org/dist/${MY_P}-src.tar.xz
+ verify-sig? ( https://static.rust-lang.org/dist/${MY_P}-src.tar.xz.asc )
+ "
+ S="${WORKDIR}/${MY_P}-src"
+ KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+fi
+
+DESCRIPTION="Systems programming language originally developed by Mozilla"
+HOMEPAGE="https://www.rust-lang.org/"
+
+# keep in sync with llvm ebuild of the same version as bundled one.
+ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
+ LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE
+ WebAssembly X86 XCore Xtensa )
+ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
+LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
+
+# https://github.com/rust-lang/llvm-project/blob/rustc-1.84.0/llvm/CMakeLists.txt
+_ALL_RUST_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa )
+declare -A ALL_RUST_EXPERIMENTAL_TARGETS
+for _x in "${_ALL_RUST_EXPERIMENTAL_TARGETS[@]}"; do
+ ALL_RUST_EXPERIMENTAL_TARGETS["llvm_targets_${_x}"]=0
+done
+
+LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
+SLOT="${PV%%_*}" # Beta releases get to share the same SLOT as the eventual stable
+
+IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto rustfmt rust-analyzer rust-src +system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
+IUSE+=" nightly"
+
+if [[ ${PV} = *9999* ]]; then
+ # These USE flags require nightly rust
+ IUSE+=" miri"
+fi
+
+LLVM_DEPEND=()
+# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
+for _x in "${ALL_LLVM_TARGETS[@]}"; do
+ LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" )
+ if [[ -v ALL_RUST_EXPERIMENTAL_TARGETS["${_x}"] ]] ; then
+ ALL_RUST_EXPERIMENTAL_TARGETS["${_x}"]=1
+ fi
+done
+LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" )
+LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" )
+
+BDEPEND="${PYTHON_DEPS}
+ app-eselect/eselect-rust
+ || (
+ >=sys-devel/gcc-4.7[cxx]
+ >=llvm-core/clang-3.5
+ )
+ lto? ( system-llvm? (
+ || (
+ $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}')
+ sys-devel/mold
+ )
+ ) )
+ !system-llvm? (
+ >=dev-build/cmake-3.13.4
+ app-alternatives/ninja
+ )
+ test? ( dev-debug/gdb )
+ verify-sig? ( sec-keys/openpgp-keys-rust )
+"
+
+DEPEND="
+ >=app-arch/xz-utils-5.2
+ net-misc/curl:=[http2,ssl]
+ sys-libs/zlib:=
+ dev-libs/openssl:0=
+ system-llvm? (
+ ${LLVM_DEPEND[*]}
+ llvm-libunwind? ( llvm-runtimes/libunwind:= )
+ )
+ !system-llvm? (
+ !llvm-libunwind? (
+ elibc_musl? ( sys-libs/libunwind:= )
+ )
+ )
+"
+
+RDEPEND="${DEPEND}
+ app-eselect/eselect-rust
+ dev-lang/rust-common
+ sys-apps/lsb-release
+ !dev-lang/rust:stable
+ !dev-lang/rust-bin:stable
+"
+
+REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
+ rust-analyzer? ( rust-src )
+ test? ( ${ALL_LLVM_TARGETS[*]} )
+ wasm? ( llvm_targets_WebAssembly )
+ x86? ( cpu_flags_x86_sse2 )
+"
+
+# we don't use cmake.eclass, but can get a warning
+CMAKE_WARN_UNUSED_CLI=no
+
+QA_FLAGS_IGNORED="
+ usr/lib/${PN}/${SLOT}/bin/.*
+ usr/lib/${PN}/${SLOT}/libexec/.*
+ usr/lib/${PN}/${SLOT}/lib/lib.*.so
+ usr/lib/${PN}/${SLOT}/lib/rustlib/.*/bin/.*
+ usr/lib/${PN}/${SLOT}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_SONAME="
+ usr/lib/${PN}/${SLOT}/lib/lib.*.so.*
+ usr/lib/${PN}/${SLOT}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_PRESTRIPPED="
+ usr/lib/${PN}/${SLOT}/lib/rustlib/.*/bin/rust-llvm-dwp
+ usr/lib/${PN}/${SLOT}/lib/rustlib/.*/lib/self-contained/crtn.o
+"
+
+# An rmeta file is custom binary format that contains the metadata for the crate.
+# rmeta files do not support linking, since they do not contain compiled object files.
+# so we can safely silence the warning for this QA check.
+QA_EXECSTACK="usr/lib/${PN}/${SLOT}/lib/rustlib/*/lib*.rlib:lib.rmeta"
+
+# causes double bootstrap
+RESTRICT="test"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
+
+PATCHES=(
+ "${FILESDIR}"/1.85.0-cross-compile-libz.patch
+ "${FILESDIR}"/1.85.0-musl-dynamic-linking.patch
+ "${FILESDIR}"/1.67.0-doc-wasm.patch
+)
+
+clear_vendor_checksums() {
+ sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die
+}
+
+toml_usex() {
+ usex "${1}" true false
+}
+
+src_unpack() {
+ if [[ ${PV} = *9999* ]]; then
+ git-r3_src_unpack
+ mkdir "${S}/.cargo" || die # The vendor script has a check for .cargo/config{,.toml}
+ touch "${S}/.cargo/config.toml" || die
+ local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")"
+ local rust_build=""
+ local rust_host=""
+ # Configure vendor to use the portage-provided toolchain. This prevents it from
+ # attempting to fetch a `beta` toolchain from the internet.
+ cat <<- _EOF_ > "${T}/vendor-config.toml"
+ [build]
+ build = "$(rust_abi "${CBUILD}")"
+ host = ["$(rust_abi "${CHOST}")"]
+ target = ["$(rust_abi "${CHOST}")"]
+ cargo = "${rust_stage0_root}/bin/cargo"
+ rustc = "${rust_stage0_root}/bin/rustc"
+ rustfmt = "${rust_stage0_root}/bin/rustfmt"
+ _EOF_
+ # We're using git sources so we need to run the Vendor script
+ # to ensure that all dependencies are present and up-to-date
+ mkdir "${S}/vendor" || die
+ # This also compiles the 'build helper', there's no way to avoid this.
+ ${EPYTHON} "${S}"/x.py vendor -vvv --config="${T}"/vendor-config.toml -j$(makeopts_jobs) ||
+ die "Failed to vendor dependencies"
+ # TODO: This has to be generated somehow, this is from a 1.84.x tarball I had lying around.
+ cat <<- _EOF_ > "${S}/.cargo/config.toml"
+ [source.crates-io]
+ replace-with = "vendored-sources"
+
+ [source."git+https://github.com/rust-lang/team"]
+ git = "https://github.com/rust-lang/team"
+ replace-with = "vendored-sources"
+
+ [source.vendored-sources]
+ directory = "vendor"
+ _EOF_
+ else
+ verify-sig_src_unpack
+ fi
+}
+
+pre_build_checks() {
+ local M=9216
+ # multiply requirements by 1.3 if we are doing x86-multilib
+ if use amd64; then
+ M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
+ fi
+ M=$(( $(usex clippy 128 0) + ${M} ))
+ if [[ ${PV} == *9999* ]]; then
+ M=$(( $(usex miri 128 0) + ${M} ))
+ fi
+ M=$(( $(usex rustfmt 256 0) + ${M} ))
+ # add 2G if we compile llvm and 256M per llvm_target
+ if ! use system-llvm; then
+ M=$(( 2048 + ${M} ))
+ local ltarget
+ for ltarget in ${ALL_LLVM_TARGETS[@]}; do
+ M=$(( $(usex ${ltarget} 256 0) + ${M} ))
+ done
+ fi
+ M=$(( $(usex wasm 256 0) + ${M} ))
+ M=$(( $(usex debug 2 1) * ${M} ))
+ eshopts_push -s extglob
+ if is-flagq '-g?(gdb)?([1-9])'; then
+ M=$(( 15 * ${M} / 10 ))
+ fi
+ eshopts_pop
+ M=$(( $(usex doc 256 0) + ${M} ))
+ CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
+}
+
+llvm_check_deps() {
+ has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
+}
+
+# Is LLVM being linked against libc++?
+is_libcxx_linked() {
+ local code='#include <ciso646>
+#if defined(_LIBCPP_VERSION)
+ HAVE_LIBCXX
+#endif
+'
+ local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
+ [[ ${out} == *HAVE_LIBCXX* ]]
+}
+
+pkg_pretend() {
+ pre_build_checks
+}
+
+pkg_setup() {
+ pre_build_checks
+ python-any-r1_pkg_setup
+
+ export LIBGIT2_NO_PKG_CONFIG=1 #749381
+ if tc-is-cross-compiler; then
+ use system-llvm && die "USE=system-llvm not allowed when cross-compiling"
+ local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")"
+ use "llvm_targets_${cross_llvm_target}" || \
+ die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling"
+ fi
+
+ rust_pkg_setup
+
+ if use system-llvm; then
+ llvm-r1_pkg_setup
+
+ local llvm_config="$(get_llvm_prefix)/bin/llvm-config"
+ export LLVM_LINK_SHARED=1
+ export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
+ fi
+}
+
+src_prepare() {
+ if [[ ${PV} = *9999* ]]; then
+ # We need to update / generate lockfiles for the workspace
+ ${CARGO} generate-lockfile --offline
+
+ fi
+ # Rust baselines to Pentium4 on x86, this patch lowers the baseline to i586 when sse2 is not set.
+ if use x86; then
+ if ! use cpu_flags_x86_sse2; then
+ eapply "${FILESDIR}/1.82.0-i586-baseline.patch"
+ #grep -rl cmd.args.push\(\"-march=i686\" . | xargs sed -i 's/march=i686/-march=i586/g' || die
+ fi
+ fi
+
+ if use lto && tc-is-clang && ! tc-ld-is-lld && ! tc-ld-is-mold; then
+ export RUSTFLAGS+=" -C link-arg=-fuse-ld=lld"
+ fi
+
+ default
+}
+
+src_configure() {
+ if tc-is-cross-compiler; then
+ export PKG_CONFIG_ALLOW_CROSS=1
+ export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig"
+ export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include"
+ export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)"
+ fi
+
+ filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
+
+ local rust_target="" rust_targets="" arch_cflags
+
+ # Collect rust target names to compile standard libs for all ABIs.
+ for v in $(multilib_get_enabled_abi_pairs); do
+ rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
+ done
+ if use wasm; then
+ rust_targets+=",\"wasm32-unknown-unknown\""
+ if use system-llvm; then
+ # un-hardcode rust-lld linker for this target
+ # https://bugs.gentoo.org/715348
+ sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die
+ fi
+ fi
+ rust_targets="${rust_targets#,}"
+
+ # cargo and rustdoc are mandatory and should always be included
+ local tools='"cargo","rustdoc"'
+ use clippy && tools+=',"clippy"'
+ use rustfmt && tools+=',"rustfmt"'
+ use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"'
+ use rust-src && tools+=',"src"'
+
+ if [[ ${PV} == *9999* ]]; then
+ use miri && tools+=',"miri"'
+ fi
+
+ local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")"
+ # in case of prefix it will be already prefixed, as --print sysroot returns full path
+ [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
+
+ rust_target="$(rust_abi)"
+ rust_build="$(rust_abi "${CBUILD}")"
+ rust_host="$(rust_abi "${CHOST}")"
+
+ RUST_EXPERIMENTAL_TARGETS=()
+ for _x in "${!ALL_RUST_EXPERIMENTAL_TARGETS[@]}"; do
+ if [[ ${ALL_RUST_EXPERIMENTAL_TARGETS[${_x}]} == 1 ]] && use ${_x} ; then
+ RUST_EXPERIMENTAL_TARGETS+=( ${_x#llvm_targets_} )
+ fi
+ done
+ RUST_EXPERIMENTAL_TARGETS=${RUST_EXPERIMENTAL_TARGETS[@]}
+
+ local cm_btype="$(usex debug DEBUG RELEASE)"
+ local build_channel
+ local build_miri="false"
+ case "${PV}" in
+ *9999*)
+ build_channel="nightly"
+ ;;
+ *beta*)
+ build_channel="beta"
+ ;;
+ *)
+ build_channel="stable"
+ ;;
+ esac
+ use nightly && build_channel="nightly"
+ cat <<- _EOF_ > "${S}"/config.toml
+ # https://github.com/rust-lang/rust/issues/135358 (bug #947897)
+ profile = "dist"
+ [llvm]
+ download-ci-llvm = false
+ optimize = $(toml_usex !debug)
+ release-debuginfo = $(toml_usex debug)
+ assertions = $(toml_usex debug)
+ ninja = true
+ targets = "${LLVM_TARGETS// /;}"
+ experimental-targets = "${RUST_EXPERIMENTAL_TARGETS// /;}"
+ link-shared = $(toml_usex system-llvm)
+ $(if is_libcxx_linked; then
+ # https://bugs.gentoo.org/732632
+ echo "use-libcxx = true"
+ echo "static-libstdcpp = false"
+ fi)
+ $(case "${rust_target}" in
+ i586-*-linux-*)
+ # https://github.com/rust-lang/rust/issues/93059
+ echo 'cflags = "-fcf-protection=none"'
+ echo 'cxxflags = "-fcf-protection=none"'
+ echo 'ldflags = "-fcf-protection=none"'
+ ;;
+ *)
+ ;;
+ esac)
+ enable-warnings = false
+ [llvm.build-config]
+ CMAKE_VERBOSE_MAKEFILE = "ON"
+ $(if ! tc-is-cross-compiler; then
+ # When cross-compiling, LLVM is compiled twice, once for host and
+ # once for target. Unfortunately, this build configuration applies
+ # to both, which means any flags applicable to one target but not
+ # the other will break. Conditionally disable respecting user
+ # flags when cross-compiling.
+ echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\""
+ echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\""
+ echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+ echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+ echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+ echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\""
+ fi)
+ [build]
+ build-stage = 2
+ test-stage = 2
+ build = "${rust_build}"
+ host = ["${rust_host}"]
+ target = [${rust_targets}]
+ cargo = "${rust_stage0_root}/bin/cargo"
+ rustc = "${rust_stage0_root}/bin/rustc"
+ rustfmt = "${rust_stage0_root}/bin/rustfmt"
+ docs = $(toml_usex doc)
+ compiler-docs = false
+ submodules = false
+ python = "${EPYTHON}"
+ locked-deps = true
+ vendor = true
+ extended = true
+ tools = [${tools}]
+ verbose = 2
+ sanitizers = false
+ profiler = true
+ cargo-native-static = false
+ [install]
+ prefix = "${EPREFIX}/usr/lib/${PN}/${SLOT}"
+ sysconfdir = "etc"
+ docdir = "share/doc/rust"
+ bindir = "bin"
+ libdir = "lib"
+ mandir = "share/man"
+ [rust]
+ # https://github.com/rust-lang/rust/issues/54872
+ codegen-units-std = 1
+ optimize = true
+ debug = $(toml_usex debug)
+ debug-assertions = $(toml_usex debug)
+ debug-assertions-std = $(toml_usex debug)
+ debuginfo-level = $(usex debug 2 0)
+ debuginfo-level-rustc = $(usex debug 2 0)
+ debuginfo-level-std = $(usex debug 2 0)
+ debuginfo-level-tools = $(usex debug 2 0)
+ debuginfo-level-tests = 0
+ backtrace = true
+ incremental = false
+ $(if ! tc-is-cross-compiler; then
+ echo "default-linker = \"${CHOST}-cc\""
+ fi)
+ channel = "${build_channel}"
+ description = "gentoo"
+ rpath = true
+ verbose-tests = true
+ optimize-tests = $(toml_usex !debug)
+ codegen-tests = true
+ dist-src = false
+ remap-debuginfo = true
+ lld = $(usex system-llvm false $(toml_usex wasm))
+ $(if use lto && tc-is-clang && ! tc-ld-is-mold; then
+ echo "use-lld = true"
+ fi)
+ # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
+ # https://github.com/rust-lang/rust/issues/74976
+ # https://github.com/rust-lang/rust/issues/76526
+ deny-warnings = $(usex wasm $(usex doc false true) true)
+ backtrace-on-ice = true
+ jemalloc = false
+ # See https://github.com/rust-lang/rust/issues/121124
+ lto = "$(usex lto thin off)"
+ [dist]
+ src-tarball = false
+ compression-formats = ["xz"]
+ compression-profile = "balanced"
+ _EOF_
+
+ for v in $(multilib_get_enabled_abi_pairs); do
+ rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
+ arch_cflags="$(get_abi_CFLAGS ${v##*.})"
+
+ export CFLAGS_${rust_target//-/_}="${arch_cflags}"
+
+ cat <<- _EOF_ >> "${S}"/config.toml
+ [target.${rust_target}]
+ ar = "$(tc-getAR)"
+ cc = "$(tc-getCC)"
+ cxx = "$(tc-getCXX)"
+ linker = "$(tc-getCC)"
+ ranlib = "$(tc-getRANLIB)"
+ llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
+ _EOF_
+ if use system-llvm; then
+ cat <<- _EOF_ >> "${S}"/config.toml
+ llvm-config = "$(get_llvm_prefix)/bin/llvm-config"
+ _EOF_
+ fi
+ # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
+ # but we patch it and set to false here as well
+ if use elibc_musl; then
+ cat <<- _EOF_ >> "${S}"/config.toml
+ crt-static = false
+ musl-root = "$($(tc-getCC) -print-sysroot)/usr"
+ _EOF_
+ fi
+ done
+ if use wasm; then
+ wasm_target="wasm32-unknown-unknown"
+ export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")"
+ cat <<- _EOF_ >> "${S}"/config.toml
+ [target.wasm32-unknown-unknown]
+ linker = "$(usex system-llvm lld rust-lld)"
+ # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
+ profiler = false
+ _EOF_
+ fi
+
+ if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
+ # experimental cross support
+ # discussion: https://bugs.gentoo.org/679878
+ # TODO: c*flags, clang, system-llvm, cargo.eclass target support
+ # it would be much better if we could split out stdlib
+ # complilation to separate ebuild and abuse CATEGORY to
+ # just install to /usr/lib/rustlib/<target>
+
+ # extra targets defined as a bash array
+ # spec format: <LLVM target>:<rust-target>:<CTARGET>
+ # best place would be /etc/portage/env/dev-lang/rust
+ # Example:
+ # RUST_CROSS_TARGETS=(
+ # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
+ # )
+ # no extra hand holding is done, no target transformations, all
+ # values are passed as-is with just basic checks, so it's up to user to supply correct values
+ # valid rust targets can be obtained with
+ # rustc --print target-list
+ # matching cross toolchain has to be installed
+ # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
+ # only gcc toolchains installed with crossdev are checked for now.
+
+ # BUG: we can't pass host flags to cross compiler, so just filter for now
+ # BUG: this should be more fine-grained.
+ filter-flags '-mcpu=*' '-march=*' '-mtune=*'
+
+ local cross_target_spec
+ for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
+ # extracts first element form <LLVM target>:<rust-target>:<CTARGET>
+ local cross_llvm_target="${cross_target_spec%%:*}"
+ # extracts toolchain triples, <rust-target>:<CTARGET>
+ local cross_triples="${cross_target_spec#*:}"
+ # extracts first element after before : separator
+ local cross_rust_target="${cross_triples%%:*}"
+ # extracts last element after : separator
+ local cross_toolchain="${cross_triples##*:}"
+ use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
+ command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
+
+ cat <<- _EOF_ >> "${S}"/config.toml
+ [target.${cross_rust_target}]
+ ar = "${cross_toolchain}-ar"
+ cc = "${cross_toolchain}-gcc"
+ cxx = "${cross_toolchain}-g++"
+ linker = "${cross_toolchain}-gcc"
+ ranlib = "${cross_toolchain}-ranlib"
+ _EOF_
+ if use system-llvm; then
+ cat <<- _EOF_ >> "${S}"/config.toml
+ llvm-config = "$(get_llvm_prefix)/bin/llvm-config"
+ _EOF_
+ fi
+ if [[ "${cross_toolchain}" == *-musl* ]]; then
+ cat <<- _EOF_ >> "${S}"/config.toml
+ musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
+ _EOF_
+ fi
+
+ # append cross target to "normal" target list
+ # example 'target = ["powerpc64le-unknown-linux-gnu"]'
+ # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
+
+ rust_targets="${rust_targets},\"${cross_rust_target}\""
+ sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
+
+ ewarn
+ ewarn "Enabled ${cross_rust_target} rust target"
+ ewarn "Using ${cross_toolchain} cross toolchain"
+ ewarn
+ if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
+ ewarn "'sys-devel/binutils[multitarget]' is not installed"
+ ewarn "'strip' will be unable to strip cross libraries"
+ ewarn "cross targets will be installed with full debug information"
+ ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
+ ewarn
+ ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
+ ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
+ ewarn
+ fi
+ done
+ fi # I_KNOW_WHAT_I_AM_DOING_CROSS
+
+ einfo "Rust configured with the following flags:"
+ echo
+ echo RUSTFLAGS="\"${RUSTFLAGS}\""
+ echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
+ echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
+ echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
+ env | grep "CARGO_TARGET_.*_RUSTFLAGS="
+ env | grep "CFLAGS_.*"
+ echo
+ einfo "config.toml contents:"
+ cat "${S}"/config.toml || die
+ echo
+}
+
+src_compile() {
+ RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+}
+
+src_test() {
+ # https://rustc-dev-guide.rust-lang.org/tests/intro.html
+
+ # those are basic and codegen tests.
+ local tests=(
+ codegen
+ codegen-units
+ compile-fail
+ incremental
+ mir-opt
+ pretty
+ run-make
+ )
+
+ # fails if llvm is not built with ALL targets.
+ # and known to fail with system llvm sometimes.
+ use system-llvm || tests+=( assembly )
+
+ # fragile/expensive/less important tests
+ # or tests that require extra builds
+ # TODO: instead of skipping, just make some nonfatal.
+ if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then
+ tests+=(
+ rustdoc
+ rustdoc-js
+ rustdoc-js-std
+ rustdoc-ui
+ run-make-fulldeps
+ ui
+ ui-fulldeps
+ )
+ fi
+
+ local i failed=()
+ einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}"
+ for i in "${tests[@]}"; do
+ local t="src/test/${i}"
+ einfo "rust_src_test: running ${t}"
+ if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
+ -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
+ then
+ failed+=( "${t}" )
+ eerror "rust_src_test: ${t} failed"
+ fi
+ done
+
+ if [[ ${#failed[@]} -ne 0 ]]; then
+ eerror "rust_src_test: failure summary: ${failed[@]}"
+ die "aborting due to test failures"
+ fi
+}
+
+src_install() {
+ DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+
+ docompress /usr/lib/${PN}/${SLOT}/share/man/
+
+ # bug #689562, #689160
+ rm -v "${ED}/usr/lib/${PN}/${SLOT}/etc/bash_completion.d/cargo" || die
+ rmdir -v "${ED}/usr/lib/${PN}/${SLOT}"/etc{/bash_completion.d,} || die
+
+ local symlinks=(
+ cargo
+ rustc
+ rustdoc
+ rust-gdb
+ rust-gdbgui
+ rust-lldb
+ )
+
+ use clippy && symlinks+=( clippy-driver cargo-clippy )
+ if [[ ${PV} = *9999* ]]; then
+ use miri && symlinks+=( miri cargo-miri )
+ fi
+ use rustfmt && symlinks+=( rustfmt cargo-fmt )
+ use rust-analyzer && symlinks+=( rust-analyzer )
+
+ einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
+ local i
+ for i in "${symlinks[@]}"; do
+ # we need realpath on /usr/bin/* symlink return version-appended binary path.
+ # so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
+ # need to fix eselect-rust to remove this hack.
+ local ver_i="${i}-${PV%%_*}"
+ if [[ -f "${ED}/usr/lib/${PN}/${SLOT}/bin/${i}" ]]; then
+ einfo "Installing ${i} symlink"
+ ln -v "${ED}/usr/lib/${PN}/${SLOT}/bin/${i}" "${ED}/usr/lib/${PN}/${SLOT}/bin/${ver_i}" || die
+ else
+ ewarn "${i} symlink requested, but source file not found"
+ ewarn "please report this"
+ fi
+ dosym "../lib/${PN}/${SLOT}/bin/${ver_i}" "/usr/bin/${ver_i}"
+ done
+
+ # symlinks to switch components to active rust in eselect
+ dosym "${SLOT}/lib" "/usr/lib/${PN}/lib-${SLOT}"
+ use rust-analyzer && dosym "${SLOT}/libexec" "/usr/lib/${PN}/libexec-${SLOT}"
+ dosym "${SLOT}/share/man" "/usr/lib/${PN}/man-${SLOT}"
+ dosym "rust/${SLOT}/lib/rustlib" "/usr/lib/rustlib-${SLOT}"
+ dosym "../../lib/${PN}/${SLOT}/share/doc/rust" "/usr/share/doc/${P}"
+
+ newenvd - "50${P}" <<-_EOF_
+ MANPATH="${EPREFIX}/usr/lib/rust/man-${SLOT}"
+ _EOF_
+
+ rm -rf "${ED}/usr/lib/${PN}/${SLOT}"/*.old || die
+ rm -rf "${ED}/usr/lib/${PN}/${SLOT}/bin"/*.old || die
+ rm -rf "${ED}/usr/lib/${PN}/${SLOT}/doc"/*.old || die
+
+ # note: eselect-rust adds EROOT to all paths below
+ cat <<-_EOF_ > "${T}/provider-${PN}-${SLOT}"
+ /usr/bin/cargo
+ /usr/bin/rustdoc
+ /usr/bin/rust-gdb
+ /usr/bin/rust-gdbgui
+ /usr/bin/rust-lldb
+ /usr/lib/rustlib
+ /usr/lib/rust/lib
+ /usr/lib/rust/man
+ /usr/share/doc/rust
+ _EOF_
+
+ if use clippy; then
+ echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
+ echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
+ fi
+ if [[ ${SLOT} == *9999* ]] && use miri; then
+ echo /usr/bin/miri >> "${T}/provider-${P}"
+ echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
+ fi
+ if use rustfmt; then
+ echo /usr/bin/rustfmt >> "${T}/provider-${P}"
+ echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
+ fi
+ if use rust-analyzer; then
+ echo /usr/lib/rust/libexec >> "${T}/provider-${P}"
+ echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
+ fi
+
+ insinto /etc/env.d/rust
+ doins "${T}/provider-${PN}-${SLOT}"
+
+ if use dist; then
+ "${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+ insinto "/usr/lib/${PN}/${SLOT}/dist"
+ doins -r "${S}/build/dist/."
+ fi
+}
+
+pkg_postinst() {
+
+ eselect rust update
+
+ if has_version dev-debug/gdb || has_version llvm-core/lldb; then
+ elog "Rust installs helper scripts for calling GDB and LLDB,"
+ elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}."
+ fi
+
+ if has_version app-editors/emacs; then
+ optfeature "emacs support for rust" app-emacs/rust-mode
+ fi
+
+ if has_version app-editors/gvim || has_version app-editors/vim; then
+ optfeature "vim support for rust" app-vim/rust-vim
+ fi
+}
+
+pkg_postrm() {
+ eselect rust cleanup
+}
diff --git a/dev-lang/rust/rust-1.87.0-r992.ebuild b/dev-lang/rust/rust-1.87.0-r992.ebuild
new file mode 100644
index 0000000..f46562d
--- /dev/null
+++ b/dev-lang/rust/rust-1.87.0-r992.ebuild
@@ -0,0 +1,821 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LLVM_COMPAT=( 20 )
+PYTHON_COMPAT=( python3_{11..14} )
+
+RUST_PATCH_VER="1.87.0-r1"
+
+RUST_MAX_VER=${PV%%_*}
+if [[ ${PV} == *9999* ]]; then
+ RUST_MIN_VER="1.85.0" # Update this as new `beta` releases come out.
+elif [[ ${PV} == *beta* ]]; then
+ # Enforce that `beta` is built from `stable`.
+ # While uncommon it is possible for feature changes within `beta` to result
+ # in an older snapshot being unable to build a newer one without modifying the sources.
+ # 'stable' releases should always be able to build a beta snapshot so just use those.
+ RUST_MAX_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).1"
+ RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
+else
+ RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
+fi
+
+inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing optfeature \
+ multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig
+
+if [[ ${PV} = *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/rust-lang/rust.git"
+ EGIT_SUBMODULES=(
+ "*"
+ "-src/gcc"
+ )
+elif [[ ${PV} == *beta* ]]; then
+ # Identify the snapshot date of the beta release:
+ # curl -Ls static.rust-lang.org/dist/channel-rust-beta.toml | grep beta-src.tar.xz
+ betaver=${PV//*beta}
+ BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
+ MY_P="rustc-beta"
+ SRC_URI="https://static.rust-lang.org/dist/${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz
+ https://gitweb.gentoo.org/proj/rust-patches.git/snapshot/rust-patches-${RUST_PATCH_VER}.tar.bz2
+ verify-sig? ( https://static.rust-lang.org/dist/${BETA_SNAPSHOT}/rustc-beta-src.tar.xz.asc
+ -> rustc-${PV}-src.tar.xz.asc )
+ "
+ S="${WORKDIR}/${MY_P}-src"
+else
+ MY_P="rustc-${PV}"
+ SRC_URI="https://static.rust-lang.org/dist/${MY_P}-src.tar.xz
+ https://gitweb.gentoo.org/proj/rust-patches.git/snapshot/rust-patches-${RUST_PATCH_VER}.tar.bz2
+ verify-sig? ( https://static.rust-lang.org/dist/${MY_P}-src.tar.xz.asc )
+ "
+ S="${WORKDIR}/${MY_P}-src"
+ KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+fi
+
+DESCRIPTION="Systems programming language originally developed by Mozilla"
+HOMEPAGE="https://www.rust-lang.org/"
+
+# keep in sync with llvm ebuild of the same version as bundled one.
+ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
+ LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE
+ WebAssembly X86 XCore Xtensa )
+ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
+LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
+
+# https://github.com/rust-lang/llvm-project/blob/rustc-1.84.0/llvm/CMakeLists.txt
+_ALL_RUST_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa )
+declare -A ALL_RUST_EXPERIMENTAL_TARGETS
+for _x in "${_ALL_RUST_EXPERIMENTAL_TARGETS[@]}"; do
+ ALL_RUST_EXPERIMENTAL_TARGETS["llvm_targets_${_x}"]=0
+done
+
+LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
+SLOT="${PV%%_*}" # Beta releases get to share the same SLOT as the eventual stable
+
+IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto rustfmt rust-analyzer rust-src +system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
+IUSE+=" nightly"
+
+if [[ ${PV} = *9999* ]]; then
+ # These USE flags require nightly rust
+ IUSE+=" miri"
+fi
+
+LLVM_DEPEND=()
+# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
+for _x in "${ALL_LLVM_TARGETS[@]}"; do
+ LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" )
+ if [[ -v ALL_RUST_EXPERIMENTAL_TARGETS["${_x}"] ]] ; then
+ ALL_RUST_EXPERIMENTAL_TARGETS["${_x}"]=1
+ fi
+done
+LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" )
+LLVM_DEPEND+=( " $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" )
+
+# dev-libs/oniguruma is used for documentation
+BDEPEND="${PYTHON_DEPS}
+ app-eselect/eselect-rust
+ dev-libs/oniguruma
+ || (
+ >=sys-devel/gcc-4.7[cxx]
+ >=llvm-core/clang-3.5
+ )
+ lto? ( system-llvm? (
+ || (
+ $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}')
+ sys-devel/mold
+ )
+ ) )
+ !system-llvm? (
+ >=dev-build/cmake-3.13.4
+ app-alternatives/ninja
+ )
+ test? ( dev-debug/gdb )
+ verify-sig? ( sec-keys/openpgp-keys-rust )
+"
+
+DEPEND="
+ >=app-arch/xz-utils-5.2
+ net-misc/curl:=[http2,ssl]
+ sys-libs/zlib:=
+ dev-libs/openssl:0=
+ system-llvm? (
+ ${LLVM_DEPEND[*]}
+ llvm-libunwind? ( llvm-runtimes/libunwind:= )
+ )
+ !system-llvm? (
+ !llvm-libunwind? (
+ elibc_musl? ( sys-libs/libunwind:= )
+ )
+ )
+"
+
+RDEPEND="${DEPEND}
+ app-eselect/eselect-rust
+ dev-lang/rust-common
+ sys-apps/lsb-release
+ !dev-lang/rust:stable
+ !dev-lang/rust-bin:stable
+"
+
+REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
+ rust-analyzer? ( rust-src )
+ test? ( ${ALL_LLVM_TARGETS[*]} )
+ wasm? ( llvm_targets_WebAssembly )
+ x86? ( cpu_flags_x86_sse2 )
+"
+
+# we don't use cmake.eclass, but can get a warning
+CMAKE_WARN_UNUSED_CLI=no
+
+QA_FLAGS_IGNORED="
+ usr/lib/${PN}/${SLOT}/bin/.*
+ usr/lib/${PN}/${SLOT}/libexec/.*
+ usr/lib/${PN}/${SLOT}/lib/lib.*.so
+ usr/lib/${PN}/${SLOT}/lib/rustlib/.*/bin/.*
+ usr/lib/${PN}/${SLOT}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_SONAME="
+ usr/lib/${PN}/${SLOT}/lib/lib.*.so.*
+ usr/lib/${PN}/${SLOT}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_PRESTRIPPED="
+ usr/lib/${PN}/${SLOT}/lib/rustlib/.*/bin/rust-llvm-dwp
+ usr/lib/${PN}/${SLOT}/lib/rustlib/.*/lib/self-contained/crtn.o
+"
+
+# An rmeta file is custom binary format that contains the metadata for the crate.
+# rmeta files do not support linking, since they do not contain compiled object files.
+# so we can safely silence the warning for this QA check.
+QA_EXECSTACK="usr/lib/${PN}/${SLOT}/lib/rustlib/*/lib*.rlib:lib.rmeta"
+
+# causes double bootstrap
+RESTRICT="test"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
+
+clear_vendor_checksums() {
+ sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die
+}
+
+toml_usex() {
+ usex "${1}" true false
+}
+
+pre_build_checks() {
+ local M=9216
+ # multiply requirements by 1.3 if we are doing x86-multilib
+ if use amd64; then
+ M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
+ fi
+ M=$(( $(usex clippy 128 0) + ${M} ))
+ if [[ ${PV} == *9999* ]]; then
+ M=$(( $(usex miri 128 0) + ${M} ))
+ fi
+ M=$(( $(usex rustfmt 256 0) + ${M} ))
+ # add 2G if we compile llvm and 256M per llvm_target
+ if ! use system-llvm; then
+ M=$(( 2048 + ${M} ))
+ local ltarget
+ for ltarget in ${ALL_LLVM_TARGETS[@]}; do
+ M=$(( $(usex ${ltarget} 256 0) + ${M} ))
+ done
+ fi
+ M=$(( $(usex wasm 256 0) + ${M} ))
+ M=$(( $(usex debug 2 1) * ${M} ))
+ eshopts_push -s extglob
+ if is-flagq '-g?(gdb)?([1-9])'; then
+ M=$(( 15 * ${M} / 10 ))
+ fi
+ eshopts_pop
+ M=$(( $(usex doc 256 0) + ${M} ))
+ CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
+}
+
+llvm_check_deps() {
+ has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
+}
+
+# Is LLVM being linked against libc++?
+is_libcxx_linked() {
+ local code='#include <ciso646>
+#if defined(_LIBCPP_VERSION)
+ HAVE_LIBCXX
+#endif
+'
+ local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
+ [[ ${out} == *HAVE_LIBCXX* ]]
+}
+
+pkg_pretend() {
+ pre_build_checks
+}
+
+pkg_setup() {
+ pre_build_checks
+ python-any-r1_pkg_setup
+
+ export LIBGIT2_NO_PKG_CONFIG=1 #749381
+ if tc-is-cross-compiler; then
+ use system-llvm && die "USE=system-llvm not allowed when cross-compiling"
+ local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")"
+ use "llvm_targets_${cross_llvm_target}" || \
+ die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling"
+ fi
+
+ rust_pkg_setup
+
+ if use system-llvm; then
+ llvm-r1_pkg_setup
+
+ local llvm_config="$(get_llvm_prefix)/bin/llvm-config"
+ export LLVM_LINK_SHARED=1
+ export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
+ fi
+}
+
+src_unpack() {
+ if [[ ${PV} = *9999* ]]; then
+ git-r3_src_unpack
+ mkdir "${S}/.cargo" || die # The vendor script has a check for .cargo/config{,.toml}
+ touch "${S}/.cargo/config.toml" || die
+ local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")"
+ local rust_build=""
+ local rust_host=""
+ # Configure vendor to use the portage-provided toolchain. This prevents it from
+ # attempting to fetch a `beta` toolchain from the internet.
+ cat <<- _EOF_ > "${T}/vendor-config.toml"
+ [build]
+ build = "$(rust_abi "${CBUILD}")"
+ host = ["$(rust_abi "${CHOST}")"]
+ target = ["$(rust_abi "${CHOST}")"]
+ cargo = "${rust_stage0_root}/bin/cargo"
+ rustc = "${rust_stage0_root}/bin/rustc"
+ rustfmt = "${rust_stage0_root}/bin/rustfmt"
+ _EOF_
+ # We're using git sources so we need to run the Vendor script
+ # to ensure that all dependencies are present and up-to-date
+ mkdir "${S}/vendor" || die
+ # This also compiles the 'build helper', there's no way to avoid this.
+ ${EPYTHON} "${S}"/x.py vendor -v --config="${T}"/vendor-config.toml -j$(makeopts_jobs) ||
+ die "Failed to vendor dependencies"
+ # TODO: This has to be generated somehow, this is from a 1.84.x tarball I had lying around.
+ cat <<- _EOF_ > "${S}/.cargo/config.toml"
+ [source.crates-io]
+ replace-with = "vendored-sources"
+
+ [source."git+https://github.com/rust-lang/team"]
+ git = "https://github.com/rust-lang/team"
+ replace-with = "vendored-sources"
+
+ [source.vendored-sources]
+ directory = "vendor"
+ _EOF_
+ elif use verify-sig ; then
+ # Patch tarballs are not signed (but we trust Gentoo infra)
+ verify-sig_verify_detached "${DISTDIR}"/rustc-${PV}-src.tar.xz{,.asc}
+ default
+ else
+ default
+ fi
+}
+
+src_prepare() {
+ if [[ ${PV} = *9999* ]]; then
+ # We need to update / generate lockfiles for the workspace
+ ${CARGO} generate-lockfile --offline || die "Failed to generate lockfiles"
+ fi
+
+ PATCHES=(
+ "${WORKDIR}/rust-patches-${RUST_PATCH_VER}/"
+ )
+
+ if use lto && tc-is-clang && ! tc-ld-is-lld && ! tc-ld-is-mold; then
+ export RUSTFLAGS+=" -C link-arg=-fuse-ld=lld"
+ fi
+
+ default
+}
+
+src_configure() {
+ if tc-is-cross-compiler; then
+ export PKG_CONFIG_ALLOW_CROSS=1
+ export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig"
+ export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include"
+ export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)"
+ fi
+
+ # Avoid bundled copies of libraries
+ export RUSTONIG_SYSTEM_LIBONIG=1
+ # Need to check if these can be optional
+ #export LIBSQLITE3_SYS_USE_PKG_CONFIG=1
+ #export LIBSSH2_SYS_USE_PKG_CONFIG=1
+
+ filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
+
+ local rust_target="" rust_targets="" arch_cflags
+
+ # Collect rust target names to compile standard libs for all ABIs.
+ for v in $(multilib_get_enabled_abi_pairs); do
+ rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
+ done
+ if use wasm; then
+ rust_targets+=",\"wasm32-unknown-unknown\""
+ if use system-llvm; then
+ # un-hardcode rust-lld linker for this target
+ # https://bugs.gentoo.org/715348
+ sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die
+ fi
+ fi
+ rust_targets="${rust_targets#,}"
+
+ # cargo and rustdoc are mandatory and should always be included
+ local tools='"cargo","rustdoc"'
+ use clippy && tools+=',"clippy"'
+ use rustfmt && tools+=',"rustfmt"'
+ use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"'
+ use rust-src && tools+=',"src"'
+
+ if [[ ${PV} == *9999* ]]; then
+ use miri && tools+=',"miri"'
+ fi
+
+ local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")"
+ # in case of prefix it will be already prefixed, as --print sysroot returns full path
+ [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
+
+ rust_target="$(rust_abi)"
+ rust_build="$(rust_abi "${CBUILD}")"
+ rust_host="$(rust_abi "${CHOST}")"
+
+ RUST_EXPERIMENTAL_TARGETS=()
+ for _x in "${!ALL_RUST_EXPERIMENTAL_TARGETS[@]}"; do
+ if [[ ${ALL_RUST_EXPERIMENTAL_TARGETS[${_x}]} == 1 ]] && use ${_x} ; then
+ RUST_EXPERIMENTAL_TARGETS+=( ${_x#llvm_targets_} )
+ fi
+ done
+ RUST_EXPERIMENTAL_TARGETS=${RUST_EXPERIMENTAL_TARGETS[@]}
+
+ local cm_btype="$(usex debug DEBUG RELEASE)"
+ local build_channel
+ local build_miri="false"
+ case "${PV}" in
+ *9999*)
+ build_channel="nightly"
+ ;;
+ *beta*)
+ build_channel="beta"
+ ;;
+ *)
+ build_channel="stable"
+ ;;
+ esac
+ use nightly && build_channel="nightly"
+ cat <<- _EOF_ > "${S}"/config.toml
+ # https://github.com/rust-lang/rust/issues/135358 (bug #947897)
+ profile = "dist"
+ [llvm]
+ download-ci-llvm = false
+ optimize = $(toml_usex !debug)
+ release-debuginfo = $(toml_usex debug)
+ assertions = $(toml_usex debug)
+ ninja = true
+ targets = "${LLVM_TARGETS// /;}"
+ experimental-targets = "${RUST_EXPERIMENTAL_TARGETS// /;}"
+ link-shared = $(toml_usex system-llvm)
+ $(if is_libcxx_linked; then
+ # https://bugs.gentoo.org/732632
+ echo "use-libcxx = true"
+ echo "static-libstdcpp = false"
+ fi)
+ $(case "${rust_target}" in
+ i586-*-linux-*)
+ # https://github.com/rust-lang/rust/issues/93059
+ echo 'cflags = "-fcf-protection=none"'
+ echo 'cxxflags = "-fcf-protection=none"'
+ echo 'ldflags = "-fcf-protection=none"'
+ ;;
+ *)
+ ;;
+ esac)
+ enable-warnings = false
+ [llvm.build-config]
+ CMAKE_VERBOSE_MAKEFILE = "ON"
+ $(if ! tc-is-cross-compiler; then
+ # When cross-compiling, LLVM is compiled twice, once for host and
+ # once for target. Unfortunately, this build configuration applies
+ # to both, which means any flags applicable to one target but not
+ # the other will break. Conditionally disable respecting user
+ # flags when cross-compiling.
+ echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\""
+ echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\""
+ echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+ echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+ echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+ echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\""
+ fi)
+ [build]
+ build-stage = 2
+ test-stage = 2
+ build = "${rust_build}"
+ host = ["${rust_host}"]
+ target = [${rust_targets}]
+ cargo = "${rust_stage0_root}/bin/cargo"
+ rustc = "${rust_stage0_root}/bin/rustc"
+ rustfmt = "${rust_stage0_root}/bin/rustfmt"
+ docs = $(toml_usex doc)
+ compiler-docs = false
+ submodules = false
+ python = "${EPYTHON}"
+ locked-deps = true
+ vendor = true
+ extended = true
+ tools = [${tools}]
+ verbose = 2
+ sanitizers = false
+ profiler = true
+ cargo-native-static = false
+ [install]
+ prefix = "${EPREFIX}/usr/lib/${PN}/${SLOT}"
+ sysconfdir = "etc"
+ docdir = "share/doc/rust"
+ bindir = "bin"
+ libdir = "lib"
+ mandir = "share/man"
+ [rust]
+ # https://github.com/rust-lang/rust/issues/54872
+ codegen-units-std = 1
+ optimize = true
+ debug = $(toml_usex debug)
+ debug-assertions = $(toml_usex debug)
+ debug-assertions-std = $(toml_usex debug)
+ debuginfo-level = $(usex debug 2 0)
+ debuginfo-level-rustc = $(usex debug 2 0)
+ debuginfo-level-std = $(usex debug 2 0)
+ debuginfo-level-tools = $(usex debug 2 0)
+ debuginfo-level-tests = 0
+ backtrace = true
+ incremental = false
+ $(if ! tc-is-cross-compiler; then
+ echo "default-linker = \"${CHOST}-cc\""
+ fi)
+ channel = "${build_channel}"
+ description = "gentoo"
+ rpath = true
+ verbose-tests = true
+ optimize-tests = $(toml_usex !debug)
+ codegen-tests = true
+ dist-src = false
+ remap-debuginfo = true
+ lld = $(usex system-llvm false $(toml_usex wasm))
+ $(if use lto && tc-is-clang && ! tc-ld-is-mold; then
+ echo "use-lld = true"
+ fi)
+ # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
+ # https://github.com/rust-lang/rust/issues/74976
+ # https://github.com/rust-lang/rust/issues/76526
+ deny-warnings = $(usex wasm $(usex doc false true) true)
+ backtrace-on-ice = true
+ jemalloc = false
+ # See https://github.com/rust-lang/rust/issues/121124
+ lto = "$(usex lto thin off)"
+ [dist]
+ src-tarball = false
+ compression-formats = ["xz"]
+ compression-profile = "balanced"
+ _EOF_
+
+ for v in $(multilib_get_enabled_abi_pairs); do
+ rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
+ arch_cflags="$(get_abi_CFLAGS ${v##*.})"
+
+ export CFLAGS_${rust_target//-/_}="${arch_cflags}"
+
+ cat <<- _EOF_ >> "${S}"/config.toml
+ [target.${rust_target}]
+ ar = "$(tc-getAR)"
+ cc = "$(tc-getCC)"
+ cxx = "$(tc-getCXX)"
+ linker = "$(tc-getCC)"
+ ranlib = "$(tc-getRANLIB)"
+ llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
+ _EOF_
+ if use system-llvm; then
+ cat <<- _EOF_ >> "${S}"/config.toml
+ llvm-config = "$(get_llvm_prefix)/bin/llvm-config"
+ _EOF_
+ fi
+ # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
+ # but we patch it and set to false here as well
+ if use elibc_musl; then
+ cat <<- _EOF_ >> "${S}"/config.toml
+ crt-static = false
+ musl-root = "$($(tc-getCC) -print-sysroot)/usr"
+ _EOF_
+ fi
+ done
+ if use wasm; then
+ wasm_target="wasm32-unknown-unknown"
+ export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")"
+ cat <<- _EOF_ >> "${S}"/config.toml
+ [target.wasm32-unknown-unknown]
+ linker = "$(usex system-llvm lld rust-lld)"
+ # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
+ profiler = false
+ _EOF_
+ fi
+
+ if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
+ # experimental cross support
+ # discussion: https://bugs.gentoo.org/679878
+ # TODO: c*flags, clang, system-llvm, cargo.eclass target support
+ # it would be much better if we could split out stdlib
+ # complilation to separate ebuild and abuse CATEGORY to
+ # just install to /usr/lib/rustlib/<target>
+
+ # extra targets defined as a bash array
+ # spec format: <LLVM target>:<rust-target>:<CTARGET>
+ # best place would be /etc/portage/env/dev-lang/rust
+ # Example:
+ # RUST_CROSS_TARGETS=(
+ # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
+ # )
+ # no extra hand holding is done, no target transformations, all
+ # values are passed as-is with just basic checks, so it's up to user to supply correct values
+ # valid rust targets can be obtained with
+ # rustc --print target-list
+ # matching cross toolchain has to be installed
+ # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
+ # only gcc toolchains installed with crossdev are checked for now.
+
+ # BUG: we can't pass host flags to cross compiler, so just filter for now
+ # BUG: this should be more fine-grained.
+ filter-flags '-mcpu=*' '-march=*' '-mtune=*'
+
+ local cross_target_spec
+ for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
+ # extracts first element form <LLVM target>:<rust-target>:<CTARGET>
+ local cross_llvm_target="${cross_target_spec%%:*}"
+ # extracts toolchain triples, <rust-target>:<CTARGET>
+ local cross_triples="${cross_target_spec#*:}"
+ # extracts first element after before : separator
+ local cross_rust_target="${cross_triples%%:*}"
+ # extracts last element after : separator
+ local cross_toolchain="${cross_triples##*:}"
+ use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
+ command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
+
+ cat <<- _EOF_ >> "${S}"/config.toml
+ [target.${cross_rust_target}]
+ ar = "${cross_toolchain}-ar"
+ cc = "${cross_toolchain}-gcc"
+ cxx = "${cross_toolchain}-g++"
+ linker = "${cross_toolchain}-gcc"
+ ranlib = "${cross_toolchain}-ranlib"
+ _EOF_
+ if use system-llvm; then
+ cat <<- _EOF_ >> "${S}"/config.toml
+ llvm-config = "$(get_llvm_prefix)/bin/llvm-config"
+ _EOF_
+ fi
+ if [[ "${cross_toolchain}" == *-musl* ]]; then
+ cat <<- _EOF_ >> "${S}"/config.toml
+ musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
+ _EOF_
+ fi
+
+ # append cross target to "normal" target list
+ # example 'target = ["powerpc64le-unknown-linux-gnu"]'
+ # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
+
+ rust_targets="${rust_targets},\"${cross_rust_target}\""
+ sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
+
+ ewarn
+ ewarn "Enabled ${cross_rust_target} rust target"
+ ewarn "Using ${cross_toolchain} cross toolchain"
+ ewarn
+ if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
+ ewarn "'sys-devel/binutils[multitarget]' is not installed"
+ ewarn "'strip' will be unable to strip cross libraries"
+ ewarn "cross targets will be installed with full debug information"
+ ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
+ ewarn
+ ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
+ ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
+ ewarn
+ fi
+ done
+ fi # I_KNOW_WHAT_I_AM_DOING_CROSS
+
+ einfo "Rust configured with the following flags:"
+ echo
+ echo RUSTFLAGS="\"${RUSTFLAGS}\""
+ echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
+ echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
+ echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
+ env | grep "CARGO_TARGET_.*_RUSTFLAGS="
+ env | grep "CFLAGS_.*"
+ echo
+ einfo "config.toml contents:"
+ cat "${S}"/config.toml || die
+ echo
+}
+
+src_compile() {
+ RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -v --config="${S}"/config.toml -j$(makeopts_jobs) || die
+}
+
+src_test() {
+ # https://rustc-dev-guide.rust-lang.org/tests/intro.html
+
+ # those are basic and codegen tests.
+ local tests=(
+ codegen
+ codegen-units
+ compile-fail
+ incremental
+ mir-opt
+ pretty
+ run-make
+ )
+
+ # fails if llvm is not built with ALL targets.
+ # and known to fail with system llvm sometimes.
+ use system-llvm || tests+=( assembly )
+
+ # fragile/expensive/less important tests
+ # or tests that require extra builds
+ # TODO: instead of skipping, just make some nonfatal.
+ if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then
+ tests+=(
+ rustdoc
+ rustdoc-js
+ rustdoc-js-std
+ rustdoc-ui
+ run-make-fulldeps
+ ui
+ ui-fulldeps
+ )
+ fi
+
+ local i failed=()
+ einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}"
+ for i in "${tests[@]}"; do
+ local t="src/test/${i}"
+ einfo "rust_src_test: running ${t}"
+ if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
+ -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
+ then
+ failed+=( "${t}" )
+ eerror "rust_src_test: ${t} failed"
+ fi
+ done
+
+ if [[ ${#failed[@]} -ne 0 ]]; then
+ eerror "rust_src_test: failure summary: ${failed[@]}"
+ die "aborting due to test failures"
+ fi
+}
+
+src_install() {
+ DESTDIR="${D}" "${EPYTHON}" ./x.py install -v --config="${S}"/config.toml -j$(makeopts_jobs) || die
+
+ docompress /usr/lib/${PN}/${SLOT}/share/man/
+
+ # bug #689562, #689160
+ rm -v "${ED}/usr/lib/${PN}/${SLOT}/etc/bash_completion.d/cargo" || die
+ rmdir -v "${ED}/usr/lib/${PN}/${SLOT}"/etc{/bash_completion.d,} || die
+
+ local symlinks=(
+ cargo
+ rustc
+ rustdoc
+ rust-gdb
+ rust-gdbgui
+ rust-lldb
+ )
+
+ use clippy && symlinks+=( clippy-driver cargo-clippy )
+ if [[ ${PV} = *9999* ]]; then
+ use miri && symlinks+=( miri cargo-miri )
+ fi
+ use rustfmt && symlinks+=( rustfmt cargo-fmt )
+ use rust-analyzer && symlinks+=( rust-analyzer )
+
+ einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
+ local i
+ for i in "${symlinks[@]}"; do
+ # we need realpath on /usr/bin/* symlink return version-appended binary path.
+ # so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
+ # need to fix eselect-rust to remove this hack.
+ local ver_i="${i}-${PV%%_*}"
+ if [[ -f "${ED}/usr/lib/${PN}/${SLOT}/bin/${i}" ]]; then
+ einfo "Installing ${i} symlink"
+ ln -v "${ED}/usr/lib/${PN}/${SLOT}/bin/${i}" "${ED}/usr/lib/${PN}/${SLOT}/bin/${ver_i}" || die
+ else
+ ewarn "${i} symlink requested, but source file not found"
+ ewarn "please report this"
+ fi
+ dosym "../lib/${PN}/${SLOT}/bin/${ver_i}" "/usr/bin/${ver_i}"
+ done
+
+ # symlinks to switch components to active rust in eselect
+ dosym "${SLOT}/lib" "/usr/lib/${PN}/lib-${SLOT}"
+ use rust-analyzer && dosym "${SLOT}/libexec" "/usr/lib/${PN}/libexec-${SLOT}"
+ dosym "${SLOT}/share/man" "/usr/lib/${PN}/man-${SLOT}"
+ dosym "rust/${SLOT}/lib/rustlib" "/usr/lib/rustlib-${SLOT}"
+ dosym "../../lib/${PN}/${SLOT}/share/doc/rust" "/usr/share/doc/${P}"
+
+ newenvd - "50${P}" <<-_EOF_
+ MANPATH="${EPREFIX}/usr/lib/rust/man-${SLOT}"
+ _EOF_
+
+ rm -rf "${ED}/usr/lib/${PN}/${SLOT}"/*.old || die
+ rm -rf "${ED}/usr/lib/${PN}/${SLOT}/bin"/*.old || die
+ rm -rf "${ED}/usr/lib/${PN}/${SLOT}/doc"/*.old || die
+
+ # note: eselect-rust adds EROOT to all paths below
+ cat <<-_EOF_ > "${T}/provider-${PN}-${SLOT}"
+ /usr/bin/cargo
+ /usr/bin/rustdoc
+ /usr/bin/rust-gdb
+ /usr/bin/rust-gdbgui
+ /usr/bin/rust-lldb
+ /usr/lib/rustlib
+ /usr/lib/rust/lib
+ /usr/lib/rust/man
+ /usr/share/doc/rust
+ _EOF_
+
+ if use clippy; then
+ echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
+ echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
+ fi
+ if [[ ${SLOT} == *9999* ]] && use miri; then
+ echo /usr/bin/miri >> "${T}/provider-${P}"
+ echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
+ fi
+ if use rustfmt; then
+ echo /usr/bin/rustfmt >> "${T}/provider-${P}"
+ echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
+ fi
+ if use rust-analyzer; then
+ echo /usr/lib/rust/libexec >> "${T}/provider-${P}"
+ echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
+ fi
+
+ insinto /etc/env.d/rust
+ doins "${T}/provider-${PN}-${SLOT}"
+
+ if use dist; then
+ "${EPYTHON}" ./x.py dist -v --config="${S}"/config.toml -j$(makeopts_jobs) || die
+ insinto "/usr/lib/${PN}/${SLOT}/dist"
+ doins -r "${S}/build/dist/."
+ fi
+}
+
+pkg_postinst() {
+
+ eselect rust update
+
+ if has_version dev-debug/gdb || has_version llvm-core/lldb; then
+ elog "Rust installs helper scripts for calling GDB and LLDB,"
+ elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}."
+ fi
+
+ if has_version app-editors/emacs; then
+ optfeature "emacs support for rust" app-emacs/rust-mode
+ fi
+
+ if has_version app-editors/gvim || has_version app-editors/vim; then
+ optfeature "vim support for rust" app-vim/rust-vim
+ fi
+}
+
+pkg_postrm() {
+ eselect rust cleanup
+}
diff --git a/media-sound/pineapple-tracker-player/Manifest b/media-sound/pineapple-tracker-player/Manifest
new file mode 100644
index 0000000..470039e
--- /dev/null
+++ b/media-sound/pineapple-tracker-player/Manifest
@@ -0,0 +1,2 @@
+DIST pineapple-tracker-player-0.5.0.tar.gz 94917 BLAKE2B 8161e78527d6cde0ecb99714ea5e5add8b662eb95606a1c6defbed607cc4edc76c16c132da38164b94bccd8b046a08f1cd119b91ae2d3247380c9843ad5b330d SHA512 6ad5ccf4382b8a03f7c127819bb21325e9df14adeb9cb87906a7a331672db7f5a2f11e9813644d793f913b4ad3776f5134fd9bc8d0625c8377742e189c3020c7
+EBUILD pineapple-tracker-player-0.5.0.ebuild 797 BLAKE2B af5fba55fce8092ec72a2a9cfc249694506d2f0a9c3bc81c5079324dad50ef50b585b51af92cb515d4ec60d128ef5dd1ee47fd2e7bd410ffb0fd6f7fdcde77ec SHA512 41f81efbea06c138e57d1bac818d0284d8b0dbd8a7dcfe4759d81133725bc595ea05cabfadfb490bc4ffe6d18223b82bf5967d275e9ba6e58eeec8528e26b2c4
diff --git a/media-sound/pineapple-tracker-player/pineapple-tracker-player-0.5.0.ebuild b/media-sound/pineapple-tracker-player/pineapple-tracker-player-0.5.0.ebuild
new file mode 100644
index 0000000..98f243c
--- /dev/null
+++ b/media-sound/pineapple-tracker-player/pineapple-tracker-player-0.5.0.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake xdg
+
+DESCRIPTION="A libopenmpt based module music player"
+HOMEPAGE="https://github.com/BLumia/pineapple-tracker-player"
+SRC_URI="
+ https://github.com/BLumia/pineapple-tracker-player/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz
+"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE=""
+
+DEPEND="
+ dev-qt/qtbase[dbus,gui,widgets]
+ dev-qt/qtdeclarative
+ media-libs/libopenmpt
+ media-libs/portaudio
+ virtual/pkgconfig
+"
+
+BDEPEND="
+ dev-qt/linguist-tools
+ kde-frameworks/extra-cmake-modules
+"
+
+src_install() {
+ cmake_src_install
+ rm -f ${D}/usr/bin/pineapple-tracker-player-quick
+}
+
+pkg_postinst() {
+ xdg_desktop_database_update
+}
+
+pkg_postrm() {
+ xdg_desktop_database_update
+}
diff --git a/www-client/chromium/Manifest b/www-client/chromium/Manifest
index 1a1caeb..f11e64f 100644
--- a/www-client/chromium/Manifest
+++ b/www-client/chromium/Manifest
@@ -1,40 +1,24 @@
-AUX chromium-105-protobuf-RepeatedPtrField-export.patch 682 BLAKE2B e67ff20391876c24fd5a268fda448190dd7dcf54e13deab21313775efd030c6072afa558d4cd446c3cdf476ee1e2bee50308ca5ef1d7dfd31759e445ae6f005a SHA512 31f1e0263916f460ca72d719c6d79bdad1840d36be13214cf0a3c16283b42f0e5791cb0f0fa07b97a6979025791aa8cb0dd71671de953d6b13106bee6f458af6
-AUX chromium-109-minizip.patch 6865 BLAKE2B e7b73fa960b695b352d81f1e3cda8ad11d8a9d55633747ac5f2e848c94d66b7b504dd9967c51feee62c1c4bd2316c4e4aa6028ebdba446b57bfd81abd3989214 SHA512 bf8f7df347d94c7782ab2f7764010ad0f134e184cfaa21488ee11b2392697c3a83a0fbd801454dc773232c5ddb263e7564c149b66f110580ebd66305ff02dbe7
AUX chromium-111-InkDropHost-crash.patch 1114 BLAKE2B 2481e068e77f28c2ec0cfbb55641462e7a3f81e8ae719fe797a44a9385898afbbedb129a5138f54fc46b4b0f533a1c6cc43ac76461f6aebeb670ff8e195c38d1 SHA512 13ca2958c15c2e9a571cff588cabb6756e14180136f670112f6e406a3cb7f8661e78fa053e821f4a3f48944f024d580ddcb14e4be84a129b873e637650cb360f
AUX chromium-118-material-color-utils.patch 2088 BLAKE2B 9776e46268b427d5ac651a9e509c392e79fe420b569146b4839d22f1b9c524a5626a023dab12b3ff8ec8db2ceb7047a2da1933af168294ce6aaeb437eeafa8dc SHA512 a7934f42f9b2eb3eefe35c2363d28a4d653730f9068f40fb9ee54ee25051be23fbfcda3407743da20b7a2bf36aa6c97ade371ecc6df59c2e739616f4622129c7
AUX chromium-119-minizip.patch 6867 BLAKE2B 50dcf02d6095fc75c2033afba39bae6386e4bf9d34e3a284e6eb1ba949cbe983c4ef546abc4e475f2433d608676d94855103b49bd78916085170e0cb5475ec6e SHA512 6a701b8b34e9b56d1ff03f6cc1c8542568c543299f9b60648cf1aa7d56e5958e293057d3f251634479841724e179733bd3ed2320ee5fbb56e1cb66b8fc7f70fb
-AUX chromium-122-VirtualCursor-std-layout.patch 8472 BLAKE2B 872bd935eb702967dbbaf6045722f6f34b768ff607c6a53c42b92fd38dad6a8dc9d286f0e1f05ff30f03d402a04ee196f02d5fc977ea97b8ea1245c0aae1c428 SHA512 bdcaa80e36e0f9938b7e2f782baf1de8714cd1f5a032cdabbd885678ff2c77a98c69d4436cb01726e160bdb3ef4b10155f3a3b92b8b54a0726a25cc8c65b1393
-AUX chromium-123-EnumTable-crash.patch 2978 BLAKE2B 44b18e702b82f4839a8a4cc639d1f91b6a4ed96fe266a4ee690c766361c36e7bce49e32455388eacd76ad408b72e6d458d9653a841b8483afa739df163621730 SHA512 5b56cb55aa1aef874963ce656ed610eddd0e09d6ab320f55ecac609c5ee26406c67295a96adcbcc6c2f4e1d86df46da0610c555a61c65215a486f448541fe136
-AUX chromium-123-compiler.patch 11238 BLAKE2B 2cd6a2dc550f952685db63062d7d90f688d29fb391b52646880c50d1884913a29e88f7e706a16b8a2954373f020d8488995dd9ced5c3a4aff044774a6b5a2320 SHA512 709ad3c413308a7e50ae95b433f52868c93a96682dacdeb82310e166af0b56afa7b98a1c0dfd147a34be0d9ba78c174ff547d95b429b4734aa3a11b736b3cf9f
AUX chromium-124-metrics-histograms-nodepotbin.patch 533 BLAKE2B 2dee74b4c10b4d8280ba0b0dcdea0c8f7896422c190bbf31b7ee147a6ac81b34033a156c9fd66cf8e875aaa02a8ebeb4e04d7164f7e6701836539300297f25f3 SHA512 a1ecd84d7433542779da17e79fe73a63f4bff94c49b13c51947ade9ed27f82e8fca94b08d628e7cd8853c2e9ffc11078b02fab81fba98635390805b0230035f4
-AUX chromium-125-compiler.patch 11174 BLAKE2B 72d9ba637c1d726edcb4a9ff695b34f6a70e39c775ac34bc6b3bd9151ac390c9840429bef82bac1ff32502dd5dee49754bbc868eed1c28562b07ca33cf136189 SHA512 7e17a17947025ae992882828ccea0dd85d0a749c7dd27b1423ea436f0da379fe846b4808df6186f74df161f69c6b8802881ab3569511580e121aea359c4f90e3
-AUX chromium-125-revert-8a3bec6.patch 17037 BLAKE2B d2fa1845fb0a634428ff676c4cbec59d37bd1b668e1d80d17bc0a040a049160186132ac91d2202719e4936f241c3362e664d877401742b0755c49f388c2afe90 SHA512 04c2e0b6ebdc88d079f0caa6a101f306073c65c294ab8ec2bb6ab4eba216eb9fbaf5698e5db4f6c489472c5e1b9621f05bd3448f6ae7c68a23e82371342e62ab
-AUX chromium-126-EnumTable-crash.patch 2981 BLAKE2B 76b2ca1dbe45c10a7c37479d1b854b6f71dc50e3a1fa6a7d477af2a7311c2f5b6330e9a58e12d471f610490d9c9f40e4d756a4c067f896b19e72f86f35163a80 SHA512 87b392dcaf372b9ee266831c4af2876fdeee3030649ba982d0e8006964af77bf3fb8f9f8b86e2e60f29ebf054c00269410f593413d96cd257c1da8640a1c9a77
-AUX chromium-126-compiler-r1.patch 11307 BLAKE2B 84de23b6497871370dde01ea476b22eb9039f780713143efccc0a5d6a607f3f9180ba10d0da10e95d9289a72751a40a62a3ec5aca847ba72c6bd88fc5d1a8432 SHA512 d44488f1ae747a4d2449624702c0265d618037b3a71f078a9ea13ff45528e1bf00348d2d12a38cac7bffc5cb8898b14f9a5f3a0681f59b11b70b38e47e84daf0
-AUX chromium-126-compiler.patch 11310 BLAKE2B 037b37d78669acc23c32cd6f643cba7f2e4d4cc2990d13bdea1fd9e3328876941fb557924026730fe0d75fa96a873d6cec03539aca277dc22849063b4c5be432 SHA512 26ac52b4563f200f10680a0161516fd4d2365aea2807db28028f40aa74860ddb8578367f15566845783c22ccb5fe6ff5f03012a3ee31f1771b02607c2758bc9d
AUX chromium-126-freetype-blink.patch 532 BLAKE2B 68cebd58a1e00b2603c3aec90339d5b02b2aa504ddad61833016cc65386b992fbc8e91538b13f9b6fc24d4c4ac1da6c0c31061e8fc7638a70b3716971d90a0d5 SHA512 e2bda2f8338bcd8bf7d45d7b8fb680793efce88698ff84b659b60494fce0ae31375a014e0b0815cabab9ddafc55224769f568f64f8d220392c53b07051d66be7
-AUX chromium-126-use-oauth2-client-switches-as-default-r1.patch 1089 BLAKE2B 42f9b433b05c979bc6b689392e78f2207b8a2fa0131cb9b5d12198fb289f0e16d39bd4b1fc53bf0f3b5e5b9094e21c1838920c41d975aac34749f6c4c8c9ac65 SHA512 29113c2454f02b9c93553430de256df410c6cf103dbb10162693c64b045356c762c655e39f771236b8a34afd9b0b1a1f1d3405290a663e1dc2f221d895fdafdc
-AUX chromium-126-use-oauth2-client-switches-as-default.patch 976 BLAKE2B 87ab9134e56e99ca8c52edfdf7afcc77f827532a24b96b44b75fa702d22296d60b850332982bab29499163050d89b8c37194db83f4c00b3a42b2441327e4366f SHA512 7dbe772471c2c0eddb5babca2f291cf7ac45ae0ab4931e3e3afed5586e8efdd23536161d2e74bb59bfd67685892966fd65e553acbf82f03df417939c3021e938
-AUX chromium-127-bindgen-include-temporary.patch 580 BLAKE2B 01d74e85d5932d6809b196bf26db43b5fa79dc2bd891170b37620b759316cf04c069e4ccf3c0a290a22d717032860aec2835326df60449b0f91d9205b8e01156 SHA512 48597676a9bf76157e582e5f1ebcba7223e742f346aa6a3b52dbd93f499127e289a11f83a99040b6764bd28776505610f9ab2d0612f29e8389f0e559bdfd348a
-AUX chromium-128-compiler-r1.patch 11600 BLAKE2B f4ce3e65a5cd31b80dff1de3899dd2b5513e5adb7405ea47896d0ef62f1a9d1220cca7e9c3a493444d65d6da884f7a82045cb7fce5944ccdffe7fb4d25a2591a SHA512 a60bfeeb705ae448af6be2df41e58354a9b5c84ff155d1c57ed454a4eae540c56914259fa4cd745320511dc559992617f6d2dfe13d123496e93285589d14ac96
-AUX chromium-128-compiler.patch 11361 BLAKE2B 786fdfecae585caf661bddd5ba7d27f2061bfa74a996b0f36d89604246a23d95b2a70c9b8bc19b5413af33f52a831ca3145aa932cda18763fe732cd70d4051cd SHA512 b222f685e7365d0763ee67e970043fa83dabfe3e1bddecf7dd473b7f33d8d5b89c96fadda715bd45705e9ba9fedbebd0897de4a093482812ff49a7be601b00d4
-AUX chromium-131-EnumTable-crash.patch 3028 BLAKE2B 0fb49828493eb6a9e7647b643d160a858a2247f3c8860c3bb3e0c5ac3e3ea60fde0e5352e884fa23ae80e9f23b93c39554f38d933a80f5bdb9d20f9ba1682e3e SHA512 a421a525f1e49a707229d9022acc43ce0724c89b1b81a47ccbfbc4fa232cd0e122e093830a5c6a050f88b4d8799d653810f64f52ba94f96817a9d1a3d485b4b1
-AUX chromium-131-compiler.patch 11595 BLAKE2B 8a4e264140dfc64324d8007586a1c1d961bedc9937a8be73d7834703c37f55e1005ef732ffc994fe8bda7090a1ae41769dd400864db37aafb4415bbb05ba05c7 SHA512 dd2bbdee91e70eaeae4e4485833345edf606c1a12eab15ca3860d97d773f127c0674fb1edab970236d69d44ab81c7a0b058b6c21abc92ea08cd1caceb5572442
-AUX chromium-131-text_codec_icu-system-icu.patch 1204 BLAKE2B 97bfcc1ef1e72da9fc3c9a473c32e0077a3eae9a19e7cac65b457ac8196075ea86c66d7ec13638abf617b18b53ab93fe6df4d6423acdedfb086497cadc2a3dff SHA512 f742b9f7b1c7d26e0b3795ad59d00c726e48e872233186cf880021609b27026882ab27e1cbcacfba882ed3381b08fe29912e5ea2553dbdbbe16730b4b63c1f96
AUX chromium-131-use-oauth2-client-switches-as-default.patch 1194 BLAKE2B 040f8161c659d015bfda3f8f2f9c3f904b0b1318233569550c80b4c1a6cfeca8e3d39998e8ebec87880948ec2444214fd0551f0a65111363c3c40fe3c0d717c8 SHA512 20621cc7ee69bb0e53d1806f6e78381357fb31c99d339ed9b385a669dcdc92b800f2b3c2d6833bb36e94348793afe790a6f3f3d5d2f330c57407305fa8095a5a
-AUX chromium-132-compiler.patch 12901 BLAKE2B 37be5fc8b2c546cffc0976d5c9f7f0849e4b9475c06891adf67ab6b7921b3dc92c105f21d30c38bf5106bbb4471161579533413cd46969df1f775b6dd24f4ad9 SHA512 089053f70731cc9b0eaabefb14fee0f8571c515ab37f7be1dbd6a0b368e727cf985eae7be60c205ee19e0b3925286abdcdd87ae2bd48159f8fad9b24a9da6dae
AUX chromium-134-EnumTable-crash.patch 3068 BLAKE2B 8b3bad8e20d6c3477495792279b1c58aa599e5934380d6efb26285a4348be8b98fe5869dc9ce9c83049e35f20f73ab9de7eb819002e6753aecd16ef7de734194 SHA512 5cd2da1407d150218595b3da7e76a2df7e12675e91c9bc2dce793f3801ed53705dada351865ead578ad6516ee5d19423f25021ab213bd9305eea8860f92f42b0
-AUX chromium-134-gn-exec_script_allowlist.patch 2328 BLAKE2B d5e4ebeff797fa02b4e41da1cbc8f90bdfdf3250e627e387c8b482b5f163703e835da0e06e2d543d7d81fc990fa5093c6495fa5f7858b5c692a9d0b10fe21914 SHA512 c47330b69dd6fa1d0ca91ebf2927fe8f5c75c9e6a9ebb5959ed7590665b05d297c494222c786cba5c3530dcb8ad0fa08e87f0cb2942daeb403b812e5879b684f
-AUX chromium-135-mv2-ungoogled.patch 8653 BLAKE2B 21947e2a25bb5306c63c93de772c41a06e2199a318e90888197d8d7c04bc55ad445a0a5984e84ec6238b80043851b427e4ef1e627dfd41da100b3d1948f6be0c SHA512 d77df69c86b4d91ffb7dbeb8b5640bafab03845c69c50bb0dd9c8b23b4d5d1658f1b9866eb7d0f80a757625e5882f5c65297c6dafe8ed8337de7c2fe5fced032
-AUX chromium-135-protobuf-RepeatedPtrField-export.patch 812 BLAKE2B ba7d6eca5967bfe7324b384bea5b80feb2fdf9013bc32a618ab3fa18b6c143c889e1691c7a9fff501fe8d6c9794e28a2b3541e9aac97614bd1f4a4891e78ca89 SHA512 8d9ba3b598ce70d20635372427d7134d6ebf7951e9015124d8cf928e745b1f234c199929adcdfa738583fabb87800e154ef2219f15a9489f5b64a1e477b3930e
+AUX chromium-138-gn-exec_script_allowlist.patch 1828 BLAKE2B 9717369b1e89321d06c94757bab5e281b06d8f711f418c33cf68d1d6c2027b2743bd92d1aee97747546030902359766352fa06793b45485b5a1ba30fb7898436 SHA512 dc117e296daa8a02252450078c5aa25cb8dd447a61fe06b2f430708c69f8e429be99ba808f36464e57f8be0b5855be4c83d9e576a9e2d4282fc8bce213787b2d
+AUX chromium-139-compiler-r1.patch 17928 BLAKE2B 6a4e3b57ad55b65e50c361b0dff4111c6a3fbffdf2b9b8d9799f537197ed7b2f718641b67d483f7a1284e032d99a290a31d238dcce619efa4dba432239be28c5 SHA512 5e8293f75bfa6d3445b9084a85cd19e6b41bf1f1bc47bd2d5559eb5d85d14709a0f3fafea7d9a6fec3c87af0c596161621e451a529572f912d16537d6925113e
+AUX chromium-139-compiler.patch 17165 BLAKE2B b9ffbe4bb34d21819ea0ff3f2447e9e9ea56b93745d6e85e1e924d5fd05b7675bc9ef97be7f37c87049a892a6a82a5ae8daf51aa99332fe3e88fb1265b5f288e SHA512 0ef18d5a6856a96966b44085cf983c5e657533e21940ed830c5bf338908f2d495fab10d0c633c8f1a5017293e0bb5ca1ffcaaa3e6f16a5b5c4eaf849ab9af786
+AUX chromium-139-mv2-ungoogled-r1.patch 7358 BLAKE2B 5f48c890e4fe1c22071ee9e4275203318b90143d9e4996688409f7df0232b3dc3dde7ef1a9c55ef75ac83c2aa411ed687321ac54da466f6b2c70b34fa6bcfd92 SHA512 d30c4b341774c2afa95ca466d879ccad38ee599476b56f30a5fdbfcd014c8ef463cc38a032af344e0d93cd958468305de24b9ec7ca49834be598bf92578b80a2
+AUX chromium-139-mv2-ungoogled.patch 7365 BLAKE2B bec1adf79214352df32e2e7dc2ba27b773e840f8d8ef70d79096b3bf5822f5116591dae436bcb8caaf0ea3669004a9638719ec4947a704d536df3b83af05da21 SHA512 857f2ad5b4f0b9ede6018142fbced266fb09065f35f1609e66f6da0e128d40917f242923516c048d9341debdb02ef4acee33181eefcb51e797aa0754f1c94821
+AUX chromium-139-protobuf-RepeatedPtrField-export.patch 776 BLAKE2B aa491b162f812832eb03785fa14e969f87fffbaa0d61d04c3a16132f84e407aee49fdcd1e83d8ca944923f6631abdf22c13a5a52353e33f381bf208ee3401934 SHA512 a3e1e70876176ee239f548cf92da9f5bf678d568a50b3cb1e64bce7d1c61be2d3ee6edd0e6189e6cc2a21f59f3b0393280b280fdde5e4c3c0337a2327f6a515a
AUX chromium-browser.xml 407 BLAKE2B 168d78b0855546ca559cfb51aff0bc85d5e6ae974c25eb76e4a02f6d11659489c6e40397a0b2f7bc1fda336fd2c6dd8c863fccc3340719210b41c7fef51927f4 SHA512 b767fb4fd1925029d95560fc14cb7ab12ae43b2fe923e92d75e733b9723cbe1dcdf6df041a2b62554e98b79b47ef3f6028c773e72e6fd53166a021d49657aeca
AUX chromium-cross-compile.patch 323 BLAKE2B 8d5091ce5287422c9688ede2563360a96b8bd34b9750dc1c8f0b6ca9aeff2c066fac2da169396baa131d971c087c78f9af53999df0e102d1f57176f5e8d3dd57 SHA512 06d3afc1aa19e57daac0e4bad37e1f365a68408240430e5e818e5a4f12e3b7519214eafa463633e447e7029f4ae13ea864ca347ad1fac117702a0be88718a954
AUX chromium-launcher-r7.sh 1631 BLAKE2B ae28d758264446511fd2b64ba69fe920144b351e8833e0e98f43d00633e850094c288b5d97d1a84801ea13aceb294623692c86c1b9be5811b7b97fa8a07a1ecd SHA512 1e97f8394bd8bb4b29570b1b85176efe6258314a596f079bee1c4018113e0023aa54a93690ba8de2a00d127af10dbe2cc3fb3127b72b841c6f28f9e7bed820e0
AUX chromium-shim_headers.patch 1510 BLAKE2B 9716cd250b249c6255aca01a385ef8a2a6f1df9ea3cf7499715543c14f8be62fd323b6048b890aa2be45891e7a765d92de3f41c3b3a88c08dae4b806c048e20f SHA512 c74bcf690a41b4f9b364477d23408d493aa674e3bd014940098a594471297c2a425241f908510061b5f11c9cfe009c4a803370edd757d3c0ab8d9c0cc128135c
AUX chromium-use-oauth2-client-switches-as-default.patch 1085 BLAKE2B baf3c463305934c126af4f7c5be305863edc7eec3add5b5ada30565b49b5944021eb40f1a9643e7eec3f973c502d9b02426f00b760570fcea5f1509219e41c6f SHA512 fe2878ee45778bac894ea17a668511d27ad2ca40988d5f11439790b700bfefd6560f3931415b4e6c543fcbbfc7cfef55cc757ed4ace1d111039ae78c46b81945
AUX chromium.default 148 BLAKE2B 5ee5b582c59a6e4bef87bbb0e232e2470ad412b1fbbb3b9af6ef7153edb55c5b9080cc16a5a115b0c5b3c381aa87ce57a7b12bdd2070e67dac10a6c2995ddbaf SHA512 0d4849e03592fb58b05e62a43021eca7e61615616c8907c3b2e445402e03adaf9e8fa25b0a745d6c31eb037456215cc02b59e345a3a06d932e76cf990c92d739
-DIST chromium-135.0.6999.2.tar.xz 7004861732 BLAKE2B c03d771863e69568bb1d5502ed017903d25006eb9c4e0532391811507cb68702006d73a4821fc6b2a6f29e722601bd6d5a6d9972daca79b3472ed8b5867896f3 SHA512 fcdf3c2b3fe69f0d2cc4c7268216f935ec25f35d5e621bcf764f449f0760376e993ee2177210230aafb3738035a0aa9d03b1917314613f5742f27297e30e8404
-DIST chromium-135.0.7023.0.tar.xz 6994083592 BLAKE2B 097202e647c386218f33e7ef8f03f115def0ad85c46faa94d233a05d43c2e25cdea16f34de7ff42fe279b23a1874e27adfafe7b95648edbf02b2fe1799e8fa1f SHA512 01a68c3387fccb35b4c48ad039e2420bff863f670fb6075a9c7cd0ce9130038ed2617ce2abad0c1cf383e4f5e189d01b97e4429589cecdba4755ef7d1ef72d83
+DIST chromium-139.0.7219.3.tar.xz 7125684092 BLAKE2B 1e119018525f27be748dbf4f4b44cd123cc8051bbfeac00aa43173ec9c3598f6ec1ce98ecbeaab44fe4612e600695c23b7ea64fed717c73b5dd8dd75da07ab2e SHA512 ed4a33c3092f0d8c7b17a69ed00106b94aab47f4253fb3d10ea47adfff32e752714ab5d606b5d0584feec48e2ae04b3e6527d73fe92b8fc82949a742a3bc12b9
+DIST chromium-139.0.7246.0.tar.xz 7233007432 BLAKE2B 5529a2a430dbadb53c8afb9be7550b5b567378fe01ef27ae7d12b2bada0da190a408c8638f95ddb95f2fe5b006316873db61303d887dfdbee8f5d39ab8f4cb93 SHA512 683bfbe001524cec281c6b9e1330a8e3808d71e9d56db1fe04d2274f1d0d01951b325faf2af1d7c0268e2c1d154d646761467e851653db9e9ccadf9f78bf3c56
DIST chromium-profiler-0.2.tar 259952640 BLAKE2B 5e82389fce00b267280d633b26551231c558b80f0c92cd7d60271095a3503365ab673e7a46dc5f74f8a82db1f21262cb24dcc0531d954bab5fb3b175dab3394d SHA512 9fa89a5ab728419683e7495ae676567480987d68a2d589f2aa97bfcbcf123f3c8f97f8bca5f65e5e3f6e41475535add473ded83b9c7a33bb4746a9d05b298a6c
-EBUILD chromium-135.0.6999.2.ebuild 40476 BLAKE2B bf189c621aebb0c01e40f9e294e789889d494cc2348ce49f75d7cf09791435343b69bee42e87cddc911044b399ce8daf9044cc153be0fa3bd8627665432fabfb SHA512 2d917f72a0c1c508163124484a6ff81cab8047018ef57ae7240fbab9794ab81fb67a96200175e790f60d9b36ef45ec0de193d907cf102bdfe6e738bc5ceaf783
-EBUILD chromium-135.0.7023.0.ebuild 40470 BLAKE2B 775d2a5f0479096302c7ebe84d06e6e7a156e6ad2e5a04537915abb88f69fad9288381592a8ffa499178e2a9fb1045960369a73c2f06e739425bac803532d0f9 SHA512 5a7d39d6d911016d956d5127e8505b4f55fad442d9d0f395ac6971d6510a90a8e2a360ae19019867a9750c3f8885eddfc5411156dfb9a1001d024b3cae5114b5
+EBUILD chromium-139.0.7219.3.ebuild 40446 BLAKE2B 9f6e4c830d208c143b9cea060f3cd5c6b8bf7eb23edc428fab1f05c7e5abdc17bb134568476584dc3175e8d7605019ad0606bd12fa5f49c64ad9b95b4648cb24 SHA512 99bd2ced6ff4d65df6cce467940f7e54bf83049fe2985f346daa3e85d96d42d312d6152e83ecafdfb6e76ff8b04c8cbe4da8f483a3253d02924f43e239f96d9e
+EBUILD chromium-139.0.7246.0.ebuild 40548 BLAKE2B 3c6f496e780b9b6cfe19f128e8d52c8a5e4b2b4eb8ff08a9b9d00365a2abb43af090fb5c99e53dd11181ad599be4572e5e18eabfbf2cb45e2ba5b6b730fa504e SHA512 1bab5ac1a9c22635c357f5fe0372b4447daba09b27dc5821d6233390ea07634fcbc4b2bf0d328163209c3694ae750d17695c8bc65d84519c75e14f287c0d8709
diff --git a/www-client/chromium/chromium-135.0.7023.0.ebuild b/www-client/chromium/chromium-139.0.7219.3.ebuild
index 262e910..9c4f1e4 100644
--- a/www-client/chromium/chromium-135.0.7023.0.ebuild
+++ b/www-client/chromium/chromium-139.0.7219.3.ebuild
@@ -4,7 +4,7 @@
EAPI=8
PYTHON_COMPAT=( python3_{9..12} )
PYTHON_REQ_USE="xml(+)"
-LLVM_COMPAT=( 19 )
+LLVM_COMPAT=( 19 20 )
RUST_MIN_VER=1.78.0
RUST_NEEDS_LLVM="yes please"
@@ -315,14 +315,14 @@ src_prepare() {
python_setup
local PATCHES=(
- "${FILESDIR}/chromium-135-protobuf-RepeatedPtrField-export.patch"
- "${FILESDIR}/chromium-132-compiler.patch"
+ "${FILESDIR}/chromium-139-protobuf-RepeatedPtrField-export.patch"
+ "${FILESDIR}/chromium-139-compiler.patch"
"${FILESDIR}/chromium-119-minizip.patch"
"${FILESDIR}/chromium-118-material-color-utils.patch"
"${FILESDIR}/chromium-126-freetype-blink.patch"
"${FILESDIR}/chromium-124-metrics-histograms-nodepotbin.patch"
- "${FILESDIR}/chromium-134-gn-exec_script_allowlist.patch"
- "${FILESDIR}/chromium-135-mv2-ungoogled.patch"
+ "${FILESDIR}/chromium-138-gn-exec_script_allowlist.patch"
+ "${FILESDIR}/chromium-139-mv2-ungoogled.patch"
"${FILESDIR}/chromium-111-InkDropHost-crash.patch"
"${FILESDIR}/chromium-134-EnumTable-crash.patch"
@@ -365,7 +365,6 @@ src_prepare() {
base/third_party/xdg_user_dirs
buildtools/third_party/libc++
buildtools/third_party/libc++abi
- chrome/third_party/mozilla_security_manager
net/third_party/mozilla_security_manager
net/third_party/nss
net/third_party/quic
@@ -401,6 +400,7 @@ src_prepare() {
third_party/catapult/tracing/third_party/oboe
third_party/catapult/tracing/third_party/pako
third_party/ced
+ third_party/compiler-rt
third_party/content_analysis_sdk
third_party/cld_3
third_party/closure_compiler
@@ -428,6 +428,7 @@ src_prepare() {
third_party/devtools-frontend/src/front_end/third_party/i18n
third_party/devtools-frontend/src/front_end/third_party/intl-messageformat
third_party/devtools-frontend/src/front_end/third_party/json5
+ third_party/devtools-frontend/src/front_end/third_party/legacy-javascript
third_party/devtools-frontend/src/front_end/third_party/lighthouse
third_party/devtools-frontend/src/front_end/third_party/lit
third_party/devtools-frontend/src/front_end/third_party/marked
@@ -440,8 +441,8 @@ src_prepare() {
third_party/devtools-frontend/src/front_end/third_party/wasmparser
third_party/devtools-frontend/src/front_end/third_party/web-vitals
third_party/devtools-frontend/src/third_party
- third_party/distributed_point_functions
third_party/dom_distiller_js
+ third_party/dragonbox
third_party/eigen3
third_party/emoji-segmenter
third_party/fast_float
@@ -461,8 +462,8 @@ src_prepare() {
third_party/google_input_tools/third_party/closure_library
third_party/google_input_tools/third_party/closure_library/third_party/closure
third_party/googletest
+ third_party/harfbuzz-ng
third_party/hunspell
- third_party/iccjpeg
third_party/ink
third_party/inspector_protocol
third_party/ipcz
@@ -500,6 +501,7 @@ src_prepare() {
third_party/mesa
third_party/metrics_proto
third_party/minigbm
+ third_party/ml_dtypes
third_party/modp_b64
third_party/nasm
third_party/nearby
@@ -565,7 +567,6 @@ src_prepare() {
third_party/tflite
third_party/tflite/src/third_party/xla
third_party/tflite/src/third_party/xla/third_party/tsl
- third_party/tflite/src/third_party/eigen3
third_party/tflite/src/third_party/fft2d
third_party/ruy
third_party/six
@@ -583,7 +584,6 @@ src_prepare() {
third_party/webrtc/modules/third_party/fft
third_party/webrtc/modules/third_party/g711
third_party/webrtc/modules/third_party/g722
- third_party/webrtc/rtc_base/third_party/base64
third_party/webrtc/rtc_base/third_party/sigslot
third_party/widevine
third_party/woff2
diff --git a/www-client/chromium/chromium-135.0.6999.2.ebuild b/www-client/chromium/chromium-139.0.7246.0.ebuild
index e371cb5..939bb60 100644
--- a/www-client/chromium/chromium-135.0.6999.2.ebuild
+++ b/www-client/chromium/chromium-139.0.7246.0.ebuild
@@ -2,11 +2,12 @@
# Distributed under the terms of the GNU General Public License v2
EAPI=8
-PYTHON_COMPAT=( python3_{9..12} )
+PYTHON_COMPAT=( python3_{12..13} )
PYTHON_REQ_USE="xml(+)"
-LLVM_COMPAT=( 19 )
-RUST_MIN_VER=1.78.0
+LLVM_COMPAT=( 20 )
+RUST_MIN_VER=1.87.0
RUST_NEEDS_LLVM="yes please"
+GN_MIN_VER=0.2235
CHROMIUM_LANGS="af am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he
hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr
@@ -25,7 +26,7 @@ SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}
LICENSE="BSD"
SLOT="0/dev"
KEYWORDS="~amd64 ~arm64"
-IUSE="+X component-build cups cpu_flags_arm_neon debug gtk4 +hangouts headless kerberos libcxx lto +official pgo pic +proprietary-codecs pulseaudio qt5 screencast selinux +suid +system-av1 +system-ffmpeg +system-harfbuzz +system-icu +system-png vaapi wayland widevine"
+IUSE="+X component-build cups cpu_flags_arm_neon debug gtk4 +hangouts headless kerberos libcxx lto +official pgo pic +proprietary-codecs pulseaudio qt6 screencast selinux +suid +system-av1 +system-ffmpeg +system-harfbuzz +system-icu +system-png vaapi wayland widevine"
REQUIRED_USE="
component-build? ( !suid !libcxx )
screencast? ( wayland )
@@ -110,10 +111,7 @@ COMMON_DEPEND="
x11-libs/cairo:=
x11-libs/gdk-pixbuf:2
x11-libs/pango:=
- qt5? (
- dev-qt/qtcore:5
- dev-qt/qtwidgets:5
- )
+ qt6? ( dev-qt/qtbase:6[gui,widgets] )
)
"
RDEPEND="${COMMON_DEPEND}
@@ -122,7 +120,7 @@ RDEPEND="${COMMON_DEPEND}
x11-libs/gtk+:3[X?,wayland?]
gui-libs/gtk:4[X?,wayland?]
)
- qt5? ( dev-qt/qtgui:5[X?,wayland?] )
+ qt6? ( dev-qt/qtbase:6[gui,widgets] )
)
virtual/ttf-fonts
selinux? ( sec-policy/selinux-chromium )
@@ -163,7 +161,7 @@ BDEPEND="
')
>=app-arch/gzip-1.7
!headless? (
- qt5? ( dev-qt/qtcore:5 )
+ qt6? ( dev-qt/qtbase:6 )
)
libcxx? ( >=llvm-core/clang-13 )
lto? ( $(depend_clang_llvm_versions 19) )
@@ -174,7 +172,7 @@ BDEPEND="
)
dev-util/bindgen
dev-lang/perl
- >=dev-build/gn-0.2122
+ >=dev-build/gn-${GN_MIN_VER}
>=dev-util/gperf-3.0.3
>=dev-build/ninja-1.7.2
dev-vcs/git
@@ -260,9 +258,6 @@ pre_build_checks() {
if needs_clang || tc-is-clang; then
tc-is-cross-compiler && CPP=${CBUILD}-clang++ || CPP=${CHOST}-clang++
CPP+=" -E"
- if ! ver_test "$(clang-major-version)" -ge 13; then
- die "At least clang 13 is required"
- fi
fi
fi
@@ -291,7 +286,7 @@ pkg_pretend() {
pre_build_checks
if use headless; then
- local headless_unused_flags=("cups" "kerberos" "pulseaudio" "qt5" "vaapi" "wayland")
+ local headless_unused_flags=("cups" "kerberos" "pulseaudio" "qt6" "vaapi" "wayland")
for myiuse in ${headless_unused_flags[@]}; do
use ${myiuse} && ewarn "Ignoring USE=${myiuse} since USE=headless is set."
done
@@ -318,13 +313,14 @@ src_prepare() {
python_setup
local PATCHES=(
- "${FILESDIR}/chromium-105-protobuf-RepeatedPtrField-export.patch"
- "${FILESDIR}/chromium-132-compiler.patch"
+ "${FILESDIR}/chromium-139-protobuf-RepeatedPtrField-export.patch"
+ "${FILESDIR}/chromium-139-compiler-r1.patch"
"${FILESDIR}/chromium-119-minizip.patch"
"${FILESDIR}/chromium-118-material-color-utils.patch"
"${FILESDIR}/chromium-126-freetype-blink.patch"
"${FILESDIR}/chromium-124-metrics-histograms-nodepotbin.patch"
- "${FILESDIR}/chromium-134-gn-exec_script_allowlist.patch"
+ "${FILESDIR}/chromium-138-gn-exec_script_allowlist.patch"
+ "${FILESDIR}/chromium-139-mv2-ungoogled-r1.patch"
"${FILESDIR}/chromium-111-InkDropHost-crash.patch"
"${FILESDIR}/chromium-134-EnumTable-crash.patch"
@@ -367,7 +363,6 @@ src_prepare() {
base/third_party/xdg_user_dirs
buildtools/third_party/libc++
buildtools/third_party/libc++abi
- chrome/third_party/mozilla_security_manager
net/third_party/mozilla_security_manager
net/third_party/nss
net/third_party/quic
@@ -403,6 +398,7 @@ src_prepare() {
third_party/catapult/tracing/third_party/oboe
third_party/catapult/tracing/third_party/pako
third_party/ced
+ third_party/compiler-rt
third_party/content_analysis_sdk
third_party/cld_3
third_party/closure_compiler
@@ -430,6 +426,7 @@ src_prepare() {
third_party/devtools-frontend/src/front_end/third_party/i18n
third_party/devtools-frontend/src/front_end/third_party/intl-messageformat
third_party/devtools-frontend/src/front_end/third_party/json5
+ third_party/devtools-frontend/src/front_end/third_party/legacy-javascript
third_party/devtools-frontend/src/front_end/third_party/lighthouse
third_party/devtools-frontend/src/front_end/third_party/lit
third_party/devtools-frontend/src/front_end/third_party/marked
@@ -442,8 +439,8 @@ src_prepare() {
third_party/devtools-frontend/src/front_end/third_party/wasmparser
third_party/devtools-frontend/src/front_end/third_party/web-vitals
third_party/devtools-frontend/src/third_party
- third_party/distributed_point_functions
third_party/dom_distiller_js
+ third_party/dragonbox
third_party/eigen3
third_party/emoji-segmenter
third_party/fast_float
@@ -463,8 +460,8 @@ src_prepare() {
third_party/google_input_tools/third_party/closure_library
third_party/google_input_tools/third_party/closure_library/third_party/closure
third_party/googletest
+ third_party/harfbuzz-ng
third_party/hunspell
- third_party/iccjpeg
third_party/ink
third_party/inspector_protocol
third_party/ipcz
@@ -499,9 +496,9 @@ src_prepare() {
third_party/mako
third_party/markupsafe
third_party/material_color_utilities
- third_party/mesa
third_party/metrics_proto
third_party/minigbm
+ third_party/ml_dtypes
third_party/modp_b64
third_party/nasm
third_party/nearby
@@ -529,11 +526,13 @@ src_prepare() {
third_party/private-join-and-compute
third_party/private_membership
third_party/protobuf
+ third_party/protobuf/third_party/utf8_range
third_party/pthreadpool
third_party/puffin
third_party/pyjson5
third_party/pyyaml
third_party/rapidhash
+ third_party/readability
third_party/rnnoise
third_party/rust
third_party/s2cellid
@@ -566,7 +565,6 @@ src_prepare() {
third_party/tflite
third_party/tflite/src/third_party/xla
third_party/tflite/src/third_party/xla/third_party/tsl
- third_party/tflite/src/third_party/eigen3
third_party/tflite/src/third_party/fft2d
third_party/ruy
third_party/six
@@ -584,7 +582,6 @@ src_prepare() {
third_party/webrtc/modules/third_party/fft
third_party/webrtc/modules/third_party/g711
third_party/webrtc/modules/third_party/g722
- third_party/webrtc/rtc_base/third_party/base64
third_party/webrtc/rtc_base/third_party/sigslot
third_party/widevine
third_party/woff2
@@ -982,6 +979,7 @@ chromium_configure() {
myconf_gn+=" use_ozone=true ozone_auto_platforms=false"
myconf_gn+=" ozone_platform_headless=true"
myconf_gn+=" enable_remoting=false"
+ myconf_gn+=" use_qt5=false"
if use headless; then
myconf_gn+=" ozone_platform=\"headless\""
myconf_gn+=" use_xkbcommon=false use_gtk=false use_qt=false"
@@ -993,17 +991,19 @@ chromium_configure() {
# myconf_gn+=" use_system_libdrm=true"
myconf_gn+=" use_system_minigbm=true"
myconf_gn+=" use_xkbcommon=true"
- if use qt5; then
- local moc_dir="$(qt5_get_bindir)"
+ if use qt6; then
+ local cbuild_libdir
+ cbuild_libdir="$(get_libdir)"
if tc-is-cross-compiler; then
- # Hack to workaround get_libdir not being able to handle CBUILD, bug #794181
- local cbuild_libdir=$($(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libxslt)
- cbuild_libdir=${cbuild_libdir:2}
- moc_dir="${EPREFIX}"/${cbuild_libdir/% }/qt5/bin
+ # Hack to workaround get_libdir not being able to handle CBUILD, bug #794181
+ cbuild_libdir="$($(tc-getBUILD_PKG_CONFIG) --keep-system-libs --libs-only-L libxslt)"
+ cbuild_libdir="${cbuild_libdir:2}"
+ cbuild_libdir="${cbuild_libdir/% }"
fi
- export PATH="${PATH}:${moc_dir}"
+ myconf_gn+=" use_qt6=true moc_qt6_path=\"${EPREFIX}/usr/${cbuild_libdir}/qt6/libexec\""
+ else
+ myconf_gn+=" use_qt6=false"
fi
- myconf_gn+=" use_qt=$(usex qt5 true false)"
myconf_gn+=" ozone_platform_x11=$(usex X true false)"
myconf_gn+=" ozone_platform_wayland=$(usex wayland true false)"
myconf_gn+=" ozone_platform=$(usex wayland \"wayland\" \"x11\")"
diff --git a/www-client/chromium/files/chromium-105-protobuf-RepeatedPtrField-export.patch b/www-client/chromium/files/chromium-105-protobuf-RepeatedPtrField-export.patch
deleted file mode 100644
index e20bc22..0000000
--- a/www-client/chromium/files/chromium-105-protobuf-RepeatedPtrField-export.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/third_party/protobuf/src/google/protobuf/repeated_ptr_field.h b/third_party/protobuf/src/google/protobuf/repeated_ptr_field.h
-index e81b2c7e4..df3811563 100644
---- a/third_party/protobuf/src/google/protobuf/repeated_ptr_field.h
-+++ b/third_party/protobuf/src/google/protobuf/repeated_ptr_field.h
-@@ -847,7 +847,7 @@ class StringTypeHandler {
- // RepeatedPtrField is like RepeatedField, but used for repeated strings or
- // Messages.
- template <typename Element>
--class RepeatedPtrField final : private internal::RepeatedPtrFieldBase {
-+class PROTOBUF_EXPORT RepeatedPtrField final : private internal::RepeatedPtrFieldBase {
-
- public:
- constexpr RepeatedPtrField();
diff --git a/www-client/chromium/files/chromium-109-minizip.patch b/www-client/chromium/files/chromium-109-minizip.patch
deleted file mode 100644
index f24595c..0000000
--- a/www-client/chromium/files/chromium-109-minizip.patch
+++ /dev/null
@@ -1,147 +0,0 @@
-diff --git a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_extractor.cc b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_extractor.cc
-index 1b01755e1..65550e8fd 100644
---- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_extractor.cc
-+++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_extractor.cc
-@@ -27,8 +27,8 @@ limitations under the License.
- #include "tensorflow_lite_support/cc/port/status_macros.h"
- #include "tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.h"
- #include "tensorflow_lite_support/metadata/metadata_schema_generated.h"
--#include "third_party/zlib/contrib/minizip/ioapi.h"
--#include "third_party/zlib/contrib/minizip/unzip.h"
-+#include "minizip/ioapi.h"
-+#include "minizip/unzip.h"
-
- namespace tflite {
- namespace metadata {
-diff --git a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_populator.cc b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_populator.cc
-index 01c68515a..7a53974f2 100644
---- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_populator.cc
-+++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_populator.cc
-@@ -26,8 +26,8 @@ limitations under the License.
- #include "tensorflow_lite_support/cc/port/statusor.h"
- #include "tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.h"
- #include "tensorflow_lite_support/metadata/metadata_schema_generated.h"
--#include "third_party/zlib/contrib/minizip/ioapi.h"
--#include "third_party/zlib/contrib/minizip/unzip.h"
-+#include "minizip/ioapi.h"
-+#include "minizip/unzip.h"
-
- namespace tflite {
- namespace metadata {
-diff --git a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.cc b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.cc
-index 525ae4a2b..80ad84900 100644
---- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.cc
-+++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.cc
-@@ -19,7 +19,7 @@ limitations under the License.
- #include <cstdio>
-
- #include "absl/strings/string_view.h" // from @com_google_absl
--#include "third_party/zlib/contrib/minizip/ioapi.h"
-+#include "minizip/ioapi.h"
-
- namespace tflite {
- namespace metadata {
-diff --git a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.h b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.h
-index 72413a0a5..38c9278da 100644
---- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.h
-+++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.h
-@@ -19,7 +19,7 @@ limitations under the License.
- #include <cstdlib>
-
- #include "absl/strings/string_view.h" // from @com_google_absl
--#include "third_party/zlib/contrib/minizip/ioapi.h"
-+#include "minizip/ioapi.h"
-
- namespace tflite {
- namespace metadata {
-diff --git a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.cc b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.cc
-index 3ba91b5e2..646822093 100644
---- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.cc
-+++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.cc
-@@ -19,7 +19,7 @@ limitations under the License.
- #include <cstdio>
-
- #include "absl/strings/string_view.h" // from @com_google_absl
--#include "third_party/zlib/contrib/minizip/ioapi.h"
-+#include "minizip/ioapi.h"
-
- namespace tflite {
- namespace metadata {
-diff --git a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.h b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.h
-index 3d329925d..da6ff5ad8 100644
---- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.h
-+++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.h
-@@ -19,7 +19,7 @@ limitations under the License.
- #include <cstdlib>
-
- #include "absl/strings/string_view.h" // from @com_google_absl
--#include "third_party/zlib/contrib/minizip/ioapi.h"
-+#include "minizip/ioapi.h"
-
- namespace tflite {
- namespace metadata {
-diff --git a/third_party/zlib/google/zip_internal.cc b/third_party/zlib/google/zip_internal.cc
-index e65d7ce6b..1f89d931a 100644
---- a/third_party/zlib/google/zip_internal.cc
-+++ b/third_party/zlib/google/zip_internal.cc
-@@ -17,7 +17,7 @@
- #include "base/strings/string_util.h"
- #include "base/strings/utf_string_conversions.h"
-
--#if defined(USE_SYSTEM_MINIZIP)
-+#if 1//defined(USE_SYSTEM_MINIZIP)
- #include <minizip/ioapi.h>
- #include <minizip/unzip.h>
- #include <minizip/zip.h>
-diff --git a/third_party/zlib/google/zip_internal.h b/third_party/zlib/google/zip_internal.h
-index f107d7fe8..28ef2f636 100644
---- a/third_party/zlib/google/zip_internal.h
-+++ b/third_party/zlib/google/zip_internal.h
-@@ -14,7 +14,7 @@
- #include <windows.h>
- #endif
-
--#if defined(USE_SYSTEM_MINIZIP)
-+#if 1//defined(USE_SYSTEM_MINIZIP)
- #include <minizip/unzip.h>
- #include <minizip/zip.h>
- #else
-diff --git a/third_party/zlib/google/zip_reader.cc b/third_party/zlib/google/zip_reader.cc
-index e97027a0b..d6f02b1e0 100644
---- a/third_party/zlib/google/zip_reader.cc
-+++ b/third_party/zlib/google/zip_reader.cc
-@@ -23,7 +23,7 @@
- #include "third_party/zlib/google/redact.h"
- #include "third_party/zlib/google/zip_internal.h"
-
--#if defined(USE_SYSTEM_MINIZIP)
-+#if 1//defined(USE_SYSTEM_MINIZIP)
- #include <minizip/unzip.h>
- #else
- #include "third_party/zlib/contrib/minizip/unzip.h"
-diff --git a/third_party/zlib/google/zip_reader.h b/third_party/zlib/google/zip_reader.h
-index 48244c823..a5c0234fe 100644
---- a/third_party/zlib/google/zip_reader.h
-+++ b/third_party/zlib/google/zip_reader.h
-@@ -18,7 +18,7 @@
- #include "base/numerics/safe_conversions.h"
- #include "base/time/time.h"
-
--#if defined(USE_SYSTEM_MINIZIP)
-+#if 1//defined(USE_SYSTEM_MINIZIP)
- #include <minizip/unzip.h>
- #else
- #include "third_party/zlib/contrib/minizip/unzip.h"
-diff --git a/third_party/zlib/google/zip_writer.h b/third_party/zlib/google/zip_writer.h
-index dd109293d..edb1542b7 100644
---- a/third_party/zlib/google/zip_writer.h
-+++ b/third_party/zlib/google/zip_writer.h
-@@ -13,7 +13,7 @@
- #include "build/build_config.h"
- #include "third_party/zlib/google/zip.h"
-
--#if defined(USE_SYSTEM_MINIZIP)
-+#if 1//defined(USE_SYSTEM_MINIZIP)
- #include <minizip/unzip.h>
- #include <minizip/zip.h>
- #else
diff --git a/www-client/chromium/files/chromium-122-VirtualCursor-std-layout.patch b/www-client/chromium/files/chromium-122-VirtualCursor-std-layout.patch
deleted file mode 100644
index 5b06407..0000000
--- a/www-client/chromium/files/chromium-122-VirtualCursor-std-layout.patch
+++ /dev/null
@@ -1,219 +0,0 @@
-diff --git a/sql/recover_module/btree.cc b/sql/recover_module/btree.cc
-index ad985a3d7c..a013c4df17 100644
---- a/sql/recover_module/btree.cc
-+++ b/sql/recover_module/btree.cc
-@@ -136,16 +136,22 @@ static_assert(std::is_trivially_destructible<LeafPageDecoder>::value,
- "Move the destructor to the .cc file if it's non-trival");
- #endif // !DCHECK_IS_ON()
-
--LeafPageDecoder::LeafPageDecoder(DatabasePageReader* db_reader) noexcept
-- : page_id_(db_reader->page_id()),
-- db_reader_(db_reader),
-- cell_count_(ComputeCellCount(db_reader)),
-- next_read_index_(0),
-- last_record_size_(0) {
-+LeafPageDecoder::LeafPageDecoder() noexcept = default;
-+
-+void LeafPageDecoder::Initialize(DatabasePageReader* db_reader) {
-+ page_id_ = db_reader->page_id();
-+ db_reader_ = db_reader;
-+ cell_count_ = ComputeCellCount(db_reader);
-+ next_read_index_ = 0;
-+ last_record_size_ = 0;
- DCHECK(IsOnValidPage(db_reader));
- DCHECK(DatabasePageReader::IsValidPageId(page_id_));
- }
-
-+void LeafPageDecoder::Reset() {
-+ db_reader_ = nullptr;
-+}
-+
- bool LeafPageDecoder::TryAdvance() {
- DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
- DCHECK(CanAdvance());
-diff --git a/sql/recover_module/btree.h b/sql/recover_module/btree.h
-index 155be1ef17..ed27107804 100644
---- a/sql/recover_module/btree.h
-+++ b/sql/recover_module/btree.h
-@@ -104,9 +104,7 @@ class LeafPageDecoder {
- public:
- // Creates a decoder for a DatabasePageReader's last read page.
- //
-- // |db_reader| must have been used to read an inner page of a table B-tree.
-- // |db_reader| must outlive this instance.
-- explicit LeafPageDecoder(DatabasePageReader* db_reader) noexcept;
-+ LeafPageDecoder() noexcept;
- ~LeafPageDecoder() noexcept = default;
-
- LeafPageDecoder(const LeafPageDecoder&) = delete;
-@@ -154,6 +152,17 @@ class LeafPageDecoder {
- // read as long as CanAdvance() returns true.
- bool TryAdvance();
-
-+ // Initialize with DatabasePageReader
-+ // |db_reader| must have been used to read an inner page of a table B-tree.
-+ // |db_reader| must outlive this instance.
-+ void Initialize(DatabasePageReader* db_reader);
-+
-+ // Reset internal DatabasePageReader
-+ void Reset();
-+
-+ // True if DatabasePageReader is valid
-+ bool IsValid() { return (db_reader_ != nullptr); }
-+
- // True if the given reader may point to an inner page in a table B-tree.
- //
- // The last ReadPage() call on |db_reader| must have succeeded.
-@@ -167,16 +176,16 @@ class LeafPageDecoder {
- static int ComputeCellCount(DatabasePageReader* db_reader);
-
- // The number of the B-tree page this reader is reading.
-- const int64_t page_id_;
-+ int64_t page_id_;
- // Used to read the tree page.
- //
- // Raw pointer usage is acceptable because this instance's owner is expected
- // to ensure that the DatabasePageReader outlives this.
- // This field is not a raw_ptr<> because it caused a
- // std::is_trivially_destructible static_assert failure.
-- RAW_PTR_EXCLUSION DatabasePageReader* const db_reader_;
-+ RAW_PTR_EXCLUSION DatabasePageReader* db_reader_;
- // Caches the ComputeCellCount() value for this reader's page.
-- const int cell_count_ = ComputeCellCount(db_reader_);
-+ int cell_count_;
-
- // The reader's cursor state.
- //
-diff --git a/sql/recover_module/cursor.cc b/sql/recover_module/cursor.cc
-index 8983af57e5..de5157c5a8 100644
---- a/sql/recover_module/cursor.cc
-+++ b/sql/recover_module/cursor.cc
-@@ -28,7 +28,7 @@ VirtualCursor::~VirtualCursor() {
- int VirtualCursor::First() {
- DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
- inner_decoders_.clear();
-- leaf_decoder_ = nullptr;
-+ leaf_decoder_.Reset();
-
- AppendPageDecoder(table_->root_page_id());
- return Next();
-@@ -38,18 +38,18 @@ int VirtualCursor::Next() {
- DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
- record_reader_.Reset();
-
-- while (!inner_decoders_.empty() || leaf_decoder_.get()) {
-- if (leaf_decoder_.get()) {
-- if (!leaf_decoder_->CanAdvance()) {
-+ while (!inner_decoders_.empty() || leaf_decoder_.IsValid()) {
-+ if (leaf_decoder_.IsValid()) {
-+ if (!leaf_decoder_.CanAdvance()) {
- // The leaf has been exhausted. Remove it from the DFS stack.
-- leaf_decoder_ = nullptr;
-+ leaf_decoder_.Reset();
- continue;
- }
-- if (!leaf_decoder_->TryAdvance())
-+ if (!leaf_decoder_.TryAdvance())
- continue;
-
-- if (!payload_reader_.Initialize(leaf_decoder_->last_record_size(),
-- leaf_decoder_->last_record_offset())) {
-+ if (!payload_reader_.Initialize(leaf_decoder_.last_record_size(),
-+ leaf_decoder_.last_record_offset())) {
- continue;
- }
- if (!record_reader_.Initialize())
-@@ -102,13 +102,13 @@ int VirtualCursor::ReadColumn(int column_index,
- int64_t VirtualCursor::RowId() {
- DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
- DCHECK(record_reader_.IsInitialized());
-- DCHECK(leaf_decoder_.get());
-- return leaf_decoder_->last_record_rowid();
-+ DCHECK(leaf_decoder_.IsValid());
-+ return leaf_decoder_.last_record_rowid();
- }
-
- void VirtualCursor::AppendPageDecoder(int page_id) {
- DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-- DCHECK(leaf_decoder_.get() == nullptr)
-+ DCHECK(!leaf_decoder_.IsValid())
- << __func__
- << " must only be called when the current path has no leaf decoder";
-
-@@ -116,7 +116,7 @@ void VirtualCursor::AppendPageDecoder(int page_id) {
- return;
-
- if (LeafPageDecoder::IsOnValidPage(&db_reader_)) {
-- leaf_decoder_ = std::make_unique<LeafPageDecoder>(&db_reader_);
-+ leaf_decoder_.Initialize(&db_reader_);
- return;
- }
-
-diff --git a/sql/recover_module/cursor.h b/sql/recover_module/cursor.h
-index 4cb0655700..4be15393e3 100644
---- a/sql/recover_module/cursor.h
-+++ b/sql/recover_module/cursor.h
-@@ -128,7 +128,7 @@ class VirtualCursor {
- std::vector<std::unique_ptr<InnerPageDecoder>> inner_decoders_;
-
- // Decodes the leaf page containing records.
-- std::unique_ptr<LeafPageDecoder> leaf_decoder_;
-+ LeafPageDecoder leaf_decoder_;
-
- SEQUENCE_CHECKER(sequence_checker_);
- };
-diff --git a/sql/recover_module/pager.cc b/sql/recover_module/pager.cc
-index 7f5b368e51..cb7e2fda21 100644
---- a/sql/recover_module/pager.cc
-+++ b/sql/recover_module/pager.cc
-@@ -24,8 +24,7 @@ static_assert(DatabasePageReader::kMaxPageId <= std::numeric_limits<int>::max(),
- "ints are not appropriate for representing page IDs");
-
- DatabasePageReader::DatabasePageReader(VirtualTable* table)
-- : page_data_(std::make_unique<uint8_t[]>(table->page_size())),
-- table_(table) {
-+ : page_data_(table->page_size()), table_(table) {
- CHECK(table != nullptr);
- CHECK(IsValidPageSize(table->page_size()));
- }
-@@ -59,7 +58,7 @@ int DatabasePageReader::ReadPage(int page_id) {
- "The |read_offset| computation above may overflow");
-
- int sqlite_status =
-- RawRead(sqlite_file, read_size, read_offset, page_data_.get());
-+ RawRead(sqlite_file, read_size, read_offset, page_data_.data());
-
- // |page_id_| needs to be set to kHighestInvalidPageId if the read failed.
- // Otherwise, future ReadPage() calls with the previous |page_id_| value
-diff --git a/sql/recover_module/pager.h b/sql/recover_module/pager.h
-index d60c5a4f07..f39ce84d74 100644
---- a/sql/recover_module/pager.h
-+++ b/sql/recover_module/pager.h
-@@ -6,8 +6,8 @@
- #define SQL_RECOVER_MODULE_PAGER_H_
-
- #include <cstdint>
--#include <memory>
- #include <ostream>
-+#include <vector>
-
- #include "base/check_op.h"
- #include "base/memory/raw_ptr.h"
-@@ -73,7 +73,7 @@ class DatabasePageReader {
- DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
- CHECK(IsValidPageId(page_id_))
- << "Successful ReadPage() required before accessing pager state";
-- return page_data_.get();
-+ return page_data_.data();
- }
-
- // The number of bytes in the page read by the last ReadPage() call.
-@@ -140,7 +140,7 @@ class DatabasePageReader {
- int page_id_ = kHighestInvalidPageId;
- // Stores the bytes of the last page successfully read by ReadPage().
- // The content is undefined if the last call to ReadPage() did not succeed.
-- const std::unique_ptr<uint8_t[]> page_data_;
-+ std::vector<uint8_t> page_data_;
- // Raw pointer usage is acceptable because this instance's owner is expected
- // to ensure that the VirtualTable outlives this.
- const raw_ptr<VirtualTable> table_;
diff --git a/www-client/chromium/files/chromium-123-EnumTable-crash.patch b/www-client/chromium/files/chromium-123-EnumTable-crash.patch
deleted file mode 100644
index 3c64789..0000000
--- a/www-client/chromium/files/chromium-123-EnumTable-crash.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-diff --git a/components/media_router/common/providers/cast/channel/enum_table.h b/components/media_router/common/providers/cast/channel/enum_table.h
-index dd58e6cfea..a0fa270bf2 100644
---- a/components/media_router/common/providers/cast/channel/enum_table.h
-+++ b/components/media_router/common/providers/cast/channel/enum_table.h
-@@ -9,6 +9,7 @@
- #include <cstring>
- #include <optional>
- #include <ostream>
-+#include <vector>
-
- #include "base/check_op.h"
- #include "base/notreached.h"
-@@ -187,7 +188,6 @@ class
- inline constexpr GenericEnumTableEntry(int32_t value);
- inline constexpr GenericEnumTableEntry(int32_t value, base::StringPiece str);
-
-- GenericEnumTableEntry(const GenericEnumTableEntry&) = delete;
- GenericEnumTableEntry& operator=(const GenericEnumTableEntry&) = delete;
-
- private:
-@@ -253,7 +253,6 @@ class EnumTable {
- constexpr Entry(E value, base::StringPiece str)
- : GenericEnumTableEntry(static_cast<int32_t>(value), str) {}
-
-- Entry(const Entry&) = delete;
- Entry& operator=(const Entry&) = delete;
- };
-
-@@ -312,15 +311,14 @@ class EnumTable {
- if (is_sorted_) {
- const std::size_t index = static_cast<std::size_t>(value);
- if (ANALYZER_ASSUME_TRUE(index < data_.size())) {
-- const auto& entry = data_.begin()[index];
-+ const auto& entry = data_[index];
- if (ANALYZER_ASSUME_TRUE(entry.has_str()))
- return entry.str();
- }
- return std::nullopt;
- }
- return GenericEnumTableEntry::FindByValue(
-- reinterpret_cast<const GenericEnumTableEntry*>(data_.begin()),
-- data_.size(), static_cast<int32_t>(value));
-+ &data_[0], data_.size(), static_cast<int32_t>(value));
- }
-
- // This overload of GetString is designed for cases where the argument is a
-@@ -348,8 +346,7 @@ class EnumTable {
- // enum value directly.
- std::optional<E> GetEnum(base::StringPiece str) const {
- auto* entry = GenericEnumTableEntry::FindByString(
-- reinterpret_cast<const GenericEnumTableEntry*>(data_.begin()),
-- data_.size(), str);
-+ &data_[0], data_.size(), str);
- return entry ? static_cast<E>(entry->value) : std::optional<E>();
- }
-
-@@ -364,7 +361,7 @@ class EnumTable {
- // Align the data on a cache line boundary.
- alignas(64)
- #endif
-- std::initializer_list<Entry> data_;
-+ const std::vector<Entry> data_;
- bool is_sorted_;
-
- constexpr EnumTable(std::initializer_list<Entry> data, bool is_sorted)
-@@ -376,8 +373,8 @@ class EnumTable {
-
- for (std::size_t i = 0; i < data.size(); i++) {
- for (std::size_t j = i + 1; j < data.size(); j++) {
-- const Entry& ei = data.begin()[i];
-- const Entry& ej = data.begin()[j];
-+ const Entry& ei = data[i];
-+ const Entry& ej = data[j];
- DCHECK(ei.value != ej.value)
- << "Found duplicate enum values at indices " << i << " and " << j;
- DCHECK(!(ei.has_str() && ej.has_str() && ei.str() == ej.str()))
diff --git a/www-client/chromium/files/chromium-123-compiler.patch b/www-client/chromium/files/chromium-123-compiler.patch
deleted file mode 100644
index 6faf9b7..0000000
--- a/www-client/chromium/files/chromium-123-compiler.patch
+++ /dev/null
@@ -1,317 +0,0 @@
-diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
-index a91928eeac..afc87ad613 100644
---- a/build/config/compiler/BUILD.gn
-+++ b/build/config/compiler/BUILD.gn
-@@ -322,9 +322,6 @@ config("compiler") {
-
- configs += [
- # See the definitions below.
-- ":clang_revision",
-- ":rustc_revision",
-- ":compiler_cpu_abi",
- ":compiler_codegen",
- ":compiler_deterministic",
- ]
-@@ -507,6 +504,9 @@ config("compiler") {
- ldflags += [ "-fPIC" ]
- rustflags += [ "-Crelocation-model=pic" ]
-
-+ extra_rustflags = getenv("RUSTFLAGS")
-+ rustflags += [ extra_rustflags ]
-+
- if (!is_clang) {
- # Use pipes for communicating between sub-processes. Faster.
- # (This flag doesn't do anything with Clang.)
-@@ -598,55 +598,6 @@ config("compiler") {
- ldflags += [ "-Wl,-z,keep-text-section-prefix" ]
- }
-
-- if (is_clang && !is_nacl && current_os != "zos") {
-- cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ]
-- if (save_reproducers_on_lld_crash && use_lld) {
-- ldflags += [
-- "-fcrash-diagnostics=all",
-- "-fcrash-diagnostics-dir=" + clang_diagnostic_dir,
-- ]
-- }
--
-- # TODO(hans): Remove this once Clang generates better optimized debug info
-- # by default. https://crbug.com/765793
-- cflags += [
-- "-mllvm",
-- "-instcombine-lower-dbg-declare=0",
-- ]
-- if (!is_debug && use_thin_lto && is_a_target_toolchain) {
-- if (is_win) {
-- ldflags += [ "-mllvm:-instcombine-lower-dbg-declare=0" ]
-- } else {
-- ldflags += [ "-Wl,-mllvm,-instcombine-lower-dbg-declare=0" ]
-- }
-- }
--
-- # 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" ]
-- } else {
-- cflags += [ "-ffp-contract=off" ]
-- }
-- }
--
- # C11/C++11 compiler flags setup.
- # ---------------------------
- if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) ||
-@@ -1013,17 +964,6 @@ config("compiler") {
- # `-nodefaultlibs` from the linker invocation from Rust, which would be used
- # to compile dylibs on Android, such as for constructing unit test APKs.
- "-Cdefault-linker-libraries",
--
-- # To make Rust .d files compatible with ninja
-- "-Zdep-info-omit-d-target",
--
-- # If a macro panics during compilation, show which macro and where it is
-- # defined.
-- "-Zmacro-backtrace",
--
-- # For deterministic builds, keep the local machine's current working
-- # directory from appearing in build outputs.
-- "-Zremap-cwd-prefix=.",
- ]
-
- if (!is_win || force_rustc_color_output) {
-@@ -1520,46 +1460,6 @@ config("compiler_deterministic") {
- }
- }
-
-- # Makes builds independent of absolute file path.
-- if (is_clang && strip_absolute_paths_from_debug_symbols) {
-- # If debug option is given, clang includes $cwd in debug info by default.
-- # For such build, this flag generates reproducible obj files even we use
-- # different build directory like "out/feature_a" and "out/feature_b" if
-- # we build same files with same compile flag.
-- # Other paths are already given in relative, no need to normalize them.
-- if (is_nacl) {
-- # TODO(https://crbug.com/1231236): Use -ffile-compilation-dir= here.
-- cflags += [
-- "-Xclang",
-- "-fdebug-compilation-dir",
-- "-Xclang",
-- ".",
-- ]
-- } else {
-- # -ffile-compilation-dir is an alias for both -fdebug-compilation-dir=
-- # and -fcoverage-compilation-dir=.
-- cflags += [ "-ffile-compilation-dir=." ]
-- swiftflags += [ "-file-compilation-dir=." ]
-- }
-- if (!is_win) {
-- # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167)
-- asmflags = [ "-Wa,-fdebug-compilation-dir,." ]
-- }
--
-- if (is_win && use_lld) {
-- if (symbol_level == 2 || (is_clang && using_sanitizer)) {
-- # Absolutize source file paths for PDB. Pass the real build directory
-- # if the pdb contains source-level debug information and if linker
-- # reproducibility is not critical.
-- ldflags += [ "/PDBSourcePath:" + rebase_path(root_build_dir) ]
-- } else {
-- # Use a fake fixed base directory for paths in the pdb to make the pdb
-- # output fully deterministic and independent of the build directory.
-- ldflags += [ "/PDBSourcePath:o:\fake\prefix" ]
-- }
-- }
-- }
--
- # Tells the compiler not to use absolute paths when passing the default
- # paths to the tools it invokes. We don't want this because we don't
- # really need it and it can mess up the goma cache entries.
-@@ -1578,39 +1478,6 @@ config("compiler_deterministic") {
- }
- }
-
--config("clang_revision") {
-- if (is_clang && clang_base_path == default_clang_base_path) {
-- update_args = [
-- "--print-revision",
-- "--verify-version=$clang_version",
-- ]
-- if (llvm_force_head_revision) {
-- update_args += [ "--llvm-force-head-revision" ]
-- }
-- clang_revision = exec_script("//tools/clang/scripts/update.py",
-- update_args,
-- "trim string")
--
-- # This is here so that all files get recompiled after a clang roll and
-- # when turning clang on or off. (defines are passed via the command line,
-- # and build system rebuild things when their commandline changes). Nothing
-- # should ever read this define.
-- defines = [ "CR_CLANG_REVISION=\"$clang_revision\"" ]
-- }
--}
--
--config("rustc_revision") {
-- if (rustc_revision != "") {
-- # Similar to the above config, this is here so that all files get recompiled
-- # after a rustc roll. Nothing should ever read this cfg. This will not be
-- # set if a custom toolchain is used.
-- rustflags = [
-- "--cfg",
-- "cr_rustc_revision=\"$rustc_revision\"",
-- ]
-- }
--}
--
- config("compiler_arm_fpu") {
- if (current_cpu == "arm" && !is_ios && !is_nacl) {
- cflags = [ "-mfpu=$arm_fpu" ]
-@@ -1964,11 +1831,7 @@ config("chromium_code") {
- defines = [ "_HAS_NODISCARD" ]
- }
- } else {
-- cflags = [ "-Wall" ]
-- if (is_clang) {
-- # Enable extra warnings for chromium_code when we control the compiler.
-- cflags += [ "-Wextra" ]
-- }
-+ cflags = [ ]
-
- # In Chromium code, we define __STDC_foo_MACROS in order to get the
- # C99 macros on Mac and Linux.
-@@ -1977,24 +1840,6 @@ config("chromium_code") {
- "__STDC_FORMAT_MACROS",
- ]
-
-- if (!is_debug && !using_sanitizer && current_cpu != "s390x" &&
-- current_cpu != "s390" && current_cpu != "ppc64" &&
-- current_cpu != "mips" && current_cpu != "mips64" &&
-- current_cpu != "riscv64" && current_cpu != "loong64") {
-- # Non-chromium code is not guaranteed to compile cleanly with
-- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are
-- # disabled, so only do that for Release build.
-- fortify_level = "2"
--
-- # ChromeOS's toolchain supports a high-quality _FORTIFY_SOURCE=3
-- # implementation with a few custom glibc patches. Use that if it's
-- # available.
-- if (is_chromeos_device && !lacros_use_chromium_toolchain) {
-- fortify_level = "3"
-- }
-- defines += [ "_FORTIFY_SOURCE=" + fortify_level ]
-- }
--
- if (is_apple) {
- cflags_objc = [ "-Wimplicit-retain-self" ]
- cflags_objcc = [ "-Wimplicit-retain-self" ]
-@@ -2373,7 +2218,8 @@ config("default_stack_frames") {
- }
-
- # Default "optimization on" config.
--config("optimize") {
-+config("optimize") { }
-+config("xoptimize") {
- if (is_win) {
- if (chrome_pgo_phase != 2) {
- # Favor size over speed, /O1 must be before the common flags.
-@@ -2432,7 +2278,8 @@ config("optimize") {
- }
-
- # Turn off optimizations.
--config("no_optimize") {
-+config("no_optimize") { }
-+config("xno_optimize") {
- if (is_win) {
- cflags = [
- "/Od", # Disable optimization.
-@@ -2472,7 +2319,8 @@ config("no_optimize") {
- # Turns up the optimization level. On Windows, this implies whole program
- # optimization and link-time code generation which is very expensive and should
- # be used sparingly.
--config("optimize_max") {
-+config("optimize_max") { }
-+config("xoptimize_max") {
- if (is_nacl && is_nacl_irt) {
- # The NaCl IRT is a special case and always wants its own config.
- # Various components do:
-@@ -2505,7 +2353,8 @@ config("optimize_max") {
- #
- # TODO(crbug.com/621335) - rework how all of these configs are related
- # so that we don't need this disclaimer.
--config("optimize_speed") {
-+config("optimize_speed") { }
-+config("xoptimize_speed") {
- if (is_nacl && is_nacl_irt) {
- # The NaCl IRT is a special case and always wants its own config.
- # Various components do:
-@@ -2531,7 +2380,8 @@ config("optimize_speed") {
- }
- }
-
--config("optimize_fuzzing") {
-+config("optimize_fuzzing") { }
-+config("xoptimize_fuzzing") {
- cflags = [ "-O1" ] + common_optimize_on_cflags
- rustflags = [ "-Copt-level=1" ]
- ldflags = common_optimize_on_ldflags
-@@ -2664,7 +2514,8 @@ config("win_pdbaltpath") {
- }
-
- # Full symbols.
--config("symbols") {
-+config("symbols") { }
-+config("xsymbols") {
- rustflags = []
- if (is_win) {
- if (is_clang) {
-@@ -2813,7 +2664,8 @@ config("symbols") {
- # Minimal symbols.
- # This config guarantees to hold symbol for stack trace which are shown to user
- # when crash happens in unittests running on buildbot.
--config("minimal_symbols") {
-+config("minimal_symbols") { }
-+config("xminimal_symbols") {
- rustflags = []
- if (is_win) {
- # Functions, files, and line tables only.
-@@ -2898,7 +2750,8 @@ config("minimal_symbols") {
- # This configuration contains function names only. That is, the compiler is
- # told to not generate debug information and the linker then just puts function
- # names in the final debug information.
--config("no_symbols") {
-+config("no_symbols") { }
-+config("xno_symbols") {
- if (is_win) {
- ldflags = [ "/DEBUG" ]
-
-diff --git a/build/config/rust.gni b/build/config/rust.gni
-index 9b0ee754ba..a438ed231c 100644
---- a/build/config/rust.gni
-+++ b/build/config/rust.gni
-@@ -75,7 +75,8 @@ declare_args() {
- #
- # TODO(https://crbug.com/1482525): Re-enable ThinLTO for Rust on LaCrOS
- # TODO(b/300937673): Re-enable ThinLTO for Rust on ash-chrome
-- toolchain_supports_rust_thin_lto = !is_chromeos
-+ # toolchain_supports_rust_thin_lto = !is_chromeos
-+ toolchain_supports_rust_thin_lto = false
-
- # Any extra std rlibs in your Rust toolchain, relative to the standard
- # Rust toolchain. Typically used with 'rust_sysroot_absolute'
diff --git a/www-client/chromium/files/chromium-125-compiler.patch b/www-client/chromium/files/chromium-125-compiler.patch
deleted file mode 100644
index f656fcf..0000000
--- a/www-client/chromium/files/chromium-125-compiler.patch
+++ /dev/null
@@ -1,317 +0,0 @@
-diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
-index 2ac26091c0..75abd9a935 100644
---- a/build/config/compiler/BUILD.gn
-+++ b/build/config/compiler/BUILD.gn
-@@ -319,9 +319,6 @@ config("compiler") {
-
- configs += [
- # See the definitions below.
-- ":clang_revision",
-- ":rustc_revision",
-- ":compiler_cpu_abi",
- ":compiler_codegen",
- ":compiler_deterministic",
- ]
-@@ -496,6 +493,9 @@ config("compiler") {
- ldflags += [ "-fPIC" ]
- rustflags += [ "-Crelocation-model=pic" ]
-
-+ extra_rustflags = getenv("RUSTFLAGS")
-+ rustflags += [ extra_rustflags ]
-+
- if (!is_clang) {
- # Use pipes for communicating between sub-processes. Faster.
- # (This flag doesn't do anything with Clang.)
-@@ -587,55 +587,6 @@ config("compiler") {
- ldflags += [ "-Wl,-z,keep-text-section-prefix" ]
- }
-
-- if (is_clang && !is_nacl && current_os != "zos") {
-- cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ]
-- if (save_reproducers_on_lld_crash && use_lld) {
-- ldflags += [
-- "-fcrash-diagnostics=all",
-- "-fcrash-diagnostics-dir=" + clang_diagnostic_dir,
-- ]
-- }
--
-- # TODO(hans): Remove this once Clang generates better optimized debug info
-- # by default. https://crbug.com/765793
-- cflags += [
-- "-mllvm",
-- "-instcombine-lower-dbg-declare=0",
-- ]
-- if (!is_debug && use_thin_lto && is_a_target_toolchain) {
-- if (is_win) {
-- ldflags += [ "-mllvm:-instcombine-lower-dbg-declare=0" ]
-- } else {
-- ldflags += [ "-Wl,-mllvm,-instcombine-lower-dbg-declare=0" ]
-- }
-- }
--
-- # 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" ]
-- } else {
-- cflags += [ "-ffp-contract=off" ]
-- }
-- }
--
- # C11/C++11 compiler flags setup.
- # ---------------------------
- if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) ||
-@@ -1000,17 +951,6 @@ config("compiler") {
- # `-nodefaultlibs` from the linker invocation from Rust, which would be used
- # to compile dylibs on Android, such as for constructing unit test APKs.
- "-Cdefault-linker-libraries",
--
-- # To make Rust .d files compatible with ninja
-- "-Zdep-info-omit-d-target",
--
-- # If a macro panics during compilation, show which macro and where it is
-- # defined.
-- "-Zmacro-backtrace",
--
-- # For deterministic builds, keep the local machine's current working
-- # directory from appearing in build outputs.
-- "-Zremap-cwd-prefix=.",
- ]
-
- if (!is_win || force_rustc_color_output) {
-@@ -1518,46 +1458,6 @@ config("compiler_deterministic") {
- }
- }
-
-- # Makes builds independent of absolute file path.
-- if (is_clang && strip_absolute_paths_from_debug_symbols) {
-- # If debug option is given, clang includes $cwd in debug info by default.
-- # For such build, this flag generates reproducible obj files even we use
-- # different build directory like "out/feature_a" and "out/feature_b" if
-- # we build same files with same compile flag.
-- # Other paths are already given in relative, no need to normalize them.
-- if (is_nacl) {
-- # TODO(https://crbug.com/1231236): Use -ffile-compilation-dir= here.
-- cflags += [
-- "-Xclang",
-- "-fdebug-compilation-dir",
-- "-Xclang",
-- ".",
-- ]
-- } else {
-- # -ffile-compilation-dir is an alias for both -fdebug-compilation-dir=
-- # and -fcoverage-compilation-dir=.
-- cflags += [ "-ffile-compilation-dir=." ]
-- swiftflags += [ "-file-compilation-dir=." ]
-- }
-- if (!is_win) {
-- # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167)
-- asmflags = [ "-Wa,-fdebug-compilation-dir,." ]
-- }
--
-- if (is_win && use_lld) {
-- if (symbol_level == 2 || (is_clang && using_sanitizer)) {
-- # Absolutize source file paths for PDB. Pass the real build directory
-- # if the pdb contains source-level debug information and if linker
-- # reproducibility is not critical.
-- ldflags += [ "/PDBSourcePath:" + rebase_path(root_build_dir) ]
-- } else {
-- # Use a fake fixed base directory for paths in the pdb to make the pdb
-- # output fully deterministic and independent of the build directory.
-- ldflags += [ "/PDBSourcePath:o:\fake\prefix" ]
-- }
-- }
-- }
--
- # Tells the compiler not to use absolute paths when passing the default
- # paths to the tools it invokes. We don't want this because we don't
- # really need it and it can mess up the RBE cache entries.
-@@ -1576,39 +1476,6 @@ config("compiler_deterministic") {
- }
- }
-
--config("clang_revision") {
-- if (is_clang && clang_base_path == default_clang_base_path) {
-- update_args = [
-- "--print-revision",
-- "--verify-version=$clang_version",
-- ]
-- if (llvm_force_head_revision) {
-- update_args += [ "--llvm-force-head-revision" ]
-- }
-- clang_revision = exec_script("//tools/clang/scripts/update.py",
-- update_args,
-- "trim string")
--
-- # This is here so that all files get recompiled after a clang roll and
-- # when turning clang on or off. (defines are passed via the command line,
-- # and build system rebuild things when their commandline changes). Nothing
-- # should ever read this define.
-- defines = [ "CR_CLANG_REVISION=\"$clang_revision\"" ]
-- }
--}
--
--config("rustc_revision") {
-- if (rustc_revision != "") {
-- # Similar to the above config, this is here so that all files get recompiled
-- # after a rustc roll. Nothing should ever read this cfg. This will not be
-- # set if a custom toolchain is used.
-- rustflags = [
-- "--cfg",
-- "cr_rustc_revision=\"$rustc_revision\"",
-- ]
-- }
--}
--
- config("compiler_arm_fpu") {
- if (current_cpu == "arm" && !is_ios && !is_nacl) {
- cflags = [ "-mfpu=$arm_fpu" ]
-@@ -1981,11 +1848,7 @@ config("chromium_code") {
- defines = [ "_HAS_NODISCARD" ]
- }
- } else {
-- cflags = [ "-Wall" ]
-- if (is_clang) {
-- # Enable extra warnings for chromium_code when we control the compiler.
-- cflags += [ "-Wextra" ]
-- }
-+ cflags = [ ]
-
- # In Chromium code, we define __STDC_foo_MACROS in order to get the
- # C99 macros on Mac and Linux.
-@@ -1994,24 +1857,6 @@ config("chromium_code") {
- "__STDC_FORMAT_MACROS",
- ]
-
-- if (!is_debug && !using_sanitizer && current_cpu != "s390x" &&
-- current_cpu != "s390" && current_cpu != "ppc64" &&
-- current_cpu != "mips" && current_cpu != "mips64" &&
-- current_cpu != "riscv64" && current_cpu != "loong64") {
-- # Non-chromium code is not guaranteed to compile cleanly with
-- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are
-- # disabled, so only do that for Release build.
-- fortify_level = "2"
--
-- # ChromeOS's toolchain supports a high-quality _FORTIFY_SOURCE=3
-- # implementation with a few custom glibc patches. Use that if it's
-- # available.
-- if (is_chromeos_device && !lacros_use_chromium_toolchain) {
-- fortify_level = "3"
-- }
-- defines += [ "_FORTIFY_SOURCE=" + fortify_level ]
-- }
--
- if (is_apple) {
- cflags_objc = [ "-Wimplicit-retain-self" ]
- cflags_objcc = [ "-Wimplicit-retain-self" ]
-@@ -2387,7 +2232,8 @@ config("default_stack_frames") {
- }
-
- # Default "optimization on" config.
--config("optimize") {
-+config("optimize") { }
-+config("xoptimize") {
- if (is_win) {
- cflags = [ "/O2" ] + common_optimize_on_cflags
-
-@@ -2428,7 +2274,8 @@ config("optimize") {
- }
-
- # Turn off optimizations.
--config("no_optimize") {
-+config("no_optimize") { }
-+config("xno_optimize") {
- if (is_win) {
- cflags = [
- "/Od", # Disable optimization.
-@@ -2468,7 +2315,8 @@ config("no_optimize") {
- # Turns up the optimization level. Used to explicitly enable -O2 instead of
- # -Os for select targets on platforms that use optimize_for_size. No-op
- # elsewhere.
--config("optimize_max") {
-+config("optimize_max") { }
-+config("xoptimize_max") {
- if (is_nacl && is_nacl_irt) {
- # The NaCl IRT is a special case and always wants its own config.
- # Various components do:
-@@ -2501,7 +2349,8 @@ config("optimize_max") {
- #
- # TODO(crbug.com/621335) - rework how all of these configs are related
- # so that we don't need this disclaimer.
--config("optimize_speed") {
-+config("optimize_speed") { }
-+config("xoptimize_speed") {
- if (is_nacl && is_nacl_irt) {
- # The NaCl IRT is a special case and always wants its own config.
- # Various components do:
-@@ -2530,7 +2379,8 @@ config("optimize_speed") {
- }
- }
-
--config("optimize_fuzzing") {
-+config("optimize_fuzzing") { }
-+config("xoptimize_fuzzing") {
- cflags = [ "-O1" ] + common_optimize_on_cflags
- rustflags = [ "-Copt-level=1" ]
- ldflags = common_optimize_on_ldflags
-@@ -2663,7 +2513,8 @@ config("win_pdbaltpath") {
- }
-
- # Full symbols.
--config("symbols") {
-+config("symbols") { }
-+config("xsymbols") {
- rustflags = []
- if (is_win) {
- if (is_clang) {
-@@ -2812,7 +2663,8 @@ config("symbols") {
- # Minimal symbols.
- # This config guarantees to hold symbol for stack trace which are shown to user
- # when crash happens in unittests running on buildbot.
--config("minimal_symbols") {
-+config("minimal_symbols") { }
-+config("xminimal_symbols") {
- rustflags = []
- if (is_win) {
- # Functions, files, and line tables only.
-@@ -2897,7 +2749,8 @@ config("minimal_symbols") {
- # This configuration contains function names only. That is, the compiler is
- # told to not generate debug information and the linker then just puts function
- # names in the final debug information.
--config("no_symbols") {
-+config("no_symbols") { }
-+config("xno_symbols") {
- if (is_win) {
- ldflags = [ "/DEBUG" ]
-
-diff --git a/build/config/rust.gni b/build/config/rust.gni
-index 59fa14463b..ca780602b4 100644
---- a/build/config/rust.gni
-+++ b/build/config/rust.gni
-@@ -75,7 +75,8 @@ declare_args() {
- #
- # TODO(https://crbug.com/1482525): Re-enable ThinLTO for Rust on LaCrOS
- # TODO(b/300937673): Re-enable ThinLTO for Rust on ash-chrome
-- toolchain_supports_rust_thin_lto = !is_chromeos
-+ # toolchain_supports_rust_thin_lto = !is_chromeos
-+ toolchain_supports_rust_thin_lto = false
-
- # Any extra std rlibs in your Rust toolchain, relative to the standard
- # Rust toolchain. Typically used with 'rust_sysroot_absolute'
diff --git a/www-client/chromium/files/chromium-125-revert-8a3bec6.patch b/www-client/chromium/files/chromium-125-revert-8a3bec6.patch
deleted file mode 100644
index 0f19d49..0000000
--- a/www-client/chromium/files/chromium-125-revert-8a3bec6.patch
+++ /dev/null
@@ -1,450 +0,0 @@
-diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn
-index 2c079c06c5..34a844659b 100644
---- a/third_party/blink/renderer/platform/BUILD.gn
-+++ b/third_party/blink/renderer/platform/BUILD.gn
-@@ -118,10 +118,7 @@ blink_python_runner("color_data") {
-
- compiled_action("character_data") {
- tool = ":character_data_generator"
-- outputs = [
-- "$blink_platform_output_dir/character_property_data.cc",
-- "$blink_platform_output_dir/text/break_iterator_data_inline_header.h",
-- ]
-+ outputs = [ "$blink_platform_output_dir/character_property_data.cc" ]
- args = rebase_path(outputs, root_build_dir)
- }
-
-diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
-index 28d34020f7..45942f4e89 100644
---- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
-+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
-@@ -509,11 +509,6 @@
- public: true,
- status: "experimental",
- },
-- {
-- // crbug.com/41485013
-- name: "BreakIteratorDataGenerator",
-- status: "stable",
-- },
- {
- name: "BrowserVerifiedUserActivationKeyboard",
- base_feature: "none",
-diff --git a/third_party/blink/renderer/platform/text/character_property_data_generator.cc b/third_party/blink/renderer/platform/text/character_property_data_generator.cc
-index 70101dbf76..27e6852647 100644
---- a/third_party/blink/renderer/platform/text/character_property_data_generator.cc
-+++ b/third_party/blink/renderer/platform/text/character_property_data_generator.cc
-@@ -5,19 +5,13 @@
- #include "third_party/blink/renderer/platform/text/character_property_data.h"
-
- #include <stdio.h>
--#include <unicode/brkiter.h>
--#include <unicode/locid.h>
- #include <unicode/ucptrie.h>
--#include <unicode/udata.h>
--#include <unicode/ulocdata.h>
- #include <unicode/umutablecptrie.h>
- #include <unicode/uniset.h>
- #include <unicode/unistr.h>
-
- #include <cassert>
- #include <cstring>
--#include <filesystem>
--#include <fstream>
- #include <iterator>
- #include <memory>
-
-@@ -31,36 +25,6 @@
- namespace blink {
- namespace {
-
--#define CHECK_U_ERROR(error, name) \
-- CHECK(U_SUCCESS(error)) << name << ": (" << error << ")" << u_errorName(error)
--
--//
--// Load the ICU data file and set it to the ICU.
--//
--void InitializeIcu(const char* exec_path) {
-- // ICU can't load the data file by itself because ICU tries to load the
-- // versioned data file (e.g., "icudt73l.dat"), while the Chromium build system
-- // creates the unversioned data file (e.g., "icudtl.dat").
-- std::filesystem::path path{exec_path};
-- path = path.parent_path() / "icudt" U_ICUDATA_TYPE_LETTER ".dat";
--
-- std::ifstream data_ifstream(path, std::ios_base::binary);
-- CHECK(data_ifstream.is_open());
-- static std::vector<uint8_t> icu_data;
-- CHECK(icu_data.empty());
-- std::copy(std::istreambuf_iterator<char>(data_ifstream),
-- std::istreambuf_iterator<char>(), std::back_inserter(icu_data));
-- UErrorCode error = U_ZERO_ERROR;
-- udata_setCommonData(icu_data.data(), &error);
-- CHECK_U_ERROR(error, "udata_setCommonData");
--
-- // Check ICU functions that need the data resources are working.
-- // https://unicode-org.github.io/icu/userguide/icu/design.html#icu4c-initialization-and-termination
-- UVersionInfo version;
-- ulocdata_getCLDRVersion(version, &error);
-- CHECK_U_ERROR(error, "ulocdata_getCLDRVersion");
--}
--
- class CharacterPropertyValues {
- public:
- constexpr static UChar32 kMaxCodepoint = 0x10FFFF;
-@@ -255,201 +219,18 @@ static void GenerateCharacterPropertyData(FILE* fp) {
- GenerateUTrieSerialized(fp, serialized_size, serialized);
- }
-
--//
--// Generate a line break pair table in `break_iterator_data_inline_header.h`.
--//
--// See [UAX14](https://unicode.org/reports/tr14/).
--//
--class LineBreakData {
-- public:
-- LineBreakData() = default;
--
-- static void Generate(FILE* fp) {
-- LineBreakData data;
-- data.FillFromIcu();
-- data.FillAscii();
-- data.Print(fp);
-- }
--
-- private:
-- // Fill the pair table from the ICU BreakIterator.
-- void FillFromIcu() {
-- UErrorCode status = U_ZERO_ERROR;
-- const icu::Locale locale("en");
-- icu::BreakIterator* break_iterator =
-- icu::BreakIterator::createLineInstance(locale, status);
-- CHECK_U_ERROR(status, "createLineInstance");
--
-- for (UChar ch = kMinChar; ch <= kMaxChar; ++ch) {
-- const icu::UnicodeString ch_str(ch);
-- for (UChar ch_next = kMinChar; ch_next <= kMaxChar; ++ch_next) {
-- const icu::UnicodeString ch_next_str(ch_next);
-- const icu::UnicodeString str = ch_str + ch_next_str;
-- break_iterator->setText(str);
-- SetPairValue(ch, ch_next, break_iterator->isBoundary(1));
-- }
-- }
-- }
--
-- // Line breaking table for printable ASCII characters. Line breaking
-- // opportunities in this table are as below:
-- // - before opening punctuations such as '(', '<', '[', '{' after certain
-- // characters (compatible with Firefox 3.6);
-- // - after '-' and '?' (backward-compatible, and compatible with Internet
-- // Explorer).
-- // Please refer to <https://bugs.webkit.org/show_bug.cgi?id=37698> for line
-- // breaking matrixes of different browsers and the ICU standard.
-- void FillAscii() {
--#define ALL_CHAR '!', 0x7F
-- SetPairValue(ALL_CHAR, ALL_CHAR, false);
-- SetPairValue(ALL_CHAR, '(', '(', true);
-- SetPairValue(ALL_CHAR, '<', '<', true);
-- SetPairValue(ALL_CHAR, '[', '[', true);
-- SetPairValue(ALL_CHAR, '{', '{', true);
-- SetPairValue('-', '-', ALL_CHAR, true);
-- SetPairValue('?', '?', ALL_CHAR, true);
-- SetPairValue('-', '-', '$', '$', false);
-- SetPairValue(ALL_CHAR, '!', '!', false);
-- SetPairValue('?', '?', '"', '"', false);
-- SetPairValue('?', '?', '\'', '\'', false);
-- SetPairValue(ALL_CHAR, ')', ')', false);
-- SetPairValue(ALL_CHAR, ',', ',', false);
-- SetPairValue(ALL_CHAR, '.', '.', false);
-- SetPairValue(ALL_CHAR, '/', '/', false);
-- // Note: Between '-' and '[0-9]' is hard-coded in `ShouldBreakFast()`.
-- SetPairValue('-', '-', '0', '9', false);
-- SetPairValue(ALL_CHAR, ':', ':', false);
-- SetPairValue(ALL_CHAR, ';', ';', false);
-- SetPairValue(ALL_CHAR, '?', '?', false);
-- SetPairValue(ALL_CHAR, ']', ']', false);
-- SetPairValue(ALL_CHAR, '}', '}', false);
-- SetPairValue('$', '$', ALL_CHAR, false);
-- SetPairValue('\'', '\'', ALL_CHAR, false);
-- SetPairValue('(', '(', ALL_CHAR, false);
-- SetPairValue('/', '/', ALL_CHAR, false);
-- SetPairValue('0', '9', ALL_CHAR, false);
-- SetPairValue('<', '<', ALL_CHAR, false);
-- SetPairValue('@', '@', ALL_CHAR, false);
-- SetPairValue('A', 'Z', ALL_CHAR, false);
-- SetPairValue('[', '[', ALL_CHAR, false);
-- SetPairValue('^', '`', ALL_CHAR, false);
-- SetPairValue('a', 'z', ALL_CHAR, false);
-- SetPairValue('{', '{', ALL_CHAR, false);
-- SetPairValue(0x7F, 0x7F, ALL_CHAR, false);
--#undef ALL_CHAR
-- }
--
-- // Print the C++ source code.
-- void Print(FILE* fp) {
-- // Print file headers.
-- fprintf(fp,
-- "#include <cstdint>\n"
-- "#include "
-- "\"third_party/blink/renderer/platform/wtf/text/wtf_uchar.h\"\n"
-- "\nnamespace {\n\n");
--
-- fprintf(fp, "constexpr UChar kFastLineBreakMinChar = 0x%02X;\n", kMinChar);
-- fprintf(fp, "constexpr UChar kFastLineBreakMaxChar = 0x%02X;\n", kMaxChar);
--
-- // Define macros.
-- fprintf(fp,
-- "\n#define B(a, b, c, d, e, f, g, h)"
-- " ((a) | ((b) << 1) | ((c) << 2) | ((d) << 3) |"
-- " ((e) << 4) | ((f) << 5) | ((g) << 6) | ((h) << 7))\n\n");
--
-- fprintf(fp, "const uint8_t kFastLineBreakTable[%d][%d] = {\n", kNumChars,
-- kNumCharsRoundUp8 / 8);
--
-- // Print the column comment.
-- fprintf(fp, " /*");
-- for (UChar ch = kMinChar; ch <= kMaxChar; ++ch) {
-- if (ch != kMinChar && (ch - kMinChar) % 8 == 0) {
-- fprintf(fp, " ");
-- }
-- fprintf(fp, ch < 0x7F ? " %c" : "%02X", ch);
-- }
-- fprintf(fp, " */\n");
--
-- // Print the data array.
-- for (int y = 0; y < kNumChars; ++y) {
-- const UChar ch = y + kMinChar;
-- fprintf(fp, "/* %02X %c */ {B(", ch, ch < 0x7F ? ch : ' ');
-- const char* prefix = "";
-- for (int x = 0; x < kNumCharsRoundUp8; ++x) {
-- fprintf(fp, "%s%d", prefix, pair_[y][x]);
-- prefix = (x % 8 == 7) ? "),B(" : ",";
-- }
-- fprintf(fp, ")},\n");
-- }
-- fprintf(fp,
-- "};\n\n"
-- "#undef B\n\n"
-- "template <typename T>\n"
-- "inline uint8_t GetFastLineBreak(T ch1, T ch2) {\n"
-- " const T i2 = ch2 - kFastLineBreakMinChar;\n"
-- " return kFastLineBreakTable[ch1 - kFastLineBreakMinChar]"
-- "[i2 / 8] & (1 << (i2 %% 8));\n"
-- "}\n\n"
-- "} // namespace\n");
-- }
--
-- void SetPairValue(UChar ch1_min,
-- UChar ch1_max,
-- UChar ch2_min,
-- UChar ch2_max,
-- bool value) {
-- for (UChar ch1 = ch1_min; ch1 <= ch1_max; ++ch1) {
-- for (UChar ch2 = ch2_min; ch2 <= ch2_max; ++ch2) {
-- SetPairValue(ch1, ch2, value);
-- }
-- }
-- }
--
-- // Set the breakability between `ch1` and `ch2`.
-- void SetPairValue(UChar ch1, UChar ch2, bool value) {
-- CHECK_GE(ch1, kMinChar);
-- CHECK_LE(ch1, kMaxChar);
-- CHECK_GE(ch2, kMinChar);
-- CHECK_LE(ch2, kMaxChar);
-- pair_[ch1 - kMinChar][ch2 - kMinChar] = value;
-- }
--
-- constexpr static UChar kMinChar = '!';
-- constexpr static UChar kMaxChar = 0xFF;
-- constexpr static int kNumChars = kMaxChar - kMinChar + 1;
-- constexpr static int kNumCharsRoundUp8 = (kNumChars + 7) / 8 * 8;
-- bool pair_[kNumChars][kNumCharsRoundUp8]{};
--};
--
--void InvokeGenerator(int index,
-- int argc,
-- char** argv,
-- void (*generator)(FILE*)) {
-- if (index >= argc) {
-- return;
-- }
-- const char* path = argv[index];
-- if (!*path) {
-- return;
-- }
--
-- if (strcmp(path, "-") == 0) {
-- (*generator)(stdout);
-- return;
-- }
--
-- FILE* fp = fopen(path, "wb");
-- (*generator)(fp);
-- fclose(fp);
--}
--
- } // namespace
- } // namespace blink
-
- int main(int argc, char** argv) {
-- blink::InitializeIcu(argv[0]);
-- blink::InvokeGenerator(1, argc, argv, blink::GenerateCharacterPropertyData);
-- blink::InvokeGenerator(2, argc, argv, blink::LineBreakData::Generate);
-+ // Write the serialized array to the source file.
-+ if (argc <= 1) {
-+ blink::GenerateCharacterPropertyData(stdout);
-+ } else {
-+ FILE* fp = fopen(argv[1], "wb");
-+ blink::GenerateCharacterPropertyData(fp);
-+ fclose(fp);
-+ }
-
- return 0;
- }
-diff --git a/third_party/blink/renderer/platform/text/text_break_iterator.cc b/third_party/blink/renderer/platform/text/text_break_iterator.cc
-index 650eb760b2..14de47d9fe 100644
---- a/third_party/blink/renderer/platform/text/text_break_iterator.cc
-+++ b/third_party/blink/renderer/platform/text/text_break_iterator.cc
-@@ -26,8 +26,6 @@
- #include <unicode/uchar.h>
- #include <unicode/uvernum.h>
-
--#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
--#include "third_party/blink/renderer/platform/text/break_iterator_data_inline_header.h"
- #include "third_party/blink/renderer/platform/wtf/std_lib_extras.h"
- #include "third_party/blink/renderer/platform/wtf/text/ascii_ctype.h"
- #include "third_party/blink/renderer/platform/wtf/text/character_names.h"
-@@ -113,9 +111,6 @@ static const UChar kAsciiLineBreakTableLastChar = 127;
-
- #define F 0xFF
-
--// Check if the generated table match the `kAsciiLineBreakTable` table.
--#define CHECK_ASCII_LINE_BRAEK_TABLE 0
--
- // Line breaking table for printable ASCII characters. Line breaking
- // opportunities in this table are as below:
- // - before opening punctuations such as '(', '<', '[', '{' after certain
-@@ -166,24 +161,6 @@ static const unsigned char kAsciiLineBreakTable[][(kAsciiLineBreakTableLastChar
- };
- // clang-format on
-
--#if CHECK_ASCII_LINE_BRAEK_TABLE
--void CheckAsciiLineBreakTable() {
-- for (UChar ch2 = kAsciiLineBreakTableFirstChar;
-- ch2 <= kAsciiLineBreakTableLastChar; ++ch2) {
-- for (UChar ch1 = kAsciiLineBreakTableFirstChar;
-- ch1 <= kAsciiLineBreakTableLastChar; ++ch1) {
-- const UChar i2 = ch2 - kAsciiLineBreakTableFirstChar;
-- const bool ascii =
-- kAsciiLineBreakTable[ch1 - kAsciiLineBreakTableFirstChar][i2 / 8] &
-- (1 << (i2 % 8));
-- const bool fast = GetFastLineBreak(ch1, ch2);
-- CHECK_EQ(ascii, fast)
-- << String::Format("%02X/%02X (%c/%c)", ch1, ch2, ch1, ch2);
-- }
-- }
--}
--#endif // CHECK_ASCII_LINE_BRAEK_TABLE
--
- #define BA_LB_COUNT U_LB_COUNT
- // Line breaking table for CSS word-break: break-all. This table differs from
- // asciiLineBreakTable in:
-@@ -298,13 +275,7 @@ static inline bool ShouldKeepAfterKeepAll(UChar last_ch,
- }
-
- inline bool NeedsLineBreakIterator(UChar ch) {
-- if (UNLIKELY(!RuntimeEnabledFeatures::BreakIteratorDataGeneratorEnabled())) {
-- return ch > kAsciiLineBreakTableLastChar && ch != kNoBreakSpaceCharacter;
-- }
-- static_assert(kFastLineBreakMaxChar >= kAsciiLineBreakTableLastChar);
-- static_assert(kNoBreakSpaceCharacter <= kFastLineBreakMaxChar,
-- "Include NBSP for the performance.");
-- return ch > kFastLineBreakMaxChar;
-+ return ch > kAsciiLineBreakTableLastChar && ch != kNoBreakSpaceCharacter;
- }
-
- template <typename CharacterType>
-@@ -349,61 +320,31 @@ struct LazyLineBreakIterator::Context {
- last = current;
- }
-
-- bool ShouldBreakFast(bool disable_soft_hyphen) const {
--#if CHECK_ASCII_LINE_BRAEK_TABLE
-- DEFINE_STATIC_LOCAL(bool, is_check_done, (false));
-- if (!is_check_done) {
-- is_check_done = true;
-- CheckAsciiLineBreakTable();
-- LOG(INFO) << "CheckAsciiLineBreakTable() completed.";
-- }
--#endif // CHECK_ASCII_LINE_BRAEK_TABLE
--
-+ bool ShouldBreakFast() const {
- const UChar last_ch = last.ch;
- const UChar ch = current.ch;
-- static_assert(kFastLineBreakMinChar == kAsciiLineBreakTableFirstChar);
-- if (UNLIKELY(last_ch < kFastLineBreakMinChar ||
-- ch < kFastLineBreakMinChar)) {
-+ if (UNLIKELY(last_ch < kAsciiLineBreakTableFirstChar ||
-+ ch < kAsciiLineBreakTableFirstChar)) {
- return false;
- }
-
- // Don't allow line breaking between '-' and a digit if the '-' may mean a
- // minus sign in the context, while allow breaking in 'ABCD-1234' and
- // '1234-5678' which may be in long URLs.
-- static_assert('-' >= kFastLineBreakMinChar);
-+ static_assert('-' >= kAsciiLineBreakTableFirstChar);
- if (last_ch == '-' && IsASCIIDigit(ch)) {
- return IsASCIIAlphanumeric(last_last_ch);
- }
-
-- if (UNLIKELY(
-- !RuntimeEnabledFeatures::BreakIteratorDataGeneratorEnabled())) {
-- // If both `last_ch` and `ch` are ASCII characters, use a lookup table for
-- // enhanced speed and for compatibility with other browsers (see comments
-- // for asciiLineBreakTable for details).
-- if (last_ch <= kAsciiLineBreakTableLastChar &&
-- ch <= kAsciiLineBreakTableLastChar) {
-- const unsigned char* table_row =
-- kAsciiLineBreakTable[last_ch - kAsciiLineBreakTableFirstChar];
-- int ch_index = ch - kAsciiLineBreakTableFirstChar;
-- return table_row[ch_index / 8] & (1 << (ch_index % 8));
-- }
--
-- // Otherwise defer to the Unicode algorithm by returning false.
-- return false;
-- }
--
-- // If both characters are in the fast line break table, use it for enhanced
-- // speed. For ASCII characters, it is also for compatibility. The table is
-- // generated at the build time, see the `LineBreakData` class.
-- if (last_ch <= kFastLineBreakMaxChar && ch <= kFastLineBreakMaxChar) {
-- if (!GetFastLineBreak(last_ch, ch)) {
-- return false;
-- }
-- static_assert(kSoftHyphenCharacter <= kFastLineBreakMaxChar);
-- if (UNLIKELY(disable_soft_hyphen && last_ch == kSoftHyphenCharacter)) {
-- return false;
-- }
-- return true;
-+ // If both `last_ch` and `ch` are ASCII characters, use a lookup table for
-+ // enhanced speed and for compatibility with other browsers (see comments
-+ // for asciiLineBreakTable for details).
-+ if (last_ch <= kAsciiLineBreakTableLastChar &&
-+ ch <= kAsciiLineBreakTableLastChar) {
-+ const unsigned char* table_row =
-+ kAsciiLineBreakTable[last_ch - kAsciiLineBreakTableFirstChar];
-+ int ch_index = ch - kAsciiLineBreakTableFirstChar;
-+ return table_row[ch_index / 8] & (1 << (ch_index % 8));
- }
-
- // Otherwise defer to the Unicode algorithm by returning false.
-@@ -452,7 +393,7 @@ inline int LazyLineBreakIterator::NextBreakablePosition(
- break;
- }
-
-- if (context.ShouldBreakFast(disable_soft_hyphen_)) {
-+ if (context.ShouldBreakFast()) {
- return i;
- }
-
diff --git a/www-client/chromium/files/chromium-126-EnumTable-crash.patch b/www-client/chromium/files/chromium-126-EnumTable-crash.patch
deleted file mode 100644
index 468cbf0..0000000
--- a/www-client/chromium/files/chromium-126-EnumTable-crash.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-diff --git a/components/media_router/common/providers/cast/channel/enum_table.h b/components/media_router/common/providers/cast/channel/enum_table.h
-index 3f2ec76729..4e9c562113 100644
---- a/components/media_router/common/providers/cast/channel/enum_table.h
-+++ b/components/media_router/common/providers/cast/channel/enum_table.h
-@@ -10,6 +10,7 @@
- #include <optional>
- #include <ostream>
- #include <string_view>
-+#include <vector>
-
- #include "base/check_op.h"
- #include "base/notreached.h"
-@@ -187,7 +188,6 @@ class
- inline constexpr GenericEnumTableEntry(int32_t value);
- inline constexpr GenericEnumTableEntry(int32_t value, std::string_view str);
-
-- GenericEnumTableEntry(const GenericEnumTableEntry&) = delete;
- GenericEnumTableEntry& operator=(const GenericEnumTableEntry&) = delete;
-
- private:
-@@ -253,7 +253,6 @@ class EnumTable {
- constexpr Entry(E value, std::string_view str)
- : GenericEnumTableEntry(static_cast<int32_t>(value), str) {}
-
-- Entry(const Entry&) = delete;
- Entry& operator=(const Entry&) = delete;
- };
-
-@@ -312,15 +311,14 @@ class EnumTable {
- if (is_sorted_) {
- const std::size_t index = static_cast<std::size_t>(value);
- if (ANALYZER_ASSUME_TRUE(index < data_.size())) {
-- const auto& entry = data_.begin()[index];
-+ const auto& entry = data_[index];
- if (ANALYZER_ASSUME_TRUE(entry.has_str()))
- return entry.str();
- }
- return std::nullopt;
- }
- return GenericEnumTableEntry::FindByValue(
-- reinterpret_cast<const GenericEnumTableEntry*>(data_.begin()),
-- data_.size(), static_cast<int32_t>(value));
-+ &data_[0], data_.size(), static_cast<int32_t>(value));
- }
-
- // This overload of GetString is designed for cases where the argument is a
-@@ -348,8 +346,7 @@ class EnumTable {
- // enum value directly.
- std::optional<E> GetEnum(std::string_view str) const {
- auto* entry = GenericEnumTableEntry::FindByString(
-- reinterpret_cast<const GenericEnumTableEntry*>(data_.begin()),
-- data_.size(), str);
-+ &data_[0], data_.size(), str);
- return entry ? static_cast<E>(entry->value) : std::optional<E>();
- }
-
-@@ -364,7 +361,7 @@ class EnumTable {
- // Align the data on a cache line boundary.
- alignas(64)
- #endif
-- std::initializer_list<Entry> data_;
-+ const std::vector<Entry> data_;
- bool is_sorted_;
-
- constexpr EnumTable(std::initializer_list<Entry> data, bool is_sorted)
-@@ -376,8 +373,8 @@ class EnumTable {
-
- for (std::size_t i = 0; i < data.size(); i++) {
- for (std::size_t j = i + 1; j < data.size(); j++) {
-- const Entry& ei = data.begin()[i];
-- const Entry& ej = data.begin()[j];
-+ const Entry& ei = data[i];
-+ const Entry& ej = data[j];
- DCHECK(ei.value != ej.value)
- << "Found duplicate enum values at indices " << i << " and " << j;
- DCHECK(!(ei.has_str() && ej.has_str() && ei.str() == ej.str()))
diff --git a/www-client/chromium/files/chromium-126-compiler-r1.patch b/www-client/chromium/files/chromium-126-compiler-r1.patch
deleted file mode 100644
index 6140453..0000000
--- a/www-client/chromium/files/chromium-126-compiler-r1.patch
+++ /dev/null
@@ -1,317 +0,0 @@
-diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
-index d39de9bc56..4b37db6c59 100644
---- a/build/config/compiler/BUILD.gn
-+++ b/build/config/compiler/BUILD.gn
-@@ -305,9 +305,6 @@ config("compiler") {
-
- configs += [
- # See the definitions below.
-- ":clang_revision",
-- ":rustc_revision",
-- ":compiler_cpu_abi",
- ":compiler_codegen",
- ":compiler_deterministic",
- ]
-@@ -483,6 +480,9 @@ config("compiler") {
- ldflags += [ "-fPIC" ]
- rustflags += [ "-Crelocation-model=pic" ]
-
-+ extra_rustflags = getenv("RUSTFLAGS")
-+ rustflags += [ extra_rustflags ]
-+
- if (!is_clang) {
- # Use pipes for communicating between sub-processes. Faster.
- # (This flag doesn't do anything with Clang.)
-@@ -545,55 +545,6 @@ config("compiler") {
- ldflags += [ "-Wl,-z,keep-text-section-prefix" ]
- }
-
-- if (is_clang && !is_nacl && current_os != "zos") {
-- cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ]
-- if (save_reproducers_on_lld_crash && use_lld) {
-- ldflags += [
-- "-fcrash-diagnostics=all",
-- "-fcrash-diagnostics-dir=" + clang_diagnostic_dir,
-- ]
-- }
--
-- # TODO(hans): Remove this once Clang generates better optimized debug info
-- # by default. https://crbug.com/765793
-- cflags += [
-- "-mllvm",
-- "-instcombine-lower-dbg-declare=0",
-- ]
-- if (!is_debug && use_thin_lto && is_a_target_toolchain) {
-- if (is_win) {
-- ldflags += [ "-mllvm:-instcombine-lower-dbg-declare=0" ]
-- } else {
-- ldflags += [ "-Wl,-mllvm,-instcombine-lower-dbg-declare=0" ]
-- }
-- }
--
-- # TODO(crbug.com/40283598): This causes binary size growth and potentially
-- # other problems.
-- # TODO(crbug.com/40284925): 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/40192287): Investigate why/if this should be needed.
-- if (is_win) {
-- cflags += [ "/clang:-ffp-contract=off" ]
-- } else {
-- cflags += [ "-ffp-contract=off" ]
-- }
-- }
--
- # C11/C++11 compiler flags setup.
- # ---------------------------
- if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) ||
-@@ -998,17 +949,6 @@ config("compiler") {
- # `-nodefaultlibs` from the linker invocation from Rust, which would be used
- # to compile dylibs on Android, such as for constructing unit test APKs.
- "-Cdefault-linker-libraries",
--
-- # To make Rust .d files compatible with ninja
-- "-Zdep-info-omit-d-target",
--
-- # If a macro panics during compilation, show which macro and where it is
-- # defined.
-- "-Zmacro-backtrace",
--
-- # For deterministic builds, keep the local machine's current working
-- # directory from appearing in build outputs.
-- "-Zremap-cwd-prefix=.",
- ]
-
- if (!is_win || force_rustc_color_output) {
-@@ -1516,46 +1456,6 @@ config("compiler_deterministic") {
- }
- }
-
-- # Makes builds independent of absolute file path.
-- if (is_clang && strip_absolute_paths_from_debug_symbols) {
-- # If debug option is given, clang includes $cwd in debug info by default.
-- # For such build, this flag generates reproducible obj files even we use
-- # different build directory like "out/feature_a" and "out/feature_b" if
-- # we build same files with same compile flag.
-- # Other paths are already given in relative, no need to normalize them.
-- if (is_nacl) {
-- # TODO(https://crbug.com/1231236): Use -ffile-compilation-dir= here.
-- cflags += [
-- "-Xclang",
-- "-fdebug-compilation-dir",
-- "-Xclang",
-- ".",
-- ]
-- } else {
-- # -ffile-compilation-dir is an alias for both -fdebug-compilation-dir=
-- # and -fcoverage-compilation-dir=.
-- cflags += [ "-ffile-compilation-dir=." ]
-- swiftflags += [ "-file-compilation-dir=." ]
-- }
-- if (!is_win) {
-- # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167)
-- asmflags = [ "-Wa,-fdebug-compilation-dir,." ]
-- }
--
-- if (is_win && use_lld) {
-- if (symbol_level == 2 || (is_clang && using_sanitizer)) {
-- # Absolutize source file paths for PDB. Pass the real build directory
-- # if the pdb contains source-level debug information and if linker
-- # reproducibility is not critical.
-- ldflags += [ "/PDBSourcePath:" + rebase_path(root_build_dir) ]
-- } else {
-- # Use a fake fixed base directory for paths in the pdb to make the pdb
-- # output fully deterministic and independent of the build directory.
-- ldflags += [ "/PDBSourcePath:o:\fake\prefix" ]
-- }
-- }
-- }
--
- # Tells the compiler not to use absolute paths when passing the default
- # paths to the tools it invokes. We don't want this because we don't
- # really need it and it can mess up the RBE cache entries.
-@@ -1574,39 +1474,6 @@ config("compiler_deterministic") {
- }
- }
-
--config("clang_revision") {
-- if (is_clang && clang_base_path == default_clang_base_path) {
-- update_args = [
-- "--print-revision",
-- "--verify-version=$clang_version",
-- ]
-- if (llvm_force_head_revision) {
-- update_args += [ "--llvm-force-head-revision" ]
-- }
-- clang_revision = exec_script("//tools/clang/scripts/update.py",
-- update_args,
-- "trim string")
--
-- # This is here so that all files get recompiled after a clang roll and
-- # when turning clang on or off. (defines are passed via the command line,
-- # and build system rebuild things when their commandline changes). Nothing
-- # should ever read this define.
-- defines = [ "CR_CLANG_REVISION=\"$clang_revision\"" ]
-- }
--}
--
--config("rustc_revision") {
-- if (rustc_revision != "") {
-- # Similar to the above config, this is here so that all files get recompiled
-- # after a rustc roll. Nothing should ever read this cfg. This will not be
-- # set if a custom toolchain is used.
-- rustflags = [
-- "--cfg",
-- "cr_rustc_revision=\"$rustc_revision\"",
-- ]
-- }
--}
--
- config("compiler_arm_fpu") {
- if (current_cpu == "arm" && !is_ios && !is_nacl) {
- cflags = [ "-mfpu=$arm_fpu" ]
-@@ -1982,11 +1849,7 @@ config("chromium_code") {
- defines = [ "_HAS_NODISCARD" ]
- }
- } else {
-- cflags = [ "-Wall" ]
-- if (is_clang) {
-- # Enable extra warnings for chromium_code when we control the compiler.
-- cflags += [ "-Wextra" ]
-- }
-+ cflags = [ ]
-
- # In Chromium code, we define __STDC_foo_MACROS in order to get the
- # C99 macros on Mac and Linux.
-@@ -1995,24 +1858,6 @@ config("chromium_code") {
- "__STDC_FORMAT_MACROS",
- ]
-
-- if (!is_debug && !using_sanitizer && current_cpu != "s390x" &&
-- current_cpu != "s390" && current_cpu != "ppc64" &&
-- current_cpu != "mips" && current_cpu != "mips64" &&
-- current_cpu != "riscv64" && current_cpu != "loong64") {
-- # Non-chromium code is not guaranteed to compile cleanly with
-- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are
-- # disabled, so only do that for Release build.
-- fortify_level = "2"
--
-- # ChromeOS's toolchain supports a high-quality _FORTIFY_SOURCE=3
-- # implementation with a few custom glibc patches. Use that if it's
-- # available.
-- if (is_chromeos_device && !lacros_use_chromium_toolchain) {
-- fortify_level = "3"
-- }
-- defines += [ "_FORTIFY_SOURCE=" + fortify_level ]
-- }
--
- if (is_apple) {
- cflags_objc = [ "-Wimplicit-retain-self" ]
- cflags_objcc = [ "-Wimplicit-retain-self" ]
-@@ -2402,7 +2247,8 @@ config("default_stack_frames") {
- # [0]: https://pinpoint-dot-chromeperf.appspot.com/job/147634a8be0000
- # [1]: https://pinpoint-dot-chromeperf.appspot.com/job/132bc772be0000
- # [2]: https://crrev.com/c/5447532
--config("optimize") {
-+config("optimize") { }
-+config("xoptimize") {
- if (is_win) {
- cflags = [ "/O2" ] + common_optimize_on_cflags
-
-@@ -2443,7 +2289,8 @@ config("optimize") {
- }
-
- # Turn off optimizations.
--config("no_optimize") {
-+config("no_optimize") { }
-+config("xno_optimize") {
- if (is_win) {
- cflags = [
- "/Od", # Disable optimization.
-@@ -2483,7 +2330,8 @@ config("no_optimize") {
- # Turns up the optimization level. Used to explicitly enable -O2 instead of
- # -Os for select targets on platforms that use optimize_for_size. No-op
- # elsewhere.
--config("optimize_max") {
-+config("optimize_max") { }
-+config("xoptimize_max") {
- if (is_nacl && is_nacl_irt) {
- # The NaCl IRT is a special case and always wants its own config.
- # Various components do:
-@@ -2516,7 +2364,8 @@ config("optimize_max") {
- #
- # TODO(crbug.com/41259697) - rework how all of these configs are related
- # so that we don't need this disclaimer.
--config("optimize_speed") {
-+config("optimize_speed") { }
-+config("xoptimize_speed") {
- if (is_nacl && is_nacl_irt) {
- # The NaCl IRT is a special case and always wants its own config.
- # Various components do:
-@@ -2545,7 +2394,8 @@ config("optimize_speed") {
- }
- }
-
--config("optimize_fuzzing") {
-+config("optimize_fuzzing") { }
-+config("xoptimize_fuzzing") {
- cflags = [ "-O1" ] + common_optimize_on_cflags
- rustflags = [ "-Copt-level=1" ]
- ldflags = common_optimize_on_ldflags
-@@ -2678,7 +2528,8 @@ config("win_pdbaltpath") {
- }
-
- # Full symbols.
--config("symbols") {
-+config("symbols") { }
-+config("xsymbols") {
- rustflags = []
- if (is_win) {
- if (is_clang) {
-@@ -2828,7 +2679,8 @@ config("symbols") {
- # Minimal symbols.
- # This config guarantees to hold symbol for stack trace which are shown to user
- # when crash happens in unittests running on buildbot.
--config("minimal_symbols") {
-+config("minimal_symbols") { }
-+config("xminimal_symbols") {
- rustflags = []
- if (is_win) {
- # Functions, files, and line tables only.
-@@ -2913,7 +2765,8 @@ config("minimal_symbols") {
- # This configuration contains function names only. That is, the compiler is
- # told to not generate debug information and the linker then just puts function
- # names in the final debug information.
--config("no_symbols") {
-+config("no_symbols") { }
-+config("xno_symbols") {
- if (is_win) {
- ldflags = [ "/DEBUG" ]
-
-diff --git a/build/config/rust.gni b/build/config/rust.gni
-index e99d7d08e1..898b3e6630 100644
---- a/build/config/rust.gni
-+++ b/build/config/rust.gni
-@@ -75,7 +75,8 @@ declare_args() {
- #
- # TODO(crbug.com/40281834): Re-enable ThinLTO for Rust on LaCrOS
- # TODO(b/300937673): Re-enable ThinLTO for Rust on ash-chrome
-- toolchain_supports_rust_thin_lto = !is_chromeos
-+ # toolchain_supports_rust_thin_lto = !is_chromeos
-+ toolchain_supports_rust_thin_lto = false
-
- # Any extra std rlibs in your Rust toolchain, relative to the standard
- # Rust toolchain. Typically used with 'rust_sysroot_absolute'
diff --git a/www-client/chromium/files/chromium-126-compiler.patch b/www-client/chromium/files/chromium-126-compiler.patch
deleted file mode 100644
index d93c82a..0000000
--- a/www-client/chromium/files/chromium-126-compiler.patch
+++ /dev/null
@@ -1,317 +0,0 @@
-diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
-index 973d8bcbd2..9be41363ff 100644
---- a/build/config/compiler/BUILD.gn
-+++ b/build/config/compiler/BUILD.gn
-@@ -319,9 +319,6 @@ config("compiler") {
-
- configs += [
- # See the definitions below.
-- ":clang_revision",
-- ":rustc_revision",
-- ":compiler_cpu_abi",
- ":compiler_codegen",
- ":compiler_deterministic",
- ]
-@@ -496,6 +493,9 @@ config("compiler") {
- ldflags += [ "-fPIC" ]
- rustflags += [ "-Crelocation-model=pic" ]
-
-+ extra_rustflags = getenv("RUSTFLAGS")
-+ rustflags += [ extra_rustflags ]
-+
- if (!is_clang) {
- # Use pipes for communicating between sub-processes. Faster.
- # (This flag doesn't do anything with Clang.)
-@@ -587,55 +587,6 @@ config("compiler") {
- ldflags += [ "-Wl,-z,keep-text-section-prefix" ]
- }
-
-- if (is_clang && !is_nacl && current_os != "zos") {
-- cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ]
-- if (save_reproducers_on_lld_crash && use_lld) {
-- ldflags += [
-- "-fcrash-diagnostics=all",
-- "-fcrash-diagnostics-dir=" + clang_diagnostic_dir,
-- ]
-- }
--
-- # TODO(hans): Remove this once Clang generates better optimized debug info
-- # by default. https://crbug.com/765793
-- cflags += [
-- "-mllvm",
-- "-instcombine-lower-dbg-declare=0",
-- ]
-- if (!is_debug && use_thin_lto && is_a_target_toolchain) {
-- if (is_win) {
-- ldflags += [ "-mllvm:-instcombine-lower-dbg-declare=0" ]
-- } else {
-- ldflags += [ "-Wl,-mllvm,-instcombine-lower-dbg-declare=0" ]
-- }
-- }
--
-- # 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" ]
-- } else {
-- cflags += [ "-ffp-contract=off" ]
-- }
-- }
--
- # C11/C++11 compiler flags setup.
- # ---------------------------
- if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) ||
-@@ -1023,17 +974,6 @@ config("compiler") {
- # `-nodefaultlibs` from the linker invocation from Rust, which would be used
- # to compile dylibs on Android, such as for constructing unit test APKs.
- "-Cdefault-linker-libraries",
--
-- # To make Rust .d files compatible with ninja
-- "-Zdep-info-omit-d-target",
--
-- # If a macro panics during compilation, show which macro and where it is
-- # defined.
-- "-Zmacro-backtrace",
--
-- # For deterministic builds, keep the local machine's current working
-- # directory from appearing in build outputs.
-- "-Zremap-cwd-prefix=.",
- ]
-
- if (!is_win || force_rustc_color_output) {
-@@ -1541,46 +1481,6 @@ config("compiler_deterministic") {
- }
- }
-
-- # Makes builds independent of absolute file path.
-- if (is_clang && strip_absolute_paths_from_debug_symbols) {
-- # If debug option is given, clang includes $cwd in debug info by default.
-- # For such build, this flag generates reproducible obj files even we use
-- # different build directory like "out/feature_a" and "out/feature_b" if
-- # we build same files with same compile flag.
-- # Other paths are already given in relative, no need to normalize them.
-- if (is_nacl) {
-- # TODO(https://crbug.com/1231236): Use -ffile-compilation-dir= here.
-- cflags += [
-- "-Xclang",
-- "-fdebug-compilation-dir",
-- "-Xclang",
-- ".",
-- ]
-- } else {
-- # -ffile-compilation-dir is an alias for both -fdebug-compilation-dir=
-- # and -fcoverage-compilation-dir=.
-- cflags += [ "-ffile-compilation-dir=." ]
-- swiftflags += [ "-file-compilation-dir=." ]
-- }
-- if (!is_win) {
-- # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167)
-- asmflags = [ "-Wa,-fdebug-compilation-dir,." ]
-- }
--
-- if (is_win && use_lld) {
-- if (symbol_level == 2 || (is_clang && using_sanitizer)) {
-- # Absolutize source file paths for PDB. Pass the real build directory
-- # if the pdb contains source-level debug information and if linker
-- # reproducibility is not critical.
-- ldflags += [ "/PDBSourcePath:" + rebase_path(root_build_dir) ]
-- } else {
-- # Use a fake fixed base directory for paths in the pdb to make the pdb
-- # output fully deterministic and independent of the build directory.
-- ldflags += [ "/PDBSourcePath:o:\fake\prefix" ]
-- }
-- }
-- }
--
- # Tells the compiler not to use absolute paths when passing the default
- # paths to the tools it invokes. We don't want this because we don't
- # really need it and it can mess up the RBE cache entries.
-@@ -1599,39 +1499,6 @@ config("compiler_deterministic") {
- }
- }
-
--config("clang_revision") {
-- if (is_clang && clang_base_path == default_clang_base_path) {
-- update_args = [
-- "--print-revision",
-- "--verify-version=$clang_version",
-- ]
-- if (llvm_force_head_revision) {
-- update_args += [ "--llvm-force-head-revision" ]
-- }
-- clang_revision = exec_script("//tools/clang/scripts/update.py",
-- update_args,
-- "trim string")
--
-- # This is here so that all files get recompiled after a clang roll and
-- # when turning clang on or off. (defines are passed via the command line,
-- # and build system rebuild things when their commandline changes). Nothing
-- # should ever read this define.
-- defines = [ "CR_CLANG_REVISION=\"$clang_revision\"" ]
-- }
--}
--
--config("rustc_revision") {
-- if (rustc_revision != "") {
-- # Similar to the above config, this is here so that all files get recompiled
-- # after a rustc roll. Nothing should ever read this cfg. This will not be
-- # set if a custom toolchain is used.
-- rustflags = [
-- "--cfg",
-- "cr_rustc_revision=\"$rustc_revision\"",
-- ]
-- }
--}
--
- config("compiler_arm_fpu") {
- if (current_cpu == "arm" && !is_ios && !is_nacl) {
- cflags = [ "-mfpu=$arm_fpu" ]
-@@ -2007,11 +1874,7 @@ config("chromium_code") {
- defines = [ "_HAS_NODISCARD" ]
- }
- } else {
-- cflags = [ "-Wall" ]
-- if (is_clang) {
-- # Enable extra warnings for chromium_code when we control the compiler.
-- cflags += [ "-Wextra" ]
-- }
-+ cflags = [ ]
-
- # In Chromium code, we define __STDC_foo_MACROS in order to get the
- # C99 macros on Mac and Linux.
-@@ -2020,24 +1883,6 @@ config("chromium_code") {
- "__STDC_FORMAT_MACROS",
- ]
-
-- if (!is_debug && !using_sanitizer && current_cpu != "s390x" &&
-- current_cpu != "s390" && current_cpu != "ppc64" &&
-- current_cpu != "mips" && current_cpu != "mips64" &&
-- current_cpu != "riscv64" && current_cpu != "loong64") {
-- # Non-chromium code is not guaranteed to compile cleanly with
-- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are
-- # disabled, so only do that for Release build.
-- fortify_level = "2"
--
-- # ChromeOS's toolchain supports a high-quality _FORTIFY_SOURCE=3
-- # implementation with a few custom glibc patches. Use that if it's
-- # available.
-- if (is_chromeos_device && !lacros_use_chromium_toolchain) {
-- fortify_level = "3"
-- }
-- defines += [ "_FORTIFY_SOURCE=" + fortify_level ]
-- }
--
- if (is_apple) {
- cflags_objc = [ "-Wimplicit-retain-self" ]
- cflags_objcc = [ "-Wimplicit-retain-self" ]
-@@ -2427,7 +2272,8 @@ config("default_stack_frames") {
- # [0]: https://pinpoint-dot-chromeperf.appspot.com/job/147634a8be0000
- # [1]: https://pinpoint-dot-chromeperf.appspot.com/job/132bc772be0000
- # [2]: https://crrev.com/c/5447532
--config("optimize") {
-+config("optimize") { }
-+config("xoptimize") {
- if (is_win) {
- cflags = [ "/O2" ] + common_optimize_on_cflags
-
-@@ -2468,7 +2314,8 @@ config("optimize") {
- }
-
- # Turn off optimizations.
--config("no_optimize") {
-+config("no_optimize") { }
-+config("xno_optimize") {
- if (is_win) {
- cflags = [
- "/Od", # Disable optimization.
-@@ -2508,7 +2355,8 @@ config("no_optimize") {
- # Turns up the optimization level. Used to explicitly enable -O2 instead of
- # -Os for select targets on platforms that use optimize_for_size. No-op
- # elsewhere.
--config("optimize_max") {
-+config("optimize_max") { }
-+config("xoptimize_max") {
- if (is_nacl && is_nacl_irt) {
- # The NaCl IRT is a special case and always wants its own config.
- # Various components do:
-@@ -2541,7 +2389,8 @@ config("optimize_max") {
- #
- # TODO(crbug.com/621335) - rework how all of these configs are related
- # so that we don't need this disclaimer.
--config("optimize_speed") {
-+config("optimize_speed") { }
-+config("xoptimize_speed") {
- if (is_nacl && is_nacl_irt) {
- # The NaCl IRT is a special case and always wants its own config.
- # Various components do:
-@@ -2570,7 +2419,8 @@ config("optimize_speed") {
- }
- }
-
--config("optimize_fuzzing") {
-+config("optimize_fuzzing") { }
-+config("xoptimize_fuzzing") {
- cflags = [ "-O1" ] + common_optimize_on_cflags
- rustflags = [ "-Copt-level=1" ]
- ldflags = common_optimize_on_ldflags
-@@ -2703,7 +2553,8 @@ config("win_pdbaltpath") {
- }
-
- # Full symbols.
--config("symbols") {
-+config("symbols") { }
-+config("xsymbols") {
- rustflags = []
- if (is_win) {
- if (is_clang) {
-@@ -2852,7 +2703,8 @@ config("symbols") {
- # Minimal symbols.
- # This config guarantees to hold symbol for stack trace which are shown to user
- # when crash happens in unittests running on buildbot.
--config("minimal_symbols") {
-+config("minimal_symbols") { }
-+config("xminimal_symbols") {
- rustflags = []
- if (is_win) {
- # Functions, files, and line tables only.
-@@ -2937,7 +2789,8 @@ config("minimal_symbols") {
- # This configuration contains function names only. That is, the compiler is
- # told to not generate debug information and the linker then just puts function
- # names in the final debug information.
--config("no_symbols") {
-+config("no_symbols") { }
-+config("xno_symbols") {
- if (is_win) {
- ldflags = [ "/DEBUG" ]
-
-diff --git a/build/config/rust.gni b/build/config/rust.gni
-index 59fa14463b..ca780602b4 100644
---- a/build/config/rust.gni
-+++ b/build/config/rust.gni
-@@ -75,7 +75,8 @@ declare_args() {
- #
- # TODO(https://crbug.com/1482525): Re-enable ThinLTO for Rust on LaCrOS
- # TODO(b/300937673): Re-enable ThinLTO for Rust on ash-chrome
-- toolchain_supports_rust_thin_lto = !is_chromeos
-+ # toolchain_supports_rust_thin_lto = !is_chromeos
-+ toolchain_supports_rust_thin_lto = false
-
- # Any extra std rlibs in your Rust toolchain, relative to the standard
- # Rust toolchain. Typically used with 'rust_sysroot_absolute'
diff --git a/www-client/chromium/files/chromium-126-use-oauth2-client-switches-as-default-r1.patch b/www-client/chromium/files/chromium-126-use-oauth2-client-switches-as-default-r1.patch
deleted file mode 100644
index cd39907..0000000
--- a/www-client/chromium/files/chromium-126-use-oauth2-client-switches-as-default-r1.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff --git a/google_apis/google_api_keys-inc.cc b/google_apis/google_api_keys-inc.cc
-index 4d13e697a5..61aac7b486 100644
---- a/google_apis/google_api_keys-inc.cc
-+++ b/google_apis/google_api_keys-inc.cc
-@@ -193,11 +193,11 @@ class APIKeyCache {
- std::string default_client_id = CalculateKeyValue(
- GOOGLE_DEFAULT_CLIENT_ID,
- STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_ID), std::string(),
-- nullptr, std::string(), environment.get(), command_line, gaia_config);
-+ ::switches::kOAuth2ClientID, std::string(), environment.get(), command_line, gaia_config);
- std::string default_client_secret = CalculateKeyValue(
- GOOGLE_DEFAULT_CLIENT_SECRET,
- STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_SECRET), std::string(),
-- nullptr, std::string(), environment.get(), command_line, gaia_config);
-+ ::switches::kOAuth2ClientSecret, std::string(), environment.get(), command_line, gaia_config);
-
- // We currently only allow overriding the baked-in values for the
- // default OAuth2 client ID and secret using a command-line
diff --git a/www-client/chromium/files/chromium-126-use-oauth2-client-switches-as-default.patch b/www-client/chromium/files/chromium-126-use-oauth2-client-switches-as-default.patch
deleted file mode 100644
index dd7a643..0000000
--- a/www-client/chromium/files/chromium-126-use-oauth2-client-switches-as-default.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff --git a/google_apis/google_api_keys-inc.cc b/google_apis/google_api_keys-inc.cc
-index 49c396d69d..9493e7e5aa 100644
---- a/google_apis/google_api_keys-inc.cc
-+++ b/google_apis/google_api_keys-inc.cc
-@@ -182,11 +182,11 @@ class APIKeyCache {
-
- std::string default_client_id = CalculateKeyValue(
- GOOGLE_DEFAULT_CLIENT_ID,
-- STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_ID), nullptr,
-+ STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_ID), ::switches::kOAuth2ClientID,
- std::string(), environment.get(), command_line, gaia_config);
- std::string default_client_secret = CalculateKeyValue(
- GOOGLE_DEFAULT_CLIENT_SECRET,
-- STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_SECRET), nullptr,
-+ STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_SECRET), ::switches::kOAuth2ClientSecret,
- std::string(), environment.get(), command_line, gaia_config);
-
- // We currently only allow overriding the baked-in values for the
diff --git a/www-client/chromium/files/chromium-127-bindgen-include-temporary.patch b/www-client/chromium/files/chromium-127-bindgen-include-temporary.patch
deleted file mode 100644
index 570cce8..0000000
--- a/www-client/chromium/files/chromium-127-bindgen-include-temporary.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/build/rust/rust_bindgen.gni b/build/rust/rust_bindgen.gni
-index bf110ca93c..654ddf5f0b 100644
---- a/build/rust/rust_bindgen.gni
-+++ b/build/rust/rust_bindgen.gni
-@@ -152,6 +152,8 @@ template("rust_bindgen") {
- clang_resource_dir,
- ]
-
-+ args += [ "-I" + rebase_path(sysroot + "/usr/lib/clang/17/include/", root_build_dir) ]
-+
- # The `--sysroot` flag is not working as expected and gets ignored (we don't
- # fully understand why, see b/328510249). But we add `-isystem` to point at
- # the headers in the sysroot which are otherwise not found.
diff --git a/www-client/chromium/files/chromium-128-compiler-r1.patch b/www-client/chromium/files/chromium-128-compiler-r1.patch
deleted file mode 100644
index fa0fc5c..0000000
--- a/www-client/chromium/files/chromium-128-compiler-r1.patch
+++ /dev/null
@@ -1,324 +0,0 @@
-diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
-index eb329bc88f..145343f6ec 100644
---- a/build/config/compiler/BUILD.gn
-+++ b/build/config/compiler/BUILD.gn
-@@ -305,9 +305,6 @@ config("compiler") {
-
- configs += [
- # See the definitions below.
-- ":clang_revision",
-- ":rustc_revision",
-- ":compiler_cpu_abi",
- ":compiler_codegen",
- ":compiler_deterministic",
- ]
-@@ -487,6 +484,9 @@ config("compiler") {
- ldflags += [ "-fPIC" ]
- rustflags += [ "-Crelocation-model=pic" ]
-
-+ extra_rustflags = getenv("RUSTFLAGS")
-+ rustflags += [ extra_rustflags ]
-+
- if (!is_clang) {
- # Use pipes for communicating between sub-processes. Faster.
- # (This flag doesn't do anything with Clang.)
-@@ -556,55 +556,6 @@ config("compiler") {
- ldflags += [ "-Wl,-z,keep-text-section-prefix" ]
- }
-
-- if (is_clang && !is_nacl) {
-- cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ]
-- if (save_reproducers_on_lld_crash && use_lld) {
-- ldflags += [
-- "-fcrash-diagnostics=all",
-- "-fcrash-diagnostics-dir=" + clang_diagnostic_dir,
-- ]
-- }
--
-- # TODO(hans): Remove this once Clang generates better optimized debug info
-- # by default. https://crbug.com/765793
-- cflags += [
-- "-mllvm",
-- "-instcombine-lower-dbg-declare=0",
-- ]
-- if (!is_debug && use_thin_lto && is_a_target_toolchain) {
-- if (is_win) {
-- ldflags += [ "-mllvm:-instcombine-lower-dbg-declare=0" ]
-- } else {
-- ldflags += [ "-Wl,-mllvm,-instcombine-lower-dbg-declare=0" ]
-- }
-- }
--
-- # TODO(crbug.com/40283598): This causes binary size growth and potentially
-- # other problems.
-- # TODO(crbug.com/40284925): 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/40192287): Investigate why/if this should be needed.
-- if (is_win) {
-- cflags += [ "/clang:-ffp-contract=off" ]
-- } else {
-- cflags += [ "-ffp-contract=off" ]
-- }
-- }
--
- # C11/C++11 compiler flags setup.
- # ---------------------------
- if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) ||
-@@ -1012,17 +963,6 @@ config("compiler") {
- # `-nodefaultlibs` from the linker invocation from Rust, which would be used
- # to compile dylibs on Android, such as for constructing unit test APKs.
- "-Cdefault-linker-libraries",
--
-- # To make Rust .d files compatible with ninja
-- "-Zdep-info-omit-d-target",
--
-- # If a macro panics during compilation, show which macro and where it is
-- # defined.
-- "-Zmacro-backtrace",
--
-- # For deterministic builds, keep the local machine's current working
-- # directory from appearing in build outputs.
-- "-Zremap-cwd-prefix=.",
- ]
-
- if (!is_win || force_rustc_color_output) {
-@@ -1540,52 +1480,6 @@ config("compiler_deterministic") {
- }
- }
-
-- # Makes builds independent of absolute file path.
-- if (is_clang && strip_absolute_paths_from_debug_symbols) {
-- # If debug option is given, clang includes $cwd in debug info by default.
-- # For such build, this flag generates reproducible obj files even we use
-- # different build directory like "out/feature_a" and "out/feature_b" if
-- # we build same files with same compile flag.
-- # Other paths are already given in relative, no need to normalize them.
-- if (is_nacl) {
-- # TODO(https://crbug.com/1231236): Use -ffile-compilation-dir= here.
-- cflags += [
-- "-Xclang",
-- "-fdebug-compilation-dir",
-- "-Xclang",
-- ".",
-- ]
-- } else {
-- # -ffile-compilation-dir is an alias for both -fdebug-compilation-dir=
-- # and -fcoverage-compilation-dir=.
-- cflags += [ "-ffile-compilation-dir=." ]
--
-- # Convert absolute paths to relative paths. Expands to, for example:
-- # -file-prefix-map /path/to/chromium/src=../..
-- swiftflags += [
-- "-file-prefix-map",
-- rebase_path("//.", "") + "=" + rebase_path("//.", root_build_dir),
-- ]
-- }
-- if (!is_win) {
-- # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167)
-- asmflags = [ "-Wa,-fdebug-compilation-dir,." ]
-- }
--
-- if (is_win && use_lld) {
-- if (symbol_level == 2 || (is_clang && using_sanitizer)) {
-- # Absolutize source file paths for PDB. Pass the real build directory
-- # if the pdb contains source-level debug information and if linker
-- # reproducibility is not critical.
-- ldflags += [ "/PDBSourcePath:" + rebase_path(root_build_dir) ]
-- } else {
-- # Use a fake fixed base directory for paths in the pdb to make the pdb
-- # output fully deterministic and independent of the build directory.
-- ldflags += [ "/PDBSourcePath:o:\fake\prefix" ]
-- }
-- }
-- }
--
- # Tells the compiler not to use absolute paths when passing the default
- # paths to the tools it invokes. We don't want this because we don't
- # really need it and it can mess up the RBE cache entries.
-@@ -1604,40 +1498,6 @@ config("compiler_deterministic") {
- }
- }
-
--config("clang_revision") {
-- if (is_clang && clang_base_path == default_clang_base_path &&
-- current_os != "zos") {
-- update_args = [
-- "--print-revision",
-- "--verify-version=$clang_version",
-- ]
-- if (llvm_force_head_revision) {
-- update_args += [ "--llvm-force-head-revision" ]
-- }
-- clang_revision = exec_script("//tools/clang/scripts/update.py",
-- update_args,
-- "trim string")
--
-- # This is here so that all files get recompiled after a clang roll and
-- # when turning clang on or off. (defines are passed via the command line,
-- # and build system rebuild things when their commandline changes). Nothing
-- # should ever read this define.
-- defines = [ "CR_CLANG_REVISION=\"$clang_revision\"" ]
-- }
--}
--
--config("rustc_revision") {
-- if (rustc_revision != "") {
-- # Similar to the above config, this is here so that all files get recompiled
-- # after a rustc roll. Nothing should ever read this cfg. This will not be
-- # set if a custom toolchain is used.
-- rustflags = [
-- "--cfg",
-- "cr_rustc_revision=\"$rustc_revision\"",
-- ]
-- }
--}
--
- config("compiler_arm_fpu") {
- if (current_cpu == "arm" && !is_ios && !is_nacl) {
- cflags = [ "-mfpu=$arm_fpu" ]
-@@ -2034,11 +1894,7 @@ config("chromium_code") {
- defines = [ "_HAS_NODISCARD" ]
- }
- } else {
-- cflags = [ "-Wall" ]
-- if (is_clang) {
-- # Enable extra warnings for chromium_code when we control the compiler.
-- cflags += [ "-Wextra" ]
-- }
-+ cflags = [ ]
-
- # In Chromium code, we define __STDC_foo_MACROS in order to get the
- # C99 macros on Mac and Linux.
-@@ -2047,24 +1903,6 @@ config("chromium_code") {
- "__STDC_FORMAT_MACROS",
- ]
-
-- if (!is_debug && !using_sanitizer && current_cpu != "s390x" &&
-- current_cpu != "s390" && current_cpu != "ppc64" &&
-- current_cpu != "mips" && current_cpu != "mips64" &&
-- current_cpu != "riscv64" && current_cpu != "loong64") {
-- # Non-chromium code is not guaranteed to compile cleanly with
-- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are
-- # disabled, so only do that for Release build.
-- fortify_level = "2"
--
-- # ChromeOS's toolchain supports a high-quality _FORTIFY_SOURCE=3
-- # implementation with a few custom glibc patches. Use that if it's
-- # available.
-- if (is_chromeos_device && !lacros_use_chromium_toolchain) {
-- fortify_level = "3"
-- }
-- defines += [ "_FORTIFY_SOURCE=" + fortify_level ]
-- }
--
- if (is_apple) {
- cflags_objc = [ "-Wimplicit-retain-self" ]
- cflags_objcc = [ "-Wimplicit-retain-self" ]
-@@ -2457,7 +2295,8 @@ config("default_stack_frames") {
- # [0]: https://pinpoint-dot-chromeperf.appspot.com/job/147634a8be0000
- # [1]: https://pinpoint-dot-chromeperf.appspot.com/job/132bc772be0000
- # [2]: https://crrev.com/c/5447532
--config("optimize") {
-+config("optimize") { }
-+config("xoptimize") {
- if (is_win) {
- # clang-cl's /O2 corresponds to clang's -O3, and really want -O2 for
- # consistency with the other platforms.
-@@ -2503,7 +2342,8 @@ config("optimize") {
- }
-
- # Turn off optimizations.
--config("no_optimize") {
-+config("no_optimize") { }
-+config("xno_optimize") {
- if (is_win) {
- cflags = [
- "/Od", # Disable optimization.
-@@ -2543,7 +2383,8 @@ config("no_optimize") {
- # Turns up the optimization level. Used to explicitly enable -O2 instead of
- # -Os for select targets on platforms that use optimize_for_size. No-op
- # elsewhere.
--config("optimize_max") {
-+config("optimize_max") { }
-+config("xoptimize_max") {
- if (is_nacl && is_nacl_irt) {
- # The NaCl IRT is a special case and always wants its own config.
- # Various components do:
-@@ -2576,7 +2417,8 @@ config("optimize_max") {
- #
- # TODO(crbug.com/41259697) - rework how all of these configs are related
- # so that we don't need this disclaimer.
--config("optimize_speed") {
-+config("optimize_speed") { }
-+config("xoptimize_speed") {
- if (is_nacl && is_nacl_irt) {
- # The NaCl IRT is a special case and always wants its own config.
- # Various components do:
-@@ -2605,7 +2447,8 @@ config("optimize_speed") {
- }
- }
-
--config("optimize_fuzzing") {
-+config("optimize_fuzzing") { }
-+config("xoptimize_fuzzing") {
- cflags = [ "-O1" ] + common_optimize_on_cflags
- rustflags = [ "-Copt-level=1" ]
- ldflags = common_optimize_on_ldflags
-@@ -2736,7 +2579,8 @@ config("win_pdbaltpath") {
- }
-
- # Full symbols.
--config("symbols") {
-+config("symbols") { }
-+config("xsymbols") {
- rustflags = []
- if (is_win) {
- if (is_clang) {
-@@ -2886,7 +2730,8 @@ config("symbols") {
- # Minimal symbols.
- # This config guarantees to hold symbol for stack trace which are shown to user
- # when crash happens in unittests running on buildbot.
--config("minimal_symbols") {
-+config("minimal_symbols") { }
-+config("xminimal_symbols") {
- rustflags = []
- if (is_win) {
- # Functions, files, and line tables only.
-@@ -2971,7 +2816,8 @@ config("minimal_symbols") {
- # This configuration contains function names only. That is, the compiler is
- # told to not generate debug information and the linker then just puts function
- # names in the final debug information.
--config("no_symbols") {
-+config("no_symbols") { }
-+config("xno_symbols") {
- if (is_win) {
- ldflags = [ "/DEBUG" ]
-
-diff --git a/build/config/rust.gni b/build/config/rust.gni
-index fd4c683442..20c9e4c901 100644
---- a/build/config/rust.gni
-+++ b/build/config/rust.gni
-@@ -79,7 +79,8 @@ declare_args() {
- #
- # TODO(crbug.com/40281834): Re-enable ThinLTO for Rust on LaCrOS
- # TODO(b/300937673): Re-enable ThinLTO for Rust on ash-chrome
-- toolchain_supports_rust_thin_lto = !is_chromeos
-+ # toolchain_supports_rust_thin_lto = !is_chromeos
-+ toolchain_supports_rust_thin_lto = false
-
- # Any extra std rlibs in your Rust toolchain, relative to the standard
- # Rust toolchain. Typically used with 'rust_sysroot_absolute'
diff --git a/www-client/chromium/files/chromium-128-compiler.patch b/www-client/chromium/files/chromium-128-compiler.patch
deleted file mode 100644
index 688f928..0000000
--- a/www-client/chromium/files/chromium-128-compiler.patch
+++ /dev/null
@@ -1,317 +0,0 @@
-diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
-index 1d2c6e0..9d7e9c0 100644
---- a/build/config/compiler/BUILD.gn
-+++ b/build/config/compiler/BUILD.gn
-@@ -305,9 +305,6 @@ config("compiler") {
-
- configs += [
- # See the definitions below.
-- ":clang_revision",
-- ":rustc_revision",
-- ":compiler_cpu_abi",
- ":compiler_codegen",
- ":compiler_deterministic",
- ]
-@@ -487,6 +484,9 @@ config("compiler") {
- ldflags += [ "-fPIC" ]
- rustflags += [ "-Crelocation-model=pic" ]
-
-+ extra_rustflags = getenv("RUSTFLAGS")
-+ rustflags += [ extra_rustflags ]
-+
- if (!is_clang) {
- # Use pipes for communicating between sub-processes. Faster.
- # (This flag doesn't do anything with Clang.)
-@@ -556,55 +556,6 @@ config("compiler") {
- ldflags += [ "-Wl,-z,keep-text-section-prefix" ]
- }
-
-- if (is_clang && !is_nacl && current_os != "zos") {
-- cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ]
-- if (save_reproducers_on_lld_crash && use_lld) {
-- ldflags += [
-- "-fcrash-diagnostics=all",
-- "-fcrash-diagnostics-dir=" + clang_diagnostic_dir,
-- ]
-- }
--
-- # TODO(hans): Remove this once Clang generates better optimized debug info
-- # by default. https://crbug.com/765793
-- cflags += [
-- "-mllvm",
-- "-instcombine-lower-dbg-declare=0",
-- ]
-- if (!is_debug && use_thin_lto && is_a_target_toolchain) {
-- if (is_win) {
-- ldflags += [ "-mllvm:-instcombine-lower-dbg-declare=0" ]
-- } else {
-- ldflags += [ "-Wl,-mllvm,-instcombine-lower-dbg-declare=0" ]
-- }
-- }
--
-- # TODO(crbug.com/40283598): This causes binary size growth and potentially
-- # other problems.
-- # TODO(crbug.com/40284925): 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/40192287): Investigate why/if this should be needed.
-- if (is_win) {
-- cflags += [ "/clang:-ffp-contract=off" ]
-- } else {
-- cflags += [ "-ffp-contract=off" ]
-- }
-- }
--
- # C11/C++11 compiler flags setup.
- # ---------------------------
- if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) ||
-@@ -1014,17 +965,6 @@ config("compiler") {
- # `-nodefaultlibs` from the linker invocation from Rust, which would be used
- # to compile dylibs on Android, such as for constructing unit test APKs.
- "-Cdefault-linker-libraries",
--
-- # To make Rust .d files compatible with ninja
-- "-Zdep-info-omit-d-target",
--
-- # If a macro panics during compilation, show which macro and where it is
-- # defined.
-- "-Zmacro-backtrace",
--
-- # For deterministic builds, keep the local machine's current working
-- # directory from appearing in build outputs.
-- "-Zremap-cwd-prefix=.",
- ]
-
- if (!is_win || force_rustc_color_output) {
-@@ -1542,46 +1482,6 @@ config("compiler_deterministic") {
- }
- }
-
-- # Makes builds independent of absolute file path.
-- if (is_clang && strip_absolute_paths_from_debug_symbols) {
-- # If debug option is given, clang includes $cwd in debug info by default.
-- # For such build, this flag generates reproducible obj files even we use
-- # different build directory like "out/feature_a" and "out/feature_b" if
-- # we build same files with same compile flag.
-- # Other paths are already given in relative, no need to normalize them.
-- if (is_nacl) {
-- # TODO(https://crbug.com/1231236): Use -ffile-compilation-dir= here.
-- cflags += [
-- "-Xclang",
-- "-fdebug-compilation-dir",
-- "-Xclang",
-- ".",
-- ]
-- } else {
-- # -ffile-compilation-dir is an alias for both -fdebug-compilation-dir=
-- # and -fcoverage-compilation-dir=.
-- cflags += [ "-ffile-compilation-dir=." ]
-- swiftflags += [ "-file-compilation-dir=." ]
-- }
-- if (!is_win) {
-- # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167)
-- asmflags = [ "-Wa,-fdebug-compilation-dir,." ]
-- }
--
-- if (is_win && use_lld) {
-- if (symbol_level == 2 || (is_clang && using_sanitizer)) {
-- # Absolutize source file paths for PDB. Pass the real build directory
-- # if the pdb contains source-level debug information and if linker
-- # reproducibility is not critical.
-- ldflags += [ "/PDBSourcePath:" + rebase_path(root_build_dir) ]
-- } else {
-- # Use a fake fixed base directory for paths in the pdb to make the pdb
-- # output fully deterministic and independent of the build directory.
-- ldflags += [ "/PDBSourcePath:o:\fake\prefix" ]
-- }
-- }
-- }
--
- # Tells the compiler not to use absolute paths when passing the default
- # paths to the tools it invokes. We don't want this because we don't
- # really need it and it can mess up the RBE cache entries.
-@@ -1600,39 +1500,6 @@ config("compiler_deterministic") {
- }
- }
-
--config("clang_revision") {
-- if (is_clang && clang_base_path == default_clang_base_path) {
-- update_args = [
-- "--print-revision",
-- "--verify-version=$clang_version",
-- ]
-- if (llvm_force_head_revision) {
-- update_args += [ "--llvm-force-head-revision" ]
-- }
-- clang_revision = exec_script("//tools/clang/scripts/update.py",
-- update_args,
-- "trim string")
--
-- # This is here so that all files get recompiled after a clang roll and
-- # when turning clang on or off. (defines are passed via the command line,
-- # and build system rebuild things when their commandline changes). Nothing
-- # should ever read this define.
-- defines = [ "CR_CLANG_REVISION=\"$clang_revision\"" ]
-- }
--}
--
--config("rustc_revision") {
-- if (rustc_revision != "") {
-- # Similar to the above config, this is here so that all files get recompiled
-- # after a rustc roll. Nothing should ever read this cfg. This will not be
-- # set if a custom toolchain is used.
-- rustflags = [
-- "--cfg",
-- "cr_rustc_revision=\"$rustc_revision\"",
-- ]
-- }
--}
--
- config("compiler_arm_fpu") {
- if (current_cpu == "arm" && !is_ios && !is_nacl) {
- cflags = [ "-mfpu=$arm_fpu" ]
-@@ -2008,11 +1875,7 @@ config("chromium_code") {
- defines = [ "_HAS_NODISCARD" ]
- }
- } else {
-- cflags = [ "-Wall" ]
-- if (is_clang) {
-- # Enable extra warnings for chromium_code when we control the compiler.
-- cflags += [ "-Wextra" ]
-- }
-+ cflags = [ ]
-
- # In Chromium code, we define __STDC_foo_MACROS in order to get the
- # C99 macros on Mac and Linux.
-@@ -2021,24 +1884,6 @@ config("chromium_code") {
- "__STDC_FORMAT_MACROS",
- ]
-
-- if (!is_debug && !using_sanitizer && current_cpu != "s390x" &&
-- current_cpu != "s390" && current_cpu != "ppc64" &&
-- current_cpu != "mips" && current_cpu != "mips64" &&
-- current_cpu != "riscv64" && current_cpu != "loong64") {
-- # Non-chromium code is not guaranteed to compile cleanly with
-- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are
-- # disabled, so only do that for Release build.
-- fortify_level = "2"
--
-- # ChromeOS's toolchain supports a high-quality _FORTIFY_SOURCE=3
-- # implementation with a few custom glibc patches. Use that if it's
-- # available.
-- if (is_chromeos_device && !lacros_use_chromium_toolchain) {
-- fortify_level = "3"
-- }
-- defines += [ "_FORTIFY_SOURCE=" + fortify_level ]
-- }
--
- if (is_apple) {
- cflags_objc = [ "-Wimplicit-retain-self" ]
- cflags_objcc = [ "-Wimplicit-retain-self" ]
-@@ -2431,7 +2276,8 @@ config("default_stack_frames") {
- # [0]: https://pinpoint-dot-chromeperf.appspot.com/job/147634a8be0000
- # [1]: https://pinpoint-dot-chromeperf.appspot.com/job/132bc772be0000
- # [2]: https://crrev.com/c/5447532
--config("optimize") {
-+config("optimize") { }
-+config("xoptimize") {
- if (is_win) {
- # clang-cl's /O2 corresponds to clang's -O3, and really want -O2 for
- # consistency with the other platforms.
-@@ -2477,7 +2323,8 @@ config("optimize") {
- }
-
- # Turn off optimizations.
--config("no_optimize") {
-+config("no_optimize") { }
-+config("xno_optimize") {
- if (is_win) {
- cflags = [
- "/Od", # Disable optimization.
-@@ -2517,7 +2364,8 @@ config("no_optimize") {
- # Turns up the optimization level. Used to explicitly enable -O2 instead of
- # -Os for select targets on platforms that use optimize_for_size. No-op
- # elsewhere.
--config("optimize_max") {
-+config("optimize_max") { }
-+config("xoptimize_max") {
- if (is_nacl && is_nacl_irt) {
- # The NaCl IRT is a special case and always wants its own config.
- # Various components do:
-@@ -2550,7 +2398,8 @@ config("optimize_max") {
- #
- # TODO(crbug.com/41259697) - rework how all of these configs are related
- # so that we don't need this disclaimer.
--config("optimize_speed") {
-+config("optimize_speed") { }
-+config("xoptimize_speed") {
- if (is_nacl && is_nacl_irt) {
- # The NaCl IRT is a special case and always wants its own config.
- # Various components do:
-@@ -2579,7 +2428,8 @@ config("optimize_speed") {
- }
- }
-
--config("optimize_fuzzing") {
-+config("optimize_fuzzing") { }
-+config("xoptimize_fuzzing") {
- cflags = [ "-O1" ] + common_optimize_on_cflags
- rustflags = [ "-Copt-level=1" ]
- ldflags = common_optimize_on_ldflags
-@@ -2710,7 +2560,8 @@ config("win_pdbaltpath") {
- }
-
- # Full symbols.
--config("symbols") {
-+config("symbols") { }
-+config("xsymbols") {
- rustflags = []
- if (is_win) {
- if (is_clang) {
-@@ -2859,7 +2710,8 @@ config("symbols") {
- # Minimal symbols.
- # This config guarantees to hold symbol for stack trace which are shown to user
- # when crash happens in unittests running on buildbot.
--config("minimal_symbols") {
-+config("minimal_symbols") { }
-+config("xminimal_symbols") {
- rustflags = []
- if (is_win) {
- # Functions, files, and line tables only.
-@@ -2944,7 +2796,8 @@ config("minimal_symbols") {
- # This configuration contains function names only. That is, the compiler is
- # told to not generate debug information and the linker then just puts function
- # names in the final debug information.
--config("no_symbols") {
-+config("no_symbols") { }
-+config("xno_symbols") {
- if (is_win) {
- ldflags = [ "/DEBUG" ]
-
-diff --git a/build/config/rust.gni b/build/config/rust.gni
-index 97e788a..e9bbcc0 100644
---- a/build/config/rust.gni
-+++ b/build/config/rust.gni
-@@ -79,7 +79,8 @@ declare_args() {
- #
- # TODO(crbug.com/40281834): Re-enable ThinLTO for Rust on LaCrOS
- # TODO(b/300937673): Re-enable ThinLTO for Rust on ash-chrome
-- toolchain_supports_rust_thin_lto = !is_chromeos
-+ # toolchain_supports_rust_thin_lto = !is_chromeos
-+ toolchain_supports_rust_thin_lto = false
-
- # Any extra std rlibs in your Rust toolchain, relative to the standard
- # Rust toolchain. Typically used with 'rust_sysroot_absolute'
diff --git a/www-client/chromium/files/chromium-131-EnumTable-crash.patch b/www-client/chromium/files/chromium-131-EnumTable-crash.patch
deleted file mode 100644
index f4a6969..0000000
--- a/www-client/chromium/files/chromium-131-EnumTable-crash.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-diff --git a/components/media_router/common/providers/cast/channel/enum_table.h b/components/media_router/common/providers/cast/channel/enum_table.h
-index 18fd272c6a..db9d2fb18a 100644
---- a/components/media_router/common/providers/cast/channel/enum_table.h
-+++ b/components/media_router/common/providers/cast/channel/enum_table.h
-@@ -16,6 +16,7 @@
- #include <optional>
- #include <ostream>
- #include <string_view>
-+#include <vector>
-
- #include "base/check_op.h"
- #include "base/notreached.h"
-@@ -193,7 +194,6 @@ class
- inline constexpr GenericEnumTableEntry(int32_t value);
- inline constexpr GenericEnumTableEntry(int32_t value, std::string_view str);
-
-- GenericEnumTableEntry(const GenericEnumTableEntry&) = delete;
- GenericEnumTableEntry& operator=(const GenericEnumTableEntry&) = delete;
-
- private:
-@@ -259,7 +259,6 @@ class EnumTable {
- constexpr Entry(E value, std::string_view str)
- : GenericEnumTableEntry(static_cast<int32_t>(value), str) {}
-
-- Entry(const Entry&) = delete;
- Entry& operator=(const Entry&) = delete;
- };
-
-@@ -318,15 +317,14 @@ class EnumTable {
- if (is_sorted_) {
- const std::size_t index = static_cast<std::size_t>(value);
- if (ANALYZER_ASSUME_TRUE(index < data_.size())) {
-- const auto& entry = data_.begin()[index];
-+ const auto& entry = data_[index];
- if (ANALYZER_ASSUME_TRUE(entry.has_str()))
- return entry.str();
- }
- return std::nullopt;
- }
- return GenericEnumTableEntry::FindByValue(
-- reinterpret_cast<const GenericEnumTableEntry*>(data_.begin()),
-- data_.size(), static_cast<int32_t>(value));
-+ &data_[0], data_.size(), static_cast<int32_t>(value));
- }
-
- // This overload of GetString is designed for cases where the argument is a
-@@ -355,8 +353,7 @@ class EnumTable {
- // enum value directly.
- std::optional<E> GetEnum(std::string_view str) const {
- auto* entry = GenericEnumTableEntry::FindByString(
-- reinterpret_cast<const GenericEnumTableEntry*>(data_.begin()),
-- data_.size(), str);
-+ &data_[0], data_.size(), str);
- return entry ? static_cast<E>(entry->value) : std::optional<E>();
- }
-
-@@ -368,9 +365,9 @@ class EnumTable {
-
- private:
- #ifdef ARCH_CPU_64_BITS
-- alignas(std::hardware_destructive_interference_size)
-+ alignas(64)
- #endif
-- std::initializer_list<Entry> data_;
-+ const std::vector<Entry> data_;
- bool is_sorted_;
-
- constexpr EnumTable(std::initializer_list<Entry> data, bool is_sorted)
-@@ -382,8 +379,8 @@ class EnumTable {
-
- for (std::size_t i = 0; i < data.size(); i++) {
- for (std::size_t j = i + 1; j < data.size(); j++) {
-- const Entry& ei = data.begin()[i];
-- const Entry& ej = data.begin()[j];
-+ const Entry& ei = data[i];
-+ const Entry& ej = data[j];
- DCHECK(ei.value != ej.value)
- << "Found duplicate enum values at indices " << i << " and " << j;
- DCHECK(!(ei.has_str() && ej.has_str() && ei.str() == ej.str()))
diff --git a/www-client/chromium/files/chromium-131-text_codec_icu-system-icu.patch b/www-client/chromium/files/chromium-131-text_codec_icu-system-icu.patch
deleted file mode 100644
index 50ada83..0000000
--- a/www-client/chromium/files/chromium-131-text_codec_icu-system-icu.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff --git a/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc b/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc
-index dfa1cb1369..ecffa654a2 100644
---- a/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc
-+++ b/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc
-@@ -323,7 +323,7 @@ void TextCodecICU::CreateICUConverter() const {
- DCHECK(!converter_icu_);
-
- #if defined(USING_SYSTEM_ICU)
-- const char* name = encoding_.GetName();
-+ const char* name = encoding_.GetName().Utf8().c_str();
- needs_gbk_fallbacks_ =
- name[0] == 'G' && name[1] == 'B' && name[2] == 'K' && !name[3];
- #endif
-@@ -448,7 +448,7 @@ String TextCodecICU::Decode(base::span<const uint8_t> data,
- // <http://bugs.webkit.org/show_bug.cgi?id=17014>
- // Simplified Chinese pages use the code A3A0 to mean "full-width space", but
- // ICU decodes it as U+E5E5.
-- if (!strcmp(encoding_.GetName(), "GBK")) {
-+ if (!strcmp(encoding_.GetName().Utf8().c_str(), "GBK")) {
- if (EqualIgnoringASCIICase(encoding_.GetName(), "gb18030"))
- resultString.Replace(0xE5E5, kIdeographicSpaceCharacter);
- // Make GBK compliant to the encoding spec and align with GB18030
diff --git a/www-client/chromium/files/chromium-134-gn-exec_script_allowlist.patch b/www-client/chromium/files/chromium-138-gn-exec_script_allowlist.patch
index 008e149..e5d6f15 100644
--- a/www-client/chromium/files/chromium-134-gn-exec_script_allowlist.patch
+++ b/www-client/chromium/files/chromium-138-gn-exec_script_allowlist.patch
@@ -1,14 +1,14 @@
diff --git a/.gn b/.gn
-index 3f65718281..0170ef8d0f 100644
+index ae58a0b0a6..e34034d383 100644
--- a/.gn
+++ b/.gn
-@@ -145,31 +145,31 @@ no_check_targets = [
+@@ -146,25 +146,25 @@ no_check_targets = [
# this situation much easier to create. if the build always lists the
# files and passes them to a script, it will always be correct.
-exec_script_allowlist =
- build_dotfile_settings.exec_script_allowlist +
-- angle_dotfile_settings.exec_script_whitelist +
+- angle_dotfile_settings.exec_script_allowlist +
- [
- # Allowlist entries for //build should go into
- # //build/dotfile_settings.gni instead, so that they can be shared
@@ -16,14 +16,8 @@ index 3f65718281..0170ef8d0f 100644
- # in the Chromium repo outside of //build.
- "//build_overrides/build.gni",
-
-- "//chrome/android/webapk/shell_apk/prepare_upload_dir/BUILD.gn",
- "//chrome/version.gni",
-
-- # TODO(dgn): Layer violation but breaks the build otherwise, see
-- # https://crbug.com/474506.
-- "//clank/java/BUILD.gn",
-- "//clank/native/BUILD.gn",
--
- "//google_apis/BUILD.gn",
- "//printing/BUILD.gn",
-
@@ -36,7 +30,7 @@ index 3f65718281..0170ef8d0f 100644
- ]
+#exec_script_allowlist =
+# build_dotfile_settings.exec_script_allowlist +
-+# angle_dotfile_settings.exec_script_whitelist +
++# angle_dotfile_settings.exec_script_allowlist +
+# [
+# # Allowlist entries for //build should go into
+# # //build/dotfile_settings.gni instead, so that they can be shared
@@ -44,14 +38,8 @@ index 3f65718281..0170ef8d0f 100644
+# # in the Chromium repo outside of //build.
+# "//build_overrides/build.gni",
+#
-+# "//chrome/android/webapk/shell_apk/prepare_upload_dir/BUILD.gn",
+# "//chrome/version.gni",
+#
-+# # TODO(dgn): Layer violation but breaks the build otherwise, see
-+# # https://crbug.com/474506.
-+# "//clank/java/BUILD.gn",
-+# "//clank/native/BUILD.gn",
-+#
+# "//google_apis/BUILD.gn",
+# "//printing/BUILD.gn",
+#
diff --git a/www-client/chromium/files/chromium-131-compiler.patch b/www-client/chromium/files/chromium-139-compiler-r1.patch
index 1790cfd..4a1e8fe 100644
--- a/www-client/chromium/files/chromium-131-compiler.patch
+++ b/www-client/chromium/files/chromium-139-compiler-r1.patch
@@ -1,8 +1,25 @@
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
-index 98ae25c768..fca2469519 100644
+index 0c04c90368..6cebd33c44 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
-@@ -311,9 +311,6 @@ config("compiler") {
+@@ -241,16 +241,6 @@ declare_args() {
+ assert(!(llvm_force_head_revision && use_remoteexec && host_os != "linux"),
+ "rbe with locally built clang only works on linux")
+
+-# Whether or not we should pass the warning_suppression.txt file to clang
+-# compilations. This file allows us to suppress warnings that originate from
+-# specific file paths, typically third_party headers.
+-#
+-# Since this is referenced both when passing the file and when deciding which
+-# warnings to enable, store it in a separate variable here.
+-use_clang_warning_suppression_file =
+- !is_nacl && default_toolchain != "//build/toolchain/cros:target" &&
+- !llvm_android_mainline && is_clang && clang_warning_suppression_file != ""
+-
+ # default_include_dirs ---------------------------------------------------------
+ #
+ # This is a separate config so that third_party code (which would not use the
+@@ -320,12 +310,8 @@ config("compiler") {
configs += [
# See the definitions below.
@@ -11,8 +28,11 @@ index 98ae25c768..fca2469519 100644
- ":compiler_cpu_abi",
":compiler_codegen",
":compiler_deterministic",
+- ":clang_warning_suppression",
]
-@@ -493,6 +490,9 @@ config("compiler") {
+
+ # TODO(https://crbug.com/404297941): Disable clang_warning_suppression
+@@ -515,6 +501,9 @@ config("compiler") {
ldflags += [ "-fPIC" ]
rustflags += [ "-Crelocation-model=pic" ]
@@ -22,7 +42,7 @@ index 98ae25c768..fca2469519 100644
if (!is_clang) {
# Use pipes for communicating between sub-processes. Faster.
# (This flag doesn't do anything with Clang.)
-@@ -562,55 +562,6 @@ config("compiler") {
+@@ -602,63 +591,6 @@ config("compiler") {
ldflags += [ "-Wl,-z,keep-text-section-prefix" ]
}
@@ -73,12 +93,20 @@ index 98ae25c768..fca2469519 100644
- } else {
- cflags += [ "-ffp-contract=off" ]
- }
+-
+- # Enable ELF CREL (see crbug.com/357878242) for all platforms that use ELF
+- # (excluding toolchains that use an older version of LLVM).
+- # TODO(crbug.com/376278218): This causes segfault on Linux ARM builds.
+- if (is_linux && use_lld && !llvm_android_mainline && current_cpu != "arm" &&
+- default_toolchain != "//build/toolchain/cros:target") {
+- cflags += [ "-Wa,--crel,--allow-experimental-crel" ]
+- }
- }
-
# C11/C++11 compiler flags setup.
# ---------------------------
if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) ||
-@@ -1031,17 +982,6 @@ config("compiler") {
+@@ -1083,20 +1015,6 @@ config("compiler") {
# `-nodefaultlibs` from the linker invocation from Rust, which would be used
# to compile dylibs on Android, such as for constructing unit test APKs.
"-Cdefault-linker-libraries",
@@ -93,10 +121,22 @@ index 98ae25c768..fca2469519 100644
- # For deterministic builds, keep the local machine's current working
- # directory from appearing in build outputs.
- "-Zremap-cwd-prefix=.",
+-
+- # We use clang-rt sanitizer runtimes.
+- "-Zexternal-clangrt",
]
if (!is_win || force_rustc_color_output) {
-@@ -1561,52 +1501,6 @@ config("compiler_deterministic") {
+@@ -1151,7 +1069,7 @@ config("compiler") {
+ # Don't allow unstable features to be enabled by `#![feature()]` without
+ # additional command line flags.
+ config("disallow_unstable_features") {
+- rustflags = [ "-Zallow-features=" ]
++ #rustflags = [ "-Zallow-features=" ]
+ }
+
+ config("libcxx_hardening") {
+@@ -1631,52 +1549,6 @@ config("compiler_deterministic") {
}
}
@@ -149,29 +189,108 @@ index 98ae25c768..fca2469519 100644
# Tells the compiler not to use absolute paths when passing the default
# paths to the tools it invokes. We don't want this because we don't
# really need it and it can mess up the RBE cache entries.
-@@ -1625,40 +1519,6 @@ config("compiler_deterministic") {
+@@ -1703,119 +1575,6 @@ config("compiler_deterministic") {
}
}
-config("clang_revision") {
- if (is_clang && clang_base_path == default_clang_base_path &&
- current_os != "zos") {
-- update_args = [
-- "--print-revision",
-- "--verify-version=$clang_version",
-- ]
+- _perform_consistency_checks = current_toolchain == default_toolchain
- if (llvm_force_head_revision) {
-- update_args += [ "--llvm-force-head-revision" ]
+- _head_revision_stamp_path = "//third_party/llvm-build/force_head_revision"
+- _head_revision = ""
+- if (path_exists(_head_revision_stamp_path)) {
+- _head_revision = read_file(_head_revision_stamp_path, "trim string")
+- }
+- assert(
+- _head_revision != "",
+- "llvm_force_head_revision=true, but no locally built version was detected.")
+- _clang_revision = _head_revision
+- } else {
+- _clang_revision = read_file(
+- "//third_party/llvm-build/Release+Asserts/cr_build_revision",
+- "trim string")
+-
+- # Ensure that the synced clang version matches what's in git.
+- if (_perform_consistency_checks) {
+- # Parse the clang version from the Python script.
+- _clang_version_lines = filter_include(
+- read_file("//tools/clang/scripts/update.py", "list lines"),
+- [ "CLANG_*REVISION = *" ])
+- _py_revision =
+- string_replace(_clang_version_lines[0], "CLANG_REVISION = '", "")
+- _py_revision = string_replace(_py_revision, "'", "")
+- _py_subrevision =
+- string_replace(_clang_version_lines[1], "CLANG_SUB_REVISION = ", "")
+- _expected_clang_revision = "$_py_revision-$_py_subrevision"
+-
+- # TODO(agrieve): Change filter_include to _clang_revision ==
+- # _expected_clang_revision once angle & webrtc use a GCS DEPS entry
+- # rather than a update.py runhook.
+- assert(
+- filter_include([ _clang_revision ],
+- [
+- _expected_clang_revision,
+- "$_expected_clang_revision,*",
+- ]) != [],
+- "clang_revision=\"$_clang_revision\" but update.py expected \"$_expected_clang_revision\". Did you forget to gclient sync?")
+- }
+- }
+-
+- if (_perform_consistency_checks) {
+- # Ensure that the revision matches the version major expected by GN.
+- _versions_match = filter_include([ _clang_revision ],
+- [ "llvmorg-$clang_version-*" ]) != []
+- assert(
+- _versions_match,
+- "clang_revision=\"$_clang_revision\" but clang_version=\"$clang_version\". clang_version in build/toolchain/toolchain.gni is likely outdated.")
+- }
+-
+- if (toolchain_has_rust && _perform_consistency_checks) {
+- # Ensure that the synced rust version matches what's in git.
+- _rust_revision_lines =
+- filter_include(read_file("//tools/rust/update_rust.py", "list lines"),
+- [ "RUST_*REVISION = *" ])
+- _py_revision =
+- string_replace(_rust_revision_lines[0], "RUST_REVISION = '", "")
+- _py_revision = string_replace(_py_revision, "'", "")
+- _py_subrevision =
+- string_replace(_rust_revision_lines[1], "RUST_SUB_REVISION = ", "")
+- _expected_rust_revision = "$_py_revision-$_py_subrevision"
+-
+- # Ensure the rust version matches the clang version.
+- assert(
+- filter_include([ rustc_revision ],
+- [ "*-$_expected_rust_revision-*" ]) != [],
+- "rustc_revision=\"$rustc_revision\" but update_rust.py expected \"$_expected_rust_revision\". Run \"gclient sync\"?")
- }
-- clang_revision = exec_script("//tools/clang/scripts/update.py",
-- update_args,
-- "trim string")
-
- # This is here so that all files get recompiled after a clang roll and
- # when turning clang on or off. (defines are passed via the command line,
- # and build system rebuild things when their commandline changes). Nothing
- # should ever read this define.
-- defines = [ "CR_CLANG_REVISION=\"$clang_revision\"" ]
+- defines = [ "CR_CLANG_REVISION=\"$_clang_revision\"" ]
+- }
+-}
+-
+-# Controls the usage of a warning suppression mapping (WSM) file to suppress
+-# warnings based on the path of the file they come from. It's controlled by the
+-# `clang_warning_suppression_file` gn argument , which points to a text file
+-# defining which warnings should be suppressed where.
+-# See //build/config/warning_suppression.txt for an example file; this is the
+-# file used by Chromium.
+-#
+-# To use a different file, or to use this functionality outside of chromium,
+-# set the `clang_warning_suppression_file` argument to point to the new file,
+-# e.g. by setting in the the project's .gn file.
+-config("clang_warning_suppression") {
+- # Some build configs use older versions of clang that don't support WSMs
+- if (use_clang_warning_suppression_file) {
+- from_build_root =
+- rebase_path(clang_warning_suppression_file, root_build_dir)
+- inputs = [ clang_warning_suppression_file ]
+- cflags = [ "--warning-suppression-mappings=" + from_build_root ]
- }
-}
-
@@ -190,7 +309,7 @@ index 98ae25c768..fca2469519 100644
config("compiler_arm_fpu") {
if (current_cpu == "arm" && !is_ios && !is_nacl) {
cflags = [ "-mfpu=$arm_fpu" ]
-@@ -2059,11 +1919,7 @@ config("chromium_code") {
+@@ -2279,11 +2038,7 @@ config("chromium_code") {
defines = [ "_HAS_NODISCARD" ]
}
} else {
@@ -203,7 +322,7 @@ index 98ae25c768..fca2469519 100644
# In Chromium code, we define __STDC_foo_MACROS in order to get the
# C99 macros on Mac and Linux.
-@@ -2072,24 +1928,6 @@ config("chromium_code") {
+@@ -2292,24 +2047,6 @@ config("chromium_code") {
"__STDC_FORMAT_MACROS",
]
@@ -228,7 +347,7 @@ index 98ae25c768..fca2469519 100644
if (is_apple) {
cflags_objc = [ "-Wimplicit-retain-self" ]
cflags_objcc = [ "-Wimplicit-retain-self" ]
-@@ -2487,7 +2325,8 @@ config("default_stack_frames") {
+@@ -2734,7 +2471,8 @@ config("default_stack_frames") {
# [0]: https://pinpoint-dot-chromeperf.appspot.com/job/147634a8be0000
# [1]: https://pinpoint-dot-chromeperf.appspot.com/job/132bc772be0000
# [2]: https://crrev.com/c/5447532
@@ -238,7 +357,7 @@ index 98ae25c768..fca2469519 100644
if (is_win) {
# clang-cl's /O2 corresponds to clang's -O3, and really want -O2 for
# consistency with the other platforms.
-@@ -2536,7 +2375,8 @@ config("optimize") {
+@@ -2783,7 +2521,8 @@ config("optimize") {
}
# Turn off optimizations.
@@ -248,7 +367,7 @@ index 98ae25c768..fca2469519 100644
if (is_win) {
cflags = [
"/Od", # Disable optimization.
-@@ -2576,7 +2416,8 @@ config("no_optimize") {
+@@ -2818,7 +2557,8 @@ config("no_optimize") {
# Turns up the optimization level. Used to explicitly enable -O2 instead of
# -Os for select targets on platforms that use optimize_for_size. No-op
# elsewhere.
@@ -258,7 +377,7 @@ index 98ae25c768..fca2469519 100644
if (is_nacl && is_nacl_irt) {
# The NaCl IRT is a special case and always wants its own config.
# Various components do:
-@@ -2609,7 +2450,8 @@ config("optimize_max") {
+@@ -2851,7 +2591,8 @@ config("optimize_max") {
#
# TODO(crbug.com/41259697) - rework how all of these configs are related
# so that we don't need this disclaimer.
@@ -268,7 +387,7 @@ index 98ae25c768..fca2469519 100644
if (is_nacl && is_nacl_irt) {
# The NaCl IRT is a special case and always wants its own config.
# Various components do:
-@@ -2638,7 +2480,8 @@ config("optimize_speed") {
+@@ -2880,7 +2621,8 @@ config("optimize_speed") {
}
}
@@ -278,7 +397,7 @@ index 98ae25c768..fca2469519 100644
cflags = [ "-O1" ] + common_optimize_on_cflags
rustflags = [ "-Copt-level=1" ]
ldflags = common_optimize_on_ldflags
-@@ -2769,7 +2612,8 @@ config("win_pdbaltpath") {
+@@ -3011,7 +2753,8 @@ config("win_pdbaltpath") {
}
# Full symbols.
@@ -288,7 +407,7 @@ index 98ae25c768..fca2469519 100644
rustflags = []
configs = []
if (is_win) {
-@@ -2931,7 +2775,8 @@ config("symbols") {
+@@ -3185,7 +2928,8 @@ config("symbols") {
# Minimal symbols.
# This config guarantees to hold symbol for stack trace which are shown to user
# when crash happens in unittests running on buildbot.
@@ -298,7 +417,7 @@ index 98ae25c768..fca2469519 100644
rustflags = []
if (is_win) {
# Functions, files, and line tables only.
-@@ -3016,7 +2861,8 @@ config("minimal_symbols") {
+@@ -3270,7 +3014,8 @@ config("minimal_symbols") {
# This configuration contains function names only. That is, the compiler is
# told to not generate debug information and the linker then just puts function
# names in the final debug information.
@@ -308,11 +427,24 @@ index 98ae25c768..fca2469519 100644
if (is_win) {
ldflags = [ "/DEBUG" ]
+diff --git a/build/config/gcc/BUILD.gn b/build/config/gcc/BUILD.gn
+index a659210b19..bde0e1b273 100644
+--- a/build/config/gcc/BUILD.gn
++++ b/build/config/gcc/BUILD.gn
+@@ -32,7 +32,7 @@ declare_args() {
+ # See http://gcc.gnu.org/wiki/Visibility
+ config("symbol_visibility_hidden") {
+ cflags = [ "-fvisibility=hidden" ]
+- rustflags = [ "-Zdefault-visibility=hidden" ]
++ # rustflags = [ "-Zdefault-visibility=hidden" ]
+
+ # Visibility attribute is not supported on AIX.
+ if (current_os != "aix") {
diff --git a/build/config/rust.gni b/build/config/rust.gni
-index b7e3c8881b..a2cd059ccd 100644
+index bd18d13119..6687b7cb2f 100644
--- a/build/config/rust.gni
+++ b/build/config/rust.gni
-@@ -79,7 +79,8 @@ declare_args() {
+@@ -77,7 +77,8 @@ declare_args() {
#
# TODO(crbug.com/40281834): Re-enable ThinLTO for Rust on LaCrOS
# TODO(b/300937673): Re-enable ThinLTO for Rust on ash-chrome
diff --git a/www-client/chromium/files/chromium-132-compiler.patch b/www-client/chromium/files/chromium-139-compiler.patch
index f9cd8e3..fec48c7 100644
--- a/www-client/chromium/files/chromium-132-compiler.patch
+++ b/www-client/chromium/files/chromium-139-compiler.patch
@@ -1,8 +1,8 @@
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
-index cb9bf8772d..9e36a487ba 100644
+index a17fae7220..5e763dc668 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
-@@ -309,9 +309,6 @@ config("compiler") {
+@@ -310,12 +310,8 @@ config("compiler") {
configs += [
# See the definitions below.
@@ -11,8 +11,11 @@ index cb9bf8772d..9e36a487ba 100644
- ":compiler_cpu_abi",
":compiler_codegen",
":compiler_deterministic",
+- ":clang_warning_suppression",
]
-@@ -493,6 +490,9 @@ config("compiler") {
+
+ # TODO(https://crbug.com/404297941): Disable clang_warning_suppression
+@@ -505,6 +501,9 @@ config("compiler") {
ldflags += [ "-fPIC" ]
rustflags += [ "-Crelocation-model=pic" ]
@@ -22,7 +25,7 @@ index cb9bf8772d..9e36a487ba 100644
if (!is_clang) {
# Use pipes for communicating between sub-processes. Faster.
# (This flag doesn't do anything with Clang.)
-@@ -568,63 +568,6 @@ config("compiler") {
+@@ -581,63 +580,6 @@ config("compiler") {
ldflags += [ "-Wl,-z,keep-text-section-prefix" ]
}
@@ -77,7 +80,7 @@ index cb9bf8772d..9e36a487ba 100644
- # Enable ELF CREL (see crbug.com/357878242) for all platforms that use ELF
- # (excluding toolchains that use an older version of LLVM).
- # TODO(crbug.com/376278218): This causes segfault on Linux ARM builds.
-- if (is_linux && !llvm_android_mainline && current_cpu != "arm" &&
+- if (is_linux && use_lld && !llvm_android_mainline && current_cpu != "arm" &&
- default_toolchain != "//build/toolchain/cros:target") {
- cflags += [ "-Wa,--crel,--allow-experimental-crel" ]
- }
@@ -86,7 +89,7 @@ index cb9bf8772d..9e36a487ba 100644
# C11/C++11 compiler flags setup.
# ---------------------------
if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) ||
-@@ -1045,20 +988,6 @@ config("compiler") {
+@@ -1062,20 +1004,6 @@ config("compiler") {
# `-nodefaultlibs` from the linker invocation from Rust, which would be used
# to compile dylibs on Android, such as for constructing unit test APKs.
"-Cdefault-linker-libraries",
@@ -107,7 +110,7 @@ index cb9bf8772d..9e36a487ba 100644
]
if (!is_win || force_rustc_color_output) {
-@@ -1107,7 +1036,7 @@ config("compiler") {
+@@ -1130,7 +1058,7 @@ config("compiler") {
# Don't allow unstable features to be enabled by `#![feature()]` without
# additional command line flags.
config("disallow_unstable_features") {
@@ -116,7 +119,7 @@ index cb9bf8772d..9e36a487ba 100644
}
config("libcxx_hardening") {
-@@ -1583,52 +1512,6 @@ config("compiler_deterministic") {
+@@ -1610,52 +1538,6 @@ config("compiler_deterministic") {
}
}
@@ -169,29 +172,110 @@ index cb9bf8772d..9e36a487ba 100644
# Tells the compiler not to use absolute paths when passing the default
# paths to the tools it invokes. We don't want this because we don't
# really need it and it can mess up the RBE cache entries.
-@@ -1647,40 +1530,6 @@ config("compiler_deterministic") {
+@@ -1682,121 +1564,6 @@ config("compiler_deterministic") {
}
}
-config("clang_revision") {
- if (is_clang && clang_base_path == default_clang_base_path &&
- current_os != "zos") {
-- update_args = [
-- "--print-revision",
-- "--verify-version=$clang_version",
-- ]
+- _perform_consistency_checks = current_toolchain == default_toolchain
- if (llvm_force_head_revision) {
-- update_args += [ "--llvm-force-head-revision" ]
+- _head_revision_stamp_path = "//third_party/llvm-build/force_head_revision"
+- _head_revision = ""
+- if (path_exists(_head_revision_stamp_path)) {
+- _head_revision = read_file(_head_revision_stamp_path, "trim string")
+- }
+- assert(
+- _head_revision != "",
+- "llvm_force_head_revision=true, but no locally built version was detected.")
+- _clang_revision = _head_revision
+- } else {
+- _clang_revision = read_file(
+- "//third_party/llvm-build/Release+Asserts/cr_build_revision",
+- "trim string")
+-
+- # Ensure that the synced clang version matches what's in git.
+- if (_perform_consistency_checks) {
+- # Parse the clang version from the Python script.
+- _clang_version_lines = filter_include(
+- read_file("//tools/clang/scripts/update.py", "list lines"),
+- [ "CLANG_*REVISION = *" ])
+- _py_revision =
+- string_replace(_clang_version_lines[0], "CLANG_REVISION = '", "")
+- _py_revision = string_replace(_py_revision, "'", "")
+- _py_subrevision =
+- string_replace(_clang_version_lines[1], "CLANG_SUB_REVISION = ", "")
+- _expected_clang_revision = "$_py_revision-$_py_subrevision"
+-
+- # TODO(agrieve): Change filter_include to _clang_revision ==
+- # _expected_clang_revision once angle & webrtc use a GCS DEPS entry
+- # rather than a update.py runhook.
+- assert(
+- filter_include([ _clang_revision ],
+- [
+- _expected_clang_revision,
+- "$_expected_clang_revision,*",
+- ]) != [],
+- "clang_revision=\"$_clang_revision\" but update.py expected \"$_expected_clang_revision\". Did you forget to gclient sync?")
+- }
+- }
+-
+- if (_perform_consistency_checks) {
+- # Ensure that the revision matches the version major expected by GN.
+- _versions_match = filter_include([ _clang_revision ],
+- [ "llvmorg-$clang_version-*" ]) != []
+- assert(
+- _versions_match,
+- "clang_revision=\"$_clang_revision\" but clang_version=\"$clang_version\". clang_version in build/toolchain/toolchain.gni is likely outdated.")
+- }
+-
+- if (toolchain_has_rust && _perform_consistency_checks) {
+- # Ensure that the synced rust version matches what's in git.
+- _rust_revision_lines =
+- filter_include(read_file("//tools/rust/update_rust.py", "list lines"),
+- [ "RUST_*REVISION = *" ])
+- _py_revision =
+- string_replace(_rust_revision_lines[0], "RUST_REVISION = '", "")
+- _py_revision = string_replace(_py_revision, "'", "")
+- _py_subrevision =
+- string_replace(_rust_revision_lines[1], "RUST_SUB_REVISION = ", "")
+- _expected_rust_revision = "$_py_revision-$_py_subrevision"
+-
+- # Ensure the rust version matches the clang version.
+- assert(
+- filter_include([ rustc_revision ],
+- [ "*-$_expected_rust_revision-*" ]) != [],
+- "rustc_revision=\"$rustc_revision\" but update_rust.py expected \"$_expected_rust_revision\". Run \"gclient sync\"?")
- }
-- clang_revision = exec_script("//tools/clang/scripts/update.py",
-- update_args,
-- "trim string")
-
- # This is here so that all files get recompiled after a clang roll and
- # when turning clang on or off. (defines are passed via the command line,
- # and build system rebuild things when their commandline changes). Nothing
- # should ever read this define.
-- defines = [ "CR_CLANG_REVISION=\"$clang_revision\"" ]
+- defines = [ "CR_CLANG_REVISION=\"$_clang_revision\"" ]
+- }
+-}
+-
+-# Controls the usage of a warning suppression mapping (WSM) file to suppress
+-# warnings based on the path of the file they come from. It's controlled by the
+-# `clang_warning_suppression_file` gn argument , which points to a text file
+-# defining which warnings should be suppressed where.
+-# See //build/config/warning_suppression.txt for an example file; this is the
+-# file used by Chromium.
+-#
+-# To use a different file, or to use this functionality outside of chromium,
+-# set the `clang_warning_suppression_file` argument to point to the new file,
+-# e.g. by setting in the the project's .gn file.
+-config("clang_warning_suppression") {
+- # Some build configs use older versions of clang that don't support WSMs
+- if (!is_nacl && default_toolchain != "//build/toolchain/cros:target" &&
+- !llvm_android_mainline && is_clang &&
+- clang_warning_suppression_file != "") {
+- from_build_root =
+- rebase_path(clang_warning_suppression_file, root_build_dir)
+- inputs = [ clang_warning_suppression_file ]
+- cflags = [ "--warning-suppression-mappings=" + from_build_root ]
- }
-}
-
@@ -210,7 +294,7 @@ index cb9bf8772d..9e36a487ba 100644
config("compiler_arm_fpu") {
if (current_cpu == "arm" && !is_ios && !is_nacl) {
cflags = [ "-mfpu=$arm_fpu" ]
-@@ -2086,11 +1935,7 @@ config("chromium_code") {
+@@ -2248,11 +2015,7 @@ config("chromium_code") {
defines = [ "_HAS_NODISCARD" ]
}
} else {
@@ -223,7 +307,7 @@ index cb9bf8772d..9e36a487ba 100644
# In Chromium code, we define __STDC_foo_MACROS in order to get the
# C99 macros on Mac and Linux.
-@@ -2099,24 +1944,6 @@ config("chromium_code") {
+@@ -2261,24 +2024,6 @@ config("chromium_code") {
"__STDC_FORMAT_MACROS",
]
@@ -248,7 +332,7 @@ index cb9bf8772d..9e36a487ba 100644
if (is_apple) {
cflags_objc = [ "-Wimplicit-retain-self" ]
cflags_objcc = [ "-Wimplicit-retain-self" ]
-@@ -2544,7 +2371,8 @@ config("default_stack_frames") {
+@@ -2703,7 +2448,8 @@ config("default_stack_frames") {
# [0]: https://pinpoint-dot-chromeperf.appspot.com/job/147634a8be0000
# [1]: https://pinpoint-dot-chromeperf.appspot.com/job/132bc772be0000
# [2]: https://crrev.com/c/5447532
@@ -258,7 +342,7 @@ index cb9bf8772d..9e36a487ba 100644
if (is_win) {
# clang-cl's /O2 corresponds to clang's -O3, and really want -O2 for
# consistency with the other platforms.
-@@ -2593,7 +2421,8 @@ config("optimize") {
+@@ -2752,7 +2498,8 @@ config("optimize") {
}
# Turn off optimizations.
@@ -268,7 +352,7 @@ index cb9bf8772d..9e36a487ba 100644
if (is_win) {
cflags = [
"/Od", # Disable optimization.
-@@ -2633,7 +2462,8 @@ config("no_optimize") {
+@@ -2787,7 +2534,8 @@ config("no_optimize") {
# Turns up the optimization level. Used to explicitly enable -O2 instead of
# -Os for select targets on platforms that use optimize_for_size. No-op
# elsewhere.
@@ -278,7 +362,7 @@ index cb9bf8772d..9e36a487ba 100644
if (is_nacl && is_nacl_irt) {
# The NaCl IRT is a special case and always wants its own config.
# Various components do:
-@@ -2666,7 +2496,8 @@ config("optimize_max") {
+@@ -2820,7 +2568,8 @@ config("optimize_max") {
#
# TODO(crbug.com/41259697) - rework how all of these configs are related
# so that we don't need this disclaimer.
@@ -288,7 +372,7 @@ index cb9bf8772d..9e36a487ba 100644
if (is_nacl && is_nacl_irt) {
# The NaCl IRT is a special case and always wants its own config.
# Various components do:
-@@ -2695,7 +2526,8 @@ config("optimize_speed") {
+@@ -2849,7 +2598,8 @@ config("optimize_speed") {
}
}
@@ -298,7 +382,7 @@ index cb9bf8772d..9e36a487ba 100644
cflags = [ "-O1" ] + common_optimize_on_cflags
rustflags = [ "-Copt-level=1" ]
ldflags = common_optimize_on_ldflags
-@@ -2826,7 +2658,8 @@ config("win_pdbaltpath") {
+@@ -2980,7 +2730,8 @@ config("win_pdbaltpath") {
}
# Full symbols.
@@ -308,7 +392,7 @@ index cb9bf8772d..9e36a487ba 100644
rustflags = []
configs = []
if (is_win) {
-@@ -2988,7 +2821,8 @@ config("symbols") {
+@@ -3154,7 +2905,8 @@ config("symbols") {
# Minimal symbols.
# This config guarantees to hold symbol for stack trace which are shown to user
# when crash happens in unittests running on buildbot.
@@ -318,7 +402,7 @@ index cb9bf8772d..9e36a487ba 100644
rustflags = []
if (is_win) {
# Functions, files, and line tables only.
-@@ -3073,7 +2907,8 @@ config("minimal_symbols") {
+@@ -3239,7 +2991,8 @@ config("minimal_symbols") {
# This configuration contains function names only. That is, the compiler is
# told to not generate debug information and the linker then just puts function
# names in the final debug information.
@@ -342,10 +426,10 @@ index a659210b19..bde0e1b273 100644
# Visibility attribute is not supported on AIX.
if (current_os != "aix") {
diff --git a/build/config/rust.gni b/build/config/rust.gni
-index 5b7807a1b8..4b3acd300e 100644
+index bd18d13119..6687b7cb2f 100644
--- a/build/config/rust.gni
+++ b/build/config/rust.gni
-@@ -79,7 +79,8 @@ declare_args() {
+@@ -77,7 +77,8 @@ declare_args() {
#
# TODO(crbug.com/40281834): Re-enable ThinLTO for Rust on LaCrOS
# TODO(b/300937673): Re-enable ThinLTO for Rust on ash-chrome
diff --git a/www-client/chromium/files/chromium-135-mv2-ungoogled.patch b/www-client/chromium/files/chromium-139-mv2-ungoogled-r1.patch
index db276b3..36d3419 100644
--- a/www-client/chromium/files/chromium-135-mv2-ungoogled.patch
+++ b/www-client/chromium/files/chromium-139-mv2-ungoogled-r1.patch
@@ -1,10 +1,10 @@
diff --git a/chrome/browser/extensions/api/developer_private/extension_info_generator.cc b/chrome/browser/extensions/api/developer_private/extension_info_generator.cc
-index e330cb7163..08da10083a 100644
+index 99e7a64fee..924592d366 100644
--- a/chrome/browser/extensions/api/developer_private/extension_info_generator.cc
+++ b/chrome/browser/extensions/api/developer_private/extension_info_generator.cc
-@@ -618,17 +618,6 @@ void ExtensionInfoGenerator::CreateExtensionInfoHelper(
- info->controlled_info.emplace();
- info->controlled_info->text =
+@@ -595,17 +595,6 @@ void ExtensionInfoGenerator::FillExtensionInfo(const Extension& extension,
+ info.controlled_info.emplace();
+ info.controlled_info->text =
l10n_util::GetStringUTF8(IDS_EXTENSIONS_INSTALL_LOCATION_ENTERPRISE);
- } else {
- // Create Safety Hub information for any non-enterprise extension.
@@ -12,8 +12,8 @@ index e330cb7163..08da10083a 100644
- ExtensionSafetyCheckUtils::GetSafetyCheckWarningReason(extension,
- profile);
- if (warning_reason != developer::SafetyCheckWarningReason::kNone) {
-- info->safety_check_warning_reason = warning_reason;
-- info->safety_check_text =
+- info.safety_check_warning_reason = warning_reason;
+- info.safety_check_text =
- ExtensionSafetyCheckUtils::GetSafetyCheckWarningStrings(
- warning_reason, state);
- }
@@ -21,10 +21,10 @@ index e330cb7163..08da10083a 100644
bool is_enabled = state == developer::ExtensionState::kEnabled;
diff --git a/chrome/browser/extensions/extension_management.cc b/chrome/browser/extensions/extension_management.cc
-index eb2350fca9..f13816a016 100644
+index 7d55128c57..1f0e2b931a 100644
--- a/chrome/browser/extensions/extension_management.cc
+++ b/chrome/browser/extensions/extension_management.cc
-@@ -318,31 +318,7 @@ bool ExtensionManagement::IsAllowedManifestVersion(
+@@ -355,31 +355,7 @@ bool ExtensionManagement::IsAllowedManifestVersion(
int manifest_version,
const std::string& extension_id,
Manifest::Type manifest_type) {
@@ -50,13 +50,13 @@ index eb2350fca9..f13816a016 100644
- auto installation_mode =
- GetInstallationMode(extension_id, /*update_url=*/std::string());
- return manifest_version >= 3 ||
-- installation_mode == INSTALLATION_FORCED ||
-- installation_mode == INSTALLATION_RECOMMENDED;
+- installation_mode == ManagedInstallationMode::kForced ||
+- installation_mode == ManagedInstallationMode::kRecommended;
- }
}
bool ExtensionManagement::IsAllowedManifestVersion(const Extension* extension) {
-@@ -363,26 +339,8 @@ bool ExtensionManagement::IsExemptFromMV2DeprecationByPolicy(
+@@ -400,26 +376,8 @@ bool ExtensionManagement::IsExemptFromMV2DeprecationByPolicy(
return false;
}
@@ -75,36 +75,16 @@ index eb2350fca9..f13816a016 100644
- // installed extension only.
- auto installation_mode =
- GetInstallationMode(extension_id, /*update_url=*/std::string());
-- return installation_mode == INSTALLATION_FORCED ||
-- installation_mode == INSTALLATION_RECOMMENDED;
+- return installation_mode == ManagedInstallationMode::kForced ||
+- installation_mode == ManagedInstallationMode::kRecommended;
- }
-
- return false;
}
bool ExtensionManagement::IsAllowedByUnpublishedAvailabilityPolicy(
-diff --git a/chrome/browser/extensions/keyed_services/chrome_browser_context_keyed_service_factories.cc b/chrome/browser/extensions/keyed_services/chrome_browser_context_keyed_service_factories.cc
-index 555fd894e8..3f042548bd 100644
---- a/chrome/browser/extensions/keyed_services/chrome_browser_context_keyed_service_factories.cc
-+++ b/chrome/browser/extensions/keyed_services/chrome_browser_context_keyed_service_factories.cc
-@@ -23,7 +23,6 @@
- #include "chrome/browser/extensions/extension_web_ui_override_registrar.h"
- #include "chrome/browser/extensions/install_tracker_factory.h"
- #include "chrome/browser/extensions/install_verifier_factory.h"
--#include "chrome/browser/extensions/manifest_v2_experiment_manager.h"
- #include "chrome/browser/extensions/menu_manager_factory.h"
- #include "chrome/browser/extensions/permissions/permissions_updater.h"
- #include "chrome/browser/extensions/plugin_manager.h"
-@@ -55,7 +54,6 @@ void EnsureChromeBrowserContextKeyedServiceFactoriesBuilt() {
- extensions::ChromeExtensionSystemFactory::GetInstance();
- extensions::InstallTrackerFactory::GetInstance();
- extensions::InstallVerifierFactory::GetInstance();
-- extensions::ManifestV2ExperimentManager::GetFactory();
- extensions::MenuManagerFactory::GetInstance();
- extensions::PermissionsUpdater::EnsureAssociatedFactoryBuilt();
- #if BUILDFLAG(ENABLE_PLUGINS)
diff --git a/chrome/browser/extensions/manifest_v2_experiment_manager.cc b/chrome/browser/extensions/manifest_v2_experiment_manager.cc
-index 2e47e928e3..81ad199a24 100644
+index 08b7de6995..47ff0885ad 100644
--- a/chrome/browser/extensions/manifest_v2_experiment_manager.cc
+++ b/chrome/browser/extensions/manifest_v2_experiment_manager.cc
@@ -145,22 +145,6 @@ bool ManifestV2ExperimentManagerFactory::ServiceIsCreatedWithBrowserContext()
@@ -151,23 +131,23 @@ index 2e47e928e3..81ad199a24 100644
// Returns true if the given `stage` is one in which extension enablement should
diff --git a/chrome/browser/ui/webui/extensions/extensions_ui.cc b/chrome/browser/ui/webui/extensions/extensions_ui.cc
-index 057dc619e9..52d0e388c9 100644
+index 7f00cde25c..64bb58da80 100644
--- a/chrome/browser/ui/webui/extensions/extensions_ui.cc
+++ b/chrome/browser/ui/webui/extensions/extensions_ui.cc
-@@ -477,7 +477,7 @@ content::WebUIDataSource* CreateAndAddExtensionsSource(Profile* profile,
+@@ -482,7 +482,7 @@ content::WebUIDataSource* CreateAndAddExtensionsSource(Profile* profile,
extensions_features::kExtensionsMenuAccessControlWithPermittedSites));
source->AddBoolean(
"safetyHubThreeDotDetails",
- base::FeatureList::IsEnabled(features::kSafetyHubThreeDotDetails));
+ false);
- // TODO(crbug.com/392777363): Clean these up with non-placeholder values.
- #if BUILDFLAG(IS_ANDROID)
+ // MV2 deprecation.
+ auto* mv2_experiment_manager = ManifestV2ExperimentManager::Get(profile);
diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
-index 833ea42681..dfd41632bd 100644
+index d92362bb78..626edc0b64 100644
--- a/extensions/common/extension.cc
+++ b/extensions/common/extension.cc
-@@ -96,13 +96,6 @@ bool IsManifestSupported(int manifest_version,
+@@ -104,13 +104,6 @@ bool IsManifestSupported(int manifest_version,
// Supported versions are always safe.
if (manifest_version >= kMinimumSupportedManifestVersion &&
manifest_version <= kMaximumSupportedManifestVersion) {
diff --git a/www-client/chromium/files/chromium-139-mv2-ungoogled.patch b/www-client/chromium/files/chromium-139-mv2-ungoogled.patch
new file mode 100644
index 0000000..9450773
--- /dev/null
+++ b/www-client/chromium/files/chromium-139-mv2-ungoogled.patch
@@ -0,0 +1,163 @@
+diff --git a/chrome/browser/extensions/api/developer_private/extension_info_generator_shared.cc b/chrome/browser/extensions/api/developer_private/extension_info_generator_shared.cc
+index 3950614ed7..fecfe19744 100644
+--- a/chrome/browser/extensions/api/developer_private/extension_info_generator_shared.cc
++++ b/chrome/browser/extensions/api/developer_private/extension_info_generator_shared.cc
+@@ -596,17 +596,6 @@ void ExtensionInfoGeneratorShared::FillExtensionInfo(
+ info.controlled_info.emplace();
+ info.controlled_info->text =
+ l10n_util::GetStringUTF8(IDS_EXTENSIONS_INSTALL_LOCATION_ENTERPRISE);
+- } else {
+- // Create Safety Hub information for any non-enterprise extension.
+- developer::SafetyCheckWarningReason warning_reason =
+- ExtensionSafetyCheckUtils::GetSafetyCheckWarningReason(extension,
+- profile);
+- if (warning_reason != developer::SafetyCheckWarningReason::kNone) {
+- info.safety_check_warning_reason = warning_reason;
+- info.safety_check_text =
+- ExtensionSafetyCheckUtils::GetSafetyCheckWarningStrings(
+- warning_reason, state);
+- }
+ }
+
+ bool is_enabled = state == developer::ExtensionState::kEnabled;
+diff --git a/chrome/browser/extensions/extension_management.cc b/chrome/browser/extensions/extension_management.cc
+index ae782891ad..b0b82002e2 100644
+--- a/chrome/browser/extensions/extension_management.cc
++++ b/chrome/browser/extensions/extension_management.cc
+@@ -322,31 +322,7 @@ bool ExtensionManagement::IsAllowedManifestVersion(
+ int manifest_version,
+ const std::string& extension_id,
+ Manifest::Type manifest_type) {
+- bool enabled_by_default =
+- !base::FeatureList::IsEnabled(
+- extensions_features::kExtensionsManifestV3Only) ||
+- manifest_version >= 3;
+-
+- // Manifest version policy only supports normal extensions and Chrome OS login
+- // screen extension.
+- if (manifest_type != Manifest::Type::TYPE_EXTENSION &&
+- manifest_type != Manifest::Type::TYPE_LOGIN_SCREEN_EXTENSION) {
+- return enabled_by_default;
+- }
+- switch (global_settings_->manifest_v2_setting) {
+- case internal::GlobalSettings::ManifestV2Setting::kDefault:
+- return enabled_by_default;
+- case internal::GlobalSettings::ManifestV2Setting::kDisabled:
+- return manifest_version >= 3;
+- case internal::GlobalSettings::ManifestV2Setting::kEnabled:
+ return true;
+- case internal::GlobalSettings::ManifestV2Setting::kEnabledForForceInstalled:
+- auto installation_mode =
+- GetInstallationMode(extension_id, /*update_url=*/std::string());
+- return manifest_version >= 3 ||
+- installation_mode == ManagedInstallationMode::kForced ||
+- installation_mode == ManagedInstallationMode::kRecommended;
+- }
+ }
+
+ bool ExtensionManagement::IsAllowedManifestVersion(const Extension* extension) {
+@@ -367,26 +343,8 @@ bool ExtensionManagement::IsExemptFromMV2DeprecationByPolicy(
+ return false;
+ }
+
+- switch (global_settings_->manifest_v2_setting) {
+- case internal::GlobalSettings::ManifestV2Setting::kDefault:
+- // Default browser behavior. Not exempt.
+- return false;
+- case internal::GlobalSettings::ManifestV2Setting::kDisabled:
+- // All MV2 extensions are disallowed. Not exempt.
+- return false;
+- case internal::GlobalSettings::ManifestV2Setting::kEnabled:
+ // All MV2 extensions are allowed. Exempt.
+ return true;
+- case internal::GlobalSettings::ManifestV2Setting::kEnabledForForceInstalled:
+- // Force-installed MV2 extensions are allowed. Exempt if it's a force-
+- // installed extension only.
+- auto installation_mode =
+- GetInstallationMode(extension_id, /*update_url=*/std::string());
+- return installation_mode == ManagedInstallationMode::kForced ||
+- installation_mode == ManagedInstallationMode::kRecommended;
+- }
+-
+- return false;
+ }
+
+ bool ExtensionManagement::IsAllowedByUnpublishedAvailabilityPolicy(
+diff --git a/chrome/browser/extensions/manifest_v2_experiment_manager.cc b/chrome/browser/extensions/manifest_v2_experiment_manager.cc
+index 08b7de6995..47ff0885ad 100644
+--- a/chrome/browser/extensions/manifest_v2_experiment_manager.cc
++++ b/chrome/browser/extensions/manifest_v2_experiment_manager.cc
+@@ -145,22 +145,6 @@ bool ManifestV2ExperimentManagerFactory::ServiceIsCreatedWithBrowserContext()
+
+ // Determines the current stage of the MV2 deprecation experiments.
+ MV2ExperimentStage CalculateCurrentExperimentStage() {
+- // Return the "highest" stage that is currently active for the user.
+- if (base::FeatureList::IsEnabled(
+- extensions_features::kExtensionManifestV2Unsupported)) {
+- return MV2ExperimentStage::kUnsupported;
+- }
+-
+- if (base::FeatureList::IsEnabled(
+- extensions_features::kExtensionManifestV2Disabled)) {
+- return MV2ExperimentStage::kDisableWithReEnable;
+- }
+-
+- if (base::FeatureList::IsEnabled(
+- extensions_features::kExtensionManifestV2DeprecationWarning)) {
+- return MV2ExperimentStage::kWarning;
+- }
+-
+ return MV2ExperimentStage::kNone;
+ }
+
+@@ -200,19 +184,7 @@ PrefMap GetGlobalNoticeAcknowledgedPrefFor(
+ // Returns true if legacy extensions should be disabled, looking at both
+ // experiment stage and global state.
+ bool ShouldDisableLegacyExtensions(MV2ExperimentStage stage) {
+- if (g_allow_mv2_for_testing) {
+- // We allow legacy MV2 extensions for testing purposes.
+- return false;
+- }
+-
+- switch (stage) {
+- case MV2ExperimentStage::kNone:
+- case MV2ExperimentStage::kWarning:
+ return false;
+- case MV2ExperimentStage::kDisableWithReEnable:
+- case MV2ExperimentStage::kUnsupported:
+- return true;
+- }
+ }
+
+ // Returns true if the given `stage` is one in which extension enablement should
+diff --git a/chrome/browser/ui/webui/extensions/extensions_ui.cc b/chrome/browser/ui/webui/extensions/extensions_ui.cc
+index 7a4d1338c4..9c599a5e7d 100644
+--- a/chrome/browser/ui/webui/extensions/extensions_ui.cc
++++ b/chrome/browser/ui/webui/extensions/extensions_ui.cc
+@@ -490,7 +490,7 @@ content::WebUIDataSource* CreateAndAddExtensionsSource(Profile* profile,
+ extensions_features::kExtensionsMenuAccessControlWithPermittedSites));
+ source->AddBoolean(
+ "safetyHubThreeDotDetails",
+- base::FeatureList::IsEnabled(features::kSafetyHubThreeDotDetails));
++ false);
+
+ // MV2 deprecation.
+ auto* mv2_experiment_manager = ManifestV2ExperimentManager::Get(profile);
+diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
+index f82aaf92ad..48041098a8 100644
+--- a/extensions/common/extension.cc
++++ b/extensions/common/extension.cc
+@@ -104,13 +104,6 @@ bool IsManifestSupported(int manifest_version,
+ // Supported versions are always safe.
+ if (manifest_version >= kMinimumSupportedManifestVersion &&
+ manifest_version <= kMaximumSupportedManifestVersion) {
+- // Emit a warning for unpacked extensions on Manifest V2 warning that
+- // MV2 is deprecated.
+- if (type == Manifest::TYPE_EXTENSION && manifest_version == 2 &&
+- Manifest::IsUnpackedLocation(location) &&
+- !g_silence_deprecated_manifest_version_warnings) {
+- *warning = errors::kManifestV2IsDeprecatedWarning;
+- }
+ return true;
+ }
+
diff --git a/www-client/chromium/files/chromium-135-protobuf-RepeatedPtrField-export.patch b/www-client/chromium/files/chromium-139-protobuf-RepeatedPtrField-export.patch
index 5d336bd..948eede 100644
--- a/www-client/chromium/files/chromium-135-protobuf-RepeatedPtrField-export.patch
+++ b/www-client/chromium/files/chromium-139-protobuf-RepeatedPtrField-export.patch
@@ -1,13 +1,13 @@
diff --git a/third_party/protobuf/src/google/protobuf/repeated_ptr_field.h b/third_party/protobuf/src/google/protobuf/repeated_ptr_field.h
-index 36ca1c65c9..30baf169ef 100644
+index e98f8df605..6035b0b84b 100644
--- a/third_party/protobuf/src/google/protobuf/repeated_ptr_field.h
+++ b/third_party/protobuf/src/google/protobuf/repeated_ptr_field.h
-@@ -926,7 +926,7 @@ class GenericTypeHandler<std::string> {
+@@ -944,7 +944,7 @@ class GenericTypeHandler<std::string> {
// RepeatedPtrField is like RepeatedField, but used for repeated strings or
// Messages.
template <typename Element>
--class RepeatedPtrField final : private internal::RepeatedPtrFieldBase {
-+class PROTOBUF_EXPORT RepeatedPtrField final : private internal::RepeatedPtrFieldBase {
+-class ABSL_ATTRIBUTE_WARN_UNUSED RepeatedPtrField final
++class PROTOBUF_EXPORT ABSL_ATTRIBUTE_WARN_UNUSED RepeatedPtrField final
+ : private internal::RepeatedPtrFieldBase {
static_assert(!std::is_const<Element>::value,
"We do not support const value types.");
- static_assert(!std::is_volatile<Element>::value,