diff --git a/srcpkgs/chromium/patches/aarch64-musl-no-memory-tagging.patch b/srcpkgs/chromium/patches/aarch64-musl-no-memory-tagging.patch new file mode 100644 index 00000000000..3142e42d9df --- /dev/null +++ b/srcpkgs/chromium/patches/aarch64-musl-no-memory-tagging.patch @@ -0,0 +1,22 @@ +--- a/base/allocator/partition_allocator/partition_alloc.gni ++++ b/base/allocator/partition_allocator/partition_alloc.gni +@@ -90,7 +90,7 @@ + use_large_empty_slot_span_ring = true + + has_memory_tagging = current_cpu == "arm64" && is_clang && !is_asan && +- !is_hwasan && (is_linux || is_android) ++ !is_hwasan && (is_linux || is_android) && !is_musl + + declare_args() { + # Debug configuration. +--- a/base/allocator/partition_allocator/src/partition_alloc/aarch64_support.h ++++ b/base/allocator/partition_allocator/src/partition_alloc/aarch64_support.h +@@ -10,7 +10,7 @@ + #include "partition_alloc/build_config.h" + #include "partition_alloc/buildflags.h" + +-#if PA_BUILDFLAG(IS_ANDROID) || PA_BUILDFLAG(IS_LINUX) ++#if PA_BUILDFLAG(IS_ANDROID) || (PA_BUILDFLAG(IS_LINUX) && defined(__GLIBC__)) + #define HAS_HW_CAPS + #endif + diff --git a/srcpkgs/chromium/patches/cross-build.patch b/srcpkgs/chromium/patches/cross-build.patch index 748c7dd55ed..439f2522643 100644 --- a/srcpkgs/chromium/patches/cross-build.patch +++ b/srcpkgs/chromium/patches/cross-build.patch @@ -52,3 +52,81 @@ args = common_pkg_config_args + host_pkg_config_args + invoker.packages } else { args = common_pkg_config_args + pkg_config_args + invoker.packages +--- a/build/config/clang/BUILD.gn ++++ b/build/config/clang/BUILD.gn +@@ -168,7 +168,11 @@ + _suffix = "" + _ext = "a" + +- _clang_lib_dir = "$clang_base_path/lib/clang/$clang_version/lib" ++ if (current_cpu != target_cpu) { ++ _clang_lib_dir = "$clang_base_path/lib/clang/$clang_version/lib" ++ } else { ++ _clang_lib_dir = "$clang_cross_path/lib/clang/$clang_version/lib" ++ } + if (is_win) { + _dir = "windows" + _prefix = "" +--- a/build/config/clang/clang.gni ++++ b/build/config/clang/clang.gni +@@ -36,6 +36,7 @@ + is_mac || is_ios || is_chromeos) + + clang_base_path = default_clang_base_path ++ clang_cross_path = default_clang_base_path + + # Specifies whether or not bitcode should be embedded during compilation. + # This is used for creating a MLGO corpus from Chromium in the non-ThinLTO case. +--- a/build/rust/std/find_std_rlibs.py ++++ b/build/rust/std/find_std_rlibs.py +@@ -26,6 +26,7 @@ + help="Path to Rust binaries", + required=True), + parser.add_argument("--target", help="Rust target triple", required=False), ++ parser.add_argument("--sysroot", help="Rust sysroot", required=False), + parser.add_argument("--output", + help="Path to rlibs without suffixes", + required=True) +@@ -50,6 +51,8 @@ + rustc_args = [rustc, "--print", "target-libdir"] + if args.target: + rustc_args.extend(["--target", args.target]) ++ if args.sysroot: ++ rustc_args.extend(["--sysroot", args.sysroot]) + rustlib_dir = subprocess.check_output(rustc_args).rstrip().decode() + + # Copy the rlibs to a predictable location. Whilst we're doing so, +--- a/build/config/rust.gni ++++ b/build/config/rust.gni +@@ -60,6 +60,7 @@ + # a Rust sysroot, which will have a 'bin' directory and others. Commonly + # /.rustup/toolchains/nightly-- + rust_sysroot_absolute = "" ++ rust_cross_sysroot_absolute = "" + + # Directory under which to find `bin/bindgen` (a `bin` directory containing + # the bindgen exectuable). +--- a/build/rust/std/BUILD.gn ++++ b/build/rust/std/BUILD.gn +@@ -336,6 +335,13 @@ + rust_abi_target, + ] + ++ if (current_cpu == target_cpu && rust_cross_sysroot_absolute != "") { ++ args += [ ++ "--sysroot", ++ rust_cross_sysroot_absolute, ++ ] ++ } ++ + outputs = [] + foreach(lib, all_stdlibs_to_copy) { + outputs += [ "$target_out_dir/lib$lib.rlib" ] +@@ -393,6 +399,7 @@ + group("std") { + all_dependent_configs = [ + ":prebuilt_stdlib_libs", ++ ":prebuilt_stdlib_sysroot", + ":stdlib_public_dependent_libs", + ] + deps = [ ":prebuilt_rustc_copy_to_sysroot" ] diff --git a/srcpkgs/chromium/patches/libcxx-musl.patch b/srcpkgs/chromium/patches/libcxx-musl.patch deleted file mode 100644 index eaf36dca67e..00000000000 --- a/srcpkgs/chromium/patches/libcxx-musl.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 39c6c8be2f3f607b413e3f05ab1f4678efdd129a Mon Sep 17 00:00:00 2001 -From: Brian Cain -Date: Thu, 27 Feb 2025 21:49:19 -0600 -Subject: [PATCH] [libc++] Fix the locale base API on Linux with musl (#128936) - -Since `363bfd6090b0 ([libc++] Use the new locale base API on Linux -(#128007), 2025-02-24)`, musl targets will fail to build with errors -due to missing strtoll_l functions. - -Co-authored-by: Pirama Arumuga Nainar ---- - libcxx/include/__locale_dir/support/linux.h | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/libcxx/include/__locale_dir/support/linux.h b/libcxx/include/__locale_dir/support/linux.h -index f1662c0112603..fa0b03c646a2a 100644 ---- a/third_party/libc++/src/include/__locale_dir/support/linux.h -+++ b/third_party/libc++/src/__locale_dir/support/linux.h -@@ -95,12 +95,22 @@ inline _LIBCPP_HIDE_FROM_ABI long double __strtold(const char* __nptr, char** __ - } - - inline _LIBCPP_HIDE_FROM_ABI long long __strtoll(const char* __nptr, char** __endptr, int __base, __locale_t __loc) { -+#if !_LIBCPP_HAS_MUSL_LIBC - return ::strtoll_l(__nptr, __endptr, __base, __loc); -+#else -+ (void)__loc; -+ return ::strtoll(__nptr, __endptr, __base); -+#endif - } - - inline _LIBCPP_HIDE_FROM_ABI unsigned long long - __strtoull(const char* __nptr, char** __endptr, int __base, __locale_t __loc) { -+#if !_LIBCPP_HAS_MUSL_LIBC - return ::strtoull_l(__nptr, __endptr, __base, __loc); -+#else -+ (void)__loc; -+ return ::strtoull(__nptr, __endptr, __base); -+#endif - } - - // diff --git a/srcpkgs/chromium/patches/llvm19.patch b/srcpkgs/chromium/patches/llvm19.patch new file mode 100644 index 00000000000..5f15ee50d6a --- /dev/null +++ b/srcpkgs/chromium/patches/llvm19.patch @@ -0,0 +1,11 @@ +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -1641,7 +1641,7 @@ + # 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 != "") { ++ clang_warning_suppression_file != "" && clang_version != "19") { + from_build_root = + rebase_path(clang_warning_suppression_file, root_build_dir) + inputs = [ clang_warning_suppression_file ] diff --git a/srcpkgs/chromium/patches/node-do-not-check-version.patch b/srcpkgs/chromium/patches/node-do-not-check-version.patch new file mode 100644 index 00000000000..3faf41731c8 --- /dev/null +++ b/srcpkgs/chromium/patches/node-do-not-check-version.patch @@ -0,0 +1,19 @@ +--- a/third_party/node/node.gni ++++ b/third_party/node/node.gni +@@ -35,16 +35,5 @@ + inputs += [ "//third_party/node/mac/node-darwin-x64/bin/node" ] + } + } +- +- # Automatically add a dependency to ":check_version" to ensure NodeJS is +- # always running the expected version, except when the ':check_version' +- # target itself is running in which case it shouldn't depend on itself. +- if (get_label_info(":" + target_name, "label_no_toolchain") != +- "//third_party/node:check_version") { +- if (!defined(deps)) { +- deps = [] +- } +- deps += [ "//third_party/node:check_version" ] +- } + } + } diff --git a/srcpkgs/chromium/template b/srcpkgs/chromium/template index c60f274e23d..5a353b9e220 100644 --- a/srcpkgs/chromium/template +++ b/srcpkgs/chromium/template @@ -1,7 +1,7 @@ # Template file for 'chromium' pkgname=chromium # See https://chromiumdash.appspot.com/releases?platform=Linux for the latest version -version=135.0.7049.52 +version=136.0.7103.59 revision=1 archs="i686* x86_64* aarch64* armv7l*" _llvmver=19 @@ -20,7 +20,7 @@ makedepends=" libxslt-devel minizip-devel mit-krb5-devel nss-devel opus-devel pciutils-devel snappy-devel speech-dispatcher-devel speex-devel xcb-proto zlib-devel libaom-devel libffi-devel libevdev-devel - compiler-rt + compiler-rt${_llvmver} rust-std $(vopt_if pipewire pipewire-devel) $(vopt_if pulseaudio pulseaudio-devel) $(vopt_if sndio sndio-devel)" @@ -31,7 +31,7 @@ license="BSD-3-Clause" homepage="https://www.chromium.org/" distfiles="https://commondatastorage.googleapis.com/chromium-browser-official/chromium-${version}.tar.xz" #distfiles="https://chromium-tarballs.distfiles.gentoo.org/chromium-${version}.tar.xz" -checksum=620ed41ac1c1bd465c775376deaafd43fd0f6cdd2be1971ed87511683728f5a7 +checksum=3ce1ef863767b3a72058a0f0ceb150cc7b8a9ba8bc24e19c98d25f8b395a8cfe lib32disabled=yes @@ -69,7 +69,7 @@ fi if [ "$CROSS_BUILD" ]; then case "${XBPS_TARGET_MACHINE}" in - # aarch64*) ;; + aarch64*) ;; *) nocross="chromium can not be cross compiled for this architecture" ;; esac fi @@ -93,10 +93,6 @@ post_patch() { mkdir -p third_party/node/linux/node-linux-x64/bin rm -f third_party/node/linux/node-linux-x64/bin/node ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/ - - # Rust 1.86 ships adler2 but we need to change it to adler when - # using older Rust versions (idea for this borrowed from Gentoo^WArch) - sed -i 's/adler2/adler/' build/rust/std/BUILD.gn } _setup_clang() { @@ -211,12 +207,14 @@ do_configure() { "use_lld=$(vopt_if clang true false)" 'clang_use_chrome_plugins=false' 'clang_base_path="/usr"' + "clang_cross_path=\"${XBPS_CROSS_BASE}\"" "clang_version=\"${clang_version%%.*}\"" "use_custom_libcxx=$(vopt_if libcxx true false)" # https://github.com/llvm/llvm-project/issues/61705 'enable_rust=true' 'rust_sysroot_absolute="/usr"' + "rust_cross_sysroot_absolute=\"${XBPS_CROSS_BASE}\"" 'rust_bindgen_root="/usr"' "rustc_version=\"$(rustc --version)\""