Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package webkit2gtk3 for openSUSE:Factory 
checked in at 2021-04-29 22:44:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/webkit2gtk3 (Old)
 and      /work/SRC/openSUSE:Factory/.webkit2gtk3.new.1947 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "webkit2gtk3"

Thu Apr 29 22:44:44 2021 rev:117 rq:888972 version:2.32.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/webkit2gtk3/webkit2gtk3.changes  2021-04-14 
10:09:33.677350050 +0200
+++ /work/SRC/openSUSE:Factory/.webkit2gtk3.new.1947/webkit2gtk3.changes        
2021-04-29 22:44:58.084147555 +0200
@@ -1,0 +2,6 @@
+Wed Apr 28 06:41:41 UTC 2021 - Dominique Leuenberger <dims...@opensuse.org>
+
+- Add webkit2gtk3-icu69.patch: Fix build with ICU 69:
+  + ICU 69 deprecates ubrk_safeClone in favor of ubrk_clone.
+
+-------------------------------------------------------------------

New:
----
  webkit2gtk3-icu69.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ webkit2gtk3.spec ++++++
--- /var/tmp/diff_new_pack.72dgKo/_old  2021-04-29 22:44:58.664144972 +0200
+++ /var/tmp/diff_new_pack.72dgKo/_new  2021-04-29 22:44:58.668144954 +0200
@@ -44,6 +44,8 @@
 
 # PATCH-FIX-OPENSUSE no-forced-sse.patch jeng...@iani.de -- cure execution of 
illegal instruction in i586 firefox.
 Patch0:         no-forced-sse.patch
+# PATCH-FIX-UPSTREAM webkit2gtk3-icu69.patch webkit#224093 
dims...@opensuse.org -- ICU 69 deprecates ubrk_safeClone in favor of ubrk_clone
+Patch1:         webkit2gtk3-icu69.patch
 
 BuildRequires:  Mesa-libEGL-devel
 BuildRequires:  Mesa-libGL-devel

++++++ webkit2gtk3-icu69.patch ++++++
>From 49a19c49c6de8af74e521f36cb43e6c1ec2e391c Mon Sep 17 00:00:00 2001
From: Ross Kirsling <ross.kirsl...@sony.com>
Date: Tue, 13 Apr 2021 02:04:15 +0000
Subject: [PATCH] ICU 69 deprecates ubrk_safeClone in favor of ubrk_clone
 https://bugs.webkit.org/show_bug.cgi?id=224093

Reviewed by Yusuke Suzuki.

In a shining example of "disappointing library practices", ICU 69 deprecates 
ubrk_safeClone in favor of
a new *draft* API ubrk_clone, meaning that no function with this functionality 
is exposed by default.

This patch introduces a function cloneUBreakIterator to abstract over this 
change; however, since we need to:

  1. confine the effects of disabling U_HIDE_DRAFT_API to a non-unified 
implementation file
  2. still be able to include ubrk.h from IntlSegmenter.h to instantiate 
ICUDeleter<ubrk_close> (*not* `clone`!)

...the new helper function is introduced in a *headerless* implementation file, 
IntlWorkaround.cpp.

* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* runtime/IntlSegmenter.cpp:
(JSC::IntlSegmenter::segment const):
* runtime/IntlSegmenter.h:
* runtime/IntlSegments.cpp:
(JSC::IntlSegments::createSegmentIterator):
* runtime/IntlWorkaround.cpp: Added.
(JSC::cloneUBreakIterator):


Canonical link: https://commits.webkit.org/236421@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@275856 
268f45cc-cd09-0410-ab3c-d52691b4dbfc
---
 Source/JavaScriptCore/Sources.txt             |  1 +
 .../JavaScriptCore/runtime/IntlSegmenter.cpp  |  2 +-
 Source/JavaScriptCore/runtime/IntlSegmenter.h |  4 ++
 .../JavaScriptCore/runtime/IntlSegments.cpp   |  2 +-
 .../JavaScriptCore/runtime/IntlWorkaround.cpp | 53 +++++++++++++++++++
 7 files changed, 97 insertions(+), 8 deletions(-)
 create mode 100644 Source/JavaScriptCore/runtime/IntlWorkaround.cpp

diff --git a/Source/JavaScriptCore/Sources.txt 
b/Source/JavaScriptCore/Sources.txt
index 28b5b83632b9..b6492dfdcb75 100644
--- a/Source/JavaScriptCore/Sources.txt
+++ b/Source/JavaScriptCore/Sources.txt
@@ -849,6 +849,7 @@ runtime/IntlSegmenterConstructor.cpp
 runtime/IntlSegmenterPrototype.cpp
 runtime/IntlSegments.cpp
 runtime/IntlSegmentsPrototype.cpp
+runtime/IntlWorkaround.cpp @no-unify // Confine U_HIDE_DRAFT_API's effect to 
this file.
 runtime/IteratorOperations.cpp
 runtime/IteratorPrototype.cpp
 runtime/JSArray.cpp
diff --git a/Source/JavaScriptCore/runtime/IntlSegmenter.cpp 
b/Source/JavaScriptCore/runtime/IntlSegmenter.cpp
index 2ad74f94bbe8..93c9b2032847 100644
--- a/Source/JavaScriptCore/runtime/IntlSegmenter.cpp
+++ b/Source/JavaScriptCore/runtime/IntlSegmenter.cpp
@@ -125,7 +125,7 @@ JSValue IntlSegmenter::segment(JSGlobalObject* 
globalObject, JSValue stringValue
     auto upconvertedCharacters = 
Box<Vector<UChar>>::create(string.charactersWithoutNullTermination());
 
     UErrorCode status = U_ZERO_ERROR;
-    auto segmenter = std::unique_ptr<UBreakIterator, 
UBreakIteratorDeleter>(ubrk_safeClone(m_segmenter.get(), nullptr, nullptr, 
&status));
+    auto segmenter = std::unique_ptr<UBreakIterator, 
UBreakIteratorDeleter>(cloneUBreakIterator(m_segmenter.get(), &status));
     if (U_FAILURE(status)) {
         throwTypeError(globalObject, scope, "failed to initialize Segments"_s);
         return { };
diff --git a/Source/JavaScriptCore/runtime/IntlSegmenter.h 
b/Source/JavaScriptCore/runtime/IntlSegmenter.h
index cd0f426c4897..a5239575a9f3 100644
--- a/Source/JavaScriptCore/runtime/IntlSegmenter.h
+++ b/Source/JavaScriptCore/runtime/IntlSegmenter.h
@@ -75,4 +75,8 @@ class IntlSegmenter final : public JSNonFinalObject {
     Granularity m_granularity { Granularity::Grapheme };
 };
 
+// Abstraction to call ubrk_safeClone or ubrk_clone depending on ICU version.
+// This is implemented in IntlWorkaround.cpp in order to confine draft API 
visibility.
+UBreakIterator* cloneUBreakIterator(const UBreakIterator*, UErrorCode*);
+
 } // namespace JSC
diff --git a/Source/JavaScriptCore/runtime/IntlSegments.cpp 
b/Source/JavaScriptCore/runtime/IntlSegments.cpp
index b6aba32fb822..8b81791e4133 100644
--- a/Source/JavaScriptCore/runtime/IntlSegments.cpp
+++ b/Source/JavaScriptCore/runtime/IntlSegments.cpp
@@ -100,7 +100,7 @@ JSObject* 
IntlSegments::createSegmentIterator(JSGlobalObject* globalObject)
     auto scope = DECLARE_THROW_SCOPE(vm);
 
     UErrorCode status = U_ZERO_ERROR;
-    auto segmenter = std::unique_ptr<UBreakIterator, 
UBreakIteratorDeleter>(ubrk_safeClone(m_segmenter.get(), nullptr, nullptr, 
&status));
+    auto segmenter = std::unique_ptr<UBreakIterator, 
UBreakIteratorDeleter>(cloneUBreakIterator(m_segmenter.get(), &status));
     if (U_FAILURE(status)) {
         throwTypeError(globalObject, scope, "failed to initialize 
SegmentIterator"_s);
         return nullptr;
diff --git a/Source/JavaScriptCore/runtime/IntlWorkaround.cpp 
b/Source/JavaScriptCore/runtime/IntlWorkaround.cpp
new file mode 100644
index 000000000000..8d820857ec22
--- /dev/null
+++ b/Source/JavaScriptCore/runtime/IntlWorkaround.cpp
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2021 Sony Interactive Entertainment Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+
+#include <unicode/uvernum.h>
+
+// ICU 69 introduces draft API ubrk_clone and deprecates ubrk_safeClone.
+#if U_ICU_VERSION_MAJOR_NUM >= 69
+#define HAVE_ICU_UBRK_CLONE 1
+#endif
+
+#if defined(U_HIDE_DRAFT_API)
+#undef U_HIDE_DRAFT_API
+#endif
+#include <unicode/ubrk.h>
+
+namespace JSC {
+
+UBreakIterator* cloneUBreakIterator(const UBreakIterator*, UErrorCode*);
+
+UBreakIterator* cloneUBreakIterator(const UBreakIterator* iterator, 
UErrorCode* status)
+{
+#if HAVE(ICU_UBRK_CLONE)
+    return ubrk_clone(iterator, status);
+#else
+    return ubrk_safeClone(iterator, nullptr, nullptr, status);
+#endif
+}
+
+} // namespace JSC

Reply via email to