diff --git a/.chromium.metadata b/.chromium.metadata index e32f6a1d..bc0b929c 100644 --- a/.chromium.metadata +++ b/.chromium.metadata @@ -6,3 +6,5 @@ dea187019741602d57aaf189a80abba261fbd2aa SOURCES/linux-x64-0.19.2.tgz 8e9bc55cce3899627b2810ecfe87116c5a9147b5 SOURCES/chromium-browser-gost-icons.tar.xz a2a9663fa5c46439dafbc1b0f23825b2a8c68acf SOURCES/msspi-2e626e5a5605cc4c03fa4bfc0145e459864e897a.tar.xz 4543172087b8a3971b37ddaa4cf1fc91a575bfae SOURCES/Chromium-Gost-3224c62bcc360b80de98da20358cbbe16d773c10.tar.xz +b66519ed49abdd4712315ae3a4645830073c09cf SOURCES/bindgen-cli-aarch64.tar.xz +107a886d1095bb01268e6cd51f1878385e694229 SOURCES/bindgen-cli-x86_64.tar.xz diff --git a/.gitignore b/.gitignore index 61cc7649..91e6709e 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,5 @@ SOURCES/node-v20.6.1-linux-arm64.tar.xz SOURCES/chromium-browser-gost-icons.tar.xz SOURCES/msspi-2e626e5a5605cc4c03fa4bfc0145e459864e897a.tar.xz SOURCES/Chromium-Gost-3224c62bcc360b80de98da20358cbbe16d773c10.tar.xz +SOURCES/bindgen-cli-aarch64.tar.xz +SOURCES/bindgen-cli-x86_64.tar.xz diff --git a/SOURCES/chromium-124-el8-libdav1d-aarch64.patch b/SOURCES/chromium-124-el8-libdav1d-aarch64.patch deleted file mode 100644 index 03862e93..00000000 --- a/SOURCES/chromium-124-el8-libdav1d-aarch64.patch +++ /dev/null @@ -1,53 +0,0 @@ ---- chromium-124.0.6367.60/third_party/dav1d/libdav1d/src/arm/asm.S 2024-04-15 22:34:36.000000000 +0200 -+++ chromium-122.0.6261.128/third_party/dav1d/libdav1d/src/arm/asm.S 2024-03-13 00:38:27.000000000 +0100 -@@ -34,50 +34,6 @@ - #define x18 do_not_use_x18 - #define w18 do_not_use_w18 - --#if HAVE_AS_ARCH_DIRECTIVE -- .arch AS_ARCH_LEVEL --#endif -- --#if HAVE_AS_ARCHEXT_DOTPROD_DIRECTIVE --#define ENABLE_DOTPROD .arch_extension dotprod --#define DISABLE_DOTPROD .arch_extension nodotprod --#else --#define ENABLE_DOTPROD --#define DISABLE_DOTPROD --#endif --#if HAVE_AS_ARCHEXT_I8MM_DIRECTIVE --#define ENABLE_I8MM .arch_extension i8mm --#define DISABLE_I8MM .arch_extension noi8mm --#else --#define ENABLE_I8MM --#define DISABLE_I8MM --#endif --#if HAVE_AS_ARCHEXT_SVE_DIRECTIVE --#define ENABLE_SVE .arch_extension sve --#define DISABLE_SVE .arch_extension nosve --#else --#define ENABLE_SVE --#define DISABLE_SVE --#endif --#if HAVE_AS_ARCHEXT_SVE2_DIRECTIVE --#define ENABLE_SVE2 .arch_extension sve2 --#define DISABLE_SVE2 .arch_extension nosve2 --#else --#define ENABLE_SVE2 --#define DISABLE_SVE2 --#endif -- --/* If we do support the .arch_extension directives, disable support for all -- * the extensions that we may use, in case they were implicitly enabled by -- * the .arch level. This makes it clear if we try to assemble an instruction -- * from an unintended extension set; we only allow assmbling such instructions -- * within regions where we explicitly enable those extensions. */ --DISABLE_DOTPROD --DISABLE_I8MM --DISABLE_SVE --DISABLE_SVE2 -- -- - /* Support macros for - * - Armv8.3-A Pointer Authentication and - * - Armv8.5-A Branch Target Identification diff --git a/SOURCES/chromium-126-el8-ifunc-header.patch b/SOURCES/chromium-126-el8-ifunc-header.patch deleted file mode 100644 index 72368df0..00000000 --- a/SOURCES/chromium-126-el8-ifunc-header.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -up chromium-126.0.6478.55/base/allocator/partition_allocator/src/partition_alloc/aarch64_support.h.me chromium-126.0.6478.55/base/allocator/partition_allocator/src/partition_alloc/aarch64_support.h ---- chromium-126.0.6478.55/base/allocator/partition_allocator/src/partition_alloc/aarch64_support.h.me 2024-06-12 13:09:47.539620293 -0400 -+++ chromium-126.0.6478.55/base/allocator/partition_allocator/src/partition_alloc/aarch64_support.h 2024-06-12 13:12:10.570739701 -0400 -@@ -10,9 +10,11 @@ - #include "partition_alloc/build_config.h" - #include "partition_alloc/partition_alloc_buildflags.h" - -+#if 0 - #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) - #define HAS_HW_CAPS - #endif -+#endif - - #if defined(ARCH_CPU_ARM64) && defined(HAS_HW_CAPS) - #include diff --git a/SOURCES/chromium-127-crabbyavif.patch b/SOURCES/chromium-127-crabbyavif.patch new file mode 100644 index 00000000..a72200e6 --- /dev/null +++ b/SOURCES/chromium-127-crabbyavif.patch @@ -0,0 +1,38 @@ +commit 89dcd2d419755421290f85e32617acabdd81cac1 +Author: lauren n. liberda +Date: Thu Jun 20 18:55:57 2024 +0000 + + unbundle: add missing dav1d targets + + fixes "ERROR Unresolved dependencies. + //third_party/crabbyavif:crabbyavif_dav1d_bindings(//build/toolchain/linux/unbundle:default) + needs //third_party/dav1d:dav1d_config(//build/toolchain/linux/unbundle:default) + //third_party/crabbyavif:crabbyavif_dav1d_bindings(//build/toolchain/linux/unbundle:default) + needs //third_party/dav1d:dav1d_headers(//build/toolchain/linux/unbundle:default)" + + Change-Id: I85442e5fb67a804985354570fba453cc619c83d7 + Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5642761 + Reviewed-by: Lei Zhang + Reviewed-by: Thomas Anderson + Commit-Queue: Thomas Anderson + Cr-Commit-Position: refs/heads/main@{#1317534} + +diff --git a/build/linux/unbundle/dav1d.gn b/build/linux/unbundle/dav1d.gn +index 3d65158bc6144..a6d005a6622e3 100644 +--- a/build/linux/unbundle/dav1d.gn ++++ b/build/linux/unbundle/dav1d.gn +@@ -21,3 +21,14 @@ source_set("dav1d") { + deps = [ ":dav1d_shim" ] + public_configs = [ ":system_dav1d" ] + } ++ ++group("dav1d_headers") { ++ public_deps = [ ":dav1d_shim" ] ++} ++ ++config("dav1d_config") { ++ configs = [ ++ ":system_dav1d", ++ ":dav1d_shim_config", ++ ] ++} diff --git a/SOURCES/chromium-127-el8-ifunc-header.patch b/SOURCES/chromium-127-el8-ifunc-header.patch new file mode 100644 index 00000000..985b118e --- /dev/null +++ b/SOURCES/chromium-127-el8-ifunc-header.patch @@ -0,0 +1,15 @@ +diff -up chromium-127.0.6533.72/base/allocator/partition_allocator/src/partition_alloc/aarch64_support.h.me chromium-127.0.6533.72/base/allocator/partition_allocator/src/partition_alloc/aarch64_support.h +--- chromium-127.0.6533.72/base/allocator/partition_allocator/src/partition_alloc/aarch64_support.h.me 2024-07-25 23:58:19.751616508 +0200 ++++ chromium-127.0.6533.72/base/allocator/partition_allocator/src/partition_alloc/aarch64_support.h 2024-07-26 00:01:46.391800969 +0200 +@@ -10,9 +10,11 @@ + #include "partition_alloc/build_config.h" + #include "partition_alloc/partition_alloc_buildflags.h" + ++#if 0 + #if PA_BUILDFLAG(IS_ANDROID) || PA_BUILDFLAG(IS_LINUX) + #define HAS_HW_CAPS + #endif ++#endif + + #if PA_BUILDFLAG(PA_ARCH_CPU_ARM64) && defined(HAS_HW_CAPS) + #include diff --git a/SOURCES/chromium-124-rust-clang_lib.patch b/SOURCES/chromium-127-rust-clanglib.patch similarity index 80% rename from SOURCES/chromium-124-rust-clang_lib.patch rename to SOURCES/chromium-127-rust-clanglib.patch index cc152ecc..55b3ce73 100644 --- a/SOURCES/chromium-124-rust-clang_lib.patch +++ b/SOURCES/chromium-127-rust-clanglib.patch @@ -1,3 +1,15 @@ +diff -up chromium-127.0.6533.72/build/rust/rust_bindgen.gni.me chromium-127.0.6533.72/build/rust/rust_bindgen.gni +--- chromium-127.0.6533.72/build/rust/rust_bindgen.gni.me 2024-07-25 16:11:18.754551595 +0200 ++++ chromium-127.0.6533.72/build/rust/rust_bindgen.gni 2024-07-25 16:11:33.997837660 +0200 +@@ -22,7 +22,7 @@ _libclang_path = rust_bindgen_root + if (host_os == "win") { + _libclang_path += "/bin" + } else { +- _libclang_path += "/lib" ++ _libclang_path += "/lib64" + } + + # Template to build Rust/C bindings with bindgen. diff -up chromium-121.0.6167.57/build/config/clang/BUILD.gn.rust-clang_lib chromium-121.0.6167.57/build/config/clang/BUILD.gn --- chromium-121.0.6167.57/build/config/clang/BUILD.gn.rust-clang_lib 2024-01-10 16:43:01.000000000 +0100 +++ chromium-121.0.6167.57/build/config/clang/BUILD.gn 2024-01-20 19:51:38.481992799 +0100 diff --git a/SOURCES/chromium-latest.py b/SOURCES/chromium-latest.py index eb2d3f00..e06be497 100644 --- a/SOURCES/chromium-latest.py +++ b/SOURCES/chromium-latest.py @@ -315,7 +315,11 @@ if __name__ == '__main__': nacl_versions(chromium_version) if (args.cleansources): - junk_dirs = ['build/linux/debian_bullseye_amd64-sysroot', 'build/linux/debian_bullseye_i386-sysroot'] + junk_dirs = ['build/linux/debian_bullseye_amd64-sysroot', + 'build/linux/debian_bullseye_i386-sysroot', + 'third_party/node/linux/node-linux-x64', + 'third_party/rust-toolchain', + 'third_party/rust-src'] # First, the dirs: for directory in junk_dirs: diff --git a/SOURCES/clean_ffmpeg.sh b/SOURCES/clean_ffmpeg.sh old mode 100755 new mode 100644 index 9195c7c1..1fb4b804 --- a/SOURCES/clean_ffmpeg.sh +++ b/SOURCES/clean_ffmpeg.sh @@ -138,7 +138,7 @@ header_files=" libavcodec/x86/inline_asm.h \ libavcodec/pixels.h \ libavcodec/png.h \ libavcodec/pngdsp.h \ - libavcodec/progressframe.h \ + libavcodec/progressframe.h \ libavcodec/put_bits.h \ libavcodec/qpeldsp.h \ libavcodec/ratecontrol.h \ @@ -236,6 +236,7 @@ manual_files=" libavcodec/aarch64/h264pred_neon.S \ libavcodec/aarch64/hpeldsp_neon.S \ libavcodec/aarch64/neon.S \ libavcodec/aarch64/vorbisdsp_neon.S \ + libavcodec/aarch64/autorename_libavcodec_aarch64_vorbisdsp_neon.S \ libavcodec/aarch64/vorbisdsp_init.c \ libavcodec/aarch64/vp8dsp_neon.S \ libavcodec/x86/hpeldsp.asm \ @@ -273,6 +274,8 @@ manual_files=" libavcodec/aarch64/h264pred_neon.S \ libavutil/aarch64/cpu.c \ libavutil/aarch64/float_dsp_init.c \ libavutil/aarch64/float_dsp_neon.S \ + libavutil/aarch64/autorename_libavutil_aarch64_float_dsp_neon.S \ + libavutil/aarch64/tx_float_neon.S \ libavutil/aarch64/timer.h \ libavutil/cpu.c \ libavutil/fixed_dsp.c \ @@ -285,6 +288,7 @@ manual_files=" libavcodec/aarch64/h264pred_neon.S \ libavutil/x86/cpu.c \ libavutil/x86/float_dsp_init.c \ libavutil/x86/tx_float_init.c \ + libavutil/aarch64/tx_float_init.c \ libavutil/x86/x86inc.asm \ libavutil/x86/x86util.asm " diff --git a/SOURCES/fix-rust-linking.patch b/SOURCES/fix-rust-linking.patch index a2284e90..92ab34b2 100644 --- a/SOURCES/fix-rust-linking.patch +++ b/SOURCES/fix-rust-linking.patch @@ -1,8 +1,8 @@ -Index: chromium-121.0.6167.75/build/toolchain/gcc_toolchain.gni +Index: chromium-127.0.6533.72/build/toolchain/gcc_toolchain.gni =================================================================== ---- chromium-121.0.6167.75.orig/build/toolchain/gcc_toolchain.gni -+++ chromium-121.0.6167.75/build/toolchain/gcc_toolchain.gni -@@ -464,7 +464,13 @@ template("single_gcc_toolchain") { +--- chromium-127.0.6533.72.orig/build/toolchain/gcc_toolchain.gni ++++ chromium-127.0.6533.72/build/toolchain/gcc_toolchain.gni +@@ -439,7 +439,13 @@ template("single_gcc_toolchain") { # -soname flag is not available on aix ld soname_flag = "-Wl,-soname=\"$soname\"" } @@ -17,7 +17,7 @@ Index: chromium-121.0.6167.75/build/toolchain/gcc_toolchain.gni # Generate a map file to be used for binary size analysis. # Map file adds ~10% to the link time on a z620. -@@ -576,7 +582,13 @@ template("single_gcc_toolchain") { +@@ -551,7 +557,13 @@ template("single_gcc_toolchain") { whole_archive_flag = "-Wl,--whole-archive" no_whole_archive_flag = "-Wl,--no-whole-archive" } @@ -32,18 +32,3 @@ Index: chromium-121.0.6167.75/build/toolchain/gcc_toolchain.gni if (defined(invoker.strip)) { strip_command = "${invoker.strip} -o \"$sofile\" \"$unstripped_sofile\"" -@@ -636,7 +648,13 @@ template("single_gcc_toolchain") { - start_group_flag = "-Wl,--start-group" - end_group_flag = "-Wl,--end-group " - } -- link_command = "$ld {{ldflags}}${extra_ldflags} -o \"$unstripped_outfile\" $start_group_flag @\"$rspfile\" {{solibs}} $end_group_flag {{libs}} {{rlibs}}" -+ if (target_cpu == "ppc64") { -+ # Work around linker failures due to Rust libraries and the use of whole-archive -+ link_command = "$ld -Wl,--start-group {{ldflags}}${extra_ldflags} -o \"$unstripped_outfile\" @\"$rspfile\" {{solibs}} {{libs}} {{rlibs}} -Wl,--end-group" -+ } -+ else { -+ link_command = "$ld {{ldflags}}${extra_ldflags} -o \"$unstripped_outfile\" $start_group_flag @\"$rspfile\" {{solibs}} $end_group_flag {{libs}} {{rlibs}}" -+ } - - # Generate a map file to be used for binary size analysis. - # Map file adds ~10% to the link time on a z620. diff --git a/SOURCES/use-sysconf-page-size-on-ppc64.patch b/SOURCES/use-sysconf-page-size-on-ppc64.patch index 1d8b6161..26848ea1 100644 --- a/SOURCES/use-sysconf-page-size-on-ppc64.patch +++ b/SOURCES/use-sysconf-page-size-on-ppc64.patch @@ -1,10 +1,12 @@ ---- a/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h -+++ b/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h +Index: chromium-127.0.6533.72/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h +=================================================================== +--- chromium-127.0.6533.72.orig/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h ++++ chromium-127.0.6533.72/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h @@ -176,7 +176,11 @@ SystemPageBaseMask() { return ~SystemPageOffsetMask(); } -+#if defined(ARCH_CPU_PPC64) ++#if PA_BUILDFLAG(PA_ARCH_CPU_PPC64_FAMILY) +constexpr size_t kPageMetadataShift = 6; // 64 bytes per partition page. +#else constexpr size_t kPageMetadataShift = 5; // 32 bytes per partition page. @@ -12,13 +14,15 @@ constexpr size_t kPageMetadataSize = 1 << kPageMetadataShift; } // namespace internal ---- a/base/allocator/partition_allocator/src/partition_alloc/partition_page.h -+++ b/base/allocator/partition_allocator/src/partition_alloc/partition_page.h -@@ -86,7 +86,11 @@ struct SlotSpanMetadata { +Index: chromium-127.0.6533.72/base/allocator/partition_allocator/src/partition_alloc/partition_page.h +=================================================================== +--- chromium-127.0.6533.72.orig/base/allocator/partition_allocator/src/partition_alloc/partition_page.h ++++ chromium-127.0.6533.72/base/allocator/partition_allocator/src/partition_alloc/partition_page.h +@@ -87,7 +87,11 @@ struct SlotSpanMetadata { // CHECK()ed in AllocNewSlotSpan(). // The maximum number of bits needed to cover all currently supported OSes. -+#if defined(ARCH_CPU_PPC64) ++#if PA_BUILDFLAG(PA_ARCH_CPU_PPC64_FAMILY) + static constexpr size_t kMaxSlotsPerSlotSpanBits = 15; +#else static constexpr size_t kMaxSlotsPerSlotSpanBits = 13; @@ -26,11 +30,11 @@ static_assert(kMaxSlotsPerSlotSpan < (1 << kMaxSlotsPerSlotSpanBits), ""); // |marked_full| isn't equivalent to being full. Slot span is marked as full -@@ -100,7 +104,11 @@ struct SlotSpanMetadata { +@@ -101,7 +105,11 @@ struct SlotSpanMetadata { private: const uint32_t can_store_raw_size_ : 1; uint32_t freelist_is_sorted_ : 1; -+#if defined(ARCH_CPU_PPC64) ++#if PA_BUILDFLAG(PA_ARCH_CPU_PPC64_FAMILY) + uint32_t unused1_ : (64 - 1 - 2 * kMaxSlotsPerSlotSpanBits - 1 - 1); +#else uint32_t unused1_ : (32 - 1 - 2 * kMaxSlotsPerSlotSpanBits - 1 - 1); @@ -38,16 +42,15 @@ // If |in_empty_cache_|==1, |empty_cache_index| is undefined and mustn't be // used. uint16_t in_empty_cache_ : 1; ---- a/base/allocator/partition_allocator/src/partition_alloc/partition_page_constants.h -+++ b/base/allocator/partition_allocator/src/partition_alloc/partition_page_constants.h -@@ -21,6 +21,11 @@ static constexpr size_t kMaxSlotsPerSlot +Index: chromium-127.0.6533.72/base/allocator/partition_allocator/src/partition_alloc/partition_page_constants.h +=================================================================== +--- chromium-127.0.6533.72.orig/base/allocator/partition_allocator/src/partition_alloc/partition_page_constants.h ++++ chromium-127.0.6533.72/base/allocator/partition_allocator/src/partition_alloc/partition_page_constants.h +@@ -20,7 +20,7 @@ + // System page size can be 4, 16, or 64 kiB on Linux on arm64. 64 kiB is // currently (kMaxSlotsPerSlotSpanBits == 13) not supported by the code, // so we use the 16 kiB maximum (64 kiB will crash). - static constexpr size_t kMaxSlotsPerSlotSpan = 4 * (1 << 14) / kSmallestBucket; -+#elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_PPC64) -+// System page size is not a constant on OpenPOWER systems, but is either 4kiB -+// or 64kiB (1 << 12 or 1 << 16) -+// And PartitionPageSize() is 4 times the OS page size. +-static constexpr size_t kMaxSlotsPerSlotSpan = 4 * (1 << 14) / kSmallestBucket; +static constexpr size_t kMaxSlotsPerSlotSpan = 4 * (1 << 16) / kSmallestBucket; #else // A slot span can "span" multiple PartitionPages, but then its slot size is diff --git a/SPECS/chromium.spec b/SPECS/chromium.spec index 8e814949..cf0cc70f 100644 --- a/SPECS/chromium.spec +++ b/SPECS/chromium.spec @@ -226,8 +226,22 @@ %global bundlelibaom 1 %global bundlelibavif 1 %global bundlesnappy 1 +%global bundlezstd 1 %global bundleicu 1 %global bundledav1d 1 +%global bundlebrotli 1 +%global bundlelibwebp 1 +%global bundlecrc32c 1 +%global bundleharfbuzz 1 +%global bundlelibpng 1 +%global bundlelibjpeg 1 +%global bundlefreetype 1 +%global bundlelibdrm 1 +%global bundlefontconfig 1 +%global bundleffmpegfree 1 +%global bundlelibopenjpeg2 1 +%global bundlelibtiff 1 +%global bundlelibxml 1 %global bundlepylibs 0 %global bundlelibxslt 0 %global bundleflac 0 @@ -240,7 +254,11 @@ %global bundleopus 0 %global bundlelcms2 0 -# RHEL 7.9 dropped minizip. +# workaround for build error on aarch64 +%ifarch aarch64 +%global bundlehighway 1 +%endif + # enable bundleminizip for Fedora > 39 due to switch to minizip-ng # which breaks the build %global bundleminizip 0 @@ -251,44 +269,29 @@ # Always build with internal ffmpeg %global bundleffmpegfree 0 -%if 0%{?rhel} == 8 -%global bundleharfbuzz 1 -%global bundlelibwebp 1 -%global bundlelibpng 1 -%global bundlelibjpeg 1 -%global bundlefreetype 1 -%global bundlelibdrm 1 -%global bundlefontconfig 1 -%global bundlebrotli 1 -%global bundlelibopenjpeg2 1 -%global bundlelibtiff 1 -%global bundlecrc32c 1 -%global bundlelibxml 1 -%global bundledav1d 1 -%else -%if 0%{?fedora} > 38 || 0%{?rhel} > 9 -%global bundlebrotli 0 -%global bundlelibwebp 0 -%else -%global bundlebrotli 1 -%global bundlelibwebp 1 -%endif +%if 0%{?fedora} || 0%{?rhel} >= 9 +%global bundlezstd 0 +%global bundlefontconfig 0 +%global bundledav1d 0 %global bundlelibpng 0 %global bundlelibjpeg 0 %global bundlelibdrm 0 -%global bundlefontconfig 0 %global bundleffmpegfree 0 %global bundlefreetype 0 %global bundlelibopenjpeg2 0 %global bundlelibtiff 0 +%global bundlelibxml 0 %if 0%{?rhel} == 9 %global bundlecrc32c 1 %global bundleharfbuzz 1 +%global bundlebrotli 1 +%global bundlelibwebp 1 %else %global bundlecrc32c 0 %global bundleharfbuzz 0 +%global bundlebrotli 0 +%global bundlelibwebp 0 %endif -%global bundlelibxml 0 %endif %if %{with gost} @@ -335,7 +338,7 @@ Name: chromium%{chromium_channel} Version: 127.0.6533.72 -Release: 1%{?dist}.inferit +Release: 1%{?dist}.inferit.1 Summary: A WebKit (Blink) powered web browser that Google doesn't want you to use Url: http://www.chromium.org/Home License: BSD-3-Clause AND LGPL-2.1-or-later AND Apache-2.0 AND IJG AND MIT AND GPL-2.0-or-later AND ISC AND OpenSSL AND (MPL-1.1 OR GPL-2.0-only OR LGPL-2.0-only) @@ -411,9 +414,7 @@ Patch150: chromium-124-qt6.patch # disable memory tagging (epel8 on aarch64) due to new feature IFUNC-Resolver # it is not supported in old glibc < 2.30, error: fatal error: 'sys/ifunc.h' file not found Patch305: chromium-124-el8-arm64-memory_tagging.patch -Patch306: chromium-126-el8-ifunc-header.patch -# build error: unknown architectural extension on aarch64 (epel8) -Patch307: chromium-124-el8-libdav1d-aarch64.patch +Patch306: chromium-127-el8-ifunc-header.patch # 64kpage support on aarch64 (el8) Patch308: chromium-124-el8-support-64kpage.patch # enable fstack-protector-strong @@ -434,7 +435,7 @@ Patch354: chromium-126-split-threshold-for-reg-with-hint.patch Patch355: chromium-126-system-libstdc++.patch # set clang_lib path -Patch358: chromium-124-rust-clang_lib.patch +Patch358: chromium-127-rust-clanglib.patch # PowerPC64 LE support # Timothy Pearson's patchset @@ -514,6 +515,7 @@ Patch501: chromium-127-ninja-1.21.1-deps-part0.patch Patch502: chromium-127-ninja-1.21.1-deps-part1.patch Patch503: chromium-127-ninja-1.21.1-deps-part2.patch Patch504: chromium-127-ninja-1.21.1-deps-part3.patch +Patch505: chromium-127-crabbyavif.patch # Old Yandex patch Patch600: 0001-Yandex-as-default-search-engine.patch @@ -557,6 +559,10 @@ Source14: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-%{esbuild_ve Source15: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-%{esbuild_version}.tgz %endif +# bindgen for epel8 +Source16: https://than.fedorapeople.org/epel8/bindgen-cli-aarch64.tar.xz +Source17: https://than.fedorapeople.org/epel8/bindgen-cli-x86_64.tar.xz + # esbuild binary from fedora %if 0%{?fedora} BuildRequires: golang-github-evanw-esbuild @@ -594,6 +600,17 @@ BuildRequires: binutils BuildRequires: rustc +%if 0%{?rhel} == 8 +# need to build bindgen on el8 +BuildRequires: cargo +%else +BuildRequires: bindgen-cli +%endif + +%if ! %{bundlezstd} +BuildRequires: libzstd-devel +%endif + # We do not need to do this with internal build of libffmpeg.so # build with system ffmpeg-free #%%if ! %%{bundleffmpegfree} @@ -902,13 +919,6 @@ ExclusiveArch: x86_64 aarch64 ppc64le ExclusiveArch: x86_64 aarch64 %endif -# FIXME -%if "%{_lib}" == "lib64" -Provides: libffmpeg.so()(64bit) -%else -Provides: libffmpeg.so -%endif - # Bundled bits (I'm sure I've missed some) Provides: bundled(angle) = 2422 Provides: bundled(bintrees) = 1.0.1 @@ -1039,6 +1049,9 @@ Provides: bundled(xdg-user-dirs) Requires(post): /usr/sbin/semanage Requires(post): /usr/sbin/restorecon +# Package with libffmpeg.so +Requires: %{name}-ffmpeg%{_isa} = %{version}-%{release} + %description Chromium is an open-source web browser, powered by WebKit (Blink). %if %{with gost} @@ -1111,6 +1124,19 @@ Requires: chromium%{chromium_channel}%{_isa} = %{version}-%{release} %description qt6-ui Qt6 UI for chromium. +%package ffmpeg +Summary: Library libffmpeg.so +# FIXME +%if "%{_lib}" == "lib64" +Provides: libffmpeg.so()(64bit) +%else +Provides: libffmpeg.so +%endif +Conflicts: %{name} < %{version}-%{release} + +%description ffmpeg +Library libffmpeg.so for Chromium based browsers. + %prep %setup -q -n chromium-%{version} @@ -1219,7 +1245,6 @@ sed -i 's/std::string data_dir_basename = "chromium"/std::string data_dir_basena %ifarch aarch64 %patch -P305 -p1 -b .el8-memory_tagging %patch -P306 -p1 -b .el8-ifunc-header -%patch -P307 -p1 -b .el8-libdav1d-aarch64 %patch -P308 -p1 -b .el8-support-64kpage.patch %endif %endif @@ -1300,7 +1325,7 @@ sed -i 's/std::string data_dir_basename = "chromium"/std::string data_dir_basena %patch -P407 -p1 -b .fix-ppc64-linux-syscalls-headers %patch -P408 -p1 -b .use-sysconf-page-size-on-ppc64 -%patch -P409 -p1 -b .partition-alloc-4k-detect +#%%patch -P409 -p1 -b .partition-alloc-4k-detect %patch -P410 -p1 -b .dawn-fix-typos %patch -P411 -p1 -b .dawn-fix-ppc64le-detection @@ -1316,6 +1341,8 @@ sed -i 's/std::string data_dir_basename = "chromium"/std::string data_dir_basena %patch -P504 -p1 -b .ninja-1.21.1-deps %endif +%patch -P505 -p1 -b .crabbyavif + %patch -P601 -p1 -b .Added-Russian-description-and-summary-for-gnome-soft %if ! %{with gost} %patch -P602 -p1 -b .Yandex-as-default-search-engine @@ -1338,6 +1365,20 @@ install -m0644 %{SOURCE50} ./chrome/browser/resources/new_tab_page/icons/google_ # See `man find` for how the `-exec command {} +` syntax works find -type f \( -iname "*.py" \) -exec sed -i '1s=^#! */usr/bin/\(python\|env python\)[23]\?=#!%{chromium_pybin}=' {} + +# workaround for missing bindgen on el8 +%if 0%{?rhel} == 8 +%ifarch aarch64 +tar -Jxf %{SOURCE16} +%endif +%ifarch x86_64 +tar -Jxf %{SOURCE17} +%endif +mkdir -p usr/%{_lib} +pushd usr/%{_lib} +ln -fs %{_libdir}/libclang* . +popd +%endif + # Add correct path for nodejs binary %if ! %{system_nodejs} pushd third_party/node/linux @@ -1458,6 +1499,12 @@ export RUSTC_BOOTSTRAP=1 # set rustc version rustc_version="$(rustc --version)" +# set rust bindgen root +%if 0%{?rhel} == 8 +rust_bindgen_root="$PWD%{_prefix}" +%else +rust_bindgen_root="%{_prefix}" +%endif # set clang version clang_version="$(clang --version | sed -n 's/clang version //p' | cut -d. -f1)" @@ -1507,6 +1554,7 @@ CHROMIUM_CORE_GN_DEFINES+=' use_lld=false' # enable system rust CHROMIUM_CORE_GN_DEFINES+=' rust_sysroot_absolute="%{_prefix}"' +CHROMIUM_CORE_GN_DEFINES+=" rust_bindgen_root=\"$rust_bindgen_root\"" CHROMIUM_CORE_GN_DEFINES+=" rustc_version=\"$rustc_version\"" CHROMIUM_CORE_GN_DEFINES+=' use_sysroot=false' @@ -1706,6 +1754,9 @@ system_libs=() %if ! %{bundleflac} system_libs+=(flac) %endif +%if ! %{bundlezstd} + system_libs+=(zstd) +%endif %if 0%{?noopenh264} system_libs+=(openh264) %endif @@ -2007,7 +2058,6 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt %{chromium_path}/chrome_*.pak %{chromium_path}/chrome_crashpad_handler %{chromium_path}/resources.pak -%{chromium_path}/libffmpeg.so %{chromium_path}/%{chromium_browser_channel} %{chromium_path}/%{chromium_browser_channel}.sh %attr(4755, root, root) %{chromium_path}/chrome-sandbox @@ -2027,6 +2077,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt %{chromium_path}/libqt6_shim.so %endif +%files ffmpeg +%{chromium_path}/libffmpeg.so + %files common %if %{build_clear_key_cdm} %{chromium_path}/libclearkeycdm.so @@ -2141,6 +2194,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt %endif %changelog +* Sat Jul 27 2024 Arkady L. Shane - 127.0.6533.72-1.inferit.1 +- Added chromium-ffmpeg package + * Thu Jul 25 2024 Arkady L. Shane - 127.0.6533.72-1.inferit - update to 127.0.6533.72 * CVE-2024-6988: Use after free in Downloads