diff mbox

qt5webkit: restore package

Message ID 1459255689-21551-1-git-send-email-gary.bisson@boundarydevices.com
State Superseded
Headers show

Commit Message

Gary Bisson March 29, 2016, 12:48 p.m. UTC
Although this package has been removed from the official release
packages since Qt5.6.0, it is still available for users to build
it from source. This is useful for platforms without GPU since its
successor (QtWebEngine) requires OpenGL support.

The package now matches the community-based meta-qt5 Yocto layer,
using the exact same revision of the qtwebkit source from github:
https://github.com/meta-qt5/meta-qt5/commit/e434995a

Here is the project source tree:
https://github.com/qtproject/qtwebkit

All the patches have been pulled from Yocto as well.

Since we are now using the source from the git repository, we need
to create an empty .git/ folder to force the headers re-generation.
https://github.com/meta-qt5/meta-qt5/blob/jethro/recipes-qt/qt5/qt5.inc#L33

Note that GPLv3 license option has been added with this release.

Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>
---
Hi all,

Since I've had to pull this package back for Qt5.6 I thought I'd share
although I'm not sure you want it since you just removed it.

Julien, I've used the github repo instead of the code.qt.io repo that
you suggested in order to match exactly the meta-qt5 layer.
http://lists.busybox.net/pipermail/buildroot/2016-March/156824.html

At first the build failed because of the headers generation which
requires to add a .git/ folder as explained in the log.

Tested on i.MX6Q Nitrogen6x platform.

Regards,
Gary
---
 Config.in.legacy                                   |  7 --
 package/qt5/Config.in                              |  1 +
 .../0001-qtwebkit-fix-QA-issue-bad-RPATH.patch     | 30 ++++++++
 .../qt5webkit/0002-Remove-TEXTREL-tag-in-x86.patch | 79 ++++++++++++++++++++++
 ...ude-backtrace-API-for-non-glibc-libraries.patch | 38 +++++++++++
 .../0004-Fix-linking-with-libpthread.patch         | 33 +++++++++
 package/qt5/qt5webkit/Config.in                    | 24 +++++++
 package/qt5/qt5webkit/qt5webkit.hash               |  2 +
 package/qt5/qt5webkit/qt5webkit.mk                 | 58 ++++++++++++++++
 9 files changed, 265 insertions(+), 7 deletions(-)
 create mode 100644 package/qt5/qt5webkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch
 create mode 100644 package/qt5/qt5webkit/0002-Remove-TEXTREL-tag-in-x86.patch
 create mode 100644 package/qt5/qt5webkit/0003-Exclude-backtrace-API-for-non-glibc-libraries.patch
 create mode 100644 package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch
 create mode 100644 package/qt5/qt5webkit/Config.in
 create mode 100644 package/qt5/qt5webkit/qt5webkit.hash
 create mode 100644 package/qt5/qt5webkit/qt5webkit.mk

Comments

Julien Corjon March 29, 2016, 1:34 p.m. UTC | #1
Hi Gary, All,

I was also working on that one but with a different strategy (i've just 
revert my previous commit and fix version of QtWebkit to 5.5.1). Since 
you already do the job to backport yocto integration I will stop mine ;)

Le 29/03/2016 14:48, Gary Bisson a écrit :
> Although this package has been removed from the official release
> packages since Qt5.6.0, it is still available for users to build
> it from source. This is useful for platforms without GPU since its
> successor (QtWebEngine) requires OpenGL support.

I'm agree with that. I did not realize that platform without GPU cannot 
do web-browsing anymore when i bumped Qt in 5.6.0 version.

>
> The package now matches the community-based meta-qt5 Yocto layer,
> using the exact same revision of the qtwebkit source from github:
> https://github.com/meta-qt5/meta-qt5/commit/e434995a
>
> Here is the project source tree:
> https://github.com/qtproject/qtwebkit
>
> All the patches have been pulled from Yocto as well.
>
> Since we are now using the source from the git repository, we need
> to create an empty .git/ folder to force the headers re-generation.
> https://github.com/meta-qt5/meta-qt5/blob/jethro/recipes-qt/qt5/qt5.inc#L33
>
> Note that GPLv3 license option has been added with this release.
>
> Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>
> ---
> Hi all,
>
> Since I've had to pull this package back for Qt5.6 I thought I'd share
> although I'm not sure you want it since you just removed it.
>
> Julien, I've used the github repo instead of the code.qt.io repo that
> you suggested in order to match exactly the meta-qt5 layer.
> http://lists.busybox.net/pipermail/buildroot/2016-March/156824.html

You can use the exact same commit from official repository 
http://code.qt.io/cgit/qt/qtwebkit.git/commit/?id=d2ff5a085572b1ee24dcb42ae107063f3142d14e 
but I understand that code.qt.io do not have the sames Buildroot helper 
than github.

>
> At first the build failed because of the headers generation which
> requires to add a .git/ folder as explained in the log.
>
> Tested on i.MX6Q Nitrogen6x platform.
>
> Regards,
> Gary
> ---
>   Config.in.legacy                                   |  7 --
>   package/qt5/Config.in                              |  1 +
>   .../0001-qtwebkit-fix-QA-issue-bad-RPATH.patch     | 30 ++++++++
>   .../qt5webkit/0002-Remove-TEXTREL-tag-in-x86.patch | 79 ++++++++++++++++++++++
>   ...ude-backtrace-API-for-non-glibc-libraries.patch | 38 +++++++++++
>   .../0004-Fix-linking-with-libpthread.patch         | 33 +++++++++
>   package/qt5/qt5webkit/Config.in                    | 24 +++++++
>   package/qt5/qt5webkit/qt5webkit.hash               |  2 +
>   package/qt5/qt5webkit/qt5webkit.mk                 | 58 ++++++++++++++++
>   9 files changed, 265 insertions(+), 7 deletions(-)
>   create mode 100644 package/qt5/qt5webkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch
>   create mode 100644 package/qt5/qt5webkit/0002-Remove-TEXTREL-tag-in-x86.patch
>   create mode 100644 package/qt5/qt5webkit/0003-Exclude-backtrace-API-for-non-glibc-libraries.patch
>   create mode 100644 package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch
>   create mode 100644 package/qt5/qt5webkit/Config.in
>   create mode 100644 package/qt5/qt5webkit/qt5webkit.hash
>   create mode 100644 package/qt5/qt5webkit/qt5webkit.mk
>
> diff --git a/Config.in.legacy b/Config.in.legacy
> index 60702ce..6691c50 100644
> --- a/Config.in.legacy
> +++ b/Config.in.legacy
> @@ -152,13 +152,6 @@ config BR2_PACKAGE_QT5WEBKIT_EXAMPLES
>   	  The qt5webkit-examples package has been removed, since it
>   	  was removed from upstream starting from Qt 5.6.
>
> -config BR2_PACKAGE_QT5WEBKIT
> -	bool "qt5webkit package removed"
> -	select BR2_LEGACY
> -	help
> -	  The qt5webkit package has been removed, since it was removed
> -	  from upstream starting from Qt 5.6.
> -
>   config BR2_PACKAGE_QT5QUICK1
>   	bool "qt5quick1 package removed"
>   	select BR2_LEGACY
> diff --git a/package/qt5/Config.in b/package/qt5/Config.in
> index f673daa..0c0e971 100644
> --- a/package/qt5/Config.in
> +++ b/package/qt5/Config.in
> @@ -49,4 +49,5 @@ source "package/qt5/qt5x11extras/Config.in"
>   source "package/qt5/qt5xmlpatterns/Config.in"
>   comment "legacy compatibility"
>   source "package/qt5/qt5script/Config.in"

You should probably add an "unsupported version" comment to differ from 
"legacy compatibility" which is still support by Qt community but tagged 
as deprecated.

> +source "package/qt5/qt5webkit/Config.in"
>   endif
> diff --git a/package/qt5/qt5webkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch b/package/qt5/qt5webkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch
> new file mode 100644
> index 0000000..e8b0e43
> --- /dev/null
> +++ b/package/qt5/qt5webkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch
> @@ -0,0 +1,30 @@
> +From 1735a8484ef9ae336f8d607b56bda64c8af10c79 Mon Sep 17 00:00:00 2001
> +From: Trevor Woerner <trevor.woerner@linaro.org>
> +Date: Fri, 7 Feb 2014 04:07:17 +0100
> +Subject: [PATCH 1/3] qtwebkit: fix QA issue (bad RPATH)
> +
> +Building qtwebkit causes a QA issue such that QtWebPluginProcess and
> +QtWebProcess contain bad RPATHs which point into the build location. This fix
> +adds a patch to not include the rpath.prf which causes this problem.
> +
> +Signed-off-by: Trevor Woerner <trevor.woerner@linaro.org>
> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>

You should add your signed-off-by and maybe a Upstream-status if you 
find the information.

> +---
> + Tools/qmake/mkspecs/features/unix/default_post.prf | 1 -
> + 1 file changed, 1 deletion(-)
> +
> +diff --git a/Tools/qmake/mkspecs/features/unix/default_post.prf b/Tools/qmake/mkspecs/features/unix/default_post.prf
> +index fd66af6..ef754c3 100644
> +--- a/Tools/qmake/mkspecs/features/unix/default_post.prf
> ++++ b/Tools/qmake/mkspecs/features/unix/default_post.prf
> +@@ -61,7 +61,6 @@ linux-*g++* {
> +     }
> + }
> +
> +-contains(TEMPLATE, app): CONFIG += rpath
> +
> + CONFIG(debug, debug|release)|force_debug_info {
> +     # Make ld not cache the symbol tables of input files in memory to avoid memory exhaustion during the linking phase.
> +--
> +2.7.0
> +
> diff --git a/package/qt5/qt5webkit/0002-Remove-TEXTREL-tag-in-x86.patch b/package/qt5/qt5webkit/0002-Remove-TEXTREL-tag-in-x86.patch
> new file mode 100644
> index 0000000..b3a8615
> --- /dev/null
> +++ b/package/qt5/qt5webkit/0002-Remove-TEXTREL-tag-in-x86.patch
> @@ -0,0 +1,79 @@
> +From ae16ce17cc7060274a0b0c165b953fc32540f977 Mon Sep 17 00:00:00 2001
> +From: Magnus Granberg <zorry@gentoo.org>
> +Date: Fri, 27 Feb 2015 11:55:09 +0100
> +Subject: [PATCH 2/3] Remove TEXTREL tag in x86
> +
> +Fix textrel QA warnings when building qtwebkit for x86:
> +
> +  WARNING: QA Issue: ELF binary '/home/andre/rdk/rdk-master/build-vbox32/tmp/work/core2-32-rdk-linux/qtwebkit/5.4.0-r0/packages-split/qtwebkit/usr/lib/libQt5WebKit.so.5.4.0' has relocations in .text [textrel]
> +
> +Patch from upstream webkit:
> +
> +  https://bugs.webkit.org/show_bug.cgi?id=70610
> +
> +Minor refresh required to apply cleanly to the older webkit sources used
> +by qtwebkit. Specifically, the patch needed to be modified to account
> +for PLATFORM(MAC) -> OS(DARWIN) renaming in recent webkit which is not
> +part of qtwebkit yet ( https://bugs.webkit.org/show_bug.cgi?id=99683 ).
> +
> +Upstream status [webkit] : backport
> +Upstream status [qtwebkit] : unclear
> +
> +Bug: https://bugs.webkit.org/show_bug.cgi?id=70610
> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>

You should add your signed-off-by

> +---
> + Source/JavaScriptCore/jit/ThunkGenerators.cpp | 24 ++++++++++++++++++++++++
> + Source/WTF/wtf/InlineASM.h                    |  2 ++
> + 2 files changed, 26 insertions(+)
> +
> +diff --git a/Source/JavaScriptCore/jit/ThunkGenerators.cpp b/Source/JavaScriptCore/jit/ThunkGenerators.cpp
> +index 9684df2..8af82d8 100644
> +--- a/Source/JavaScriptCore/jit/ThunkGenerators.cpp
> ++++ b/Source/JavaScriptCore/jit/ThunkGenerators.cpp
> +@@ -524,6 +524,30 @@ double jsRound(double d)
> +     } \
> +     static MathThunk UnaryDoubleOpWrapper(function) = &function##Thunk;
> +
> ++#elif CPU(X86) && COMPILER(GCC) && OS(LINUX) && defined(__PIC__)
> ++#define defineUnaryDoubleOpWrapper(function) \
> ++    asm( \
> ++        ".text\n" \
> ++        ".globl " SYMBOL_STRING(function##Thunk) "\n" \
> ++        HIDE_SYMBOL(function##Thunk) "\n" \
> ++        SYMBOL_STRING(function##Thunk) ":" "\n" \
> ++        "pushl %ebx\n" \
> ++        "subl $20, %esp\n" \
> ++        "movsd %xmm0, (%esp) \n" \
> ++        "call __x86.get_pc_thunk.bx\n" \
> ++        "addl $_GLOBAL_OFFSET_TABLE_, %ebx\n" \
> ++        "call " GLOBAL_REFERENCE(function) "\n" \
> ++        "fstpl (%esp) \n" \
> ++        "movsd (%esp), %xmm0 \n" \
> ++        "addl $20, %esp\n" \
> ++        "popl %ebx\n" \
> ++        "ret\n" \
> ++    );\
> ++    extern "C" { \
> ++        MathThunkCallingConvention function##Thunk(MathThunkCallingConvention); \
> ++    } \
> ++    static MathThunk UnaryDoubleOpWrapper(function) = &function##Thunk;
> ++
> + #elif CPU(X86) && COMPILER(GCC) && (PLATFORM(MAC) || OS(LINUX))
> + #define defineUnaryDoubleOpWrapper(function) \
> +     asm( \
> +diff --git a/Source/WTF/wtf/InlineASM.h b/Source/WTF/wtf/InlineASM.h
> +index 0a2fe78..2dc40ef 100644
> +--- a/Source/WTF/wtf/InlineASM.h
> ++++ b/Source/WTF/wtf/InlineASM.h
> +@@ -46,6 +46,8 @@
> + #define GLOBAL_REFERENCE(name) #name "@plt"
> + #elif CPU(X86) && COMPILER(MINGW)
> + #define GLOBAL_REFERENCE(name) "@" #name "@4"
> ++#elif OS(LINUX) && CPU(X86) && defined(__PIC__)
> ++#define GLOBAL_REFERENCE(name) SYMBOL_STRING(name) "@plt"
> + #else
> + #define GLOBAL_REFERENCE(name) SYMBOL_STRING(name)
> + #endif
> +--
> +2.7.0
> +
> diff --git a/package/qt5/qt5webkit/0003-Exclude-backtrace-API-for-non-glibc-libraries.patch b/package/qt5/qt5webkit/0003-Exclude-backtrace-API-for-non-glibc-libraries.patch
> new file mode 100644
> index 0000000..4379866
> --- /dev/null
> +++ b/package/qt5/qt5webkit/0003-Exclude-backtrace-API-for-non-glibc-libraries.patch
> @@ -0,0 +1,38 @@
> +From 6c36f0ff8c1f5852c33d2b23714f9f187cc6ff26 Mon Sep 17 00:00:00 2001
> +From: Khem Raj <raj.khem@gmail.com>
> +Date: Fri, 5 Jun 2015 19:55:05 -0700
> +Subject: [PATCH 3/3] Exclude backtrace() API for non-glibc libraries
> +
> +It was excluding musl with current checks, so lets make it such that it
> +considers only glibc when using backtrace API
> +
> +Signed-off-by: Khem Raj <raj.khem@gmail.com>

You should add your signed-off-by and maybe a Upstream-status if you 
find the information.

> +---
> + Source/WTF/wtf/Assertions.cpp | 4 ++--
> + 1 file changed, 2 insertions(+), 2 deletions(-)
> +
> +diff --git a/Source/WTF/wtf/Assertions.cpp b/Source/WTF/wtf/Assertions.cpp
> +index 1b2091f..ba03a28 100644
> +--- a/Source/WTF/wtf/Assertions.cpp
> ++++ b/Source/WTF/wtf/Assertions.cpp
> +@@ -61,7 +61,7 @@
> + #include <windows.h>
> + #endif
> +
> +-#if (OS(DARWIN) || (OS(LINUX) && !defined(__UCLIBC__))) && !OS(ANDROID)
> ++#if (OS(DARWIN) || (OS(LINUX) && defined (__GLIBC__) && !defined(__UCLIBC__))) && !OS(ANDROID)
> + #include <cxxabi.h>
> + #include <dlfcn.h>
> + #include <execinfo.h>
> +@@ -245,7 +245,7 @@ void WTFReportArgumentAssertionFailure(const char* file, int line, const char* f
> +
> + void WTFGetBacktrace(void** stack, int* size)
> + {
> +-#if (OS(DARWIN) || (OS(LINUX) && !defined(__UCLIBC__))) && !OS(ANDROID)
> ++#if (OS(DARWIN) || (OS(LINUX) && defined(__GLIBC__) && !defined(__UCLIBC__))) && !OS(ANDROID)
> +     *size = backtrace(stack, *size);
> + #elif OS(WINDOWS) && !OS(WINCE)
> +     // The CaptureStackBackTrace function is available in XP, but it is not defined
> +--
> +2.7.0
> +
> diff --git a/package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch b/package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch
> new file mode 100644
> index 0000000..c5e6ac5
> --- /dev/null
> +++ b/package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch
> @@ -0,0 +1,33 @@
> +From 5dd4bb67cfce812fd7686e43616e2069f354a7df Mon Sep 17 00:00:00 2001
> +From: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
> +Date: Mon, 22 Feb 2016 10:57:32 +0100
> +Subject: [PATCH] Fix linking with libpthread
> +
> +WebKit use libpthread directly but is depending on other qt modules
> +causing it to be linked against, which might break unless -lpthread
> +is last. Instead just add it explicitly after the static libraries.
> +
> +Upstream-Status: Backport from 5.7 branch
> +
> +Change-Id: I2b95cff2c96373f8dce6f95052c4fccbe1982b33
> +Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
> +Signed-off-by: Jonathan Liu <net147@gmail.com>

You should add your signed-off-by

> +---
> + Tools/qmake/mkspecs/features/default_post.prf | 1 +
> + 1 file changed, 1 insertion(+)
> +
> +diff --git a/Tools/qmake/mkspecs/features/default_post.prf b/Tools/qmake/mkspecs/features/default_post.prf
> +index 67276b7..39bb3f7 100644
> +--- a/Tools/qmake/mkspecs/features/default_post.prf
> ++++ b/Tools/qmake/mkspecs/features/default_post.prf
> +@@ -201,6 +201,7 @@ needToLink() {
> +         linkAgainstLibrary($$library, $$eval(WEBKIT.$${library_identifier}.root_source_dir))
> +         LIBS += $$eval(WEBKIT.$${library_identifier}.dependent_libs)
> +     }
> ++    posix:!darwin: LIBS += -lpthread
> + }
> +
> + creating_module {
> +--
> +2.7.1
> +
> diff --git a/package/qt5/qt5webkit/Config.in b/package/qt5/qt5webkit/Config.in
> new file mode 100644
> index 0000000..fb84b1e
> --- /dev/null
> +++ b/package/qt5/qt5webkit/Config.in
> @@ -0,0 +1,24 @@
> +config BR2_PACKAGE_QT5WEBKIT
> +	bool "qt5webkit"
> +	select BR2_PACKAGE_QT5BASE
> +	select BR2_PACKAGE_QT5BASE_ICU
> +	select BR2_PACKAGE_QT5BASE_GUI
> +	select BR2_PACKAGE_SQLITE
> +	select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_QT5BASE_XCB
> +	select BR2_PACKAGE_XLIB_LIBXRENDER if BR2_PACKAGE_QT5BASE_XCB
> +	# This module does not support static linking
> +	depends on !BR2_STATIC_LIBS
> +	depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
> +	depends on !BR2_BINFMT_FLAT # icu
> +	help
> +	  Qt is a cross-platform application and UI framework for
> +	  developers using C++.
> +
> +	  This package corresponds to the qt5webkit module.
> +
> +	  This package has been removed from the official release packages
> +	  since Qt5.6.0, but it is still available for users to build it
> +	  from source. This is useful for platforms without GPU since the
> +	  successor (QtWebEngine) requires OpenGL support.
> +
> +	  http://qt.io
> diff --git a/package/qt5/qt5webkit/qt5webkit.hash b/package/qt5/qt5webkit/qt5webkit.hash
> new file mode 100644
> index 0000000..d2ac7bb
> --- /dev/null
> +++ b/package/qt5/qt5webkit/qt5webkit.hash
> @@ -0,0 +1,2 @@
> +# locally computed
> +sha256 1c79843ef32313312290d4fe0b87256a9129dc44d62b01789a692981edf4d8ab  qt5webkit-d2ff5a085572b1ee24dcb42ae107063f3142d14e.tar.gz
> diff --git a/package/qt5/qt5webkit/qt5webkit.mk b/package/qt5/qt5webkit/qt5webkit.mk
> new file mode 100644
> index 0000000..7bcad91
> --- /dev/null
> +++ b/package/qt5/qt5webkit/qt5webkit.mk
> @@ -0,0 +1,58 @@
> +################################################################################
> +#
> +# qt5webkit
> +#
> +################################################################################
> +
> +QT5WEBKIT_VERSION = d2ff5a085572b1ee24dcb42ae107063f3142d14e
> +QT5WEBKIT_SITE = $(call github,qtproject,qtwebkit,$(QT5WEBKIT_VERSION))
> +QT5WEBKIT_DEPENDENCIES = qt5base sqlite host-ruby host-gperf host-bison host-flex
> +QT5WEBKIT_INSTALL_STAGING = YES
> +
> +QT5WEBKIT_LICENSE_FILES = Source/WebCore/LICENSE-LGPL-2 Source/WebCore/LICENSE-LGPL-2.1
> +
> +ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y)
> +QT5WEBKIT_LICENSE = LGPLv2+ (WebCore), LGPLv2.1 with exception or LGPLv3 or GPLv2 or GPLv3
> +# Source files contain references to LGPL_EXCEPTION.txt but it is not included
> +# in the archive.
> +QT5WEBKIT_LICENSE_FILES += LICENSE.LGPLv21 LICENSE.LGPLv3 LICENSE.GPLv2 LICENSE.GPLv3
> +else
> +QT5WEBKIT_LICENSE = LGPLv2+ (WebCore), Commercial license
> +QT5WEBKIT_REDISTRIBUTE = NO
> +endif
> +
> +ifeq ($(BR2_PACKAGE_QT5BASE_XCB),y)
> +QT5WEBKIT_DEPENDENCIES += xlib_libXext xlib_libXrender
> +endif
> +
> +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)
> +QT5WEBKIT_DEPENDENCIES += qt5declarative
> +endif
> +
> +define QT5WEBKIT_CONFIGURE_CMDS

You should add a comment to describe the reason to create .git folder.

> +	mkdir -p $(@D)/.git || true

is `|| true` really needed?

> +	(cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake)
> +endef
> +
> +define QT5WEBKIT_BUILD_CMDS
> +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
> +endef
> +
> +define QT5WEBKIT_INSTALL_STAGING_CMDS
> +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
> +	$(QT5_LA_PRL_FILES_FIXUP)
> +endef
> +
> +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y)
> +define QT5WEBKIT_INSTALL_TARGET_QMLS
> +	cp -dpfr $(STAGING_DIR)/usr/qml/QtWebKit $(TARGET_DIR)/usr/qml/
> +endef
> +endif
> +
> +define QT5WEBKIT_INSTALL_TARGET_CMDS
> +	cp -dpf $(STAGING_DIR)/usr/lib/libQt5WebKit*.so.* $(TARGET_DIR)/usr/lib
> +	cp -dpf $(@D)/bin/* $(TARGET_DIR)/usr/bin/
> +	$(QT5WEBKIT_INSTALL_TARGET_QMLS)
> +endef
> +
> +$(eval $(generic-package))
>

Regards,

Julien Corjon
Gary Bisson March 29, 2016, 2:18 p.m. UTC | #2
Julien, All,

On Tue, Mar 29, 2016 at 3:34 PM, Julien CORJON <corjon.j@ecagroup.com> wrote:
>
> Hi Gary, All,
>
> I was also working on that one but with a different strategy (i've just
> revert my previous commit and fix version of QtWebkit to 5.5.1). Since
> you already do the job to backport yocto integration I will stop mine ;)

I didn't know you were working on it. I just really need this package
for several projects which explains why I did it fast.

> Le 29/03/2016 14:48, Gary Bisson a écrit :
> > Although this package has been removed from the official release
> > packages since Qt5.6.0, it is still available for users to build
> > it from source. This is useful for platforms without GPU since its
> > successor (QtWebEngine) requires OpenGL support.
>
> I'm agree with that. I did not realize that platform without GPU cannot
> do web-browsing anymore when i bumped Qt in 5.6.0 version.

Plus the fact that QtWebEngine isn't part of Buildroot yet.

> > The package now matches the community-based meta-qt5 Yocto layer,
> > using the exact same revision of the qtwebkit source from github:
> > https://github.com/meta-qt5/meta-qt5/commit/e434995a
> >
> > Here is the project source tree:
> > https://github.com/qtproject/qtwebkit
> >
> > All the patches have been pulled from Yocto as well.
> >
> > Since we are now using the source from the git repository, we need
> > to create an empty .git/ folder to force the headers re-generation.
> > https://github.com/meta-qt5/meta-qt5/blob/jethro/recipes-qt/qt5/qt5.inc#L33
> >
> > Note that GPLv3 license option has been added with this release.
> >
> > Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>
> > ---
> > Hi all,
> >
> > Since I've had to pull this package back for Qt5.6 I thought I'd share
> > although I'm not sure you want it since you just removed it.
> >
> > Julien, I've used the github repo instead of the code.qt.io repo that
> > you suggested in order to match exactly the meta-qt5 layer.
> > http://lists.busybox.net/pipermail/buildroot/2016-March/156824.html
>
> You can use the exact same commit from official repository
> http://code.qt.io/cgit/qt/qtwebkit.git/commit/?id=d2ff5a085572b1ee24dcb42ae107063f3142d14e
> but I understand that code.qt.io do not have the sames Buildroot helper
> than github.

Yes but I really wanted to do the same as Yocto, since they are using
the github repo, so do I.
https://github.com/meta-qt5/meta-qt5/blob/master/conf/layer.conf#L30

> > At first the build failed because of the headers generation which
> > requires to add a .git/ folder as explained in the log.
> >
> > Tested on i.MX6Q Nitrogen6x platform.
> >
> > Regards,
> > Gary
> > ---
> >   Config.in.legacy                                   |  7 --
> >   package/qt5/Config.in                              |  1 +
> >   .../0001-qtwebkit-fix-QA-issue-bad-RPATH.patch     | 30 ++++++++
> >   .../qt5webkit/0002-Remove-TEXTREL-tag-in-x86.patch | 79 ++++++++++++++++++++++
> >   ...ude-backtrace-API-for-non-glibc-libraries.patch | 38 +++++++++++
> >   .../0004-Fix-linking-with-libpthread.patch         | 33 +++++++++
> >   package/qt5/qt5webkit/Config.in                    | 24 +++++++
> >   package/qt5/qt5webkit/qt5webkit.hash               |  2 +
> >   package/qt5/qt5webkit/qt5webkit.mk                 | 58 ++++++++++++++++
> >   9 files changed, 265 insertions(+), 7 deletions(-)
> >   create mode 100644 package/qt5/qt5webkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch
> >   create mode 100644 package/qt5/qt5webkit/0002-Remove-TEXTREL-tag-in-x86.patch
> >   create mode 100644 package/qt5/qt5webkit/0003-Exclude-backtrace-API-for-non-glibc-libraries.patch
> >   create mode 100644 package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch
> >   create mode 100644 package/qt5/qt5webkit/Config.in
> >   create mode 100644 package/qt5/qt5webkit/qt5webkit.hash
> >   create mode 100644 package/qt5/qt5webkit/qt5webkit.mk
> >
> > diff --git a/Config.in.legacy b/Config.in.legacy
> > index 60702ce..6691c50 100644
> > --- a/Config.in.legacy
> > +++ b/Config.in.legacy
> > @@ -152,13 +152,6 @@ config BR2_PACKAGE_QT5WEBKIT_EXAMPLES
> >         The qt5webkit-examples package has been removed, since it
> >         was removed from upstream starting from Qt 5.6.
> >
> > -config BR2_PACKAGE_QT5WEBKIT
> > -     bool "qt5webkit package removed"
> > -     select BR2_LEGACY
> > -     help
> > -       The qt5webkit package has been removed, since it was removed
> > -       from upstream starting from Qt 5.6.
> > -
> >   config BR2_PACKAGE_QT5QUICK1
> >       bool "qt5quick1 package removed"
> >       select BR2_LEGACY
> > diff --git a/package/qt5/Config.in b/package/qt5/Config.in
> > index f673daa..0c0e971 100644
> > --- a/package/qt5/Config.in
> > +++ b/package/qt5/Config.in
> > @@ -49,4 +49,5 @@ source "package/qt5/qt5x11extras/Config.in"
> >   source "package/qt5/qt5xmlpatterns/Config.in"
> >   comment "legacy compatibility"
> >   source "package/qt5/qt5script/Config.in"
>
> You should probably add an "unsupported version" comment to differ from
> "legacy compatibility" which is still support by Qt community but tagged
> as deprecated.

Yes I wasn't sure about that actually, "unsupported packages" might be
better. Anyone else has a suggestions on the comment name? I've let
legacy for now since it is still true.

> > +source "package/qt5/qt5webkit/Config.in"
> >   endif
> > diff --git a/package/qt5/qt5webkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch b/package/qt5/qt5webkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch
> > new file mode 100644
> > index 0000000..e8b0e43
> > --- /dev/null
> > +++ b/package/qt5/qt5webkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch
> > @@ -0,0 +1,30 @@
> > +From 1735a8484ef9ae336f8d607b56bda64c8af10c79 Mon Sep 17 00:00:00 2001
> > +From: Trevor Woerner <trevor.woerner@linaro.org>
> > +Date: Fri, 7 Feb 2014 04:07:17 +0100
> > +Subject: [PATCH 1/3] qtwebkit: fix QA issue (bad RPATH)
> > +
> > +Building qtwebkit causes a QA issue such that QtWebPluginProcess and
> > +QtWebProcess contain bad RPATHs which point into the build location. This fix
> > +adds a patch to not include the rpath.prf which causes this problem.
> > +
> > +Signed-off-by: Trevor Woerner <trevor.woerner@linaro.org>
> > +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
>
> You should add your signed-off-by and maybe a Upstream-status if you
> find the information.

Not sure I should, I've done absolutely nothing in regard to that
patch apart from a 'cp' command from the Yocto layer to Buildroot.

As for the upstream status I can try to find out.

> > <snip>
> > +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)
> > +QT5WEBKIT_DEPENDENCIES += qt5declarative
> > +endif
> > +
> > +define QT5WEBKIT_CONFIGURE_CMDS
>
> You should add a comment to describe the reason to create .git folder.

Yes you are right, I will, especially since I hated wasting time
building the packages x number of times because of a missing folder.

> > +     mkdir -p $(@D)/.git || true
>
> is `|| true` really needed?

No you're right it is useless. In the case of Yocto, this is the last
do_configure_prepend command so I guess they just want to make sure to
return a good value even if the folder already exists.

I'll submit a V2 once we've decided the comment name for this package.

Thanks for you review.

Regards,
Gary
Julien Corjon March 29, 2016, 3:28 p.m. UTC | #3
Gary,

Le 29/03/2016 16:18, Gary Bisson a écrit :
> Julien, All,

>

> On Tue, Mar 29, 2016 at 3:34 PM, Julien CORJON <corjon.j@ecagroup.com> wrote:

>>

>> Hi Gary, All,

>>

>> I was also working on that one but with a different strategy (i've just

>> revert my previous commit and fix version of QtWebkit to 5.5.1). Since

>> you already do the job to backport yocto integration I will stop mine ;)

>

> I didn't know you were working on it. I just really need this package

> for several projects which explains why I did it fast.


And your job is better than mine so at the end that's good for Buildroot ;)

>

>> Le 29/03/2016 14:48, Gary Bisson a écrit :

>>> Although this package has been removed from the official release

>>> packages since Qt5.6.0, it is still available for users to build

>>> it from source. This is useful for platforms without GPU since its

>>> successor (QtWebEngine) requires OpenGL support.

>>

>> I'm agree with that. I did not realize that platform without GPU cannot

>> do web-browsing anymore when i bumped Qt in 5.6.0 version.

>

> Plus the fact that QtWebEngine isn't part of Buildroot yet.


Currently working (also) on QtWebEngine but it is not a tricky one with 
a lot of "depends on" and take almost an hour to be built...

>

>>> The package now matches the community-based meta-qt5 Yocto layer,

>>> using the exact same revision of the qtwebkit source from github:

>>> https://github.com/meta-qt5/meta-qt5/commit/e434995a

>>>

>>> Here is the project source tree:

>>> https://github.com/qtproject/qtwebkit

>>>

>>> All the patches have been pulled from Yocto as well.

>>>

>>> Since we are now using the source from the git repository, we need

>>> to create an empty .git/ folder to force the headers re-generation.

>>> https://github.com/meta-qt5/meta-qt5/blob/jethro/recipes-qt/qt5/qt5.inc#L33

>>>

>>> Note that GPLv3 license option has been added with this release.

>>>

>>> Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>

>>> ---

>>> Hi all,

>>>

>>> Since I've had to pull this package back for Qt5.6 I thought I'd share

>>> although I'm not sure you want it since you just removed it.

>>>

>>> Julien, I've used the github repo instead of the code.qt.io repo that

>>> you suggested in order to match exactly the meta-qt5 layer.

>>> http://lists.busybox.net/pipermail/buildroot/2016-March/156824.html

>>

>> You can use the exact same commit from official repository

>> http://code.qt.io/cgit/qt/qtwebkit.git/commit/?id=d2ff5a085572b1ee24dcb42ae107063f3142d14e

>> but I understand that code.qt.io do not have the sames Buildroot helper

>> than github.

>

> Yes but I really wanted to do the same as Yocto, since they are using

> the github repo, so do I.

> https://github.com/meta-qt5/meta-qt5/blob/master/conf/layer.conf#L30

>

>>> At first the build failed because of the headers generation which

>>> requires to add a .git/ folder as explained in the log.

>>>

>>> Tested on i.MX6Q Nitrogen6x platform.

>>>

>>> Regards,

>>> Gary

>>> ---

>>>    Config.in.legacy                                   |  7 --

>>>    package/qt5/Config.in                              |  1 +

>>>    .../0001-qtwebkit-fix-QA-issue-bad-RPATH.patch     | 30 ++++++++

>>>    .../qt5webkit/0002-Remove-TEXTREL-tag-in-x86.patch | 79 ++++++++++++++++++++++

>>>    ...ude-backtrace-API-for-non-glibc-libraries.patch | 38 +++++++++++

>>>    .../0004-Fix-linking-with-libpthread.patch         | 33 +++++++++

>>>    package/qt5/qt5webkit/Config.in                    | 24 +++++++

>>>    package/qt5/qt5webkit/qt5webkit.hash               |  2 +

>>>    package/qt5/qt5webkit/qt5webkit.mk                 | 58 ++++++++++++++++

>>>    9 files changed, 265 insertions(+), 7 deletions(-)

>>>    create mode 100644 package/qt5/qt5webkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch

>>>    create mode 100644 package/qt5/qt5webkit/0002-Remove-TEXTREL-tag-in-x86.patch

>>>    create mode 100644 package/qt5/qt5webkit/0003-Exclude-backtrace-API-for-non-glibc-libraries.patch

>>>    create mode 100644 package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch

>>>    create mode 100644 package/qt5/qt5webkit/Config.in

>>>    create mode 100644 package/qt5/qt5webkit/qt5webkit.hash

>>>    create mode 100644 package/qt5/qt5webkit/qt5webkit.mk

>>>

>>> diff --git a/Config.in.legacy b/Config.in.legacy

>>> index 60702ce..6691c50 100644

>>> --- a/Config.in.legacy

>>> +++ b/Config.in.legacy

>>> @@ -152,13 +152,6 @@ config BR2_PACKAGE_QT5WEBKIT_EXAMPLES

>>>          The qt5webkit-examples package has been removed, since it

>>>          was removed from upstream starting from Qt 5.6.

>>>

>>> -config BR2_PACKAGE_QT5WEBKIT

>>> -     bool "qt5webkit package removed"

>>> -     select BR2_LEGACY

>>> -     help

>>> -       The qt5webkit package has been removed, since it was removed

>>> -       from upstream starting from Qt 5.6.

>>> -

>>>    config BR2_PACKAGE_QT5QUICK1

>>>        bool "qt5quick1 package removed"

>>>        select BR2_LEGACY

>>> diff --git a/package/qt5/Config.in b/package/qt5/Config.in

>>> index f673daa..0c0e971 100644

>>> --- a/package/qt5/Config.in

>>> +++ b/package/qt5/Config.in

>>> @@ -49,4 +49,5 @@ source "package/qt5/qt5x11extras/Config.in"

>>>    source "package/qt5/qt5xmlpatterns/Config.in"

>>>    comment "legacy compatibility"

>>>    source "package/qt5/qt5script/Config.in"

>>

>> You should probably add an "unsupported version" comment to differ from

>> "legacy compatibility" which is still support by Qt community but tagged

>> as deprecated.

>

> Yes I wasn't sure about that actually, "unsupported packages" might be

> better. Anyone else has a suggestions on the comment name? I've let

> legacy for now since it is still true.


"unsupported packages" is fine for me.

>

>>> +source "package/qt5/qt5webkit/Config.in"

>>>    endif

>>> diff --git a/package/qt5/qt5webkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch b/package/qt5/qt5webkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch

>>> new file mode 100644

>>> index 0000000..e8b0e43

>>> --- /dev/null

>>> +++ b/package/qt5/qt5webkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch

>>> @@ -0,0 +1,30 @@

>>> +From 1735a8484ef9ae336f8d607b56bda64c8af10c79 Mon Sep 17 00:00:00 2001

>>> +From: Trevor Woerner <trevor.woerner@linaro.org>

>>> +Date: Fri, 7 Feb 2014 04:07:17 +0100

>>> +Subject: [PATCH 1/3] qtwebkit: fix QA issue (bad RPATH)

>>> +

>>> +Building qtwebkit causes a QA issue such that QtWebPluginProcess and

>>> +QtWebProcess contain bad RPATHs which point into the build location. This fix

>>> +adds a patch to not include the rpath.prf which causes this problem.

>>> +

>>> +Signed-off-by: Trevor Woerner <trevor.woerner@linaro.org>

>>> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>

>>

>> You should add your signed-off-by and maybe a Upstream-status if you

>> find the information.

>

> Not sure I should, I've done absolutely nothing in regard to that

> patch apart from a 'cp' command from the Yocto layer to Buildroot.


According to buildroot manual : "You should add a Signed-off-by 
statement in the header of the each patch to help with keeping track of 
the changes and to certify that the patch is released under the same 
license as the software that is modified." even for a cp :)
See 
https://buildroot.org/downloads/manual/manual.html#_format_and_licensing_of_the_package_patches

>

> As for the upstream status I can try to find out.

>

>>> <snip>

>>> +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)

>>> +QT5WEBKIT_DEPENDENCIES += qt5declarative

>>> +endif

>>> +

>>> +define QT5WEBKIT_CONFIGURE_CMDS

>>

>> You should add a comment to describe the reason to create .git folder.

>

> Yes you are right, I will, especially since I hated wasting time

> building the packages x number of times because of a missing folder.

>

>>> +     mkdir -p $(@D)/.git || true

>>

>> is `|| true` really needed?

>

> No you're right it is useless. In the case of Yocto, this is the last

> do_configure_prepend command so I guess they just want to make sure to

> return a good value even if the folder already exists.

>

> I'll submit a V2 once we've decided the comment name for this package.

>

> Thanks for you review.

>

> Regards,

> Gary

>
Arnout Vandecappelle March 29, 2016, 10:20 p.m. UTC | #4
On 03/29/16 14:48, Gary Bisson wrote:
> Although this package has been removed from the official release
> packages since Qt5.6.0, it is still available for users to build
> it from source. This is useful for platforms without GPU since its
> successor (QtWebEngine) requires OpenGL support.
>
> The package now matches the community-based meta-qt5 Yocto layer,
> using the exact same revision of the qtwebkit source from github:
> https://github.com/meta-qt5/meta-qt5/commit/e434995a
>
> Here is the project source tree:
> https://github.com/qtproject/qtwebkit
>
> All the patches have been pulled from Yocto as well.
>
> Since we are now using the source from the git repository, we need
> to create an empty .git/ folder to force the headers re-generation.
> https://github.com/meta-qt5/meta-qt5/blob/jethro/recipes-qt/qt5/qt5.inc#L33
>
> Note that GPLv3 license option has been added with this release.
>
> Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>
[snip]
> diff --git a/package/qt5/Config.in b/package/qt5/Config.in
> index f673daa..0c0e971 100644
> --- a/package/qt5/Config.in
> +++ b/package/qt5/Config.in
> @@ -49,4 +49,5 @@ source "package/qt5/qt5x11extras/Config.in"
>   source "package/qt5/qt5xmlpatterns/Config.in"
>   comment "legacy compatibility"
>   source "package/qt5/qt5script/Config.in"
> +source "package/qt5/qt5webkit/Config.in"

  For me it's not needed to add an additional comment. I also don't think it's 
necessary to distinguish between upstream-supported legacy packages and 
not-upstream-supported one in the menu - better do that (more verbosely) in the 
help text.

  Maybe change the comment into "legacy modules", because the webkit thing is 
not for compatibility.

>   endif
> diff --git a/package/qt5/qt5webkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch b/package/qt5/qt5webkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch
> new file mode 100644
> index 0000000..e8b0e43
> --- /dev/null
> +++ b/package/qt5/qt5webkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch
> @@ -0,0 +1,30 @@
> +From 1735a8484ef9ae336f8d607b56bda64c8af10c79 Mon Sep 17 00:00:00 2001
> +From: Trevor Woerner <trevor.woerner@linaro.org>
> +Date: Fri, 7 Feb 2014 04:07:17 +0100
> +Subject: [PATCH 1/3] qtwebkit: fix QA issue (bad RPATH)

  Generate git patches with -N, so there is no [PATH 1/3] header (which in this 
case is alrady incorrect because there are 4 patches, not 3).

> +
> +Building qtwebkit causes a QA issue such that QtWebPluginProcess and
> +QtWebProcess contain bad RPATHs which point into the build location. This fix
> +adds a patch to not include the rpath.prf which causes this problem.
> +
> +Signed-off-by: Trevor Woerner <trevor.woerner@linaro.org>
> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>

  As Julien wrote, you have to add your Sob to indicate that the license is OK.

[snip]
> diff --git a/package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch b/package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch
> new file mode 100644
> index 0000000..c5e6ac5
> --- /dev/null
> +++ b/package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch
> @@ -0,0 +1,33 @@
> +From 5dd4bb67cfce812fd7686e43616e2069f354a7df Mon Sep 17 00:00:00 2001
> +From: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
> +Date: Mon, 22 Feb 2016 10:57:32 +0100
> +Subject: [PATCH] Fix linking with libpthread
> +
> +WebKit use libpthread directly but is depending on other qt modules
> +causing it to be linked against, which might break unless -lpthread
> +is last. Instead just add it explicitly after the static libraries.
> +
> +Upstream-Status: Backport from 5.7 branch

  I thought qtwebkit was removed? So how can it be backported from the 5.7 branch?


> +
> +Change-Id: I2b95cff2c96373f8dce6f95052c4fccbe1982b33
> +Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
> +Signed-off-by: Jonathan Liu <net147@gmail.com>
> +---
> + Tools/qmake/mkspecs/features/default_post.prf | 1 +
> + 1 file changed, 1 insertion(+)
> +
> +diff --git a/Tools/qmake/mkspecs/features/default_post.prf b/Tools/qmake/mkspecs/features/default_post.prf
> +index 67276b7..39bb3f7 100644
> +--- a/Tools/qmake/mkspecs/features/default_post.prf
> ++++ b/Tools/qmake/mkspecs/features/default_post.prf
> +@@ -201,6 +201,7 @@ needToLink() {
> +         linkAgainstLibrary($$library, $$eval(WEBKIT.$${library_identifier}.root_source_dir))
> +         LIBS += $$eval(WEBKIT.$${library_identifier}.dependent_libs)
> +     }
> ++    posix:!darwin: LIBS += -lpthread
> + }
> +
> + creating_module {
> +--
> +2.7.1
> +
> diff --git a/package/qt5/qt5webkit/Config.in b/package/qt5/qt5webkit/Config.in
> new file mode 100644
> index 0000000..fb84b1e
> --- /dev/null
> +++ b/package/qt5/qt5webkit/Config.in
> @@ -0,0 +1,24 @@
> +config BR2_PACKAGE_QT5WEBKIT
> +	bool "qt5webkit"
> +	select BR2_PACKAGE_QT5BASE
> +	select BR2_PACKAGE_QT5BASE_ICU
> +	select BR2_PACKAGE_QT5BASE_GUI
> +	select BR2_PACKAGE_SQLITE
> +	select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_QT5BASE_XCB
> +	select BR2_PACKAGE_XLIB_LIBXRENDER if BR2_PACKAGE_QT5BASE_XCB
> +	# This module does not support static linking
> +	depends on !BR2_STATIC_LIBS
> +	depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
> +	depends on !BR2_BINFMT_FLAT # icu
> +	help
> +	  Qt is a cross-platform application and UI framework for
> +	  developers using C++.
> +
> +	  This package corresponds to the qt5webkit module.
> +
> +	  This package has been removed from the official release packages
> +	  since Qt5.6.0, but it is still available for users to build it
> +	  from source. This is useful for platforms without GPU since the
> +	  successor (QtWebEngine) requires OpenGL support.

  Yes, that's what I mean!

> +
> +	  http://qt.io
> diff --git a/package/qt5/qt5webkit/qt5webkit.hash b/package/qt5/qt5webkit/qt5webkit.hash
> new file mode 100644
> index 0000000..d2ac7bb
> --- /dev/null
> +++ b/package/qt5/qt5webkit/qt5webkit.hash
> @@ -0,0 +1,2 @@
> +# locally computed
> +sha256 1c79843ef32313312290d4fe0b87256a9129dc44d62b01789a692981edf4d8ab  qt5webkit-d2ff5a085572b1ee24dcb42ae107063f3142d14e.tar.gz
> diff --git a/package/qt5/qt5webkit/qt5webkit.mk b/package/qt5/qt5webkit/qt5webkit.mk
> new file mode 100644
> index 0000000..7bcad91
> --- /dev/null
> +++ b/package/qt5/qt5webkit/qt5webkit.mk
> @@ -0,0 +1,58 @@
> +################################################################################
> +#
> +# qt5webkit
> +#
> +################################################################################
> +
> +QT5WEBKIT_VERSION = d2ff5a085572b1ee24dcb42ae107063f3142d14e
> +QT5WEBKIT_SITE = $(call github,qtproject,qtwebkit,$(QT5WEBKIT_VERSION))

  In case anyone asks: the reason to use github is because it supports 
downloading tarballs from random commits, while cgit doesn't. But I'd like to 
see a comment to explain this.

> +QT5WEBKIT_DEPENDENCIES = qt5base sqlite host-ruby host-gperf host-bison host-flex
> +QT5WEBKIT_INSTALL_STAGING = YES
> +
> +QT5WEBKIT_LICENSE_FILES = Source/WebCore/LICENSE-LGPL-2 Source/WebCore/LICENSE-LGPL-2.1
> +
> +ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y)
> +QT5WEBKIT_LICENSE = LGPLv2+ (WebCore), LGPLv2.1 with exception or LGPLv3 or GPLv2 or GPLv3
> +# Source files contain references to LGPL_EXCEPTION.txt but it is not included
> +# in the archive.
> +QT5WEBKIT_LICENSE_FILES += LICENSE.LGPLv21 LICENSE.LGPLv3 LICENSE.GPLv2 LICENSE.GPLv3
> +else
> +QT5WEBKIT_LICENSE = LGPLv2+ (WebCore), Commercial license
> +QT5WEBKIT_REDISTRIBUTE = NO
> +endif
> +
> +ifeq ($(BR2_PACKAGE_QT5BASE_XCB),y)
> +QT5WEBKIT_DEPENDENCIES += xlib_libXext xlib_libXrender
> +endif
> +
> +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)
> +QT5WEBKIT_DEPENDENCIES += qt5declarative
> +endif
> +
> +define QT5WEBKIT_CONFIGURE_CMDS
> +	mkdir -p $(@D)/.git || true

  That this is needed is really really suspicious... A quick grep through the 
source doesn't show anything relevant.


  Regards,
  Arnout

> +	(cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake)
> +endef
> +
> +define QT5WEBKIT_BUILD_CMDS
> +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
> +endef
> +
> +define QT5WEBKIT_INSTALL_STAGING_CMDS
> +	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
> +	$(QT5_LA_PRL_FILES_FIXUP)
> +endef
> +
> +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y)
> +define QT5WEBKIT_INSTALL_TARGET_QMLS
> +	cp -dpfr $(STAGING_DIR)/usr/qml/QtWebKit $(TARGET_DIR)/usr/qml/
> +endef
> +endif
> +
> +define QT5WEBKIT_INSTALL_TARGET_CMDS
> +	cp -dpf $(STAGING_DIR)/usr/lib/libQt5WebKit*.so.* $(TARGET_DIR)/usr/lib
> +	cp -dpf $(@D)/bin/* $(TARGET_DIR)/usr/bin/
> +	$(QT5WEBKIT_INSTALL_TARGET_QMLS)
> +endef
> +
> +$(eval $(generic-package))
>
Gary Bisson March 30, 2016, 1:13 p.m. UTC | #5
Arnout, All,

On Wed, Mar 30, 2016 at 12:20 AM, Arnout Vandecappelle <arnout@mind.be> wrote:
>
> On 03/29/16 14:48, Gary Bisson wrote:
>>
>> Although this package has been removed from the official release
>> packages since Qt5.6.0, it is still available for users to build
>> it from source. This is useful for platforms without GPU since its
>> successor (QtWebEngine) requires OpenGL support.
>>
>> The package now matches the community-based meta-qt5 Yocto layer,
>> using the exact same revision of the qtwebkit source from github:
>> https://github.com/meta-qt5/meta-qt5/commit/e434995a
>>
>> Here is the project source tree:
>> https://github.com/qtproject/qtwebkit
>>
>> All the patches have been pulled from Yocto as well.
>>
>> Since we are now using the source from the git repository, we need
>> to create an empty .git/ folder to force the headers re-generation.
>> https://github.com/meta-qt5/meta-qt5/blob/jethro/recipes-qt/qt5/qt5.inc#L33
>>
>> Note that GPLv3 license option has been added with this release.
>>
>> Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>
>
> [snip]
>>
>> diff --git a/package/qt5/Config.in b/package/qt5/Config.in
>> index f673daa..0c0e971 100644
>> --- a/package/qt5/Config.in
>> +++ b/package/qt5/Config.in
>> @@ -49,4 +49,5 @@ source "package/qt5/qt5x11extras/Config.in"
>>   source "package/qt5/qt5xmlpatterns/Config.in"
>>   comment "legacy compatibility"
>>   source "package/qt5/qt5script/Config.in"
>> +source "package/qt5/qt5webkit/Config.in"
>
>
>  For me it's not needed to add an additional comment. I also don't think it's necessary to distinguish between upstream-supported legacy packages and not-upstream-supported one in the menu - better do that (more verbosely) in the help text.
>
>  Maybe change the comment into "legacy modules", because the webkit thing is not for compatibility.

Ok that I'll leave it as-is for now and we could submit another patch
to rename this later.

>>   endif
>> diff --git a/package/qt5/qt5webkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch b/package/qt5/qt5webkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch
>> new file mode 100644
>> index 0000000..e8b0e43
>> --- /dev/null
>> +++ b/package/qt5/qt5webkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch
>> @@ -0,0 +1,30 @@
>> +From 1735a8484ef9ae336f8d607b56bda64c8af10c79 Mon Sep 17 00:00:00 2001
>> +From: Trevor Woerner <trevor.woerner@linaro.org>
>> +Date: Fri, 7 Feb 2014 04:07:17 +0100
>> +Subject: [PATCH 1/3] qtwebkit: fix QA issue (bad RPATH)
>
>  Generate git patches with -N, so there is no [PATH 1/3] header (which in this case is alrady incorrect because there are 4 patches, not 3).

I'll remove it manually, once again I just pulled the patches from
Yocto without modification, I thought I'd better leave them untouched
to it's easier to track.

>> +
>> +Building qtwebkit causes a QA issue such that QtWebPluginProcess and
>> +QtWebProcess contain bad RPATHs which point into the build location. This fix
>> +adds a patch to not include the rpath.prf which causes this problem.
>> +
>> +Signed-off-by: Trevor Woerner <trevor.woerner@linaro.org>
>> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
>
>
>  As Julien wrote, you have to add your Sob to indicate that the license is OK.

Ok, if you say so I will.

>> diff --git a/package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch b/package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch
>> new file mode 100644
>> index 0000000..c5e6ac5
>> --- /dev/null
>> +++ b/package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch
>> @@ -0,0 +1,33 @@
>> +From 5dd4bb67cfce812fd7686e43616e2069f354a7df Mon Sep 17 00:00:00 2001
>> +From: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
>> +Date: Mon, 22 Feb 2016 10:57:32 +0100
>> +Subject: [PATCH] Fix linking with libpthread
>> +
>> +WebKit use libpthread directly but is depending on other qt modules
>> +causing it to be linked against, which might break unless -lpthread
>> +is last. Instead just add it explicitly after the static libraries.
>> +
>> +Upstream-Status: Backport from 5.7 branch
>
>
>  I thought qtwebkit was removed? So how can it be backported from the 5.7 branch?

It is removed "from the package releases" but it's still under some
development/maintenance, the 5.7 branch exists:
https://github.com/qtproject/qtwebkit/tree/5.7

>> +
>> +Change-Id: I2b95cff2c96373f8dce6f95052c4fccbe1982b33
>> +Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
>> +Signed-off-by: Jonathan Liu <net147@gmail.com>
>> +---
>> + Tools/qmake/mkspecs/features/default_post.prf | 1 +
>> + 1 file changed, 1 insertion(+)
>> +
>> +diff --git a/Tools/qmake/mkspecs/features/default_post.prf b/Tools/qmake/mkspecs/features/default_post.prf
>> +index 67276b7..39bb3f7 100644
>> +--- a/Tools/qmake/mkspecs/features/default_post.prf
>> ++++ b/Tools/qmake/mkspecs/features/default_post.prf
>> +@@ -201,6 +201,7 @@ needToLink() {
>> +         linkAgainstLibrary($$library, $$eval(WEBKIT.$${library_identifier}.root_source_dir))
>> +         LIBS += $$eval(WEBKIT.$${library_identifier}.dependent_libs)
>> +     }
>> ++    posix:!darwin: LIBS += -lpthread
>> + }
>> +
>> + creating_module {
>> +--
>> +2.7.1
>> +
>> diff --git a/package/qt5/qt5webkit/Config.in b/package/qt5/qt5webkit/Config.in
>> new file mode 100644
>> index 0000000..fb84b1e
>> --- /dev/null
>> +++ b/package/qt5/qt5webkit/Config.in
>> @@ -0,0 +1,24 @@
>> +config BR2_PACKAGE_QT5WEBKIT
>> +       bool "qt5webkit"
>> +       select BR2_PACKAGE_QT5BASE
>> +       select BR2_PACKAGE_QT5BASE_ICU
>> +       select BR2_PACKAGE_QT5BASE_GUI
>> +       select BR2_PACKAGE_SQLITE
>> +       select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_QT5BASE_XCB
>> +       select BR2_PACKAGE_XLIB_LIBXRENDER if BR2_PACKAGE_QT5BASE_XCB
>> +       # This module does not support static linking
>> +       depends on !BR2_STATIC_LIBS
>> +       depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
>> +       depends on !BR2_BINFMT_FLAT # icu
>> +       help
>> +         Qt is a cross-platform application and UI framework for
>> +         developers using C++.
>> +
>> +         This package corresponds to the qt5webkit module.
>> +
>> +         This package has been removed from the official release packages
>> +         since Qt5.6.0, but it is still available for users to build it
>> +         from source. This is useful for platforms without GPU since the
>> +         successor (QtWebEngine) requires OpenGL support.
>
>
>  Yes, that's what I mean!
>
>> +
>> +         http://qt.io
>> diff --git a/package/qt5/qt5webkit/qt5webkit.hash b/package/qt5/qt5webkit/qt5webkit.hash
>> new file mode 100644
>> index 0000000..d2ac7bb
>> --- /dev/null
>> +++ b/package/qt5/qt5webkit/qt5webkit.hash
>> @@ -0,0 +1,2 @@
>> +# locally computed
>> +sha256 1c79843ef32313312290d4fe0b87256a9129dc44d62b01789a692981edf4d8ab  qt5webkit-d2ff5a085572b1ee24dcb42ae107063f3142d14e.tar.gz
>> diff --git a/package/qt5/qt5webkit/qt5webkit.mk b/package/qt5/qt5webkit/qt5webkit.mk
>> new file mode 100644
>> index 0000000..7bcad91
>> --- /dev/null
>> +++ b/package/qt5/qt5webkit/qt5webkit.mk
>> @@ -0,0 +1,58 @@
>> +################################################################################
>> +#
>> +# qt5webkit
>> +#
>> +################################################################################
>> +
>> +QT5WEBKIT_VERSION = d2ff5a085572b1ee24dcb42ae107063f3142d14e
>> +QT5WEBKIT_SITE = $(call github,qtproject,qtwebkit,$(QT5WEBKIT_VERSION))
>
>
>  In case anyone asks: the reason to use github is because it supports downloading tarballs from random commits, while cgit doesn't. But I'd like to see a comment to explain this.

Ok I'll add it.

>> +QT5WEBKIT_DEPENDENCIES = qt5base sqlite host-ruby host-gperf host-bison host-flex
>> +QT5WEBKIT_INSTALL_STAGING = YES
>> +
>> +QT5WEBKIT_LICENSE_FILES = Source/WebCore/LICENSE-LGPL-2 Source/WebCore/LICENSE-LGPL-2.1
>> +
>> +ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y)
>> +QT5WEBKIT_LICENSE = LGPLv2+ (WebCore), LGPLv2.1 with exception or LGPLv3 or GPLv2 or GPLv3
>> +# Source files contain references to LGPL_EXCEPTION.txt but it is not included
>> +# in the archive.
>> +QT5WEBKIT_LICENSE_FILES += LICENSE.LGPLv21 LICENSE.LGPLv3 LICENSE.GPLv2 LICENSE.GPLv3
>> +else
>> +QT5WEBKIT_LICENSE = LGPLv2+ (WebCore), Commercial license
>> +QT5WEBKIT_REDISTRIBUTE = NO
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_QT5BASE_XCB),y)
>> +QT5WEBKIT_DEPENDENCIES += xlib_libXext xlib_libXrender
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)
>> +QT5WEBKIT_DEPENDENCIES += qt5declarative
>> +endif
>> +
>> +define QT5WEBKIT_CONFIGURE_CMDS
>> +       mkdir -p $(@D)/.git || true
>
>
>  That this is needed is really really suspicious... A quick grep through the source doesn't show anything relevant.

Well I couldn't find where it makes a difference either but it
definitely does. You can try building without it, here is a full
description of the issue:
http://forum.qt.io/topic/65534/qt5-6-cross-compiling-qtwebkit-issue

I've answered my own question though, looking at Yocto recipe:
https://github.com/meta-qt5/meta-qt5/blob/master/recipes-qt/qt5/qt5.inc#L36

Regards,
Gary
diff mbox

Patch

diff --git a/Config.in.legacy b/Config.in.legacy
index 60702ce..6691c50 100644
--- a/Config.in.legacy
+++ b/Config.in.legacy
@@ -152,13 +152,6 @@  config BR2_PACKAGE_QT5WEBKIT_EXAMPLES
 	  The qt5webkit-examples package has been removed, since it
 	  was removed from upstream starting from Qt 5.6.
 
-config BR2_PACKAGE_QT5WEBKIT
-	bool "qt5webkit package removed"
-	select BR2_LEGACY
-	help
-	  The qt5webkit package has been removed, since it was removed
-	  from upstream starting from Qt 5.6.
-
 config BR2_PACKAGE_QT5QUICK1
 	bool "qt5quick1 package removed"
 	select BR2_LEGACY
diff --git a/package/qt5/Config.in b/package/qt5/Config.in
index f673daa..0c0e971 100644
--- a/package/qt5/Config.in
+++ b/package/qt5/Config.in
@@ -49,4 +49,5 @@  source "package/qt5/qt5x11extras/Config.in"
 source "package/qt5/qt5xmlpatterns/Config.in"
 comment "legacy compatibility"
 source "package/qt5/qt5script/Config.in"
+source "package/qt5/qt5webkit/Config.in"
 endif
diff --git a/package/qt5/qt5webkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch b/package/qt5/qt5webkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch
new file mode 100644
index 0000000..e8b0e43
--- /dev/null
+++ b/package/qt5/qt5webkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch
@@ -0,0 +1,30 @@ 
+From 1735a8484ef9ae336f8d607b56bda64c8af10c79 Mon Sep 17 00:00:00 2001
+From: Trevor Woerner <trevor.woerner@linaro.org>
+Date: Fri, 7 Feb 2014 04:07:17 +0100
+Subject: [PATCH 1/3] qtwebkit: fix QA issue (bad RPATH)
+
+Building qtwebkit causes a QA issue such that QtWebPluginProcess and
+QtWebProcess contain bad RPATHs which point into the build location. This fix
+adds a patch to not include the rpath.prf which causes this problem.
+
+Signed-off-by: Trevor Woerner <trevor.woerner@linaro.org>
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ Tools/qmake/mkspecs/features/unix/default_post.prf | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/Tools/qmake/mkspecs/features/unix/default_post.prf b/Tools/qmake/mkspecs/features/unix/default_post.prf
+index fd66af6..ef754c3 100644
+--- a/Tools/qmake/mkspecs/features/unix/default_post.prf
++++ b/Tools/qmake/mkspecs/features/unix/default_post.prf
+@@ -61,7 +61,6 @@ linux-*g++* {
+     }
+ }
+ 
+-contains(TEMPLATE, app): CONFIG += rpath
+ 
+ CONFIG(debug, debug|release)|force_debug_info {
+     # Make ld not cache the symbol tables of input files in memory to avoid memory exhaustion during the linking phase.
+-- 
+2.7.0
+
diff --git a/package/qt5/qt5webkit/0002-Remove-TEXTREL-tag-in-x86.patch b/package/qt5/qt5webkit/0002-Remove-TEXTREL-tag-in-x86.patch
new file mode 100644
index 0000000..b3a8615
--- /dev/null
+++ b/package/qt5/qt5webkit/0002-Remove-TEXTREL-tag-in-x86.patch
@@ -0,0 +1,79 @@ 
+From ae16ce17cc7060274a0b0c165b953fc32540f977 Mon Sep 17 00:00:00 2001
+From: Magnus Granberg <zorry@gentoo.org>
+Date: Fri, 27 Feb 2015 11:55:09 +0100
+Subject: [PATCH 2/3] Remove TEXTREL tag in x86
+
+Fix textrel QA warnings when building qtwebkit for x86:
+
+  WARNING: QA Issue: ELF binary '/home/andre/rdk/rdk-master/build-vbox32/tmp/work/core2-32-rdk-linux/qtwebkit/5.4.0-r0/packages-split/qtwebkit/usr/lib/libQt5WebKit.so.5.4.0' has relocations in .text [textrel]
+
+Patch from upstream webkit:
+
+  https://bugs.webkit.org/show_bug.cgi?id=70610
+
+Minor refresh required to apply cleanly to the older webkit sources used
+by qtwebkit. Specifically, the patch needed to be modified to account
+for PLATFORM(MAC) -> OS(DARWIN) renaming in recent webkit which is not
+part of qtwebkit yet ( https://bugs.webkit.org/show_bug.cgi?id=99683 ).
+
+Upstream status [webkit] : backport
+Upstream status [qtwebkit] : unclear
+
+Bug: https://bugs.webkit.org/show_bug.cgi?id=70610
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ Source/JavaScriptCore/jit/ThunkGenerators.cpp | 24 ++++++++++++++++++++++++
+ Source/WTF/wtf/InlineASM.h                    |  2 ++
+ 2 files changed, 26 insertions(+)
+
+diff --git a/Source/JavaScriptCore/jit/ThunkGenerators.cpp b/Source/JavaScriptCore/jit/ThunkGenerators.cpp
+index 9684df2..8af82d8 100644
+--- a/Source/JavaScriptCore/jit/ThunkGenerators.cpp
++++ b/Source/JavaScriptCore/jit/ThunkGenerators.cpp
+@@ -524,6 +524,30 @@ double jsRound(double d)
+     } \
+     static MathThunk UnaryDoubleOpWrapper(function) = &function##Thunk;
+ 
++#elif CPU(X86) && COMPILER(GCC) && OS(LINUX) && defined(__PIC__)
++#define defineUnaryDoubleOpWrapper(function) \
++    asm( \
++        ".text\n" \
++        ".globl " SYMBOL_STRING(function##Thunk) "\n" \
++        HIDE_SYMBOL(function##Thunk) "\n" \
++        SYMBOL_STRING(function##Thunk) ":" "\n" \
++        "pushl %ebx\n" \
++        "subl $20, %esp\n" \
++        "movsd %xmm0, (%esp) \n" \
++        "call __x86.get_pc_thunk.bx\n" \
++        "addl $_GLOBAL_OFFSET_TABLE_, %ebx\n" \
++        "call " GLOBAL_REFERENCE(function) "\n" \
++        "fstpl (%esp) \n" \
++        "movsd (%esp), %xmm0 \n" \
++        "addl $20, %esp\n" \
++        "popl %ebx\n" \
++        "ret\n" \
++    );\
++    extern "C" { \
++        MathThunkCallingConvention function##Thunk(MathThunkCallingConvention); \
++    } \
++    static MathThunk UnaryDoubleOpWrapper(function) = &function##Thunk;
++
+ #elif CPU(X86) && COMPILER(GCC) && (PLATFORM(MAC) || OS(LINUX))
+ #define defineUnaryDoubleOpWrapper(function) \
+     asm( \
+diff --git a/Source/WTF/wtf/InlineASM.h b/Source/WTF/wtf/InlineASM.h
+index 0a2fe78..2dc40ef 100644
+--- a/Source/WTF/wtf/InlineASM.h
++++ b/Source/WTF/wtf/InlineASM.h
+@@ -46,6 +46,8 @@
+ #define GLOBAL_REFERENCE(name) #name "@plt"
+ #elif CPU(X86) && COMPILER(MINGW)
+ #define GLOBAL_REFERENCE(name) "@" #name "@4"
++#elif OS(LINUX) && CPU(X86) && defined(__PIC__)
++#define GLOBAL_REFERENCE(name) SYMBOL_STRING(name) "@plt"
+ #else
+ #define GLOBAL_REFERENCE(name) SYMBOL_STRING(name)
+ #endif
+-- 
+2.7.0
+
diff --git a/package/qt5/qt5webkit/0003-Exclude-backtrace-API-for-non-glibc-libraries.patch b/package/qt5/qt5webkit/0003-Exclude-backtrace-API-for-non-glibc-libraries.patch
new file mode 100644
index 0000000..4379866
--- /dev/null
+++ b/package/qt5/qt5webkit/0003-Exclude-backtrace-API-for-non-glibc-libraries.patch
@@ -0,0 +1,38 @@ 
+From 6c36f0ff8c1f5852c33d2b23714f9f187cc6ff26 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 5 Jun 2015 19:55:05 -0700
+Subject: [PATCH 3/3] Exclude backtrace() API for non-glibc libraries
+
+It was excluding musl with current checks, so lets make it such that it
+considers only glibc when using backtrace API
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Source/WTF/wtf/Assertions.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Source/WTF/wtf/Assertions.cpp b/Source/WTF/wtf/Assertions.cpp
+index 1b2091f..ba03a28 100644
+--- a/Source/WTF/wtf/Assertions.cpp
++++ b/Source/WTF/wtf/Assertions.cpp
+@@ -61,7 +61,7 @@
+ #include <windows.h>
+ #endif
+ 
+-#if (OS(DARWIN) || (OS(LINUX) && !defined(__UCLIBC__))) && !OS(ANDROID)
++#if (OS(DARWIN) || (OS(LINUX) && defined (__GLIBC__) && !defined(__UCLIBC__))) && !OS(ANDROID)
+ #include <cxxabi.h>
+ #include <dlfcn.h>
+ #include <execinfo.h>
+@@ -245,7 +245,7 @@ void WTFReportArgumentAssertionFailure(const char* file, int line, const char* f
+ 
+ void WTFGetBacktrace(void** stack, int* size)
+ {
+-#if (OS(DARWIN) || (OS(LINUX) && !defined(__UCLIBC__))) && !OS(ANDROID)
++#if (OS(DARWIN) || (OS(LINUX) && defined(__GLIBC__) && !defined(__UCLIBC__))) && !OS(ANDROID)
+     *size = backtrace(stack, *size);
+ #elif OS(WINDOWS) && !OS(WINCE)
+     // The CaptureStackBackTrace function is available in XP, but it is not defined
+-- 
+2.7.0
+
diff --git a/package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch b/package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch
new file mode 100644
index 0000000..c5e6ac5
--- /dev/null
+++ b/package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch
@@ -0,0 +1,33 @@ 
+From 5dd4bb67cfce812fd7686e43616e2069f354a7df Mon Sep 17 00:00:00 2001
+From: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
+Date: Mon, 22 Feb 2016 10:57:32 +0100
+Subject: [PATCH] Fix linking with libpthread
+
+WebKit use libpthread directly but is depending on other qt modules
+causing it to be linked against, which might break unless -lpthread
+is last. Instead just add it explicitly after the static libraries.
+
+Upstream-Status: Backport from 5.7 branch
+
+Change-Id: I2b95cff2c96373f8dce6f95052c4fccbe1982b33
+Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
+Signed-off-by: Jonathan Liu <net147@gmail.com>
+---
+ Tools/qmake/mkspecs/features/default_post.prf | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Tools/qmake/mkspecs/features/default_post.prf b/Tools/qmake/mkspecs/features/default_post.prf
+index 67276b7..39bb3f7 100644
+--- a/Tools/qmake/mkspecs/features/default_post.prf
++++ b/Tools/qmake/mkspecs/features/default_post.prf
+@@ -201,6 +201,7 @@ needToLink() {
+         linkAgainstLibrary($$library, $$eval(WEBKIT.$${library_identifier}.root_source_dir))
+         LIBS += $$eval(WEBKIT.$${library_identifier}.dependent_libs)
+     }
++    posix:!darwin: LIBS += -lpthread
+ }
+ 
+ creating_module {
+-- 
+2.7.1
+
diff --git a/package/qt5/qt5webkit/Config.in b/package/qt5/qt5webkit/Config.in
new file mode 100644
index 0000000..fb84b1e
--- /dev/null
+++ b/package/qt5/qt5webkit/Config.in
@@ -0,0 +1,24 @@ 
+config BR2_PACKAGE_QT5WEBKIT
+	bool "qt5webkit"
+	select BR2_PACKAGE_QT5BASE
+	select BR2_PACKAGE_QT5BASE_ICU
+	select BR2_PACKAGE_QT5BASE_GUI
+	select BR2_PACKAGE_SQLITE
+	select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_QT5BASE_XCB
+	select BR2_PACKAGE_XLIB_LIBXRENDER if BR2_PACKAGE_QT5BASE_XCB
+	# This module does not support static linking
+	depends on !BR2_STATIC_LIBS
+	depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
+	depends on !BR2_BINFMT_FLAT # icu
+	help
+	  Qt is a cross-platform application and UI framework for
+	  developers using C++.
+
+	  This package corresponds to the qt5webkit module.
+
+	  This package has been removed from the official release packages
+	  since Qt5.6.0, but it is still available for users to build it
+	  from source. This is useful for platforms without GPU since the
+	  successor (QtWebEngine) requires OpenGL support.
+
+	  http://qt.io
diff --git a/package/qt5/qt5webkit/qt5webkit.hash b/package/qt5/qt5webkit/qt5webkit.hash
new file mode 100644
index 0000000..d2ac7bb
--- /dev/null
+++ b/package/qt5/qt5webkit/qt5webkit.hash
@@ -0,0 +1,2 @@ 
+# locally computed
+sha256 1c79843ef32313312290d4fe0b87256a9129dc44d62b01789a692981edf4d8ab  qt5webkit-d2ff5a085572b1ee24dcb42ae107063f3142d14e.tar.gz
diff --git a/package/qt5/qt5webkit/qt5webkit.mk b/package/qt5/qt5webkit/qt5webkit.mk
new file mode 100644
index 0000000..7bcad91
--- /dev/null
+++ b/package/qt5/qt5webkit/qt5webkit.mk
@@ -0,0 +1,58 @@ 
+################################################################################
+#
+# qt5webkit
+#
+################################################################################
+
+QT5WEBKIT_VERSION = d2ff5a085572b1ee24dcb42ae107063f3142d14e
+QT5WEBKIT_SITE = $(call github,qtproject,qtwebkit,$(QT5WEBKIT_VERSION))
+QT5WEBKIT_DEPENDENCIES = qt5base sqlite host-ruby host-gperf host-bison host-flex
+QT5WEBKIT_INSTALL_STAGING = YES
+
+QT5WEBKIT_LICENSE_FILES = Source/WebCore/LICENSE-LGPL-2 Source/WebCore/LICENSE-LGPL-2.1
+
+ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y)
+QT5WEBKIT_LICENSE = LGPLv2+ (WebCore), LGPLv2.1 with exception or LGPLv3 or GPLv2 or GPLv3
+# Source files contain references to LGPL_EXCEPTION.txt but it is not included
+# in the archive.
+QT5WEBKIT_LICENSE_FILES += LICENSE.LGPLv21 LICENSE.LGPLv3 LICENSE.GPLv2 LICENSE.GPLv3
+else
+QT5WEBKIT_LICENSE = LGPLv2+ (WebCore), Commercial license
+QT5WEBKIT_REDISTRIBUTE = NO
+endif
+
+ifeq ($(BR2_PACKAGE_QT5BASE_XCB),y)
+QT5WEBKIT_DEPENDENCIES += xlib_libXext xlib_libXrender
+endif
+
+ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)
+QT5WEBKIT_DEPENDENCIES += qt5declarative
+endif
+
+define QT5WEBKIT_CONFIGURE_CMDS
+	mkdir -p $(@D)/.git || true
+	(cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake)
+endef
+
+define QT5WEBKIT_BUILD_CMDS
+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
+endef
+
+define QT5WEBKIT_INSTALL_STAGING_CMDS
+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
+	$(QT5_LA_PRL_FILES_FIXUP)
+endef
+
+ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y)
+define QT5WEBKIT_INSTALL_TARGET_QMLS
+	cp -dpfr $(STAGING_DIR)/usr/qml/QtWebKit $(TARGET_DIR)/usr/qml/
+endef
+endif
+
+define QT5WEBKIT_INSTALL_TARGET_CMDS
+	cp -dpf $(STAGING_DIR)/usr/lib/libQt5WebKit*.so.* $(TARGET_DIR)/usr/lib
+	cp -dpf $(@D)/bin/* $(TARGET_DIR)/usr/bin/
+	$(QT5WEBKIT_INSTALL_TARGET_QMLS)
+endef
+
+$(eval $(generic-package))