From aaa8532a464ff73fab4c6fd56a88c3ea3cc42a06 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Sat, 23 Mar 2024 16:37:40 +0100 Subject: [PATCH] added upstream patch to fix build error: static assertion failed due to requirement... --- chromium-123-shape_result-assert.patch | 46 ++++++++++++++++++++++++++ chromium.spec | 5 +++ 2 files changed, 51 insertions(+) create mode 100644 chromium-123-shape_result-assert.patch diff --git a/chromium-123-shape_result-assert.patch b/chromium-123-shape_result-assert.patch new file mode 100644 index 00000000..5b5d5cc7 --- /dev/null +++ b/chromium-123-shape_result-assert.patch @@ -0,0 +1,46 @@ +commit 4bdca157e7edfeb5b9c0ac77e3afbfe288f7f9cf +Author: Stefan Zager +Date: Mon Feb 26 02:36:37 2024 +0000 + + Make SameSizeAsShapeResult robust against uncommon gn args + + When using uncommon build configurations, it's currently possible + to fail this assert due to details of struct field packing: + + ASSERT_SIZE(ShapeResult, SameSizeAsShapeResult); + + In particular, `cppgc_enable_pointer_compression = false` in args.gn + will trigger it. + + This changes makes the struct layout of SameSizeAsShapeResult more + closely match that of ShapeResult, which should make it harder to + fail the assert. + + Change-Id: I7406b0ac333303b6808807fa1eaf5cbecb85d858 + Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5323558 + Auto-Submit: Stefan Zager + Reviewed-by: Ian Kilpatrick + Commit-Queue: Ian Kilpatrick + Cr-Commit-Position: refs/heads/main@{#1265024} + +diff --git a/third_party/blink/renderer/platform/fonts/shaping/shape_result.cc b/third_party/blink/renderer/platform/fonts/shaping/shape_result.cc +index 28aabc7d66cd8..a2bfdec2775e4 100644 +--- a/third_party/blink/renderer/platform/fonts/shaping/shape_result.cc ++++ b/third_party/blink/renderer/platform/fonts/shaping/shape_result.cc +@@ -78,10 +78,13 @@ struct SameSizeAsRunInfo { + ASSERT_SIZE(ShapeResult::RunInfo, SameSizeAsRunInfo); + + struct SameSizeAsShapeResult { +- Vector vectors[2]; +- UntracedMember members[2]; + float width; +- unsigned integers[2]; ++ UntracedMember deprecated_ink_bounds_; ++ Vector runs_; ++ Vector character_position_; ++ UntracedMember primary_font_; ++ unsigned start_index_; ++ unsigned num_characters_; + unsigned bitfields : 32; + }; + diff --git a/chromium.spec b/chromium.spec index 6b748a78..b9f63e90 100644 --- a/chromium.spec +++ b/chromium.spec @@ -557,7 +557,10 @@ Patch413: fix-unknown-warning-option-messages.diff Patch414: 0002-Highway-disable-128-bit-vsx.patch # upstream patches +# 64kpage support on el8 Patch500: chromium-122-el8-support-64kpage.patch +# error: static assertion failed due to requirement '::WTF::internal::SizesEqual<72, 64>::value': ShapeResult should stay small +Patch501: chromium-123-shape_result-assert.patch # Use chromium-latest.py to generate clean tarball from released build tarballs, found here: # http://build.chromium.org/buildbot/official/ @@ -1314,6 +1317,8 @@ udev. %endif %endif +%patch -P501 -p1 -b .shape_result-assert + # Change shebang in all relevant files in this directory and all subdirectories # 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]\?=#!%{__python3}=' {} +