From f695aaccda669293fc9d56d649ec5a393e516e9d Mon Sep 17 00:00:00 2001 From: Michael Catanzaro Date: Fri, 19 Sep 2025 17:07:49 -0500 Subject: [PATCH] Update to 2.50.0 Resolves: RHEL-116356 Resolves: RHEL-116903 Resolves: RHEL-116916 Resolves: RHEL-116929 Resolves: RHEL-116942 --- cairo-1.15.patch | 20 +- compiler-flags.patch | 29 ++- evolution-sandbox-warning.patch | 16 +- evolution-shared-secondary-process.patch | 16 +- glib-2.56.patch | 127 ++++++------ gstreamer-1.16.patch | 76 +++---- harfbuzz-1.7.5.patch | 59 +++--- i686-build.patch | 18 ++ icu60.patch | 243 +++++++++++++---------- s390x-build.patch | 10 + sources | 4 +- webkit2gtk3.spec | 38 ++-- 12 files changed, 402 insertions(+), 254 deletions(-) create mode 100644 i686-build.patch create mode 100644 s390x-build.patch diff --git a/cairo-1.15.patch b/cairo-1.15.patch index c8107ce..e1e51c7 100644 --- a/cairo-1.15.patch +++ b/cairo-1.15.patch @@ -1,17 +1,26 @@ +From 35146c99cad7f842666d9123113936ec89388261 Mon Sep 17 00:00:00 2001 +From: Michael Catanzaro +Date: Tue, 23 Sep 2025 15:47:39 -0500 +Subject: [PATCH] Build against cairo 1.15 + +--- + Source/cmake/OptionsGTK.cmake | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake -index 44ab9b35c6c9..f9c576764f43 100644 +index 5222f5ea81ab..77ec61c954c0 100644 --- a/Source/cmake/OptionsGTK.cmake +++ b/Source/cmake/OptionsGTK.cmake -@@ -8,7 +8,7 @@ SET_PROJECT_VERSION(2 48 1) - set(USER_AGENT_BRANDING "" CACHE STRING "Branding to add to user agent string") +@@ -9,7 +9,7 @@ set(USER_AGENT_BRANDING "" CACHE STRING "Branding to add to user agent string") + # Update Source/WTF/wtf/Platform.h to match required GLib versions. find_package(GLIB 2.70.0 REQUIRED COMPONENTS gio gio-unix gobject gthread gmodule) -find_package(Cairo 1.16.0 REQUIRED) +find_package(Cairo 1.14.0 REQUIRED) find_package(LibGcrypt 1.7.0 REQUIRED) find_package(Libtasn1 REQUIRED) find_package(HarfBuzz 2.7.4 REQUIRED COMPONENTS ICU) -@@ -133,7 +133,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_THUNDER PRIVATE ${ENABLE_DEVELOPER_MODE} +@@ -132,7 +132,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_THUNDER PRIVATE ${ENABLE_DEVELOPER_MODE} WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_PERIODIC_MEMORY_MONITOR PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_POINTER_LOCK PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SHAREABLE_RESOURCE PRIVATE ON) @@ -20,3 +29,6 @@ index 44ab9b35c6c9..f9c576764f43 100644 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_API_STATISTICS PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_CODECS PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_RTC PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES}) +-- +2.51.0 + diff --git a/compiler-flags.patch b/compiler-flags.patch index 6b69605..ad5c638 100644 --- a/compiler-flags.patch +++ b/compiler-flags.patch @@ -1,3 +1,13 @@ +From f3dd0fe388842a7cb35266b4b0b79cfb4ef930c4 Mon Sep 17 00:00:00 2001 +From: Michael Catanzaro +Date: Tue, 23 Sep 2025 15:46:28 -0500 +Subject: [PATCH] Suppress some build warnings + +--- + Source/ThirdParty/libsysprof-capture/CMakeLists.txt | 1 + + Source/cmake/WebKitCompilerFlags.cmake | 8 +------- + 2 files changed, 2 insertions(+), 7 deletions(-) + diff --git a/Source/ThirdParty/libsysprof-capture/CMakeLists.txt b/Source/ThirdParty/libsysprof-capture/CMakeLists.txt index 7ea8f0469ad7..13a9e390643a 100644 --- a/Source/ThirdParty/libsysprof-capture/CMakeLists.txt @@ -11,10 +21,22 @@ index 7ea8f0469ad7..13a9e390643a 100644 -Wno-unused-parameter ) diff --git a/Source/cmake/WebKitCompilerFlags.cmake b/Source/cmake/WebKitCompilerFlags.cmake -index f5ec0a55919b..cf307eac2775 100644 +index 77a292fb8b15..f6648c39c4e0 100644 --- a/Source/cmake/WebKitCompilerFlags.cmake +++ b/Source/cmake/WebKitCompilerFlags.cmake -@@ -184,8 +184,7 @@ if (COMPILER_IS_GCC_OR_CLANG) +@@ -129,11 +129,6 @@ if (DEVELOPER_MODE AND DEVELOPER_MODE_FATAL_WARNINGS) + else () + set(FATAL_WARNINGS_FLAG -Werror) + endif () +- +- check_cxx_compiler_flag(${FATAL_WARNINGS_FLAG} CXX_COMPILER_SUPPORTS_WERROR) +- if (CXX_COMPILER_SUPPORTS_WERROR) +- set(DEVELOPER_MODE_CXX_FLAGS ${FATAL_WARNINGS_FLAG}) +- endif () + endif () + + if (DEVELOPER_MODE OR ARM) +@@ -186,8 +181,7 @@ if (COMPILER_IS_GCC_OR_CLANG) -Wno-misleading-indentation -Wno-psabi) @@ -24,3 +46,6 @@ index f5ec0a55919b..cf307eac2775 100644 WEBKIT_PREPEND_GLOBAL_COMPILER_FLAGS(-Wno-mismatched-new-delete) WEBKIT_PREPEND_GLOBAL_COMPILER_FLAGS(-Wno-uninitialized) endif () +-- +2.51.0 + diff --git a/evolution-sandbox-warning.patch b/evolution-sandbox-warning.patch index cc0fdb4..c9531a0 100644 --- a/evolution-sandbox-warning.patch +++ b/evolution-sandbox-warning.patch @@ -1,8 +1,17 @@ +From 01c16493deb6dab8e04adfcdd244aaad3067d434 Mon Sep 17 00:00:00 2001 +From: Michael Catanzaro +Date: Tue, 7 Oct 2025 11:19:06 -0500 +Subject: [PATCH] Suppress warning about WEBKIT_FORCE_SANDBOX for Evolution + +--- + Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + diff --git a/Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp b/Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp -index a2f3b582dcc5..1faf219c2adb 100644 +index 044ddc0c3e95..a953dda3dcb8 100644 --- a/Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp +++ b/Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp -@@ -91,7 +91,8 @@ void WebProcessPool::platformInitialize(NeedsGlobalStaticInitialization) +@@ -155,7 +155,8 @@ void WebProcessPool::platformInitialize(NeedsGlobalStaticInitialization) else { static bool once = false; if (!once) { @@ -12,3 +21,6 @@ index a2f3b582dcc5..1faf219c2adb 100644 once = true; } } +-- +2.51.0 + diff --git a/evolution-shared-secondary-process.patch b/evolution-shared-secondary-process.patch index d13c2a7..5c7ebe9 100644 --- a/evolution-shared-secondary-process.patch +++ b/evolution-shared-secondary-process.patch @@ -1,8 +1,17 @@ +From 5fd4924b8d61545a7798be25ac9cb45c007a1795 Mon Sep 17 00:00:00 2001 +From: Michael Catanzaro +Date: Tue, 7 Oct 2025 11:18:05 -0500 +Subject: [PATCH] Use a single web process for Evolution + +--- + Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp | 3 +++ + 1 file changed, 3 insertions(+) + diff --git a/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp b/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp -index 65cf0eb2b99a..518cc953edca 100644 +index dca689a7ace5..b63d037a00f4 100644 --- a/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp +++ b/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp -@@ -450,6 +450,9 @@ static void webkitWebContextConstructed(GObject* object) +@@ -457,6 +457,9 @@ static void webkitWebContextConstructed(GObject* object) } configuration.setTimeZoneOverride(String::fromUTF8(priv->timeZoneOverride.span())); @@ -12,3 +21,6 @@ index 65cf0eb2b99a..518cc953edca 100644 #if !ENABLE(2022_GLIB_API) if (!priv->websiteDataManager) priv->websiteDataManager = adoptGRef(webkit_website_data_manager_new("local-storage-directory", priv->localStorageDirectory.data(), nullptr)); +-- +2.51.0 + diff --git a/glib-2.56.patch b/glib-2.56.patch index 9f571fd..99be82c 100644 --- a/glib-2.56.patch +++ b/glib-2.56.patch @@ -1,29 +1,49 @@ -From de6f529213b43a938dcaa125475cef0a1c5e786d Mon Sep 17 00:00:00 2001 +From 862976ce1cb811cb96551df1b337b1053755652e Mon Sep 17 00:00:00 2001 From: Michael Catanzaro Date: Fri, 4 Apr 2025 13:58:05 -0500 Subject: [PATCH] Build against GLib 2.56 --- - Source/WTF/wtf/URL.h | 4 ++-- - Source/WTF/wtf/glib/GRefPtr.cpp | 2 ++ - Source/WTF/wtf/glib/GRefPtr.h | 3 +++ - Source/WTF/wtf/glib/SocketConnection.cpp | 13 +++++++++++++ - Source/WTF/wtf/glib/URLGLib.cpp | 2 ++ - Source/WebCore/platform/LowPowerModeNotifier.h | 2 ++ - .../platform/glib/LowPowerModeNotifierGLib.cpp | 8 ++++++++ - .../platform/network/soup/CertificateInfoSoup.cpp | 8 ++++++++ - Source/WebKit/NetworkProcess/glib/DNSCache.cpp | 12 ++++++++++++ - Source/WebKit/NetworkProcess/glib/DNSCache.h | 2 ++ - .../NetworkProcess/glib/WebKitCachedResolver.cpp | 6 ++++++ - .../glib/WebKitOverridingResolver.cpp | 4 ++++ - Source/WebKit/Shared/glib/ArgumentCodersGLib.cpp | 6 ++++++ - Source/cmake/OptionsGTK.cmake | 13 ++++++++++++- - Tools/MiniBrowser/gtk/BrowserSettingsDialog.c | 3 ++- - Tools/MiniBrowser/gtk/main.c | 3 ++- - 16 files changed, 86 insertions(+), 5 deletions(-) + Source/WTF/wtf/Platform.h | 2 -- + Source/WTF/wtf/URL.h | 4 ++-- + Source/WTF/wtf/glib/GRefPtr.h | 2 ++ + Source/WTF/wtf/glib/SocketConnection.cpp | 13 +++++++++++++ + Source/WTF/wtf/glib/URLGLib.cpp | 2 ++ + Source/WebCore/platform/LowPowerModeNotifier.h | 2 ++ + .../platform/glib/LowPowerModeNotifierGLib.cpp | 8 ++++++++ + .../platform/network/soup/CertificateInfoSoup.cpp | 8 ++++++++ + Source/WebKit/NetworkProcess/glib/DNSCache.cpp | 12 ++++++++++++ + Source/WebKit/NetworkProcess/glib/DNSCache.h | 2 ++ + .../NetworkProcess/glib/WebKitCachedResolver.cpp | 6 ++++++ + .../glib/WebKitOverridingResolver.cpp | 4 ++++ + Source/WebKit/Shared/glib/ArgumentCodersGLib.cpp | 6 ++++++ + Source/cmake/OptionsGTK.cmake | 14 ++++++++++++-- + Tools/MiniBrowser/gtk/BrowserSettingsDialog.c | 3 ++- + Tools/MiniBrowser/gtk/main.c | 3 ++- + 16 files changed, 83 insertions(+), 8 deletions(-) +diff --git a/Source/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h +index cbb81ce6c8dc..46cbad83fe4e 100644 +--- a/Source/WTF/wtf/Platform.h ++++ b/Source/WTF/wtf/Platform.h +@@ -84,7 +84,6 @@ + + #if PLATFORM(GTK) + #define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_56 +-#define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_2_70 + #if USE(GTK4) + #define GDK_VERSION_MIN_REQUIRED GDK_VERSION_4_0 + #else +@@ -94,7 +93,6 @@ + + #if PLATFORM(WPE) + #define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_56 +-#define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_2_70 + #endif + + #if USE(SOUP) diff --git a/Source/WTF/wtf/URL.h b/Source/WTF/wtf/URL.h -index 8a7864508a8e..f065677c68ad 100644 +index daa9f726eb0c..a24c68e1934b 100644 --- a/Source/WTF/wtf/URL.h +++ b/Source/WTF/wtf/URL.h @@ -27,7 +27,7 @@ @@ -35,8 +55,8 @@ index 8a7864508a8e..f065677c68ad 100644 #include #endif -@@ -237,7 +237,7 @@ public: - WTF_EXPORT_PRIVATE operator NSURL *() const; +@@ -240,7 +240,7 @@ public: + WTF_EXPORT_PRIVATE static NSURL *emptyNSURL(); #endif -#if USE(GLIB) @@ -44,44 +64,22 @@ index 8a7864508a8e..f065677c68ad 100644 WTF_EXPORT_PRIVATE URL(GUri*); WTF_EXPORT_PRIVATE GRefPtr createGUri() const; #endif -diff --git a/Source/WTF/wtf/glib/GRefPtr.cpp b/Source/WTF/wtf/glib/GRefPtr.cpp -index 4c15aa9866c0..6faa98b7eab2 100644 ---- a/Source/WTF/wtf/glib/GRefPtr.cpp -+++ b/Source/WTF/wtf/glib/GRefPtr.cpp -@@ -207,6 +207,7 @@ template <> void derefGPtr(GDBusNodeInfo* ptr) - g_dbus_node_info_unref(ptr); - } - -+#if HAVE(GURI) - template <> GUri* refGPtr(GUri* ptr) - { - if (ptr) -@@ -219,6 +220,7 @@ template <> void derefGPtr(GUri* ptr) - if (ptr) - g_uri_unref(ptr); - } -+#endif - - template <> - GArray* refGPtr(GArray* ptr) diff --git a/Source/WTF/wtf/glib/GRefPtr.h b/Source/WTF/wtf/glib/GRefPtr.h -index 87a9ef9760bf..d6c71c14a981 100644 +index e4cf3bd45104..9729d6709376 100644 --- a/Source/WTF/wtf/glib/GRefPtr.h +++ b/Source/WTF/wtf/glib/GRefPtr.h -@@ -264,8 +264,11 @@ template <> WTF_EXPORT_PRIVATE GArray* refGPtr(GArray*); - template <> WTF_EXPORT_PRIVATE void derefGPtr(GArray*); - template <> WTF_EXPORT_PRIVATE GResource* refGPtr(GResource*); - template <> WTF_EXPORT_PRIVATE void derefGPtr(GResource*); -+ +@@ -328,7 +328,9 @@ WTF_DEFINE_GREF_TRAITS_INLINE(GMainLoop, g_main_loop_ref, g_main_loop_unref) + WTF_DEFINE_GREF_TRAITS_INLINE(GMappedFile, g_mapped_file_ref, g_mapped_file_unref) + WTF_DEFINE_GREF_TRAITS_INLINE(GPtrArray, g_ptr_array_ref, g_ptr_array_unref) + WTF_DEFINE_GREF_TRAITS_INLINE(GSource, g_source_ref, g_source_unref) +#if HAVE(GURI) - template <> WTF_EXPORT_PRIVATE GUri* refGPtr(GUri*); - template <> WTF_EXPORT_PRIVATE void derefGPtr(GUri*); + WTF_DEFINE_GREF_TRAITS_INLINE(GUri, g_uri_ref, g_uri_unref) +#endif + WTF_DEFINE_GREF_TRAITS_INLINE(GVariantBuilder, g_variant_builder_ref, g_variant_builder_unref) + WTF_DEFINE_GREF_TRAITS_INLINE(GVariant, g_variant_ref_sink, g_variant_unref, g_variant_is_floating) - template inline T* refGPtr(T* ptr) - { diff --git a/Source/WTF/wtf/glib/SocketConnection.cpp b/Source/WTF/wtf/glib/SocketConnection.cpp -index d1185aeb2d47..80a622b83eba 100644 +index 9b8d58d1b916..73423a23211a 100644 --- a/Source/WTF/wtf/glib/SocketConnection.cpp +++ b/Source/WTF/wtf/glib/SocketConnection.cpp @@ -145,7 +145,20 @@ bool SocketConnection::readMessage() @@ -221,7 +219,7 @@ index f32ecca7a300..e81a5433709d 100644 } // namespace WebCore diff --git a/Source/WebKit/NetworkProcess/glib/DNSCache.cpp b/Source/WebKit/NetworkProcess/glib/DNSCache.cpp -index db92010baabf..b717b734e8e8 100644 +index a560e73f58a3..78007d891af1 100644 --- a/Source/WebKit/NetworkProcess/glib/DNSCache.cpp +++ b/Source/WebKit/NetworkProcess/glib/DNSCache.cpp @@ -50,9 +50,17 @@ DNSCache::DNSCacheMap& DNSCache::mapForType(Type type) @@ -353,7 +351,7 @@ index 150d74ed0296..f461e3c695fe 100644 resolverClass->lookup_by_address_async = webkitOverridingResolverLookupByAddressAsync; resolverClass->lookup_by_address_finish = webkitOverridingResolverLookupByAddressFinish; diff --git a/Source/WebKit/Shared/glib/ArgumentCodersGLib.cpp b/Source/WebKit/Shared/glib/ArgumentCodersGLib.cpp -index 1bf17f0f9b67..ef9f5c2e45f0 100644 +index a9ee8507c28a..eae6ab798c8f 100644 --- a/Source/WebKit/Shared/glib/ArgumentCodersGLib.cpp +++ b/Source/WebKit/Shared/glib/ArgumentCodersGLib.cpp @@ -121,11 +121,13 @@ void ArgumentCoder>::encode(Encoder& encoder, const GRe @@ -377,10 +375,10 @@ index 1bf17f0f9b67..ef9f5c2e45f0 100644 +#if GLIB_CHECK_VERSION(2, 69, 0) std::optional> privateKey; decoder >> privateKey; - if (UNLIKELY(!privateKey)) + if (!privateKey) [[unlikely]] @@ -147,6 +150,7 @@ std::optional> ArgumentCoder>: decoder >> privateKeyPKCS11Uri; - if (UNLIKELY(!privateKeyPKCS11Uri)) + if (!privateKeyPKCS11Uri) [[unlikely]] return std::nullopt; +#endif @@ -398,18 +396,19 @@ index 1bf17f0f9b67..ef9f5c2e45f0 100644 issuer = certificate.get(); i++; diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake -index 8a611c26a0ac..a74c49f46471 100644 +index 77ec61c954c0..285ab3737bfa 100644 --- a/Source/cmake/OptionsGTK.cmake +++ b/Source/cmake/OptionsGTK.cmake -@@ -7,7 +7,6 @@ SET_PROJECT_VERSION(2 48 5) +@@ -7,8 +7,6 @@ SET_PROJECT_VERSION(2 50 0) set(USER_AGENT_BRANDING "" CACHE STRING "Branding to add to user agent string") +-# Update Source/WTF/wtf/Platform.h to match required GLib versions. -find_package(GLIB 2.70.0 REQUIRED COMPONENTS gio gio-unix gobject gthread gmodule) find_package(Cairo 1.14.0 REQUIRED) find_package(LibGcrypt 1.7.0 REQUIRED) find_package(Libtasn1 REQUIRED) -@@ -205,6 +204,13 @@ else () +@@ -207,6 +205,13 @@ else () SET_AND_EXPOSE_TO_BUILD(ENABLE_2022_GLIB_API OFF) endif () @@ -423,7 +422,7 @@ index 8a611c26a0ac..a74c49f46471 100644 EXPOSE_STRING_VARIABLE_TO_BUILD(WEBKITGTK_API_INFIX) EXPOSE_STRING_VARIABLE_TO_BUILD(WEBKITGTK_API_VERSION) -@@ -277,6 +283,11 @@ if (ENABLED_COMPILER_SANITIZERS) +@@ -277,6 +282,11 @@ if (ENABLED_COMPILER_SANITIZERS) set(ENABLE_DOCUMENTATION OFF) endif () @@ -454,10 +453,10 @@ index ef000cd2b910..432c97257048 100644 static void featureTreeViewRenderCategoryData(GtkTreeViewColumn *column, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer data) diff --git a/Tools/MiniBrowser/gtk/main.c b/Tools/MiniBrowser/gtk/main.c -index 8433f5360dc4..9e76cb6cde5d 100644 +index d3fbb968ee46..4f49ad82f9fd 100644 --- a/Tools/MiniBrowser/gtk/main.c +++ b/Tools/MiniBrowser/gtk/main.c -@@ -276,7 +276,7 @@ static gboolean parseFeaturesOptionCallback(const gchar *option, const gchar *va +@@ -266,7 +266,7 @@ static gboolean parseFeaturesOptionCallback(const gchar *option, const gchar *va "features, prefixes '-' and '!' disable features. Names are case-insensitive. Example:\n" "\n %s --features='!DirPseudo,+WebAnimationsCustomEffects,webgl'\n\n" "Available features (+/- = enabled/disabled by default):\n\n", g_get_prgname()); @@ -466,7 +465,7 @@ index 8433f5360dc4..9e76cb6cde5d 100644 for (gsize i = 0; i < webkit_feature_list_get_length(featureList); i++) { WebKitFeature *feature = webkit_feature_list_get(featureList, i); g_print(" %c %s (%s)", -@@ -287,6 +287,7 @@ static gboolean parseFeaturesOptionCallback(const gchar *option, const gchar *va +@@ -277,6 +277,7 @@ static gboolean parseFeaturesOptionCallback(const gchar *option, const gchar *va g_print(": %s", webkit_feature_get_name(feature)); g_print("\n"); } @@ -475,5 +474,5 @@ index 8433f5360dc4..9e76cb6cde5d 100644 } -- -2.50.1 +2.51.0 diff --git a/gstreamer-1.16.patch b/gstreamer-1.16.patch index 46b7815..00b682a 100644 --- a/gstreamer-1.16.patch +++ b/gstreamer-1.16.patch @@ -1,4 +1,4 @@ -From 32e70166ad9e80a3a190c3a475736835a63f58d1 Mon Sep 17 00:00:00 2001 +From 69cd5370bdf7c5d449242de3f53097330113301e Mon Sep 17 00:00:00 2001 From: Michael Catanzaro Date: Fri, 4 Apr 2025 14:00:12 -0500 Subject: [PATCH] Build against GStreamer 1.16 @@ -7,8 +7,8 @@ Subject: [PATCH] Build against GStreamer 1.16 .../AudioSourceProviderGStreamer.cpp | 3 +- .../gstreamer/GLVideoSinkGStreamer.cpp | 35 ++++----- .../gstreamer/GStreamerAudioMixer.cpp | 2 +- - .../graphics/gstreamer/GStreamerCommon.cpp | 77 +++++++++++++------ - .../graphics/gstreamer/GStreamerCommon.h | 16 ++++ + .../graphics/gstreamer/GStreamerCommon.cpp | 78 +++++++++++++------ + .../graphics/gstreamer/GStreamerCommon.h | 15 ++++ .../gstreamer/MediaPlayerPrivateGStreamer.cpp | 23 +----- .../gstreamer/GStreamerCodecUtilities.cpp | 39 ++++++---- .../VideoEncoderPrivateGStreamer.cpp | 16 ---- @@ -16,13 +16,13 @@ Subject: [PATCH] Build against GStreamer 1.16 9 files changed, 114 insertions(+), 101 deletions(-) diff --git a/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp b/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp -index 0abdeb14826e..65763f3cfde3 100644 +index acee31b1cc4e..e54adb748f98 100644 --- a/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp +++ b/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp -@@ -124,7 +124,8 @@ AudioSourceProviderGStreamer::AudioSourceProviderGStreamer(MediaStreamTrackPriva +@@ -125,7 +125,8 @@ AudioSourceProviderGStreamer::AudioSourceProviderGStreamer(MediaStreamTrackPriva g_signal_connect_swapped(decodebin, "pad-added", G_CALLBACK(+[](AudioSourceProviderGStreamer* provider, GstPad* pad) { auto padCaps = adoptGRef(gst_pad_query_caps(pad, nullptr)); - bool isAudio = doCapsHaveType(padCaps.get(), "audio"); + bool isAudio = doCapsHaveType(padCaps.get(), "audio"_s); - RELEASE_ASSERT(isAudio); + if (!isAudio) + return; @@ -30,10 +30,10 @@ index 0abdeb14826e..65763f3cfde3 100644 auto sinkPad = adoptGRef(gst_element_get_static_pad(provider->m_audioSinkBin.get(), "sink")); gst_pad_link(pad, sinkPad.get()); diff --git a/Source/WebCore/platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp b/Source/WebCore/platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp -index 12fed2ed3b21..fe0d6c660f80 100644 +index 056f6ca71eb7..87d081cf1e6b 100644 --- a/Source/WebCore/platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp +++ b/Source/WebCore/platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp -@@ -65,16 +65,7 @@ static bool s_isDMABufDisabled; +@@ -67,16 +67,7 @@ static bool s_isDMABufDisabled; static void initializeDMABufAvailability() { @@ -44,14 +44,14 @@ index 12fed2ed3b21..fe0d6c660f80 100644 - - auto value = unsafeSpan(g_getenv("WEBKIT_GST_DMABUF_SINK_DISABLED")); - s_isDMABufDisabled = value.data() && (equalLettersIgnoringASCIICase(value, "true"_s) || equalLettersIgnoringASCIICase(value, "1"_s)); -- if (!s_isDMABufDisabled && !DRMDeviceManager::singleton().mainGBMDeviceNode(DRMDeviceManager::NodeType::Render)) +- if (!s_isDMABufDisabled && !DRMDeviceManager::singleton().mainGBMDevice(DRMDeviceManager::NodeType::Render)) - s_isDMABufDisabled = true; - }); + s_isDMABufDisabled = true; } #endif -@@ -114,7 +105,19 @@ static void webKitGLVideoSinkConstructed(GObject* object) +@@ -119,7 +110,19 @@ static void webKitGLVideoSinkConstructed(GObject* object) if (!s_isDMABufDisabled) gst_caps_append(caps.get(), buildDMABufCaps().leakRef()); #endif @@ -72,7 +72,7 @@ index 12fed2ed3b21..fe0d6c660f80 100644 gst_caps_set_features(glCaps.get(), 0, gst_caps_features_new(GST_CAPS_FEATURE_MEMORY_GL_MEMORY, nullptr)); gst_caps_append(caps.get(), glCaps.leakRef()); -@@ -172,17 +175,11 @@ static GstStateChangeReturn webKitGLVideoSinkChangeState(GstElement* element, Gs +@@ -178,17 +181,11 @@ static GstStateChangeReturn webKitGLVideoSinkChangeState(GstElement* element, Gs return GST_ELEMENT_CLASS(webkit_gl_video_sink_parent_class)->change_state(element, transition); } @@ -93,26 +93,27 @@ index 12fed2ed3b21..fe0d6c660f80 100644 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyId, paramSpec); RELEASE_ASSERT_NOT_REACHED(); diff --git a/Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp b/Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp -index 8b30e0f14b6a..2d587f68a3b2 100644 +index c982bcf51e01..01190fe89f9e 100644 --- a/Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp +++ b/Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp @@ -32,7 +32,7 @@ GST_DEBUG_CATEGORY_STATIC(webkit_media_gst_audio_mixer_debug); bool GStreamerAudioMixer::isAvailable() { -- return isGStreamerPluginAvailable("inter") && isGStreamerPluginAvailable("audiomixer"); +- return isGStreamerPluginAvailable("inter"_s) && isGStreamerPluginAvailable("audiomixer"_s); + return false; } GStreamerAudioMixer& GStreamerAudioMixer::singleton() diff --git a/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp b/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp -index 7adf0dabc73e..49043537e7f7 100644 +index 27a1b479e1ad..b996e3a8b163 100644 --- a/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp +++ b/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp -@@ -132,6 +132,24 @@ GstPad* webkitGstGhostPadFromStaticTemplate(GstStaticPadTemplate* staticPadTempl +@@ -135,6 +135,25 @@ WARN_UNUSED_RETURN GstPad* webkitGstGhostPadFromStaticTemplate(GstStaticPadTempl } #if ENABLE(VIDEO) ++ +#if !GST_CHECK_VERSION(1, 18, 0) +void webkitGstVideoFormatInfoComponent(const GstVideoFormatInfo* info, guint plane, gint components[GST_VIDEO_MAX_COMPONENTS]) +{ @@ -131,10 +132,10 @@ index 7adf0dabc73e..49043537e7f7 100644 +} +#endif + - bool getVideoSizeAndFormatFromCaps(const GstCaps* caps, WebCore::IntSize& size, GstVideoFormat& format, int& pixelAspectRatioNumerator, int& pixelAspectRatioDenominator, int& stride) + bool getVideoSizeAndFormatFromCaps(const GstCaps* caps, WebCore::IntSize& size, GstVideoFormat& format, int& pixelAspectRatioNumerator, int& pixelAspectRatioDenominator, int& stride, double& frameRate, PlatformVideoColorSpace& colorSpace) { if (!doCapsHaveType(caps, GST_VIDEO_CAPS_TYPE_PREFIX)) { -@@ -633,31 +651,6 @@ void deinitializeGStreamer() +@@ -634,31 +653,6 @@ void deinitializeGStreamer() teardownVideoEncoderSingleton(); teardownGStreamerImageDecoders(); #endif @@ -166,7 +167,7 @@ index 7adf0dabc73e..49043537e7f7 100644 } unsigned getGstPlayFlag(const char* nick) -@@ -1361,6 +1354,36 @@ String gstStructureToJSONString(const GstStructure* structure) +@@ -1434,6 +1428,36 @@ String gstStructureToJSONString(const GstStructure* structure) return value->toJSONString(); } @@ -203,7 +204,7 @@ index 7adf0dabc73e..49043537e7f7 100644 GstClockTime webkitGstInitTime() { return s_webkitGstInitTime; -@@ -1418,6 +1441,7 @@ PlatformVideoColorSpace videoColorSpaceFromInfo(const GstVideoInfo& info) +@@ -1491,6 +1515,7 @@ PlatformVideoColorSpace videoColorSpaceFromInfo(const GstVideoInfo& info) case GST_VIDEO_TRANSFER_BT709: colorSpace.transfer = PlatformVideoTransferCharacteristics::Bt709; break; @@ -211,7 +212,7 @@ index 7adf0dabc73e..49043537e7f7 100644 case GST_VIDEO_TRANSFER_BT601: colorSpace.transfer = PlatformVideoTransferCharacteristics::Smpte170m; break; -@@ -1430,6 +1454,7 @@ PlatformVideoColorSpace videoColorSpaceFromInfo(const GstVideoInfo& info) +@@ -1503,6 +1528,7 @@ PlatformVideoColorSpace videoColorSpaceFromInfo(const GstVideoInfo& info) case GST_VIDEO_TRANSFER_BT2020_10: colorSpace.transfer = PlatformVideoTransferCharacteristics::Bt2020_10bit; break; @@ -219,7 +220,7 @@ index 7adf0dabc73e..49043537e7f7 100644 case GST_VIDEO_TRANSFER_BT2020_12: colorSpace.transfer = PlatformVideoTransferCharacteristics::Bt2020_12bit; break; -@@ -1548,6 +1573,7 @@ void fillVideoInfoColorimetryFromColorSpace(GstVideoInfo* info, const PlatformVi +@@ -1621,6 +1647,7 @@ void fillVideoInfoColorimetryFromColorSpace(GstVideoInfo* info, const PlatformVi case PlatformVideoTransferCharacteristics::Bt709: GST_VIDEO_INFO_COLORIMETRY(info).transfer = GST_VIDEO_TRANSFER_BT709; break; @@ -227,7 +228,7 @@ index 7adf0dabc73e..49043537e7f7 100644 case PlatformVideoTransferCharacteristics::Smpte170m: GST_VIDEO_INFO_COLORIMETRY(info).transfer = GST_VIDEO_TRANSFER_BT601; break; -@@ -1560,6 +1586,7 @@ void fillVideoInfoColorimetryFromColorSpace(GstVideoInfo* info, const PlatformVi +@@ -1633,6 +1660,7 @@ void fillVideoInfoColorimetryFromColorSpace(GstVideoInfo* info, const PlatformVi case PlatformVideoTransferCharacteristics::Bt2020_10bit: GST_VIDEO_INFO_COLORIMETRY(info).transfer = GST_VIDEO_TRANSFER_BT2020_10; break; @@ -236,10 +237,10 @@ index 7adf0dabc73e..49043537e7f7 100644 GST_VIDEO_INFO_COLORIMETRY(info).transfer = GST_VIDEO_TRANSFER_BT2020_12; break; diff --git a/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h b/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h -index f332ddd0e040..217132050db0 100644 +index 1d176ce8e6ae..81cd5bf8b884 100644 --- a/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h +++ b/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h -@@ -64,6 +64,15 @@ inline bool webkitGstCheckVersion(guint major, guint minor, guint micro) +@@ -70,6 +70,14 @@ inline bool webkitGstCheckVersion(guint major, guint minor, guint micro) return true; } @@ -248,14 +249,13 @@ index f332ddd0e040..217132050db0 100644 +// vendored copy of the function. +#define GST_VIDEO_MAX_COMPONENTS 4 +void webkitGstVideoFormatInfoComponent(const GstVideoFormatInfo*, guint, gint components[GST_VIDEO_MAX_COMPONENTS]); ++#define gst_video_format_info_component webkitGstVideoFormatInfoComponent +#endif + -+#define gst_video_format_info_component webkitGstVideoFormatInfoComponent -+ - #define GST_VIDEO_CAPS_TYPE_PREFIX "video/" - #define GST_AUDIO_CAPS_TYPE_PREFIX "audio/" - #define GST_TEXT_CAPS_TYPE_PREFIX "text/" -@@ -301,6 +310,13 @@ Vector gstStructureGetArray(const GstStructure*, ASCIILiteral key); + #define GST_VIDEO_CAPS_TYPE_PREFIX "video/"_s + #define GST_AUDIO_CAPS_TYPE_PREFIX "audio/"_s + #define GST_TEXT_CAPS_TYPE_PREFIX "text/"_s +@@ -297,6 +305,13 @@ Vector gstStructureGetList(const GstStructure*, ASCIILiteral key); String gstStructureToJSONString(const GstStructure*); @@ -270,10 +270,10 @@ index f332ddd0e040..217132050db0 100644 PlatformVideoColorSpace videoColorSpaceFromCaps(const GstCaps*); diff --git a/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp b/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp -index 9d6d57868055..3d1a5f76a4c2 100644 +index 440372617f10..184507cef558 100644 --- a/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp +++ b/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp -@@ -589,8 +589,6 @@ bool MediaPlayerPrivateGStreamer::doSeek(const SeekTarget& target, float rate, b +@@ -604,8 +604,6 @@ bool MediaPlayerPrivateGStreamer::doSeek(const SeekTarget& target, float rate, b auto seekStop = toGstClockTime(endTime); GstEvent* event = gst_event_new_seek(rate, GST_FORMAT_TIME, m_seekFlags, GST_SEEK_TYPE_SET, seekStart, GST_SEEK_TYPE_SET, seekStop); @@ -282,7 +282,7 @@ index 9d6d57868055..3d1a5f76a4c2 100644 if (isAsync) { gst_element_call_async(m_pipeline.get(), reinterpret_cast(+[](GstElement* pipeline, gpointer userData) { GstEvent* event = static_cast(userData); -@@ -4167,26 +4165,7 @@ void MediaPlayerPrivateGStreamer::setStreamVolumeElement(GstStreamVolume* volume +@@ -4278,26 +4276,7 @@ void MediaPlayerPrivateGStreamer::setStreamVolumeElement(GstStreamVolume* volume bool MediaPlayerPrivateGStreamer::updateVideoSinkStatistics() { @@ -311,7 +311,7 @@ index 9d6d57868055..3d1a5f76a4c2 100644 std::optional MediaPlayerPrivateGStreamer::videoPlaybackQualityMetrics() diff --git a/Source/WebCore/platform/gstreamer/GStreamerCodecUtilities.cpp b/Source/WebCore/platform/gstreamer/GStreamerCodecUtilities.cpp -index 870570cf204a..cc41cdf8911c 100644 +index 52be1e0338bd..7eb0d67108f1 100644 --- a/Source/WebCore/platform/gstreamer/GStreamerCodecUtilities.cpp +++ b/Source/WebCore/platform/gstreamer/GStreamerCodecUtilities.cpp @@ -256,9 +256,10 @@ static std::pair, GRefPtr> vpxCapsFromCodecString(cons @@ -396,10 +396,10 @@ index 870570cf204a..cc41cdf8911c 100644 }; diff --git a/Source/WebCore/platform/gstreamer/VideoEncoderPrivateGStreamer.cpp b/Source/WebCore/platform/gstreamer/VideoEncoderPrivateGStreamer.cpp -index d21b24cfe1ed..aa7492b14dd7 100644 +index 4e57c2422148..993357fdb9ca 100644 --- a/Source/WebCore/platform/gstreamer/VideoEncoderPrivateGStreamer.cpp +++ b/Source/WebCore/platform/gstreamer/VideoEncoderPrivateGStreamer.cpp -@@ -898,22 +898,6 @@ static void webkit_video_encoder_class_init(WebKitVideoEncoderClass* klass) +@@ -857,22 +857,6 @@ static void webkit_video_encoder_class_init(WebKitVideoEncoderClass* klass) "temporal-scalability-rate-decimator", decimators.get(), "temporal-scalability-target-bitrate", bitrates.get(), nullptr); @@ -423,7 +423,7 @@ index d21b24cfe1ed..aa7492b14dd7 100644 }); diff --git a/Source/cmake/GStreamerChecks.cmake b/Source/cmake/GStreamerChecks.cmake -index 27816a97ff26..94863212aee9 100644 +index af7ad6df1f8f..465e9264cbee 100644 --- a/Source/cmake/GStreamerChecks.cmake +++ b/Source/cmake/GStreamerChecks.cmake @@ -1,7 +1,7 @@ @@ -445,5 +445,5 @@ index 27816a97ff26..94863212aee9 100644 if (ENABLE_WEB_AUDIO) if (NOT PC_GSTREAMER_AUDIO_FOUND OR NOT PC_GSTREAMER_FFT_FOUND) -- -2.49.0 +2.51.0 diff --git a/harfbuzz-1.7.5.patch b/harfbuzz-1.7.5.patch index f38e040..b419af3 100644 --- a/harfbuzz-1.7.5.patch +++ b/harfbuzz-1.7.5.patch @@ -1,5 +1,37 @@ +From 4d81f51a0d3ddd85ec8eac48b3093d9818c97907 Mon Sep 17 00:00:00 2001 +From: Michael Catanzaro +Date: Tue, 23 Sep 2025 15:48:27 -0500 +Subject: [PATCH] Build against harfbuzz 1.7.5 + +--- + .../skia/modules/skshaper/src/SkShaper_harfbuzz.cpp | 11 ++++------- + .../platform/graphics/skia/SkiaHarfBuzzFont.cpp | 8 +++++--- + 2 files changed, 9 insertions(+), 10 deletions(-) + +diff --git a/Source/ThirdParty/skia/modules/skshaper/src/SkShaper_harfbuzz.cpp b/Source/ThirdParty/skia/modules/skshaper/src/SkShaper_harfbuzz.cpp +index c40b01d85ab4..79c883dd1380 100644 +--- a/Source/ThirdParty/skia/modules/skshaper/src/SkShaper_harfbuzz.cpp ++++ b/Source/ThirdParty/skia/modules/skshaper/src/SkShaper_harfbuzz.cpp +@@ -275,13 +275,10 @@ HBFace create_hb_face(const SkTypeface& typeface) { + // hb_face_create always succeeds. Check that the format is minimally recognized first. + // hb_face_create_for_tables may still create a working hb_face. + // See https://github.com/harfbuzz/harfbuzz/issues/248 . +- unsigned int num_hb_faces = hb_face_count(blob.get()); +- if (0 < num_hb_faces && (unsigned)index < num_hb_faces) { +- face.reset(hb_face_create(blob.get(), (unsigned)index)); +- // Check the number of glyphs as a basic sanitization step. +- if (face && hb_face_get_glyph_count(face.get()) == 0) { +- face.reset(); +- } ++ face.reset(hb_face_create(blob.get(), (unsigned)index)); ++ // Check the number of glyphs as a basic sanitization step. ++ if (face && hb_face_get_glyph_count(face.get()) == 0) { ++ face.reset(); + } + } + if (!face) { diff --git a/Source/WebCore/platform/graphics/skia/SkiaHarfBuzzFont.cpp b/Source/WebCore/platform/graphics/skia/SkiaHarfBuzzFont.cpp -index 8bc21b21976c..68654f602c92 100644 +index dbbb5cc21cb6..8818343d3b57 100644 --- a/Source/WebCore/platform/graphics/skia/SkiaHarfBuzzFont.cpp +++ b/Source/WebCore/platform/graphics/skia/SkiaHarfBuzzFont.cpp @@ -101,9 +101,10 @@ static HbUniquePtr createHarfBuzzFace(SkTypeface& typeface) @@ -24,25 +56,6 @@ index 8bc21b21976c..68654f602c92 100644 if (int axisCount = typeface.getVariationDesignPosition(nullptr, 0)) { Vector axisValues(axisCount); -diff --git a/Source/ThirdParty/skia/modules/skshaper/src/SkShaper_harfbuzz.cpp b/Source/ThirdParty/skia/modules/skshaper/src/SkShaper_harfbuzz.cpp -index 065385774422..498994ff7aa7 100644 ---- a/Source/ThirdParty/skia/modules/skshaper/src/SkShaper_harfbuzz.cpp -+++ b/Source/ThirdParty/skia/modules/skshaper/src/SkShaper_harfbuzz.cpp -@@ -277,13 +277,10 @@ HBFace create_hb_face(const SkTypeface& typeface) { - // hb_face_create always succeeds. Check that the format is minimally recognized first. - // hb_face_create_for_tables may still create a working hb_face. - // See https://github.com/harfbuzz/harfbuzz/issues/248 . -- unsigned int num_hb_faces = hb_face_count(blob.get()); -- if (0 < num_hb_faces && (unsigned)index < num_hb_faces) { -- face.reset(hb_face_create(blob.get(), (unsigned)index)); -- // Check the number of glyphs as a basic sanitization step. -- if (face && hb_face_get_glyph_count(face.get()) == 0) { -- face.reset(); -- } -+ face.reset(hb_face_create(blob.get(), (unsigned)index)); -+ // Check the number of glyphs as a basic sanitization step. -+ if (face && hb_face_get_glyph_count(face.get()) == 0) { -+ face.reset(); - } - } - if (!face) { +-- +2.51.0 + diff --git a/i686-build.patch b/i686-build.patch new file mode 100644 index 0000000..13f98bc --- /dev/null +++ b/i686-build.patch @@ -0,0 +1,18 @@ +diff --git a/Source/JavaScriptCore/llint/LowLevelInterpreter.asm b/Source/JavaScriptCore/llint/LowLevelInterpreter.asm +index af53fe269664..237fd6aab9c8 100644 +--- a/Source/JavaScriptCore/llint/LowLevelInterpreter.asm ++++ b/Source/JavaScriptCore/llint/LowLevelInterpreter.asm +@@ -2958,6 +2958,13 @@ _wasm_ipint_call_return_location_wide16: + _wasm_ipint_call_return_location_wide32: + crash() + ++if C_LOOP and not JSVALUE64 ++_op_instanceof_return_location: ++_op_instanceof_return_location_wide16: ++_op_instanceof_return_location_wide32: ++ crash() ++end ++ + end # WEBASSEMBLY + + include? LowLevelInterpreterAdditions diff --git a/icu60.patch b/icu60.patch index 15ddfc9..5b7e906 100644 --- a/icu60.patch +++ b/icu60.patch @@ -1,4 +1,4 @@ -From 5f60bd9605e60231e6d430e7559a2af9d6aa4c33 Mon Sep 17 00:00:00 2001 +From be79a15040dd992cdac91c59d481fea5d7209df3 Mon Sep 17 00:00:00 2001 From: Michael Catanzaro Date: Thu, 27 Mar 2025 15:56:41 -0500 Subject: [PATCH 1/5] Revert "[CMake] Update minimum ICU version to 70.1" @@ -9,7 +9,7 @@ This reverts commit 95d71be25d5b838b1171e6b9b2cd526190118fba. 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake -index 0a30e0c4c7c1..814009146300 100644 +index 285ab3737bfa..83377867f3b1 100644 --- a/Source/cmake/OptionsGTK.cmake +++ b/Source/cmake/OptionsGTK.cmake @@ -10,11 +10,11 @@ set(USER_AGENT_BRANDING "" CACHE STRING "Branding to add to user agent string") @@ -28,10 +28,10 @@ index 0a30e0c4c7c1..814009146300 100644 find_package(SQLite3 REQUIRED) find_package(Threads REQUIRED) -- -2.49.0 +2.51.0 -From 3e1a6690440b9cb3a11a4cadc69a985845a4a5bd Mon Sep 17 00:00:00 2001 +From 4c60130350756d48e7f8ed85b4d86d2b049da332 Mon Sep 17 00:00:00 2001 From: Michael Catanzaro Date: Fri, 28 Mar 2025 14:45:03 -0500 Subject: [PATCH 2/5] Revert "[JSC] Remove unnecessary ICU version checks" @@ -44,7 +44,7 @@ This reverts commit af62f09a1fad0b72293a7f0d082704d92116cb9a. 3 files changed, 47 insertions(+), 24 deletions(-) diff --git a/Source/JavaScriptCore/runtime/IntlDurationFormat.cpp b/Source/JavaScriptCore/runtime/IntlDurationFormat.cpp -index 61264bfe23d9..a1c628082dd5 100644 +index 9bf431425007..17c5b1b848d7 100644 --- a/Source/JavaScriptCore/runtime/IntlDurationFormat.cpp +++ b/Source/JavaScriptCore/runtime/IntlDurationFormat.cpp @@ -457,7 +457,7 @@ static Vector collectElements(JSGlobalObject* globalObject, const IntlD @@ -57,10 +57,10 @@ index 61264bfe23d9..a1c628082dd5 100644 skeletonBuilder.append("00"_s); else diff --git a/Source/JavaScriptCore/runtime/IntlNumberFormat.cpp b/Source/JavaScriptCore/runtime/IntlNumberFormat.cpp -index 67708f1d8d33..0938d2d5b4a5 100644 +index b05c7813294c..c16e6bcee859 100644 --- a/Source/JavaScriptCore/runtime/IntlNumberFormat.cpp +++ b/Source/JavaScriptCore/runtime/IntlNumberFormat.cpp -@@ -517,10 +517,14 @@ void IntlNumberFormat::initializeNumberFormat(JSGlobalObject* globalObject, JSVa +@@ -496,10 +496,14 @@ void IntlNumberFormat::initializeNumberFormat(JSGlobalObject* globalObject, JSVa skeletonBuilder.append(" sign-except-zero"_s); break; case SignDisplay::Negative: @@ -80,10 +80,10 @@ index 67708f1d8d33..0938d2d5b4a5 100644 } diff --git a/Source/JavaScriptCore/runtime/IntlNumberFormatInlines.h b/Source/JavaScriptCore/runtime/IntlNumberFormatInlines.h -index ddccce2fd112..980da4e3c74a 100644 +index c640b73cc891..e678978e453d 100644 --- a/Source/JavaScriptCore/runtime/IntlNumberFormatInlines.h +++ b/Source/JavaScriptCore/runtime/IntlNumberFormatInlines.h -@@ -199,12 +199,24 @@ void appendNumberFormatDigitOptionsToSkeleton(IntlType* intlInstance, StringBuil +@@ -200,12 +200,24 @@ void appendNumberFormatDigitOptionsToSkeleton(IntlType* intlInstance, StringBuil case RoundingMode::Trunc: skeletonBuilder.append(" rounding-mode-down"_s); break; @@ -112,7 +112,7 @@ index ddccce2fd112..980da4e3c74a 100644 case RoundingMode::HalfExpand: skeletonBuilder.append(" rounding-mode-half-up"_s); break; -@@ -217,7 +229,7 @@ void appendNumberFormatDigitOptionsToSkeleton(IntlType* intlInstance, StringBuil +@@ -218,7 +230,7 @@ void appendNumberFormatDigitOptionsToSkeleton(IntlType* intlInstance, StringBuil } // https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#integer-width @@ -121,7 +121,7 @@ index ddccce2fd112..980da4e3c74a 100644 for (unsigned i = 0; i < intlInstance->m_minimumIntegerDigits; ++i) skeletonBuilder.append('0'); -@@ -255,19 +267,23 @@ void appendNumberFormatDigitOptionsToSkeleton(IntlType* intlInstance, StringBuil +@@ -256,19 +268,23 @@ void appendNumberFormatDigitOptionsToSkeleton(IntlType* intlInstance, StringBuil } case IntlRoundingType::MorePrecision: case IntlRoundingType::LessPrecision: @@ -158,7 +158,7 @@ index ddccce2fd112..980da4e3c74a 100644 break; } } -@@ -278,7 +294,10 @@ void appendNumberFormatDigitOptionsToSkeleton(IntlType* intlInstance, StringBuil +@@ -279,7 +295,10 @@ void appendNumberFormatDigitOptionsToSkeleton(IntlType* intlInstance, StringBuil case IntlTrailingZeroDisplay::Auto: break; case IntlTrailingZeroDisplay::StripIfInteger: @@ -171,21 +171,21 @@ index ddccce2fd112..980da4e3c74a 100644 } } -- -2.49.0 +2.51.0 -From cf69f3f40771d8724228c3af3a2c96dc04e38f85 Mon Sep 17 00:00:00 2001 +From 6f52a2ff3327c5ef714fb385f647daceeab1680f Mon Sep 17 00:00:00 2001 From: Michael Catanzaro Date: Fri, 28 Mar 2025 15:01:00 -0500 Subject: [PATCH 3/5] Revert "[JSC] TimeZone Cache should be per-process level" This reverts commit c779aa30eced87609c7c808d672a8f23c5c4821d. --- - Source/JavaScriptCore/runtime/JSDateMath.cpp | 59 +++++++------------- - 1 file changed, 20 insertions(+), 39 deletions(-) + Source/JavaScriptCore/runtime/JSDateMath.cpp | 61 +++++++------------- + 1 file changed, 21 insertions(+), 40 deletions(-) diff --git a/Source/JavaScriptCore/runtime/JSDateMath.cpp b/Source/JavaScriptCore/runtime/JSDateMath.cpp -index c6a194568dab..756cbccb1668 100644 +index 96993af52d33..c40f917fc99f 100644 --- a/Source/JavaScriptCore/runtime/JSDateMath.cpp +++ b/Source/JavaScriptCore/runtime/JSDateMath.cpp @@ -453,12 +453,9 @@ String DateCache::timeZoneDisplayName(bool isDST) @@ -205,10 +205,10 @@ index c6a194568dab..756cbccb1668 100644 #endif } --static std::tuple> retrieveTimeZoneInformation() +-static std::tuple> retrieveTimeZoneInformation() -{ - Locker locker { timeZoneCacheLock }; -- static NeverDestroyed, uint64_t>> globalCache; +- static NeverDestroyed, uint64_t>> globalCache; - - bool isCacheStale = true; - uint64_t currentID = 0; @@ -217,7 +217,7 @@ index c6a194568dab..756cbccb1668 100644 - isCacheStale = std::get<2>(globalCache.get()) != currentID; -#endif - if (isCacheStale) { -- Vector timeZoneID; +- Vector timeZoneID; - getTimeZoneOverride(timeZoneID); - String canonical; - UErrorCode status = U_ZERO_ERROR; @@ -226,8 +226,8 @@ index c6a194568dab..756cbccb1668 100644 - ASSERT_UNUSED(status, U_SUCCESS(status)); - } - if (U_SUCCESS(status)) { -- Vector canonicalBuffer; -- auto status = callBufferProducingFunction(ucal_getCanonicalTimeZoneID, timeZoneID.data(), timeZoneID.size(), canonicalBuffer, nullptr); +- Vector canonicalBuffer; +- auto status = callBufferProducingFunction(ucal_getCanonicalTimeZoneID, timeZoneID.mutableSpan().data(), timeZoneID.size(), canonicalBuffer, nullptr); - if (U_SUCCESS(status)) - canonical = String(canonicalBuffer); - } @@ -242,25 +242,26 @@ index c6a194568dab..756cbccb1668 100644 DateCache::~DateCache() = default; Ref DateCache::cachedDateInstanceData(double millisecondsFromEpoch) -@@ -519,10 +482,28 @@ Ref DateCache::cachedDateInstanceData(double millisecondsFromE +@@ -519,11 +482,29 @@ Ref DateCache::cachedDateInstanceData(double millisecondsFromE void DateCache::timeZoneCacheSlow() { ASSERT(!m_timeZoneCache); - auto [canonical, timeZoneID] = retrieveTimeZoneInformation(); + -+ Vector timeZoneID; ++ Vector timeZoneID; + getTimeZoneOverride(timeZoneID); auto* cache = new OpaqueICUTimeZone; - cache->m_canonicalTimeZoneID = WTFMove(canonical); + + String canonical; UErrorCode status = U_ZERO_ERROR; +- cache->m_calendar = std::unique_ptr>(ucal_open(timeZoneID.span().data(), timeZoneID.size(), "", UCAL_DEFAULT, &status)); + if (timeZoneID.isEmpty()) { + status = callBufferProducingFunction(ucal_getHostTimeZone, timeZoneID); + ASSERT_UNUSED(status, U_SUCCESS(status)); + } + if (U_SUCCESS(status)) { -+ Vector canonicalBuffer; ++ Vector canonicalBuffer; + auto status = callBufferProducingFunction(ucal_getCanonicalTimeZoneID, timeZoneID.data(), timeZoneID.size(), canonicalBuffer, nullptr); + if (U_SUCCESS(status)) + canonical = String(canonicalBuffer); @@ -270,14 +271,15 @@ index c6a194568dab..756cbccb1668 100644 + cache->m_canonicalTimeZoneID = WTFMove(canonical); + + status = U_ZERO_ERROR; - cache->m_calendar = std::unique_ptr>(ucal_open(timeZoneID.data(), timeZoneID.size(), "", UCAL_DEFAULT, &status)); ++ cache->m_calendar = std::unique_ptr>(ucal_open(timeZoneID.data(), timeZoneID.size(), "", UCAL_DEFAULT, &status)); ASSERT_UNUSED(status, U_SUCCESS(status)); ucal_setGregorianChange(cache->m_calendar.get(), minECMAScriptTime, &status); // Ignore "unsupported" error. + m_timeZoneCache = std::unique_ptr(cache); -- -2.49.0 +2.51.0 -From 43c41bebf484bb3e08adf19cfadff01d820f6872 Mon Sep 17 00:00:00 2001 +From c5fb088366f855f23a2920b31744740edb5506a2 Mon Sep 17 00:00:00 2001 From: Michael Catanzaro Date: Fri, 28 Mar 2025 15:01:11 -0500 Subject: [PATCH 4/5] Revert "[JSC] Rebaseline Intl implementation based on @@ -304,7 +306,7 @@ This reverts commit 31a358087be7e5e70c7a03bdfcf89de35628a2a2. 16 files changed, 479 insertions(+), 16 deletions(-) diff --git a/Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp b/Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp -index e3e7671fcf45..2f2371649667 100644 +index 202e266c55da..9a413dc037a7 100644 --- a/Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp +++ b/Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp @@ -42,12 +42,16 @@ @@ -324,7 +326,7 @@ index e3e7671fcf45..2f2371649667 100644 WTF_ALLOW_UNSAFE_BUFFER_USAGE_BEGIN -@@ -1446,6 +1450,8 @@ UDateIntervalFormat* IntlDateTimeFormat::createDateIntervalFormatIfNecessary(JSG +@@ -1430,6 +1434,8 @@ UDateIntervalFormat* IntlDateTimeFormat::createDateIntervalFormatIfNecessary(JSG return m_dateIntervalFormat.get(); } @@ -333,7 +335,7 @@ index e3e7671fcf45..2f2371649667 100644 static std::unique_ptr> formattedValueFromDateRange(UDateIntervalFormat& dateIntervalFormat, UDateFormat& dateFormat, double startDate, double endDate, UErrorCode& status) { auto result = std::unique_ptr>(udtitvfmt_openResult(&status)); -@@ -1524,6 +1530,8 @@ static bool dateFieldsPracticallyEqual(const UFormattedValue* formattedValue, UE +@@ -1508,6 +1514,8 @@ static bool dateFieldsPracticallyEqual(const UFormattedValue* formattedValue, UE return !hasSpan; } @@ -342,7 +344,7 @@ index e3e7671fcf45..2f2371649667 100644 JSValue IntlDateTimeFormat::formatRange(JSGlobalObject* globalObject, double startDate, double endDate) { ASSERT(m_dateFormat); -@@ -1542,6 +1550,7 @@ JSValue IntlDateTimeFormat::formatRange(JSGlobalObject* globalObject, double sta +@@ -1526,6 +1534,7 @@ JSValue IntlDateTimeFormat::formatRange(JSGlobalObject* globalObject, double sta auto* dateIntervalFormat = createDateIntervalFormatIfNecessary(globalObject); RETURN_IF_EXCEPTION(scope, { }); @@ -350,7 +352,7 @@ index e3e7671fcf45..2f2371649667 100644 UErrorCode status = U_ZERO_ERROR; auto result = formattedValueFromDateRange(*dateIntervalFormat, *m_dateFormat, startDate, endDate, status); if (U_FAILURE(status)) { -@@ -1579,6 +1588,17 @@ JSValue IntlDateTimeFormat::formatRange(JSGlobalObject* globalObject, double sta +@@ -1563,6 +1572,17 @@ JSValue IntlDateTimeFormat::formatRange(JSGlobalObject* globalObject, double sta replaceNarrowNoBreakSpaceOrThinSpaceWithNormalSpace(buffer); return jsString(vm, String(WTFMove(buffer))); @@ -368,7 +370,7 @@ index e3e7671fcf45..2f2371649667 100644 } JSValue IntlDateTimeFormat::formatRangeToParts(JSGlobalObject* globalObject, double startDate, double endDate) -@@ -1588,6 +1608,7 @@ JSValue IntlDateTimeFormat::formatRangeToParts(JSGlobalObject* globalObject, dou +@@ -1572,6 +1592,7 @@ JSValue IntlDateTimeFormat::formatRangeToParts(JSGlobalObject* globalObject, dou VM& vm = globalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); @@ -376,7 +378,7 @@ index e3e7671fcf45..2f2371649667 100644 // http://tc39.es/proposal-intl-DateTimeFormat-formatRange/#sec-partitiondatetimerangepattern startDate = timeClip(startDate); endDate = timeClip(endDate); -@@ -1791,6 +1812,12 @@ JSValue IntlDateTimeFormat::formatRangeToParts(JSGlobalObject* globalObject, dou +@@ -1775,6 +1796,12 @@ JSValue IntlDateTimeFormat::formatRangeToParts(JSGlobalObject* globalObject, dou } return parts; @@ -390,7 +392,7 @@ index e3e7671fcf45..2f2371649667 100644 diff --git a/Source/JavaScriptCore/runtime/IntlDateTimeFormat.h b/Source/JavaScriptCore/runtime/IntlDateTimeFormat.h -index 121417aab9e1..14c476c72f69 100644 +index 782b30b0d2b1..cc81be712327 100644 --- a/Source/JavaScriptCore/runtime/IntlDateTimeFormat.h +++ b/Source/JavaScriptCore/runtime/IntlDateTimeFormat.h @@ -32,6 +32,12 @@ @@ -407,7 +409,7 @@ index 121417aab9e1..14c476c72f69 100644 enum class RelevantExtensionKey : uint8_t; diff --git a/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp b/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp -index b7ef4bab865f..694ab7afea0c 100644 +index 7a739f61e2c1..da457ad03212 100644 --- a/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp +++ b/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp @@ -56,7 +56,6 @@ const ClassInfo IntlDateTimeFormatPrototype::s_info = { "Intl.DateTimeFormat"_s, @@ -432,7 +434,7 @@ index b7ef4bab865f..694ab7afea0c 100644 } diff --git a/Source/JavaScriptCore/runtime/IntlDurationFormat.cpp b/Source/JavaScriptCore/runtime/IntlDurationFormat.cpp -index a1c628082dd5..78e9106ee0a4 100644 +index 17c5b1b848d7..c066e80ab130 100644 --- a/Source/JavaScriptCore/runtime/IntlDurationFormat.cpp +++ b/Source/JavaScriptCore/runtime/IntlDurationFormat.cpp @@ -36,14 +36,21 @@ @@ -542,7 +544,7 @@ index 69e64f9c8332..b3f781a54ad4 100644 String m_numberingSystem; CString m_dataLocaleWithExtensions; diff --git a/Source/JavaScriptCore/runtime/IntlListFormat.cpp b/Source/JavaScriptCore/runtime/IntlListFormat.cpp -index 8fb342027af5..c25cc5f9e90f 100644 +index 8bc64220a7c7..c24073ce3171 100644 --- a/Source/JavaScriptCore/runtime/IntlListFormat.cpp +++ b/Source/JavaScriptCore/runtime/IntlListFormat.cpp @@ -33,12 +33,19 @@ @@ -651,7 +653,7 @@ index 2d071949e06f..af6f2c2e7b0a 100644 namespace JSC { diff --git a/Source/JavaScriptCore/runtime/IntlNumberFormat.cpp b/Source/JavaScriptCore/runtime/IntlNumberFormat.cpp -index 0938d2d5b4a5..1f0aa041c201 100644 +index c16e6bcee859..1fc664fab1e5 100644 --- a/Source/JavaScriptCore/runtime/IntlNumberFormat.cpp +++ b/Source/JavaScriptCore/runtime/IntlNumberFormat.cpp @@ -43,8 +43,12 @@ @@ -726,7 +728,7 @@ index 0938d2d5b4a5..1f0aa041c201 100644 // Constructing ICU Number Skeletons to configure UNumberFormatter. // https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md -@@ -557,11 +570,120 @@ void IntlNumberFormat::initializeNumberFormat(JSGlobalObject* globalObject, JSVa +@@ -536,11 +549,120 @@ void IntlNumberFormat::initializeNumberFormat(JSGlobalObject* globalObject, JSVa return; } @@ -847,15 +849,15 @@ index 0938d2d5b4a5..1f0aa041c201 100644 } // https://tc39.es/ecma402/#sec-formatnumber -@@ -573,6 +695,7 @@ JSValue IntlNumberFormat::format(JSGlobalObject* globalObject, double value) con +@@ -552,6 +674,7 @@ JSValue IntlNumberFormat::format(JSGlobalObject* globalObject, double value) con value = purifyNaN(value); - Vector buffer; + Vector buffer; +#if HAVE(ICU_U_NUMBER_FORMATTER) ASSERT(m_numberFormatter); UErrorCode status = U_ZERO_ERROR; auto formattedNumber = std::unique_ptr>(unumf_openResult(&status)); -@@ -584,6 +707,12 @@ JSValue IntlNumberFormat::format(JSGlobalObject* globalObject, double value) con +@@ -563,6 +686,12 @@ JSValue IntlNumberFormat::format(JSGlobalObject* globalObject, double value) con status = callBufferProducingFunction(unumf_resultToString, formattedNumber.get(), buffer); if (U_FAILURE(status)) return throwTypeError(globalObject, scope, "Failed to format a number."_s); @@ -868,15 +870,15 @@ index 0938d2d5b4a5..1f0aa041c201 100644 return jsString(vm, String(WTFMove(buffer))); } -@@ -597,6 +726,7 @@ JSValue IntlNumberFormat::format(JSGlobalObject* globalObject, IntlMathematicalV +@@ -576,6 +705,7 @@ JSValue IntlNumberFormat::format(JSGlobalObject* globalObject, IntlMathematicalV const auto& string = value.getString(); - Vector buffer; + Vector buffer; +#if HAVE(ICU_U_NUMBER_FORMATTER) ASSERT(m_numberFormatter); UErrorCode status = U_ZERO_ERROR; auto formattedNumber = std::unique_ptr>(unumf_openResult(&status)); -@@ -608,9 +738,16 @@ JSValue IntlNumberFormat::format(JSGlobalObject* globalObject, IntlMathematicalV +@@ -587,9 +717,16 @@ JSValue IntlNumberFormat::format(JSGlobalObject* globalObject, IntlMathematicalV status = callBufferProducingFunction(unumf_resultToString, formattedNumber.get(), buffer); if (U_FAILURE(status)) return throwTypeError(globalObject, scope, "Failed to format a BigInt."_s); @@ -893,7 +895,7 @@ index 0938d2d5b4a5..1f0aa041c201 100644 JSValue IntlNumberFormat::formatRange(JSGlobalObject* globalObject, double start, double end) const { VM& vm = globalObject->vm(); -@@ -678,6 +815,7 @@ JSValue IntlNumberFormat::formatRange(JSGlobalObject* globalObject, IntlMathemat +@@ -657,6 +794,7 @@ JSValue IntlNumberFormat::formatRange(JSGlobalObject* globalObject, IntlMathemat return jsString(vm, String({ string, static_cast(length) })); } @@ -901,7 +903,7 @@ index 0938d2d5b4a5..1f0aa041c201 100644 static constexpr int32_t literalField = -1; struct IntlNumberFormatField { -@@ -790,6 +928,7 @@ static Vector flattenFields(Vector +@@ -769,6 +907,7 @@ static Vector flattenFields(Vector return flatten; } @@ -909,7 +911,7 @@ index 0938d2d5b4a5..1f0aa041c201 100644 static bool numberFieldsPracticallyEqual(const UFormattedValue* formattedValue, UErrorCode& status) { auto iterator = std::unique_ptr>(ucfpos_open(&status)); -@@ -1031,6 +1170,7 @@ JSValue IntlNumberFormat::formatRangeToParts(JSGlobalObject* globalObject, IntlM +@@ -1010,6 +1149,7 @@ JSValue IntlNumberFormat::formatRangeToParts(JSGlobalObject* globalObject, IntlM return parts; } @@ -917,15 +919,15 @@ index 0938d2d5b4a5..1f0aa041c201 100644 ASCIILiteral IntlNumberFormat::styleString(Style style) { -@@ -1328,6 +1468,7 @@ JSValue IntlNumberFormat::formatToParts(JSGlobalObject* globalObject, double val +@@ -1307,6 +1447,7 @@ JSValue IntlNumberFormat::formatToParts(JSGlobalObject* globalObject, double val return throwTypeError(globalObject, scope, "failed to open field position iterator"_s); - Vector result; + Vector result; +#if HAVE(ICU_U_NUMBER_FORMATTER) ASSERT(m_numberFormatter); auto formattedNumber = std::unique_ptr>(unumf_openResult(&status)); if (U_FAILURE(status)) -@@ -1342,6 +1483,13 @@ JSValue IntlNumberFormat::formatToParts(JSGlobalObject* globalObject, double val +@@ -1321,6 +1462,13 @@ JSValue IntlNumberFormat::formatToParts(JSGlobalObject* globalObject, double val if (U_FAILURE(status)) return throwTypeError(globalObject, scope, "Failed to format a number."_s); IntlFieldIterator iterator(*fieldItr.get()); @@ -939,7 +941,7 @@ index 0938d2d5b4a5..1f0aa041c201 100644 auto resultString = String(WTFMove(result)); -@@ -1355,6 +1503,7 @@ JSValue IntlNumberFormat::formatToParts(JSGlobalObject* globalObject, double val +@@ -1334,6 +1482,7 @@ JSValue IntlNumberFormat::formatToParts(JSGlobalObject* globalObject, double val return parts; } @@ -947,7 +949,7 @@ index 0938d2d5b4a5..1f0aa041c201 100644 JSValue IntlNumberFormat::formatToParts(JSGlobalObject* globalObject, IntlMathematicalValue&& value, JSString* sourceType) const { VM& vm = globalObject->vm(); -@@ -1399,6 +1548,7 @@ JSValue IntlNumberFormat::formatToParts(JSGlobalObject* globalObject, IntlMathem +@@ -1378,6 +1527,7 @@ JSValue IntlNumberFormat::formatToParts(JSGlobalObject* globalObject, IntlMathem return parts; } @@ -956,7 +958,7 @@ index 0938d2d5b4a5..1f0aa041c201 100644 IntlMathematicalValue IntlMathematicalValue::parseString(JSGlobalObject* globalObject, StringView view) { diff --git a/Source/JavaScriptCore/runtime/IntlNumberFormat.h b/Source/JavaScriptCore/runtime/IntlNumberFormat.h -index 1bd75559a1d6..4928e5cc4d02 100644 +index 65a6795b013f..29d197e462fb 100644 --- a/Source/JavaScriptCore/runtime/IntlNumberFormat.h +++ b/Source/JavaScriptCore/runtime/IntlNumberFormat.h @@ -34,6 +34,25 @@ @@ -985,9 +987,9 @@ index 1bd75559a1d6..4928e5cc4d02 100644 struct UFormattedValue; struct UNumberFormatter; struct UNumberRangeFormatter; -@@ -51,13 +70,17 @@ enum class IntlNotation : uint8_t { Standard, Scientific, Engineering, Compact } - template void setNumberFormatDigitOptions(JSGlobalObject*, IntlType*, JSObject*, unsigned minimumFractionDigitsDefault, unsigned maximumFractionDigitsDefault, IntlNotation); +@@ -52,13 +71,17 @@ template void setNumberFormatDigitOptions(JSGlobalObject*, In template void appendNumberFormatDigitOptionsToSkeleton(IntlType*, StringBuilder&); + template void appendNumberFormatNotationOptionsToSkeleton(IntlType*, StringBuilder&); +#if HAVE(ICU_U_NUMBER_FORMATTER) struct UNumberFormatterDeleter { @@ -1003,7 +1005,7 @@ index 1bd75559a1d6..4928e5cc4d02 100644 class IntlMathematicalValue { WTF_MAKE_TZONE_ALLOCATED(IntlMathematicalValue); -@@ -159,14 +182,20 @@ public: +@@ -162,14 +185,20 @@ public: JSValue format(JSGlobalObject*, double) const; JSValue format(JSGlobalObject*, IntlMathematicalValue&&) const; JSValue formatToParts(JSGlobalObject*, double, JSString* sourceType = nullptr) const; @@ -1024,7 +1026,7 @@ index 1bd75559a1d6..4928e5cc4d02 100644 JSBoundFunction* boundFormat() const { return m_boundFormat.get(); } void setBoundFormat(VM&, JSBoundFunction*); -@@ -212,8 +241,14 @@ private: +@@ -216,8 +245,14 @@ private: static JSValue useGroupingValue(VM&, UseGrouping); WriteBarrier m_boundFormat; @@ -1040,7 +1042,7 @@ index 1bd75559a1d6..4928e5cc4d02 100644 String m_locale; String m_numberingSystem; diff --git a/Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp b/Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp -index 6459273641c6..026b4269652e 100644 +index d951aa27c715..4e3615ba7242 100644 --- a/Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp +++ b/Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp @@ -35,12 +35,18 @@ @@ -1109,7 +1111,7 @@ index 6459273641c6..026b4269652e 100644 JSC_DEFINE_HOST_FUNCTION(intlNumberFormatPrototypeFuncFormatToParts, (JSGlobalObject* globalObject, CallFrame* callFrame)) { @@ -177,6 +189,7 @@ JSC_DEFINE_HOST_FUNCTION(intlNumberFormatPrototypeFuncFormatToParts, (JSGlobalOb - if (UNLIKELY(!numberFormat)) + if (!numberFormat) [[unlikely]] return JSValue::encode(throwTypeError(globalObject, scope, "Intl.NumberFormat.prototype.formatToParts called on value that's not a NumberFormat"_s)); +#if HAVE(ICU_U_NUMBER_FORMATTER) @@ -1141,7 +1143,7 @@ index 6459273641c6..026b4269652e 100644 JSC_DEFINE_HOST_FUNCTION(intlNumberFormatPrototypeFuncResolvedOptions, (JSGlobalObject* globalObject, CallFrame* callFrame)) { diff --git a/Source/JavaScriptCore/runtime/IntlObject.cpp b/Source/JavaScriptCore/runtime/IntlObject.cpp -index dab995d4c294..51dbe4447db3 100644 +index 8ef1ee678063..f8413f12dec7 100644 --- a/Source/JavaScriptCore/runtime/IntlObject.cpp +++ b/Source/JavaScriptCore/runtime/IntlObject.cpp @@ -169,8 +169,6 @@ namespace JSC { @@ -1168,7 +1170,7 @@ index dab995d4c294..51dbe4447db3 100644 Structure* IntlObject::createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype) diff --git a/Source/JavaScriptCore/runtime/IntlPluralRules.cpp b/Source/JavaScriptCore/runtime/IntlPluralRules.cpp -index 584c6ff2c435..af58373c78e8 100644 +index b3e58fc6453f..c451478086f7 100644 --- a/Source/JavaScriptCore/runtime/IntlPluralRules.cpp +++ b/Source/JavaScriptCore/runtime/IntlPluralRules.cpp @@ -36,8 +36,12 @@ @@ -1184,7 +1186,7 @@ index 584c6ff2c435..af58373c78e8 100644 #define U_HIDE_DRAFT_API 1 namespace JSC { -@@ -118,6 +122,7 @@ void IntlPluralRules::initializePluralRules(JSGlobalObject* globalObject, JSValu +@@ -121,6 +125,7 @@ void IntlPluralRules::initializePluralRules(JSGlobalObject* globalObject, JSValu auto locale = m_locale.utf8(); UErrorCode status = U_ZERO_ERROR; @@ -1192,7 +1194,7 @@ index 584c6ff2c435..af58373c78e8 100644 StringBuilder skeletonBuilder; appendNumberFormatDigitOptionsToSkeleton(this, skeletonBuilder); -@@ -132,11 +137,36 @@ void IntlPluralRules::initializePluralRules(JSGlobalObject* globalObject, JSValu +@@ -135,11 +140,36 @@ void IntlPluralRules::initializePluralRules(JSGlobalObject* globalObject, JSValu return; } @@ -1229,7 +1231,7 @@ index 584c6ff2c435..af58373c78e8 100644 m_pluralRules = std::unique_ptr(uplrules_openForType(locale.data(), m_type == Type::Ordinal ? UPLURAL_TYPE_ORDINAL : UPLURAL_TYPE_CARDINAL, &status)); if (U_FAILURE(status)) { -@@ -230,6 +260,7 @@ JSValue IntlPluralRules::select(JSGlobalObject* globalObject, double value) cons +@@ -234,6 +264,7 @@ JSValue IntlPluralRules::select(JSGlobalObject* globalObject, double value) cons UErrorCode status = U_ZERO_ERROR; @@ -1237,7 +1239,7 @@ index 584c6ff2c435..af58373c78e8 100644 auto formattedNumber = std::unique_ptr>(unumf_openResult(&status)); if (U_FAILURE(status)) return throwTypeError(globalObject, scope, "failed to select plural value"_s); -@@ -241,8 +272,17 @@ JSValue IntlPluralRules::select(JSGlobalObject* globalObject, double value) cons +@@ -245,8 +276,17 @@ JSValue IntlPluralRules::select(JSGlobalObject* globalObject, double value) cons if (U_FAILURE(status)) return throwTypeError(globalObject, scope, "failed to select plural value"_s); return jsString(vm, String(WTFMove(buffer))); @@ -1255,7 +1257,7 @@ index 584c6ff2c435..af58373c78e8 100644 JSValue IntlPluralRules::selectRange(JSGlobalObject* globalObject, double start, double end) const { ASSERT(m_numberRangeFormatter); -@@ -268,5 +308,6 @@ JSValue IntlPluralRules::selectRange(JSGlobalObject* globalObject, double start, +@@ -272,5 +312,6 @@ JSValue IntlPluralRules::selectRange(JSGlobalObject* globalObject, double start, return throwTypeError(globalObject, scope, "failed to select plural value"_s); return jsString(vm, String(WTFMove(buffer))); } @@ -1263,10 +1265,10 @@ index 584c6ff2c435..af58373c78e8 100644 } // namespace JSC diff --git a/Source/JavaScriptCore/runtime/IntlPluralRules.h b/Source/JavaScriptCore/runtime/IntlPluralRules.h -index 26b7d72b16aa..7f476e03ca03 100644 +index 0f95f5e5eab5..848def6a50d4 100644 --- a/Source/JavaScriptCore/runtime/IntlPluralRules.h +++ b/Source/JavaScriptCore/runtime/IntlPluralRules.h -@@ -69,9 +69,12 @@ public: +@@ -73,9 +73,12 @@ public: void initializePluralRules(JSGlobalObject*, JSValue locales, JSValue options); JSValue select(JSGlobalObject*, double value) const; @@ -1280,7 +1282,7 @@ index 26b7d72b16aa..7f476e03ca03 100644 private: IntlPluralRules(VM&, Structure*); DECLARE_DEFAULT_FINISH_CREATION; -@@ -82,8 +85,15 @@ private: +@@ -85,8 +88,15 @@ private: enum class Type : bool { Cardinal, Ordinal }; std::unique_ptr m_pluralRules; @@ -1297,7 +1299,7 @@ index 26b7d72b16aa..7f476e03ca03 100644 String m_locale; unsigned m_minimumIntegerDigits { 1 }; diff --git a/Source/JavaScriptCore/runtime/IntlPluralRulesPrototype.cpp b/Source/JavaScriptCore/runtime/IntlPluralRulesPrototype.cpp -index aae2cabe2aa7..6c908d3a7d53 100644 +index 48688c0dedbb..9854d9a7d363 100644 --- a/Source/JavaScriptCore/runtime/IntlPluralRulesPrototype.cpp +++ b/Source/JavaScriptCore/runtime/IntlPluralRulesPrototype.cpp @@ -33,7 +33,9 @@ @@ -1377,7 +1379,7 @@ index c6c1fa0cd228..85d7e85469a7 100644 } // namespace JSC diff --git a/Source/JavaScriptCore/runtime/JSDateMath.cpp b/Source/JavaScriptCore/runtime/JSDateMath.cpp -index 756cbccb1668..30ff52a13c68 100644 +index c40f917fc99f..755337022004 100644 --- a/Source/JavaScriptCore/runtime/JSDateMath.cpp +++ b/Source/JavaScriptCore/runtime/JSDateMath.cpp @@ -74,6 +74,7 @@ @@ -1537,7 +1539,7 @@ index 756cbccb1668..30ff52a13c68 100644 return m_timeZoneDSTDisplayNameCache; @@ -485,6 +567,7 @@ void DateCache::timeZoneCacheSlow() - Vector timeZoneID; + Vector timeZoneID; getTimeZoneOverride(timeZoneID); +#if HAVE(ICU_C_TIMEZONE_API) auto* cache = new OpaqueICUTimeZone; @@ -1559,10 +1561,10 @@ index 756cbccb1668..30ff52a13c68 100644 void DateCache::resetIfNecessarySlow() -- -2.49.0 +2.51.0 -From 4553b849dd0f3fd2bfd834cda53abc2f2256d2f9 Mon Sep 17 00:00:00 2001 +From 294fbe4a1e2d4a142696597ee8f2d1f748480691 Mon Sep 17 00:00:00 2001 From: Michael Catanzaro Date: Wed, 2 Apr 2025 15:56:18 -0500 Subject: [PATCH 5/5] Build against ICU 60 @@ -1574,15 +1576,17 @@ Subject: [PATCH 5/5] Build against ICU 60 Source/JavaScriptCore/runtime/IntlDisplayNames.h | 7 +++++++ Source/JavaScriptCore/runtime/IntlDurationFormat.cpp | 2 +- Source/JavaScriptCore/runtime/IntlObject.cpp | 6 +++++- + Source/JavaScriptCore/runtime/IntlPluralRules.cpp | 4 ++-- + Source/JavaScriptCore/runtime/JSDateMath.cpp | 4 ++-- Source/WTF/wtf/URLHelpers.cpp | 4 +++- Source/WTF/wtf/URLParser.cpp | 6 +++--- Source/WTF/wtf/unicode/UTF8Conversion.cpp | 4 +++- - Source/WebCore/dom/TextEncoder.cpp | 3 ++- + Source/WebCore/dom/TextEncoder.cpp | 2 +- Source/cmake/OptionsGTK.cmake | 2 +- - 11 files changed, 42 insertions(+), 9 deletions(-) + 13 files changed, 45 insertions(+), 13 deletions(-) diff --git a/Source/JavaScriptCore/runtime/IntlCache.cpp b/Source/JavaScriptCore/runtime/IntlCache.cpp -index 0941a7278e2a..75134587adbb 100644 +index d099acc9f2f4..26331b92cf84 100644 --- a/Source/JavaScriptCore/runtime/IntlCache.cpp +++ b/Source/JavaScriptCore/runtime/IntlCache.cpp @@ -26,6 +26,7 @@ @@ -1593,15 +1597,15 @@ index 0941a7278e2a..75134587adbb 100644 #include #include -@@ -56,6 +57,7 @@ Vector IntlCache::getBestDateTimePattern(const CString& locale, std:: +@@ -56,6 +57,7 @@ Vector IntlCache::getBestDateTimePattern(const CString& locale, st return patternBuffer; } +#if HAVE(ICU_U_LOCALE_DISPLAY_NAMES) - Vector IntlCache::getFieldDisplayName(const CString& locale, UDateTimePatternField field, UDateTimePGDisplayWidth width, UErrorCode& status) + Vector IntlCache::getFieldDisplayName(const CString& locale, UDateTimePatternField field, UDateTimePGDisplayWidth width, UErrorCode& status) { auto sharedGenerator = getSharedPatternGenerator(locale, status); -@@ -67,5 +69,6 @@ Vector IntlCache::getFieldDisplayName(const CString& locale, UDateTim +@@ -67,5 +69,6 @@ Vector IntlCache::getFieldDisplayName(const CString& locale, UDate return { }; return buffer; } @@ -1609,7 +1613,7 @@ index 0941a7278e2a..75134587adbb 100644 } // namespace JSC diff --git a/Source/JavaScriptCore/runtime/IntlCache.h b/Source/JavaScriptCore/runtime/IntlCache.h -index 4c818fd59424..2c7e464a6955 100644 +index 2b31dc1bdd9c..36adaac47e9a 100644 --- a/Source/JavaScriptCore/runtime/IntlCache.h +++ b/Source/JavaScriptCore/runtime/IntlCache.h @@ -25,6 +25,7 @@ @@ -1623,15 +1627,15 @@ index 4c818fd59424..2c7e464a6955 100644 @@ -40,7 +41,9 @@ public: IntlCache() = default; - Vector getBestDateTimePattern(const CString& locale, std::span skeleton, UErrorCode&); + Vector getBestDateTimePattern(const CString& locale, std::span skeleton, UErrorCode&); +#if HAVE(ICU_U_LOCALE_DISPLAY_NAMES) - Vector getFieldDisplayName(const CString& locale, UDateTimePatternField, UDateTimePGDisplayWidth, UErrorCode&); + Vector getFieldDisplayName(const CString& locale, UDateTimePatternField, UDateTimePGDisplayWidth, UErrorCode&); +#endif private: UDateTimePatternGenerator* getSharedPatternGenerator(const CString& locale, UErrorCode& status) diff --git a/Source/JavaScriptCore/runtime/IntlDisplayNames.cpp b/Source/JavaScriptCore/runtime/IntlDisplayNames.cpp -index 972ab5f84300..971f9321ca20 100644 +index 3742d05523f6..e8f6317d68b9 100644 --- a/Source/JavaScriptCore/runtime/IntlDisplayNames.cpp +++ b/Source/JavaScriptCore/runtime/IntlDisplayNames.cpp @@ -106,6 +106,7 @@ void IntlDisplayNames::initializeDisplayNames(JSGlobalObject* globalObject, JSVa @@ -1692,7 +1696,7 @@ index 17f257cb04a5..883825ed93f4 100644 enum class RelevantExtensionKey : uint8_t; diff --git a/Source/JavaScriptCore/runtime/IntlDurationFormat.cpp b/Source/JavaScriptCore/runtime/IntlDurationFormat.cpp -index 78e9106ee0a4..0a4017d65243 100644 +index c066e80ab130..6161997d3461 100644 --- a/Source/JavaScriptCore/runtime/IntlDurationFormat.cpp +++ b/Source/JavaScriptCore/runtime/IntlDurationFormat.cpp @@ -42,7 +42,6 @@ @@ -1712,7 +1716,7 @@ index 78e9106ee0a4..0a4017d65243 100644 WTF_ALLOW_UNSAFE_BUFFER_USAGE_BEGIN diff --git a/Source/JavaScriptCore/runtime/IntlObject.cpp b/Source/JavaScriptCore/runtime/IntlObject.cpp -index 51dbe4447db3..5c3f10f07427 100644 +index f8413f12dec7..7041f19dfbbd 100644 --- a/Source/JavaScriptCore/runtime/IntlObject.cpp +++ b/Source/JavaScriptCore/runtime/IntlObject.cpp @@ -168,7 +168,6 @@ namespace JSC { @@ -1735,11 +1739,51 @@ index 51dbe4447db3..5c3f10f07427 100644 #if HAVE(ICU_U_LIST_FORMATTER) putDirectWithoutTransition(vm, vm.propertyNames->DurationFormat, createDurationFormatConstructor(vm, this), static_cast(PropertyAttribute::DontEnum)); putDirectWithoutTransition(vm, vm.propertyNames->ListFormat, createListFormatConstructor(vm, this), static_cast(PropertyAttribute::DontEnum)); +diff --git a/Source/JavaScriptCore/runtime/IntlPluralRules.cpp b/Source/JavaScriptCore/runtime/IntlPluralRules.cpp +index c451478086f7..76461d3c8bcd 100644 +--- a/Source/JavaScriptCore/runtime/IntlPluralRules.cpp ++++ b/Source/JavaScriptCore/runtime/IntlPluralRules.cpp +@@ -278,11 +278,11 @@ JSValue IntlPluralRules::select(JSGlobalObject* globalObject, double value) cons + return jsString(vm, String(WTFMove(buffer))); + #else + Vector result(8); +- auto length = uplrules_selectWithFormat(m_pluralRules.get(), value, m_numberFormat.get(), result.data(), result.size(), &status); ++ auto length = uplrules_selectWithFormat(m_pluralRules.get(), value, m_numberFormat.get(), const_cast(result.span().data()), result.span().size(), &status); + if (U_FAILURE(status)) + return throwTypeError(globalObject, scope, "failed to select plural value"_s); + +- return jsString(vm, String({ result.data(), static_cast(length) })); ++ return jsString(vm, String({ result.span().data(), static_cast(length) })); + #endif + } + +diff --git a/Source/JavaScriptCore/runtime/JSDateMath.cpp b/Source/JavaScriptCore/runtime/JSDateMath.cpp +index 755337022004..d4b61acb3d13 100644 +--- a/Source/JavaScriptCore/runtime/JSDateMath.cpp ++++ b/Source/JavaScriptCore/runtime/JSDateMath.cpp +@@ -177,7 +177,7 @@ LocalTimeOffset DateCache::calculateLocalTimeOffset(double millisecondsFromEpoch + } + #else + auto& timeZoneCache = *toICUTimeZone(this->timeZoneCache()); +- if (inputTimeType != WTF::LocalTime) { ++ if (inputTimeType != TimeType::LocalTime) { + constexpr bool isLocalTime = false; + timeZoneCache.getOffset(millisecondsFromEpoch, isLocalTime, rawOffset, dstOffset, status); + if (U_FAILURE(status)) +@@ -593,7 +593,7 @@ void DateCache::timeZoneCacheSlow() + m_timeZoneCache = std::unique_ptr(cache); + #else + if (!timeZoneID.isEmpty()) { +- m_timeZoneCache = std::unique_ptr(toOpaqueICUTimeZone(icu::TimeZone::createTimeZone(icu::UnicodeString(timeZoneID.data(), timeZoneID.size())))); ++ m_timeZoneCache = std::unique_ptr(toOpaqueICUTimeZone(icu::TimeZone::createTimeZone(icu::UnicodeString(timeZoneID.span().data(), timeZoneID.size())))); + return; + } + // Do not use icu::TimeZone::createDefault. ICU internally has a cache for timezone and createDefault returns this cached value. diff --git a/Source/WTF/wtf/URLHelpers.cpp b/Source/WTF/wtf/URLHelpers.cpp -index 955d1925917b..742f06a6868b 100644 +index e984a4356715..7e0748f03722 100644 --- a/Source/WTF/wtf/URLHelpers.cpp +++ b/Source/WTF/wtf/URLHelpers.cpp -@@ -865,7 +865,9 @@ static String escapeUnsafeCharacters(const String& sourceBuffer) +@@ -866,7 +866,9 @@ static String escapeUnsafeCharacters(const String& sourceBuffer) std::array utf8Buffer; size_t offset = 0; UBool failure = false; @@ -1751,7 +1795,7 @@ index 955d1925917b..742f06a6868b 100644 for (size_t j = 0; j < offset; ++j) { diff --git a/Source/WTF/wtf/URLParser.cpp b/Source/WTF/wtf/URLParser.cpp -index b1a6c8421807..8ec338d63b36 100644 +index 6325d2a26ba3..b3b292536be5 100644 --- a/Source/WTF/wtf/URLParser.cpp +++ b/Source/WTF/wtf/URLParser.cpp @@ -516,7 +516,7 @@ ALWAYS_INLINE void URLParser::utf8PercentEncode(const CodePointIterator iterator) -> H +@@ -2878,7 +2878,7 @@ auto URLParser::parseHostAndPort(CodePointIterator iterator) -> H std::array buffer; size_t offset = 0; UBool isError = false; @@ -1782,7 +1826,7 @@ index b1a6c8421807..8ec338d63b36 100644 return HostParsingResult::InvalidHost; utf8Encoded.append(std::span { buffer }.first(offset)); diff --git a/Source/WTF/wtf/unicode/UTF8Conversion.cpp b/Source/WTF/wtf/unicode/UTF8Conversion.cpp -index b9e499b625b4..c89fd18ea548 100644 +index a86aefecd09c..c599c6727b53 100644 --- a/Source/WTF/wtf/unicode/UTF8Conversion.cpp +++ b/Source/WTF/wtf/unicode/UTF8Conversion.cpp @@ -78,7 +78,9 @@ template<> char32_t next(std::sp @@ -1797,7 +1841,7 @@ index b9e499b625b4..c89fd18ea548 100644 } diff --git a/Source/WebCore/dom/TextEncoder.cpp b/Source/WebCore/dom/TextEncoder.cpp -index fe8694cfce9d..ea496e7a3d34 100644 +index fe8694cfce9d..7d8b5ad2e3c9 100644 --- a/Source/WebCore/dom/TextEncoder.cpp +++ b/Source/WebCore/dom/TextEncoder.cpp @@ -55,7 +55,7 @@ auto TextEncoder::encodeInto(String&& input, Ref&& array) -> EncodeI @@ -1809,13 +1853,8 @@ index fe8694cfce9d..ea496e7a3d34 100644 if (sawError) break; if (U_IS_BMP(token)) -@@ -68,3 +68,4 @@ auto TextEncoder::encodeInto(String&& input, Ref&& array) -> EncodeI - } - - } -+ diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake -index 814009146300..d36261da758e 100644 +index 83377867f3b1..aa0941950559 100644 --- a/Source/cmake/OptionsGTK.cmake +++ b/Source/cmake/OptionsGTK.cmake @@ -11,7 +11,7 @@ find_package(Cairo 1.14.0 REQUIRED) @@ -1828,5 +1867,5 @@ index 814009146300..d36261da758e 100644 find_package(Epoxy 1.5.4 REQUIRED) find_package(LibXml2 2.8.0 REQUIRED) -- -2.49.0 +2.51.0 diff --git a/s390x-build.patch b/s390x-build.patch new file mode 100644 index 0000000..7e1ea01 --- /dev/null +++ b/s390x-build.patch @@ -0,0 +1,10 @@ +--- webkitgtk.orig/Source/WebCore/style/StyleBuilderState.cpp ++++ webkitgtk/Source/WebCore/style/StyleBuilderState.cpp +@@ -58,6 +58,7 @@ + #include "Settings.h" + #include "StyleAppleColorFilterProperty.h" + #include "StyleBuilder.h" ++#include "StyleBuilderStateInlines.h" + #include "StyleCachedImage.h" + #include "StyleCanvasImage.h" + #include "StyleColor.h" diff --git a/sources b/sources index 4c21536..652580c 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (webkitgtk-2.48.5.tar.xz) = 70ee8f58a354cf6d0b1345954ed07c1e49d886f353d4fab945a3d2fc03116726af05454d4b5460f0fe4f5c3d042bb921fc5b43a85474624545afd9acc1c0fc8d -SHA512 (webkitgtk-2.48.5.tar.xz.asc) = bf499cb07d863adb6694030d29b8482db9986ce5fdb3426fd8497512ebd4583fbacc51c29b28631c00ee5089188733b94fbb475e06b69b400fdfb3b88b920377 +SHA512 (webkitgtk-2.50.0.tar.xz) = 7e3a7ecdd71e21566b3e364ccb7573bec4f86c7cf5fbe5ce6f3fcbb1ed8e5674d9ed239b48fe330afe8f7370bbb323f6500f78a25f4572d8e02d7d274ec843b4 +SHA512 (webkitgtk-2.50.0.tar.xz.asc) = 68c62bd077f28816c0177e93fa01deae85619f55b510f204d57b59f6ae2d9c1bd1255c2dae4214e43ed2ef6c76f4cd42433f47af4146fcd1f14f707c7a377a80 diff --git a/webkit2gtk3.spec b/webkit2gtk3.spec index f44b5ad..e822a72 100644 --- a/webkit2gtk3.spec +++ b/webkit2gtk3.spec @@ -3,10 +3,10 @@ ## directory names (from the source tree) as prefixes for the files. %global add_to_license_files() \ mkdir -p _license_files ; \ - cp -p %1 _license_files/$(echo '%1' | sed -e 's!/!.!g')- + cp -p %1 _license_files/$(echo '%1' | sed -e 's!/!.!g') Name: webkit2gtk3 -Version: 2.48.5 +Version: 2.50.0 Release: 1%{?dist} Summary: GTK Web content engine library @@ -25,28 +25,32 @@ Source2: webkitgtk-keys.gpg Patch100: compiler-flags.patch -## -## Patches to support older or missing build dependencies -## - -Patch200: cairo-1.15.patch -Patch201: glib-2.56.patch -Patch202: gstreamer-1.16.patch -Patch203: harfbuzz-1.7.5.patch -Patch204: icu60.patch - ## ## Patches to support older Evolution ## -Patch300: evolution-shared-secondary-process.patch -Patch301: evolution-sandbox-warning.patch +Patch200: evolution-shared-secondary-process.patch +Patch201: evolution-sandbox-warning.patch + +## +## Patches to support older or missing build dependencies +## + +Patch300: cairo-1.15.patch +Patch301: glib-2.56.patch +Patch302: gstreamer-1.16.patch +Patch303: harfbuzz-1.7.5.patch +Patch304: icu60.patch ## ## Upstream patches to remove, hopefully after next update ## -# No patches currently! :) +# https://bugs.webkit.org/show_bug.cgi?id=299018 +Patch400: i686-build.patch + +# https://bugs.webkit.org/show_bug.cgi?id=298308 +Patch401: s390x-build.patch BuildRequires: bison BuildRequires: clang @@ -228,6 +232,7 @@ rm -rf Source/ThirdParty/qunit/ -DENABLE_BUBBLEWRAP_SANDBOX=OFF \ -DENABLE_DOCUMENTATION=OFF \ -DENABLE_GAMEPAD=OFF \ + -DENABLE_MEDIA_RECORDER=OFF \ -DENABLE_SPEECH_SYNTHESIS=OFF \ -DENABLE_WEB_CODECS=OFF \ -DUSE_AVIF=OFF \ @@ -312,6 +317,9 @@ export NINJA_STATUS="[%f/%t][%e] " %{_datadir}/gir-1.0/JavaScriptCore-4.0.gir %changelog +* Tue Oct 07 2025 Michael Catanzaro - 2.50.0-1 +- Update to 2.50.0 + * Fri Aug 08 2025 Michael Catanzaro - 2.48.5-1 - Update to 2.48.5