diff --git a/qtwebkit-2.2.x-glib231-wk#69840.patch b/qtwebkit-2.2.x-glib231-wk#69840.patch new file mode 100644 index 0000000..1051449 --- /dev/null +++ b/qtwebkit-2.2.x-glib231-wk#69840.patch @@ -0,0 +1,352 @@ +diff -up webkit-qtwebkit/configure.ac.glib231 webkit-qtwebkit/configure.ac +--- webkit-qtwebkit/configure.ac.glib231 2011-12-21 12:52:38.000000000 +0100 ++++ webkit-qtwebkit/configure.ac 2011-12-21 12:53:27.000000000 +0100 +@@ -111,6 +111,9 @@ if test "$os_win32" = "no"; then + AC_CHECK_HEADERS([pthread.h], + AC_DEFINE([HAVE_PTHREAD_H],[1],[Define if pthread exists]), + AC_MSG_ERROR([pthread support is required to build WebKit])) ++AC_CHECK_LIB(pthread, pthread_rwlock_init, ++ AC_DEFINE([HAVE_PTHREAD_RWLOCK],[1],[Define if pthread rwlock is present]), ++ AC_MSG_WARN([pthread rwlock support is not available])) + fi + + # check for libjpeg the way Gtk does it. +diff -up webkit-qtwebkit/Source/JavaScriptCore/GNUmakefile.list.am.glib231 webkit-qtwebkit/Source/JavaScriptCore/GNUmakefile.list.am +--- webkit-qtwebkit/Source/JavaScriptCore/GNUmakefile.list.am.glib231 2011-11-09 16:32:47.000000000 +0100 ++++ webkit-qtwebkit/Source/JavaScriptCore/GNUmakefile.list.am 2011-12-21 12:50:19.000000000 +0100 +@@ -438,7 +438,6 @@ javascriptcore_sources += \ + Source/JavaScriptCore/wtf/gobject/GRefPtr.h \ + Source/JavaScriptCore/wtf/gobject/GTypedefs.h \ + Source/JavaScriptCore/wtf/gtk/MainThreadGtk.cpp \ +- Source/JavaScriptCore/wtf/gtk/ThreadingGtk.cpp \ + Source/JavaScriptCore/wtf/HashCountedSet.h \ + Source/JavaScriptCore/wtf/HashFunctions.h \ + Source/JavaScriptCore/wtf/HashIterators.h \ +diff -up webkit-qtwebkit/Source/JavaScriptCore/wtf/gobject/GOwnPtr.cpp.glib231 webkit-qtwebkit/Source/JavaScriptCore/wtf/gobject/GOwnPtr.cpp +--- webkit-qtwebkit/Source/JavaScriptCore/wtf/gobject/GOwnPtr.cpp.glib231 2011-11-09 16:32:47.000000000 +0100 ++++ webkit-qtwebkit/Source/JavaScriptCore/wtf/gobject/GOwnPtr.cpp 2011-12-21 12:50:19.000000000 +0100 +@@ -37,18 +37,6 @@ template <> void freeOwnedGPtr(GL + g_list_free(ptr); + } + +-template <> void freeOwnedGPtr(GCond* ptr) +-{ +- if (ptr) +- g_cond_free(ptr); +-} +- +-template <> void freeOwnedGPtr(GMutex* ptr) +-{ +- if (ptr) +- g_mutex_free(ptr); +-} +- + template <> void freeOwnedGPtr(GPatternSpec* ptr) + { + if (ptr) +diff -up webkit-qtwebkit/Source/JavaScriptCore/wtf/gobject/GOwnPtr.h.glib231 webkit-qtwebkit/Source/JavaScriptCore/wtf/gobject/GOwnPtr.h +--- webkit-qtwebkit/Source/JavaScriptCore/wtf/gobject/GOwnPtr.h.glib231 2011-11-09 16:32:47.000000000 +0100 ++++ webkit-qtwebkit/Source/JavaScriptCore/wtf/gobject/GOwnPtr.h 2011-12-21 12:50:19.000000000 +0100 +@@ -35,8 +35,6 @@ namespace WTF { + template inline void freeOwnedGPtr(T* ptr); + template<> void freeOwnedGPtr(GError*); + template<> void freeOwnedGPtr(GList*); +-template<> void freeOwnedGPtr(GCond*); +-template<> void freeOwnedGPtr(GMutex*); + template<> void freeOwnedGPtr(GPatternSpec*); + template<> void freeOwnedGPtr(GDir*); + +diff -up webkit-qtwebkit/Source/JavaScriptCore/wtf/gobject/GTypedefs.h.glib231 webkit-qtwebkit/Source/JavaScriptCore/wtf/gobject/GTypedefs.h +--- webkit-qtwebkit/Source/JavaScriptCore/wtf/gobject/GTypedefs.h.glib231 2011-11-09 16:32:47.000000000 +0100 ++++ webkit-qtwebkit/Source/JavaScriptCore/wtf/gobject/GTypedefs.h 2011-12-21 12:50:19.000000000 +0100 +@@ -39,7 +39,6 @@ typedef void* gpointer; + typedef struct _GAsyncResult GAsyncResult; + typedef struct _GCancellable GCancellable; + typedef struct _GCharsetConverter GCharsetConverter; +-typedef struct _GCond GCond; + typedef struct _GDir GDir; + typedef struct _GdkAtom* GdkAtom; + typedef struct _GdkCursor GdkCursor; +@@ -52,7 +51,6 @@ typedef struct _GFile GFile; + typedef struct _GHashTable GHashTable; + typedef struct _GInputStream GInputStream; + typedef struct _GList GList; +-typedef struct _GMutex GMutex; + typedef struct _GPatternSpec GPatternSpec; + typedef struct _GPollableOutputStream GPollableOutputStream; + typedef struct _GSocketClient GSocketClient; +diff -up webkit-qtwebkit/Source/JavaScriptCore/wtf/gtk/ThreadingGtk.cpp.glib231 webkit-qtwebkit/Source/JavaScriptCore/wtf/gtk/ThreadingGtk.cpp +--- webkit-qtwebkit/Source/JavaScriptCore/wtf/gtk/ThreadingGtk.cpp.glib231 2011-12-21 12:52:25.000000000 +0100 ++++ webkit-qtwebkit/Source/JavaScriptCore/wtf/gtk/ThreadingGtk.cpp 2011-12-21 12:52:28.000000000 +0100 +@@ -1,248 +0,0 @@ +-/* +- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. +- * Copyright (C) 2007 Justin Haygood (jhaygood@reaktix.com) +- * +- * 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. +- * 3. Neither the name of Apple Inc. ("Apple") nor the names of +- * its contributors may be used to endorse or promote products derived +- * from this software without specific prior written permission. +- * +- * THIS SOFTWARE IS PROVIDED BY APPLE 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 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 "Threading.h" +- +-#if !USE(PTHREADS) +- +-#include "CurrentTime.h" +-#include "HashMap.h" +-#include "MainThread.h" +-#include "RandomNumberSeed.h" +-#include +- +-#include +-#include +- +-namespace WTF { +- +-typedef HashMap ThreadMap; +- +-static Mutex* atomicallyInitializedStaticMutex; +- +-static Mutex& threadMapMutex() +-{ +- DEFINE_STATIC_LOCAL(Mutex, mutex, ()); +- return mutex; +-} +- +-void initializeThreading() +-{ +- if (!g_thread_supported()) +- g_thread_init(NULL); +- ASSERT(g_thread_supported()); +- +- if (!atomicallyInitializedStaticMutex) { +- atomicallyInitializedStaticMutex = new Mutex; +- threadMapMutex(); +- initializeRandomNumberGenerator(); +- } +-} +- +-void lockAtomicallyInitializedStaticMutex() +-{ +- ASSERT(atomicallyInitializedStaticMutex); +- atomicallyInitializedStaticMutex->lock(); +-} +- +-void unlockAtomicallyInitializedStaticMutex() +-{ +- atomicallyInitializedStaticMutex->unlock(); +-} +- +-static ThreadMap& threadMap() +-{ +- DEFINE_STATIC_LOCAL(ThreadMap, map, ()); +- return map; +-} +- +-static ThreadIdentifier identifierByGthreadHandle(GThread*& thread) +-{ +- MutexLocker locker(threadMapMutex()); +- +- ThreadMap::iterator i = threadMap().begin(); +- for (; i != threadMap().end(); ++i) { +- if (i->second == thread) +- return i->first; +- } +- +- return 0; +-} +- +-static ThreadIdentifier establishIdentifierForThread(GThread*& thread) +-{ +- ASSERT(!identifierByGthreadHandle(thread)); +- +- MutexLocker locker(threadMapMutex()); +- +- static ThreadIdentifier identifierCount = 1; +- +- threadMap().add(identifierCount, thread); +- +- return identifierCount++; +-} +- +-static GThread* threadForIdentifier(ThreadIdentifier id) +-{ +- MutexLocker locker(threadMapMutex()); +- +- return threadMap().get(id); +-} +- +-static void clearThreadForIdentifier(ThreadIdentifier id) +-{ +- MutexLocker locker(threadMapMutex()); +- +- ASSERT(threadMap().contains(id)); +- +- threadMap().remove(id); +-} +- +-ThreadIdentifier createThreadInternal(ThreadFunction entryPoint, void* data, const char*) +-{ +- GThread* thread; +- if (!(thread = g_thread_create(entryPoint, data, TRUE, 0))) { +- LOG_ERROR("Failed to create thread at entry point %p with data %p", entryPoint, data); +- return 0; +- } +- +- ThreadIdentifier threadID = establishIdentifierForThread(thread); +- return threadID; +-} +- +-void initializeCurrentThreadInternal(const char*) +-{ +-} +- +-int waitForThreadCompletion(ThreadIdentifier threadID, void** result) +-{ +- ASSERT(threadID); +- +- GThread* thread = threadForIdentifier(threadID); +- +- void* joinResult = g_thread_join(thread); +- if (result) +- *result = joinResult; +- +- clearThreadForIdentifier(threadID); +- return 0; +-} +- +-void detachThread(ThreadIdentifier) +-{ +-} +- +-ThreadIdentifier currentThread() +-{ +- GThread* currentThread = g_thread_self(); +- if (ThreadIdentifier id = identifierByGthreadHandle(currentThread)) +- return id; +- return establishIdentifierForThread(currentThread); +-} +- +-void yield() +-{ +- g_thread_yield(); +-} +- +-Mutex::Mutex() +- : m_mutex(g_mutex_new()) +-{ +-} +- +-Mutex::~Mutex() +-{ +-} +- +-void Mutex::lock() +-{ +- g_mutex_lock(m_mutex.get()); +-} +- +-bool Mutex::tryLock() +-{ +- return g_mutex_trylock(m_mutex.get()); +-} +- +-void Mutex::unlock() +-{ +- g_mutex_unlock(m_mutex.get()); +-} +- +-ThreadCondition::ThreadCondition() +- : m_condition(g_cond_new()) +-{ +-} +- +-ThreadCondition::~ThreadCondition() +-{ +-} +- +-void ThreadCondition::wait(Mutex& mutex) +-{ +- g_cond_wait(m_condition.get(), mutex.impl().get()); +-} +- +-bool ThreadCondition::timedWait(Mutex& mutex, double absoluteTime) +-{ +- // Time is in the past - return right away. +- if (absoluteTime < currentTime()) +- return false; +- +- // Time is too far in the future for g_cond_timed_wait - wait forever. +- if (absoluteTime > INT_MAX) { +- wait(mutex); +- return true; +- } +- +- int timeSeconds = static_cast(absoluteTime); +- int timeMicroseconds = static_cast((absoluteTime - timeSeconds) * 1000000.0); +- +- GTimeVal targetTime; +- targetTime.tv_sec = timeSeconds; +- targetTime.tv_usec = timeMicroseconds; +- +- return g_cond_timed_wait(m_condition.get(), mutex.impl().get(), &targetTime); +-} +- +-void ThreadCondition::signal() +-{ +- g_cond_signal(m_condition.get()); +-} +- +-void ThreadCondition::broadcast() +-{ +- g_cond_broadcast(m_condition.get()); +-} +- +- +-} +- +-#endif // !USE(PTHREADS) +diff -up webkit-qtwebkit/Source/JavaScriptCore/wtf/ThreadingPrimitives.h.glib231 webkit-qtwebkit/Source/JavaScriptCore/wtf/ThreadingPrimitives.h +--- webkit-qtwebkit/Source/JavaScriptCore/wtf/ThreadingPrimitives.h.glib231 2011-11-09 16:32:47.000000000 +0100 ++++ webkit-qtwebkit/Source/JavaScriptCore/wtf/ThreadingPrimitives.h 2011-12-21 12:50:19.000000000 +0100 +@@ -44,8 +44,6 @@ + + #if USE(PTHREADS) + #include +-#elif PLATFORM(GTK) +-#include "GOwnPtr.h" + #endif + + #if PLATFORM(QT) +@@ -66,10 +64,6 @@ typedef pthread_rwlock_t PlatformReadWri + typedef void* PlatformReadWriteLock; + #endif + typedef pthread_cond_t PlatformCondition; +-#elif PLATFORM(GTK) +-typedef GOwnPtr PlatformMutex; +-typedef void* PlatformReadWriteLock; // FIXME: Implement. +-typedef GOwnPtr PlatformCondition; + #elif PLATFORM(QT) + typedef QT_PREPEND_NAMESPACE(QMutex)* PlatformMutex; + typedef void* PlatformReadWriteLock; // FIXME: Implement. diff --git a/qtwebkit.spec b/qtwebkit.spec index 249ef31..1404027 100644 --- a/qtwebkit.spec +++ b/qtwebkit.spec @@ -1,7 +1,7 @@ Name: qtwebkit Version: 2.2.1 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Qt WebKit bindings Group: System Environment/Libraries License: LGPLv2 with exceptions or GPLv3 with exceptions @@ -26,7 +26,7 @@ Patch4: webkit-qtwebkit-2.2-no_Werror.patch Patch5: webkit-qtwebkit-2.2tp1-qt46.patch # fix for glib-2.31+ -Patch6: webkit-qtwebkit-2.2-glib231.patch +Patch6: qtwebkit-2.2.x-glib231-wk#69840.patch BuildRequires: bison BuildRequires: chrpath @@ -80,11 +80,7 @@ Provides: qt4-webkit-devel%{?_isa} = 2:%{version}-%{release} %patch3 -p1 -b .debuginfo %patch4 -p1 -b .no_Werror %patch5 -p1 -b .qt46 -%if 0%{?fedora} > 16 -# This quick fix works ONLY with GLib >= 2.31. It's harder to fix this portably. -# See https://bugs.webkit.org/show_bug.cgi?id=69840 for the gory details. %patch6 -p1 -b .glib231 -%endif %build @@ -138,6 +134,9 @@ rm -rf %{buildroot} %changelog +* Wed Dec 21 2011 Than Ngo - 2.2.1-2 +- backport the correct patch from trunk to fix glib-2.31 issue + * Mon Dec 19 2011 Rex Dieter 2.2.1-1 - qtwebkit-2.2.1 - add explicit BR: pkgconfig(xext) pkgconfig(xrender) diff --git a/webkit-qtwebkit-2.2-glib231.patch b/webkit-qtwebkit-2.2-glib231.patch deleted file mode 100644 index 237c95d..0000000 --- a/webkit-qtwebkit-2.2-glib231.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up webkit-qtwebkit/Source/JavaScriptCore/wtf/gobject/GTypedefs.h.glib231 webkit-qtwebkit/Source/JavaScriptCore/wtf/gobject/GTypedefs.h ---- webkit-qtwebkit/Source/JavaScriptCore/wtf/gobject/GTypedefs.h.glib231 2011-09-13 15:23:44.000000000 -0500 -+++ webkit-qtwebkit/Source/JavaScriptCore/wtf/gobject/GTypedefs.h 2011-11-18 13:42:40.348070699 -0600 -@@ -52,7 +52,7 @@ typedef struct _GFile GFile; - typedef struct _GHashTable GHashTable; - typedef struct _GInputStream GInputStream; - typedef struct _GList GList; --typedef struct _GMutex GMutex; -+typedef union _GMutex GMutex; - typedef struct _GPatternSpec GPatternSpec; - typedef struct _GPollableOutputStream GPollableOutputStream; - typedef struct _GSocketClient GSocketClient;