From aa30737839de3c2a4a1287442cb9859414fb4b0a Mon Sep 17 00:00:00 2001 From: root Date: Fri, 25 May 2012 00:02:35 +0000 Subject: Fri May 25 00:02:35 UTC 2012 --- extra/qtwebkit/PKGBUILD | 111 ++++++++++---- extra/qtwebkit/fix-build.patch | 36 +++++ extra/qtwebkit/glibc.patch | 339 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 459 insertions(+), 27 deletions(-) create mode 100644 extra/qtwebkit/fix-build.patch create mode 100644 extra/qtwebkit/glibc.patch (limited to 'extra/qtwebkit') diff --git a/extra/qtwebkit/PKGBUILD b/extra/qtwebkit/PKGBUILD index c0c13dd98..8c289f466 100644 --- a/extra/qtwebkit/PKGBUILD +++ b/extra/qtwebkit/PKGBUILD @@ -1,49 +1,106 @@ -# $Id: PKGBUILD 146627 2012-01-14 15:25:15Z andrea $ +# $Id: PKGBUILD 159414 2012-05-23 22:31:17Z andrea $ # Maintainer: Andrea Scarpino pkgname=qtwebkit -pkgver=2.2.1 -pkgrel=2 +pkgver=2.2.2 +pkgrel=1 arch=('i686' 'x86_64') url='http://trac.webkit.org/wiki/QtWebKit' pkgdesc='An open source web browser engine (Qt port)' license=('LGPL2.1' 'GPL3') -depends=('qt' 'gperf' 'bison' 'gstreamer0.10-base') -makedepends=('python2' 'mesa' 'chrpath') +depends=('qt' 'gstreamer0.10-base') +makedepends=('python2' 'mesa' 'gperf') conflicts=('qt<4.8') -#source=("http://get.qt.nokia.com/${pkgname}/QtWebKit-${pkgver}.tar.gz" -source=("ftp://ftp.archlinux.org/other/${pkgname}/QtWebKit-${pkgver}.tar.gz" - "ftp://ftp.archlinux.org/other/${pkgname}/qwebview-4.8.0.tar.bz2" - 'python2-path.patch') -sha1sums=('283fc116882157df0474af496be73bb9b34cb001' - '0e44b27a0f71aceb91a89a2c28ab6331126518d9' - 'b0ef3d5596171e3900a685df9bcfac3068ad6330') +_qtver=4.8.2 +source=("ftp://ftp.archlinux.org/other/${pkgname}/${pkgname}-${pkgver}-source.tar.gz" + "ftp://ftp.archlinux.org/other/${pkgname}/qwebview-${_qtver}.tar.xz" + 'glibc.patch' + 'fix-build.patch') +sha1sums=('914d7cc099e5b6181c2d74fc7a74e1b4478b75a4' + '33c83272ed8110180ee6e7e3733e68cc513e2802' + '9e47ba5725a2ebd072b8bff31fa2f71aa83f0333' + 'c6dfb001b0412a8adfcb7f1f565a24314a753448') build() { - cd "${srcdir}"/QtWebKit-${pkgver} + cd "${srcdir}"/${pkgname}-${pkgver}-source - patch -p1 -i "${srcdir}"/python2-path.patch + patch -p1 -i "${srcdir}"/glibc.patch + patch -p1 -i "${srcdir}"/fix-build.patch - cd Tools/Scripts - ./build-webkit --qt \ - --prefix=/usr \ - --makeargs="${MAKEFLAGS}" \ - --release \ - --3d-canvas + # move headers + mv include Source/ + + cd Source + qmake + cd ../ + + make -C Source # Build the QWebView plugin (FS#27914) - cd "${srcdir}"/QtWebKit-${pkgver}/qwebview-4.8.0/plugins/qwebview + cd "${srcdir}"/${pkgname}-${pkgver}-source/qwebview-${_qtver}/plugins/qwebview qmake make } package() { - cd "${srcdir}"/QtWebKit-${pkgver} - make INSTALL_ROOT="${pkgdir}" -C WebKitBuild/Release install + cd "${srcdir}"/${pkgname}-${pkgver}-source + make INSTALL_ROOT="${pkgdir}" -C Source install - # Fix RPATH - chrpath -r /usr/lib/ "${pkgdir}"/usr/lib/qt/imports/QtWebKit/libqmlwebkitplugin.so - - cd "${srcdir}"/QtWebKit-${pkgver}/qwebview-4.8.0/plugins/qwebview + cd "${srcdir}"/${pkgname}-${pkgver}-source/qwebview-${_qtver}/plugins/qwebview make INSTALL_ROOT="${pkgdir}" install } + +_source() { + local _current_dir=$(pwd) + local _tmp=$(mktemp -d --tmpdir) + + cd _tmp + git clone git://gitorious.org/+qtwebkit-developers/webkit/qtwebkit.git + + # fetch the make-package.py script + git clone git://qt.gitorious.org/qtwebkit/tools.git + + # create the qtwebkit tarball + cd qtwebkit + git checkout -b ${pkgname}-${pkgver} ${pkgname}-${pkgver} + + sed -i 's|#!/usr/bin/env python|#!/usr/bin/env python2|' \ + ../tools/make-package.py + python2 ../tools/make-package.py + + mv ${pkgname}-${pkgver}-source.tar.gz ${_current_dir}/ + + cd .. + + # create the qwebview plugin tarball + mkdir qwebview-${_qtver} + cd qwebview-${_qtver} + wget http://releases.qt-project.org/qt4/source/qt-everywhere-opensource-src-${_qtver}.tar.gz + tar xf qt-everywhere-opensource-src-${_qtver}.tar.gz + mkdir -p ${pkgname}-${pkgver}-source/qwebview-${_qtver}/plugins/ + cp -ra qt-everywhere-opensource-src-${_qtver}/tools/designer/src/plugins/qwebview \ + ${pkgname}-${pkgver}-source/qwebview-${_qtver}/plugins/ + + cat > ${pkgname}-${pkgver}-source/qwebview-${_qtver}/plugins/plugins.pro <<"EOF" +TEMPLATE = subdirs +CONFIG += ordered + +REQUIRES = !CONFIG(static,shared|static) +contains(QT_CONFIG, webkit): SUBDIRS += qwebview +EOF + + cat > $(_tmp)/header.txt <<"EOF" +INCLUDEPATH += ../../../Source/include +LIBS += -L../../../Source/lib + +EOF + + cat $(_tmp)/header.txt qt-everywhere-opensource-src-${_qtver}/tools/designer/src/plugins/plugins.pri > \ + ${pkgname}-${pkgver}-source/qwebview-${_qtver}/plugins/plugins.pri + + tar cJf qwebview-${_qtver}.tar.xz ${pkgname}-${pkgver}-source + + mv qwebview-${_qtver}.tar.xz ${_current_dir}/ + + rm -rf ${_tmp} +} diff --git a/extra/qtwebkit/fix-build.patch b/extra/qtwebkit/fix-build.patch new file mode 100644 index 000000000..46313bbe9 --- /dev/null +++ b/extra/qtwebkit/fix-build.patch @@ -0,0 +1,36 @@ +diff -up qtwebkit-2.2.2-source/Source/WebKit.pri.no_Werror qtwebkit-2.2.2-source/Source/WebKit.pri +--- qtwebkit-2.2.2-source/Source/WebKit.pri.no_Werror 2012-05-22 09:30:37.000000000 -0500 ++++ qtwebkit-2.2.2-source/Source/WebKit.pri 2012-05-22 09:51:42.126610618 -0500 +@@ -102,7 +102,7 @@ CONFIG -= warn_on + + # Treat warnings as errors on x86/Linux/GCC + linux-g++* { +- !CONFIG(standalone_package):isEqual(QT_ARCH,x86_64)|isEqual(QT_ARCH,i386): QMAKE_CXXFLAGS += -Werror ++ #!CONFIG(standalone_package):isEqual(QT_ARCH,x86_64)|isEqual(QT_ARCH,i386): QMAKE_CXXFLAGS += -Werror + + greaterThan(QT_GCC_MAJOR_VERSION, 3):greaterThan(QT_GCC_MINOR_VERSION, 5) { + if (!contains(QMAKE_CXXFLAGS, -std=c++0x) && !contains(QMAKE_CXXFLAGS, -std=gnu++0x)) { + +diff -up webkit-qtwebkit/Source/common.pri.me webkit-qtwebkit/Source/common.pri +--- webkit-qtwebkit/Source/common.pri.me 2012-01-24 14:51:49.000000000 +0100 ++++ webkit-qtwebkit/Source/common.pri 2012-01-24 14:52:01.000000000 +0100 +@@ -3,12 +3,12 @@ + contains(JAVASCRIPTCORE_JIT,yes): DEFINES+=ENABLE_JIT=1 + contains(JAVASCRIPTCORE_JIT,no): DEFINES+=ENABLE_JIT=0 + +-linux-g++ { +-isEmpty($$(SBOX_DPKG_INST_ARCH)):exists(/usr/bin/ld.gold) { +- message(Using gold linker) +- QMAKE_LFLAGS+=-fuse-ld=gold +-} +-} ++#linux-g++ { ++#isEmpty($$(SBOX_DPKG_INST_ARCH)):exists(/usr/bin/ld.gold) { ++# message(Using gold linker) ++# QMAKE_LFLAGS+=-fuse-ld=gold ++#} ++#} + + # We use this flag on production branches + # See https://bugs.webkit.org/show_bug.cgi?id=60824 +diff -up webkit-qtwebkit/Source/JavaScriptCore/runtime/JSGlobalObject.h.me webkit-qtwebkit/Source/JavaScriptCore/runtime/JSGlobalObject.h diff --git a/extra/qtwebkit/glibc.patch b/extra/qtwebkit/glibc.patch new file mode 100644 index 000000000..bd7cb9416 --- /dev/null +++ b/extra/qtwebkit/glibc.patch @@ -0,0 +1,339 @@ +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. -- cgit v1.2.3-54-g00ecf