diff options
Diffstat (limited to 'dev-qt/qtwebengine')
6 files changed, 382 insertions, 0 deletions
diff --git a/dev-qt/qtwebengine/Manifest b/dev-qt/qtwebengine/Manifest index e90acdc8989d..3ae9c0f4abe5 100644 --- a/dev-qt/qtwebengine/Manifest +++ b/dev-qt/qtwebengine/Manifest @@ -1,3 +1,4 @@ DIST qtwebengine-everywhere-src-5.11.0-rc2.tar.xz 233745356 BLAKE2B 12fd78886532b5422122fbccb5a3b1f61ee12d72e4868ba2340cd525320de017bfe13520d7ad405db396b40a2ad40152a9d12a97f900302b21a2ece100f72afa SHA512 b46733628b162cfdf47311597d09bed97048dfdddff7e6970c6e29a3b91f3f2a9641e680fdc77979ce5da6cf978a6495d245f57692c3f081caa8e896e89b0228 +DIST qtwebengine-everywhere-src-5.11.1.tar.xz 233633572 BLAKE2B 06fb9d490377ebb4af937e0fa1688cdfeb9bfdadf6c80afeef609d20a76bdb7c4fed6c1042405b762e59b11d7b16369990c66a395ec1b6b48bbb1ea5b8cd47f2 SHA512 3e17f88b690c06f6d28c30d8d43588eaad9b0b214434b219c3d8fe11969cca515a68c731d176cf640940fd3db12e95de8f723d3717555504c5b95d135fa4a596 DIST qtwebengine-opensource-src-5.9.4.tar.xz 217337248 BLAKE2B 8a8c55dc08b06b07822fd53c780c1b7898516c8a7d021711f4ad5409630a131a90b1916c21d4e83e43dac773c4c73b4a1045baf96ed3c1d39f2d3d4c35c4a8c0 SHA512 c576e81cd9d202a4614c3eedd008bc41bd6212cd4d06e639469b843726be427f9e7a9551b3e604cbfee90f8dde22afb5bcd4905818ca65234e198078971d6ac9 DIST qtwebengine-opensource-src-5.9.6.tar.xz 216733460 BLAKE2B 6f6f4d89559899b7faa6c8a31187967e5dab357d63f6c096953bdffa9ff8e8299f22f3fe97bc5295093a89200b38f47b4b214ff91765f8da3a992c5058f06e1e SHA512 493e9b4fb7274253eca107bfbb6ff044068c78997299c48b62a504ba5511c4d3e2a7f481d986f34c75d035e4804b18f74bf6a4bf0daf0f6a5778abd8aa7ee68a diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.11.1-eglGetProcAddress-fallback-lookup.patch b/dev-qt/qtwebengine/files/qtwebengine-5.11.1-eglGetProcAddress-fallback-lookup.patch new file mode 100644 index 000000000000..4b2676faa6a0 --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-5.11.1-eglGetProcAddress-fallback-lookup.patch @@ -0,0 +1,68 @@ +From a66d4cd82972996d76edff52d17464c150dec6a6 Mon Sep 17 00:00:00 2001 +From: Samuli Piippo <samuli.piippo@qt.io> +Date: Mon, 11 Jun 2018 16:16:55 +0300 +Subject: Add fallback lookup for eglGetProcAddress + +Use the GLContext to find address for eglGetProcAddress symbol, if it's +not found with dlopen. + +Change-Id: I3f5330c21ecc9b66e5e376d50d3fc6965b227f85 +Reviewed-by: Michal Klocek <michal.klocek@qt.io> +--- + src/core/gl_context_qt.cpp | 11 +++++++++++ + src/core/gl_context_qt.h | 1 + + src/core/gl_surface_qt.cpp | 4 ++++ + 3 files changed, 16 insertions(+) + +diff --git a/src/core/gl_context_qt.cpp b/src/core/gl_context_qt.cpp +index 9ed1db8b..95491709 100644 +--- a/src/core/gl_context_qt.cpp ++++ b/src/core/gl_context_qt.cpp +@@ -155,6 +155,17 @@ QFunctionPointer GLContextHelper::getGlXGetProcAddress() + return get_proc_address; + } + ++QFunctionPointer GLContextHelper::getEglGetProcAddress() ++{ ++ QFunctionPointer get_proc_address = nullptr; ++#ifndef QT_NO_OPENGL ++ if (QOpenGLContext *context = qt_gl_global_share_context()) { ++ get_proc_address = context->getProcAddress("eglGetProcAddress"); ++ } ++#endif ++ return get_proc_address; ++} ++ + QT_END_NAMESPACE + + #if defined(USE_OZONE) || defined(OS_WIN) +diff --git a/src/core/gl_context_qt.h b/src/core/gl_context_qt.h +index 8ffdad58..cecceabc 100644 +--- a/src/core/gl_context_qt.h ++++ b/src/core/gl_context_qt.h +@@ -63,6 +63,7 @@ public: + static void* getXDisplay(); + static void* getNativeDisplay(); + static QFunctionPointer getGlXGetProcAddress(); ++ static QFunctionPointer getEglGetProcAddress(); + private: + Q_INVOKABLE bool initializeContextOnBrowserThread(gl::GLContext* context, gl::GLSurface* surface, gl::GLContextAttribs attribs); + +diff --git a/src/core/gl_surface_qt.cpp b/src/core/gl_surface_qt.cpp +index 7e579246..4d38d7c2 100644 +--- a/src/core/gl_surface_qt.cpp ++++ b/src/core/gl_surface_qt.cpp +@@ -227,6 +227,10 @@ bool InitializeStaticGLBindings(GLImplementation implementation) { + base::GetFunctionPointerFromNativeLibrary(library, + "eglGetProcAddress")); + if (!get_proc_address) { ++ QFunctionPointer address = GLContextHelper::getEglGetProcAddress(); ++ get_proc_address = reinterpret_cast<gl::GLGetProcAddressProc>(address); ++ } ++ if (!get_proc_address) { + LOG(ERROR) << "eglGetProcAddress not found."; + base::UnloadNativeLibrary(library); + return false; +-- +cgit v1.1-6-g87c4 + diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.11.1-ffmpeg4.patch b/dev-qt/qtwebengine/files/qtwebengine-5.11.1-ffmpeg4.patch new file mode 100644 index 000000000000..e9ef452a8d95 --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-5.11.1-ffmpeg4.patch @@ -0,0 +1,32 @@ +From a568ded46a678eac8139cb06595819c5ae874177 Mon Sep 17 00:00:00 2001 +From: Xiaohan Wang <xhwang@chromium.org> +Date: Mon, 29 Jan 2018 21:28:28 +0000 +Subject: [PATCH] media: Increase DecoderBuffer::kPaddingSize to 64 + +AV_INPUT_BUFFER_PADDING_SIZE has been increased to 64 in FFmpeg: +https://github.com/FFmpeg/FFmpeg/commit/6e80079a2840ee407c5d126030eb1066bcbfdfc5 + +BUG=777484 + +Change-Id: I1bd68d1c1b0c3131f28d6e07e1444b89800c09db +Reviewed-on: https://chromium-review.googlesource.com/889686 +Reviewed-by: Dale Curtis <dalecurtis@chromium.org> +Commit-Queue: Xiaohan Wang <xhwang@chromium.org> +Cr-Commit-Position: refs/heads/master@{#532593} +--- + src/3rdparty/chromium/media/base/decoder_buffer.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/3rdparty/chromium/media/base/decoder_buffer.h b/src/3rdparty/chromium/media/base/decoder_buffer.h +index 0341e5784f725..60ffba708b0e5 100644 +--- a/src/3rdparty/chromium/media/base/decoder_buffer.h ++++ b/src/3rdparty/chromium/media/base/decoder_buffer.h +@@ -37,7 +37,7 @@ class MEDIA_EXPORT DecoderBuffer + : public base::RefCountedThreadSafe<DecoderBuffer> { + public: + enum { +- kPaddingSize = 32, ++ kPaddingSize = 64, + #if defined(ARCH_CPU_ARM_FAMILY) + kAlignmentSize = 16 + #else diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.11.1-libxml2-disable-catalogs.patch b/dev-qt/qtwebengine/files/qtwebengine-5.11.1-libxml2-disable-catalogs.patch new file mode 100644 index 000000000000..8ac5b90b72c8 --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-5.11.1-libxml2-disable-catalogs.patch @@ -0,0 +1,46 @@ +--- a/config.tests/xml2/xml2.cpp ++++ b/config.tests/xml2/xml2.cpp +@@ -27,9 +27,6 @@ + ****************************************************************************/ + + #include <libxml/xmlversion.h> +-#if defined(LIBXML_CATALOG_ENABLED) +-#error "libxml catalog enabled" +-#endif + #if !defined(LIBXML_ICU_ENABLED) + #error "libxml icu not enabled" + #endif +--- a/src/3rdparty/chromium/third_party/WebKit/Source/core/xml/parser/XMLDocumentParser.cpp ++++ b/src/3rdparty/chromium/third_party/WebKit/Source/core/xml/parser/XMLDocumentParser.cpp +@@ -28,6 +28,10 @@ + + #include <libxml/parser.h> + #include <libxml/parserInternals.h> ++#include <libxml/xmlversion.h> ++#if defined(LIBXML_CATALOG_ENABLED) ++#include <libxml/catalog.h> ++#endif + #include <libxslt/xslt.h> + #include <memory> + #include "core/css/StyleEngine.h" +@@ -538,10 +542,6 @@ + static bool ShouldAllowExternalLoad(const KURL& url) { + String url_string = url.GetString(); + +- // libxml should not be configured with catalogs enabled, so it +- // should not be asking to load default catalogs. +- CHECK(!IsLibxmlDefaultCatalogFile(url)); +- + // The most common DTD. There isn't much point in hammering www.w3c.org by + // requesting this URL for every XHTML document. + if (url_string.StartsWithIgnoringASCIICase("http://www.w3.org/TR/xhtml")) +@@ -646,6 +646,9 @@ + if (did_init) + return; + ++#if defined(LIBXML_CATALOG_ENABLED) ++ xmlCatalogSetDefaults(XML_CATA_ALLOW_NONE); ++#endif + xmlInitParser(); + xmlRegisterInputCallbacks(MatchFunc, OpenFunc, ReadFunc, CloseFunc); + xmlRegisterOutputCallbacks(MatchFunc, OpenFunc, WriteFunc, CloseFunc); diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.11.1-nouveau-disable-gpu.patch b/dev-qt/qtwebengine/files/qtwebengine-5.11.1-nouveau-disable-gpu.patch new file mode 100644 index 000000000000..aaf3aae462ab --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-5.11.1-nouveau-disable-gpu.patch @@ -0,0 +1,98 @@ +From: Antonio Larrosa <alarrosa@suse.com> +Subject: Disable GPU when using nouveau or running on wayland +References: boo#1005323, boo#1060990 + +Qt WebEngine uses multi-threaded OpenGL, which nouveau does not support. +It also crashes when running on wayland, the cause is not yet known. +Work around these issues by not doing GPU-accelerated rendering in such +cases. + +Index: qtwebengine-everywhere-src-5.11.0/src/core/web_engine_context.cpp +=================================================================== +--- qtwebengine-everywhere-src-5.11.0.orig/src/core/web_engine_context.cpp ++++ qtwebengine-everywhere-src-5.11.0/src/core/web_engine_context.cpp +@@ -100,6 +100,7 @@ + #include <QOffscreenSurface> + #ifndef QT_NO_OPENGL + # include <QOpenGLContext> ++# include <QOpenGLFunctions> + #endif + #include <QQuickWindow> + #include <QStringList> +@@ -178,6 +179,39 @@ void dummyGetPluginCallback(const std::v + } + #endif + ++#ifndef QT_NO_OPENGL ++QString openGLVendor() ++{ ++ QString vendor; ++ ++ QOpenGLContext *oldContext = QOpenGLContext::currentContext(); ++ QSurface *oldSurface = 0; ++ if (oldContext) ++ oldSurface = oldContext->surface(); ++ ++ QScopedPointer<QOffscreenSurface> surface( new QOffscreenSurface ); ++ surface->create(); ++ QOpenGLContext context; ++ if (!context.create()) { ++ qDebug() << "Error creating openGL context"; ++ } ++ else if (!context.makeCurrent(surface.data())) { ++ qDebug() << "Error making openGL context current context"; ++ } else { ++ const GLubyte *p; ++ QOpenGLFunctions *f = context.functions(); ++ if ((p = f->glGetString(GL_VENDOR))) ++ vendor = QString::fromLatin1(reinterpret_cast<const char *>(p)); ++ } ++ ++ context.doneCurrent(); ++ if (oldContext && oldSurface) ++ oldContext->makeCurrent(oldSurface); ++ ++ return vendor; ++} ++#endif ++ + } // namespace + + namespace QtWebEngineCore { +@@ -414,6 +448,27 @@ WebEngineContext::WebEngineContext() + const char *glType = 0; + #ifndef QT_NO_OPENGL + ++ bool disableGpu = qEnvironmentVariableIsSet("QT_WEBENGINE_DISABLE_GPU"); ++ ++ if (!qEnvironmentVariableIsSet("QT_WEBENGINE_DISABLE_WAYLAND_WORKAROUND") && platform.startsWith("wayland", Qt::CaseInsensitive)) ++ { ++ qWarning() << "Running on wayland. Qt WebEngine will disable usage of the GPU.\n" ++ "Note: you can set the QT_WEBENGINE_DISABLE_WAYLAND_WORKAROUND\n" ++ "environment variable before running this application, but this is \n" ++ "not recommended since this usually causes applications to crash."; ++ disableGpu = true; ++ } ++ ++ if (!qEnvironmentVariableIsSet("QT_WEBENGINE_DISABLE_NOUVEAU_WORKAROUND") && openGLVendor() == QStringLiteral("nouveau")) ++ { ++ qWarning() << "Nouveau openGL driver detected. Qt WebEngine will disable usage of the GPU.\n" ++ "Note: you can set the QT_WEBENGINE_DISABLE_NOUVEAU_WORKAROUND\n" ++ "environment variable before running this application, but this is \n" ++ "not recommended since this usually causes applications to crash as\n" ++ "Nouveau openGL drivers don't support multithreaded rendering"; ++ disableGpu = true; ++ } ++ + bool tryGL = + !usingANGLE() + && (!usingSoftwareDynamicGL() +@@ -424,7 +479,7 @@ WebEngineContext::WebEngineContext() + || enableWebGLSoftwareRendering + #endif + ) +- && !usingQtQuick2DRenderer(); ++ && !usingQtQuick2DRenderer() && !disableGpu; + + if (tryGL) { + if (qt_gl_global_share_context() && qt_gl_global_share_context()->isValid()) { diff --git a/dev-qt/qtwebengine/qtwebengine-5.11.1.ebuild b/dev-qt/qtwebengine/qtwebengine-5.11.1.ebuild new file mode 100644 index 000000000000..05007972333e --- /dev/null +++ b/dev-qt/qtwebengine/qtwebengine-5.11.1.ebuild @@ -0,0 +1,137 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 +PYTHON_COMPAT=( python2_7 ) +inherit multiprocessing pax-utils python-any-r1 qt5-build + +DESCRIPTION="Library for rendering dynamic web content in Qt5 C++ and QML applications" + +if [[ ${QT5_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~x86" +fi + +IUSE="alsa bindist designer geolocation pax_kernel pulseaudio +system-ffmpeg +system-icu widgets" +REQUIRED_USE="designer? ( widgets )" + +RDEPEND=" + app-arch/snappy:= + dev-libs/glib:2 + dev-libs/nspr + dev-libs/nss + ~dev-qt/qtcore-${PV} + ~dev-qt/qtdeclarative-${PV} + ~dev-qt/qtgui-${PV} + ~dev-qt/qtnetwork-${PV} + ~dev-qt/qtprintsupport-${PV} + ~dev-qt/qtwebchannel-${PV}[qml] + dev-libs/expat + dev-libs/libevent:= + dev-libs/libxml2[icu] + dev-libs/libxslt + dev-libs/protobuf:= + dev-libs/re2:= + media-libs/fontconfig + media-libs/freetype + media-libs/harfbuzz:= + media-libs/libjpeg-turbo:= + media-libs/libpng:0= + >=media-libs/libvpx-1.5:=[svc] + media-libs/libwebp:= + media-libs/mesa[egl] + media-libs/opus + net-libs/libsrtp:0= + sys-apps/dbus + sys-apps/pciutils + sys-libs/libcap + sys-libs/zlib[minizip] + virtual/libudev + x11-libs/libdrm + x11-libs/libX11 + x11-libs/libXcomposite + x11-libs/libXcursor + x11-libs/libXdamage + x11-libs/libXext + x11-libs/libXfixes + x11-libs/libXi + x11-libs/libXrandr + x11-libs/libXrender + x11-libs/libXScrnSaver + x11-libs/libXtst + alsa? ( media-libs/alsa-lib ) + designer? ( ~dev-qt/designer-${PV} ) + geolocation? ( ~dev-qt/qtpositioning-${PV} ) + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( media-video/ffmpeg:0= ) + system-icu? ( dev-libs/icu:= ) + widgets? ( + ~dev-qt/qtdeclarative-${PV}[widgets] + ~dev-qt/qtwidgets-${PV} + ) +" +DEPEND="${RDEPEND} + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + dev-util/gperf + dev-util/ninja + dev-util/re2c + sys-devel/bison + pax_kernel? ( sys-apps/elfix ) +" + +PATCHES+=( + "${FILESDIR}/${P}-libxml2-disable-catalogs.patch" # bug 653078 + "${FILESDIR}/${P}-ffmpeg4.patch" + "${FILESDIR}/${P}-eglGetProcAddress-fallback-lookup.patch" # 5.11 branch + "${FILESDIR}/${P}-nouveau-disable-gpu.patch" # bug 609752 +) + +src_prepare() { + use pax_kernel && PATCHES+=( "${FILESDIR}/${PN}-5.9.3-paxmark-mksnapshot.patch" ) + + # bug 620444 - ensure local headers are used + find "${S}" -type f -name "*.pr[fio]" | xargs sed -i -e 's|INCLUDEPATH += |&$$QTWEBENGINE_ROOT/include |' || die + + qt_use_disable_config alsa webengine-alsa src/core/config/linux.pri + qt_use_disable_config pulseaudio webengine-pulseaudio src/core/config/linux.pri + + qt_use_disable_mod designer webenginewidgets src/plugins/plugins.pro + + qt_use_disable_mod geolocation positioning \ + mkspecs/features/configure.prf \ + src/core/core_chromium.pri \ + src/core/core_common.pri + + qt_use_disable_mod widgets widgets src/src.pro + + qt5-build_src_prepare +} + +src_configure() { + export NINJA_PATH=/usr/bin/ninja + export NINJAFLAGS="${NINJAFLAGS:--j$(makeopts_jobs) -l$(makeopts_loadavg "${MAKEOPTS}" 0) -v}" + + local myqmakeargs=( + -- + -opus + -printing-and-pdf + -webp + $(usex alsa '-alsa' '') + $(usex bindist '' '-proprietary-codecs') + $(usex pulseaudio '-pulseaudio' '') + $(usex system-ffmpeg '-ffmpeg' '') + $(usex system-icu '-webengine-icu' '') + ) + qt5-build_src_configure +} + +src_install() { + qt5-build_src_install + + # bug 601472 + if [[ ! -f ${D%/}${QT5_LIBDIR}/libQt5WebEngine.so ]]; then + die "${CATEGORY}/${PF} failed to build anything. Please report to https://bugs.gentoo.org/" + fi + + pax-mark m "${D%/}${QT5_LIBEXECDIR}"/QtWebEngineProcess +} |