diff options
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, |