[webkitgtk3/f22] Add support for gcc 5.0 Let the package compile with latest glib

Tomas Popela tpopela at fedoraproject.org
Wed Feb 18 17:18:30 UTC 2015


commit 46496f37cd11a6709577b28790d899ac06bafedd
Author: Tomas Popela <tpopela at redhat.com>
Date:   Wed Feb 18 18:09:35 2015 +0100

    Add support for gcc 5.0
    Let the package compile with latest glib

 webkitgtk-2.4.8-gcc5.patch         |   33 +++++
 webkitgtk-2.4.8-gmutexlocker.patch |  281 ++++++++++++++++++++++++++++++++++++
 webkitgtk3.spec                    |   13 ++-
 3 files changed, 326 insertions(+), 1 deletions(-)
---
diff --git a/webkitgtk-2.4.8-gcc5.patch b/webkitgtk-2.4.8-gcc5.patch
new file mode 100644
index 0000000..73f6855
--- /dev/null
+++ b/webkitgtk-2.4.8-gcc5.patch
@@ -0,0 +1,33 @@
+diff -up webkitgtk-2.4.8/Source/autotools/CheckSystemAndBasicDependencies.m4.gcc5 webkitgtk-2.4.8/Source/autotools/CheckSystemAndBasicDependencies.m4
+--- webkitgtk-2.4.8/Source/autotools/CheckSystemAndBasicDependencies.m4.gcc5	2015-01-07 10:45:43.000000000 +0100
++++ webkitgtk-2.4.8/Source/autotools/CheckSystemAndBasicDependencies.m4	2015-02-18 13:09:57.359888184 +0100
+@@ -87,12 +87,12 @@ AC_SYS_LARGEFILE
+ c_compiler="unknown"
+ AC_LANG_PUSH([C])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
+-#if !(defined(__GNUC__) && !defined(__clang__) && !defined(__INTEL_COMPILER) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 7)
++#if !(defined(__GNUC__) && !defined(__clang__) && !defined(__INTEL_COMPILER) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)))
+ #error Not a supported GCC compiler
+ #endif
+ ])], [c_compiler="gcc"], [])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
+-#if !(defined(__clang__) && __clang_major__ >= 3 && __clang_minor__ >= 3)
++#if !(defined(__clang__) && (__apple_build_version__ >= 4250024 || (!defined(__apple_build_version__) && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 3)))))
+ #error Not a supported Clang compiler
+ #endif
+ ])], [c_compiler="clang"], [])
+@@ -106,12 +106,12 @@ fi
+ cxx_compiler="unknown"
+ AC_LANG_PUSH([C++])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
+-#if !(defined(__GNUG__) && defined(__GNUC__) && !defined(__clang__) && !defined(__INTEL_COMPILER) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 7)
++#if !(defined(__GNUG__) && defined(__GNUC__) && !defined(__clang__) && !defined(__INTEL_COMPILER) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)))
+ #error Not a supported G++ compiler
+ #endif
+ ])], [cxx_compiler="g++"], [])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
+-#if !(defined(__clang__) && __clang_major__ >= 3 && __clang_minor__ >= 3)
++#if !(defined(__clang__) && (__apple_build_version__ >= 4250024 || (!defined(__apple_build_version__) && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 3)))))
+ #error Not a supported Clang++ compiler
+ #endif
+ ])], [cxx_compiler="clang++"], [])
diff --git a/webkitgtk-2.4.8-gmutexlocker.patch b/webkitgtk-2.4.8-gmutexlocker.patch
new file mode 100644
index 0000000..226da3d
--- /dev/null
+++ b/webkitgtk-2.4.8-gmutexlocker.patch
@@ -0,0 +1,281 @@
+diff -up webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp.gmutexlocker webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp
+--- webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp.gmutexlocker	2015-02-18 15:40:21.851816374 +0100
++++ webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp	2015-02-18 15:45:58.560092191 +0100
+@@ -316,7 +316,7 @@ void MediaPlayerPrivateGStreamerBase::mu
+ #if USE(ACCELERATED_COMPOSITING) && USE(TEXTURE_MAPPER_GL) && !USE(COORDINATED_GRAPHICS)
+ PassRefPtr<BitmapTexture> MediaPlayerPrivateGStreamerBase::updateTexture(TextureMapper* textureMapper)
+ {
+-    GMutexLocker lock(m_bufferMutex);
++    WebCore::GMutexLocker lock(m_bufferMutex);
+     if (!m_buffer)
+         return nullptr;
+ 
+@@ -366,7 +366,7 @@ void MediaPlayerPrivateGStreamerBase::tr
+     g_return_if_fail(GST_IS_BUFFER(buffer));
+ 
+     {
+-        GMutexLocker lock(m_bufferMutex);
++        WebCore::GMutexLocker lock(m_bufferMutex);
+         gst_buffer_replace(&m_buffer, buffer);
+     }
+ 
+@@ -398,7 +398,7 @@ void MediaPlayerPrivateGStreamerBase::pa
+     if (!m_player->visible())
+         return;
+ 
+-    GMutexLocker lock(m_bufferMutex);
++    WebCore::GMutexLocker lock(m_bufferMutex);
+     if (!m_buffer)
+         return;
+ 
+diff -up webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp.gmutexlocker webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
+diff -up webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp.gmutexlocker webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp
+--- webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp.gmutexlocker	2015-02-18 15:16:11.995228731 +0100
++++ webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp	2015-02-18 15:45:42.686843477 +0100
+@@ -118,7 +118,7 @@ static gboolean webkitVideoSinkTimeoutCa
+     WebKitVideoSink* sink = reinterpret_cast<WebKitVideoSink*>(data);
+     WebKitVideoSinkPrivate* priv = sink->priv;
+ 
+-    GMutexLocker lock(priv->bufferMutex);
++    WebCore::GMutexLocker lock(priv->bufferMutex);
+     GstBuffer* buffer = priv->buffer;
+     priv->buffer = 0;
+     priv->timeoutId = 0;
+@@ -140,7 +140,7 @@ static GstFlowReturn webkitVideoSinkRend
+     WebKitVideoSink* sink = WEBKIT_VIDEO_SINK(baseSink);
+     WebKitVideoSinkPrivate* priv = sink->priv;
+ 
+-    GMutexLocker lock(priv->bufferMutex);
++    WebCore::GMutexLocker lock(priv->bufferMutex);
+ 
+     if (priv->unlocked)
+         return GST_FLOW_OK;
+@@ -279,7 +279,7 @@ static void webkitVideoSinkGetProperty(G
+ 
+ static void unlockBufferMutex(WebKitVideoSinkPrivate* priv)
+ {
+-    GMutexLocker lock(priv->bufferMutex);
++    WebCore::GMutexLocker lock(priv->bufferMutex);
+ 
+     if (priv->buffer) {
+         gst_buffer_unref(priv->buffer);
+@@ -305,7 +305,7 @@ static gboolean webkitVideoSinkUnlockSto
+     WebKitVideoSinkPrivate* priv = WEBKIT_VIDEO_SINK(baseSink)->priv;
+ 
+     {
+-        GMutexLocker lock(priv->bufferMutex);
++        WebCore::GMutexLocker lock(priv->bufferMutex);
+         priv->unlocked = false;
+     }
+ 
+@@ -330,7 +330,7 @@ static gboolean webkitVideoSinkStart(Gst
+ {
+     WebKitVideoSinkPrivate* priv = WEBKIT_VIDEO_SINK(baseSink)->priv;
+ 
+-    GMutexLocker lock(priv->bufferMutex);
++    WebCore::GMutexLocker lock(priv->bufferMutex);
+     priv->unlocked = false;
+     return TRUE;
+ }
+diff -up webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp.gmutexlocker webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp
+--- webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp.gmutexlocker	2015-02-18 15:16:40.954678407 +0100
++++ webkitgtk-2.4.8/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp	2015-02-18 15:45:19.567481225 +0100
+@@ -346,7 +346,7 @@ static void webKitWebSrcSetProperty(GObj
+ 
+     switch (propID) {
+     case PROP_IRADIO_MODE: {
+-        GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
++        WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
+         priv->iradioMode = g_value_get_boolean(value);
+         break;
+     }
+@@ -364,7 +364,7 @@ static void webKitWebSrcGetProperty(GObj
+     WebKitWebSrc* src = WEBKIT_WEB_SRC(object);
+     WebKitWebSrcPrivate* priv = src->priv;
+ 
+-    GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
++    WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
+     switch (propID) {
+     case PROP_IRADIO_MODE:
+         g_value_set_boolean(value, priv->iradioMode);
+@@ -417,7 +417,7 @@ static gboolean webKitWebSrcStop(WebKitW
+ 
+     ASSERT(isMainThread());
+ 
+-    GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
++    WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
+ 
+     bool seeking = priv->seekID;
+ 
+@@ -476,7 +476,7 @@ static gboolean webKitWebSrcStart(WebKit
+ 
+     ASSERT(isMainThread());
+ 
+-    GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
++    WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
+ 
+     priv->startID = 0;
+     priv->corsAccessCheck = CORSNoCheck;
+@@ -573,7 +573,7 @@ static GstStateChangeReturn webKitWebSrc
+         return ret;
+     }
+ 
+-    GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
++    WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
+     switch (transition) {
+     case GST_STATE_CHANGE_READY_TO_PAUSED:
+         GST_DEBUG_OBJECT(src, "READY->PAUSED");
+@@ -604,7 +604,7 @@ static gboolean webKitWebSrcQueryWithPar
+         gst_query_parse_duration(query, &format, NULL);
+ 
+         GST_DEBUG_OBJECT(src, "duration query in format %s", gst_format_get_name(format));
+-        GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
++        WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
+         if (format == GST_FORMAT_BYTES && src->priv->size > 0) {
+             gst_query_set_duration(query, format, src->priv->size);
+             result = TRUE;
+@@ -612,7 +612,7 @@ static gboolean webKitWebSrcQueryWithPar
+         break;
+     }
+     case GST_QUERY_URI: {
+-        GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
++        WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
+         gst_query_set_uri(query, src->priv->uri);
+         result = TRUE;
+         break;
+@@ -653,7 +653,7 @@ static gchar* webKitWebSrcGetUri(GstURIH
+     WebKitWebSrc* src = WEBKIT_WEB_SRC(handler);
+     gchar* ret;
+ 
+-    GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
++    WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
+     ret = g_strdup(src->priv->uri);
+     return ret;
+ }
+@@ -668,7 +668,7 @@ static gboolean webKitWebSrcSetUri(GstUR
+         return FALSE;
+     }
+ 
+-    GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
++    WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
+ 
+     g_free(priv->uri);
+     priv->uri = 0;
+@@ -704,7 +704,7 @@ static gboolean webKitWebSrcNeedDataMain
+ 
+     ASSERT(isMainThread());
+ 
+-    GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
++    WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
+     // already stopped
+     if (!priv->needDataID)
+         return FALSE;
+@@ -725,7 +725,7 @@ static void webKitWebSrcNeedDataCb(GstAp
+ 
+     GST_DEBUG_OBJECT(src, "Need more data: %u", length);
+ 
+-    GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
++    WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
+     if (priv->needDataID || !priv->paused) {
+         return;
+     }
+@@ -739,7 +739,7 @@ static gboolean webKitWebSrcEnoughDataMa
+ 
+     ASSERT(isMainThread());
+ 
+-    GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
++    WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
+     // already stopped
+     if (!priv->enoughDataID)
+         return FALSE;
+@@ -760,7 +760,7 @@ static void webKitWebSrcEnoughDataCb(Gst
+ 
+     GST_DEBUG_OBJECT(src, "Have enough data");
+ 
+-    GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
++    WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
+     if (priv->enoughDataID || priv->paused) {
+         return;
+     }
+@@ -774,7 +774,7 @@ static gboolean webKitWebSrcSeekMainCb(W
+ 
+     ASSERT(isMainThread());
+ 
+-    GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
++    WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
+     // already stopped
+     if (!priv->seekID)
+         return FALSE;
+@@ -792,7 +792,7 @@ static gboolean webKitWebSrcSeekDataCb(G
+     WebKitWebSrcPrivate* priv = src->priv;
+ 
+     GST_DEBUG_OBJECT(src, "Seeking to offset: %" G_GUINT64_FORMAT, offset);
+-    GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
++    WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
+     if (offset == priv->offset && priv->requestedOffset == priv->offset)
+         return TRUE;
+ 
+@@ -811,7 +811,7 @@ static gboolean webKitWebSrcSeekDataCb(G
+ void webKitWebSrcSetMediaPlayer(WebKitWebSrc* src, WebCore::MediaPlayer* player)
+ {
+     ASSERT(player);
+-    GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
++    WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
+     src->priv->player = player;
+ }
+ 
+@@ -841,7 +841,7 @@ char* StreamingClient::createReadBuffer(
+ 
+     mapGstBuffer(buffer);
+ 
+-    GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
++    WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
+     priv->buffer = adoptGRef(buffer);
+     locker.unlock();
+ 
+@@ -867,7 +867,7 @@ void StreamingClient::handleResponseRece
+         return;
+     }
+ 
+-    GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
++    WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
+ 
+     priv->corsAccessCheck = corsAccessCheck;
+ 
+@@ -966,7 +966,7 @@ void StreamingClient::handleDataReceived
+     WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src);
+     WebKitWebSrcPrivate* priv = src->priv;
+ 
+-    GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
++    WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
+ 
+     GST_LOG_OBJECT(src, "Have %lld bytes of data", priv->buffer ? static_cast<long long>(gst_buffer_get_size(priv->buffer.get())) : length);
+ 
+@@ -1035,7 +1035,7 @@ void StreamingClient::handleNotifyFinish
+ 
+     GST_DEBUG_OBJECT(src, "Have EOS");
+ 
+-    GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
++    WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
+     if (!priv->seekID) {
+         locker.unlock();
+         gst_app_src_end_of_stream(priv->appsrc);
+@@ -1194,7 +1194,7 @@ void ResourceHandleStreamingClient::wasB
+ 
+     GST_ERROR_OBJECT(src, "Request was blocked");
+ 
+-    GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
++    WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
+     uri.reset(g_strdup(src->priv->uri));
+     locker.unlock();
+ 
+@@ -1208,7 +1208,7 @@ void ResourceHandleStreamingClient::cann
+ 
+     GST_ERROR_OBJECT(src, "Cannot show URL");
+ 
+-    GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
++    WebCore::GMutexLocker locker(GST_OBJECT_GET_LOCK(src));
+     uri.reset(g_strdup(src->priv->uri));
+     locker.unlock();
+ 
+diff -up webkitgtk-2.4.8/Source/WTF/wtf/gobject/GMutexLocker.h.gmutexlocker webkitgtk-2.4.8/Source/WTF/wtf/gobject/GMutexLocker.h
diff --git a/webkitgtk3.spec b/webkitgtk3.spec
index 2416773..2539bf3 100644
--- a/webkitgtk3.spec
+++ b/webkitgtk3.spec
@@ -10,7 +10,7 @@
 
 Name:           webkitgtk3
 Version:        2.4.8
-Release:        2%{?dist}
+Release:        3%{?dist}
 Summary:        GTK+ Web content engine library
 
 Group:          Development/Libraries
@@ -26,6 +26,10 @@ Patch3:         webkitgtk-2.4.5-cloop_fix_32.patch
 Patch4:         webkitgtk-2.4.1-ppc64_align.patch
 # https://bugs.webkit.org/show_bug.cgi?id=140241
 Patch5:         webkitgtk-2.4.8-plugin_none.patch
+# https://bugs.webkit.org/show_bug.cgi?id=126324
+Patch6:         webkitgtk-2.4.8-gcc5.patch
+# https://bugs.webkit.org/show_bug.cgi?id=141381
+Patch7:         webkitgtk-2.4.8-gmutexlocker.patch
 
 BuildRequires:  at-spi2-core-devel
 BuildRequires:  bison
@@ -94,6 +98,8 @@ This package contains developer documentation for %{name}.
 %patch1 -p1 -b .aarch64
 %patch2 -p1 -b .cloop_fix
 %patch5 -p1 -b .plugin_none
+%patch6 -p1 -b .gcc5
+%patch7 -p1 -b .gmutex_locker
 %ifarch ppc s390
 %patch3 -p1 -b .cloop_fix_32
 %endif
@@ -103,6 +109,7 @@ This package contains developer documentation for %{name}.
 
 # Remove when 2.4.9 will be released
 # Needed for https://bugs.webkit.org/show_bug.cgi?id=140241
+# Regenerate configure to pick up the gcc 5.0 changes
 autoreconf -v
 
 %build
@@ -207,6 +214,10 @@ find $RPM_BUILD_ROOT%{_libdir} -name "*.la" -delete
 %{_datadir}/gtk-doc/html/webkitdomgtk
 
 %changelog
+* Wed Feb 18 2015 Tomas Popela <tpopela at redhat.com> - 2.4.8-3
+- Add support for gcc 5.0
+- Let the package compile with latest glib
+
 * Mon Jan 26 2015 David Tardon <dtardon at redhat.com> - 2.4.8-2
 - rebuild for ICU 54.1
 


More information about the scm-commits mailing list