Date: Thursday, March 15, 2018 @ 19:09:20 Author: arojas Revision: 319343
archrelease: copy kde-unstable to kde-unstable-x86_64 Added: qt5-webengine/repos/kde-unstable-x86_64/PKGBUILD (from rev 319342, qt5-webengine/kde-unstable/PKGBUILD) qt5-webengine/repos/kde-unstable-x86_64/qtwebengine-harmony.patch (from rev 319342, qt5-webengine/kde-unstable/qtwebengine-harmony.patch) qt5-webengine/repos/kde-unstable-x86_64/qtwebengine-no-gpu.patch (from rev 319342, qt5-webengine/kde-unstable/qtwebengine-no-gpu.patch) Deleted: qt5-webengine/repos/kde-unstable-x86_64/PKGBUILD qt5-webengine/repos/kde-unstable-x86_64/qtwebengine-harmony.patch qt5-webengine/repos/kde-unstable-x86_64/qtwebengine-no-gpu.patch ---------------------------+ PKGBUILD | 124 +++++++++++++-------------- qtwebengine-harmony.patch | 154 +++++++++++++++++----------------- qtwebengine-no-gpu.patch | 198 ++++++++++++++++++++++---------------------- 3 files changed, 238 insertions(+), 238 deletions(-) Deleted: PKGBUILD =================================================================== --- PKGBUILD 2018-03-15 19:08:58 UTC (rev 319342) +++ PKGBUILD 2018-03-15 19:09:20 UTC (rev 319343) @@ -1,62 +0,0 @@ -# $Id$ -# Maintainer: Felix Yan <felixonm...@archlinux.org> -# Contributor: Andrea Scarpino <and...@archlinux.org> - -pkgname=qt5-webengine -_qtver=5.11.0-beta1 -pkgver=${_qtver/-/} -pkgrel=1 -arch=('x86_64') -url='http://qt-project.org/' -license=('LGPL3' 'LGPL2.1' 'BSD') -pkgdesc='Provides support for web applications using the Chromium browser project' -depends=('qt5-webchannel' 'qt5-location' 'libxcomposite' 'libxrandr' 'pciutils' 'libxss' - 'libevent' 'snappy' 'nss' 'protobuf' 'libxslt' 'minizip' 'ffmpeg' 're2' 'libvpx') -makedepends=('python2' 'git' 'gperf' 'jsoncpp' 'ninja' 'qt5-tools') -groups=('qt' 'qt5') -_pkgfqn="${pkgname/5-/}-everywhere-src-${_qtver}" -source=("http://download.qt.io/development_releases/qt/${pkgver%.*}/${_qtver}/submodules/${_pkgfqn}.tar.xz" - qtwebengine-harmony.patch - qtwebengine-no-gpu.patch) -sha256sums=('bcd654e82a4fc94e5d1afc5dc16696129b97ea29d763ac9d96674a93b5db8aa5' - 'feca54ab09ac0fc9d0626770a6b899a6ac5a12173c7d0c1005bc3964ec83e7b3' - '6cd70c37f3b3aea926f1ee20c1f59354f2a02d240dbf344c6dc0a75f8aa8e07b') - -prepare() { - mkdir -p build - - # Hack to force using python2 - mkdir -p bin - ln -s /usr/bin/python2 bin/python - - cd ${_pkgfqn} - - # FreeType 2.8.1 - patch -Np1 -i ../qtwebengine-harmony.patch - # Disable GPU rendering on nouveau and wayland (openSUSE) https://bugreports.qt.io/browse/QTBUG-65682 - # patch -p1 -i ../qtwebengine-no-gpu.patch -} - -build() { - cd build - - export PATH="$srcdir/bin:$PATH" - qmake ../${_pkgfqn} -- \ - -proprietary-codecs \ - -system-ffmpeg \ - -webp \ - -spellchecker -# -webengine-icu - make -} - -package() { - cd build - make INSTALL_ROOT="$pkgdir" install - - # Drop QMAKE_PRL_BUILD_DIR because reference the build dir - find "$pkgdir/usr/lib" -type f -name '*.prl' \ - -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \; - - install -Dm644 "$srcdir"/${_pkgfqn}/src/3rdparty/chromium/LICENSE "$pkgdir"/usr/share/licenses/${pkgname}/LICENSE.chromium -} Copied: qt5-webengine/repos/kde-unstable-x86_64/PKGBUILD (from rev 319342, qt5-webengine/kde-unstable/PKGBUILD) =================================================================== --- PKGBUILD (rev 0) +++ PKGBUILD 2018-03-15 19:09:20 UTC (rev 319343) @@ -0,0 +1,62 @@ +# $Id$ +# Maintainer: Felix Yan <felixonm...@archlinux.org> +# Contributor: Andrea Scarpino <and...@archlinux.org> + +pkgname=qt5-webengine +_qtver=5.11.0-beta2 +pkgver=${_qtver/-/} +pkgrel=1 +arch=('x86_64') +url='http://qt-project.org/' +license=('LGPL3' 'LGPL2.1' 'BSD') +pkgdesc='Provides support for web applications using the Chromium browser project' +depends=('qt5-webchannel' 'qt5-location' 'libxcomposite' 'libxrandr' 'pciutils' 'libxss' + 'libevent' 'snappy' 'nss' 'protobuf' 'libxslt' 'minizip' 'ffmpeg' 're2' 'libvpx') +makedepends=('python2' 'git' 'gperf' 'jsoncpp' 'ninja' 'qt5-tools') +groups=('qt' 'qt5') +_pkgfqn="${pkgname/5-/}-everywhere-src-${_qtver}" +source=("http://download.qt.io/development_releases/qt/${pkgver%.*}/${_qtver}/submodules/${_pkgfqn}.tar.xz" + qtwebengine-harmony.patch + qtwebengine-no-gpu.patch) +sha256sums=('fb5b2daffd55f0f4398e2cce9f022191543e6486b39f4a53ba67a23b5175f4fd' + 'feca54ab09ac0fc9d0626770a6b899a6ac5a12173c7d0c1005bc3964ec83e7b3' + '6cd70c37f3b3aea926f1ee20c1f59354f2a02d240dbf344c6dc0a75f8aa8e07b') + +prepare() { + mkdir -p build + + # Hack to force using python2 + mkdir -p bin + ln -s /usr/bin/python2 bin/python + + cd ${_pkgfqn} + + # FreeType 2.8.1 + patch -Np1 -i ../qtwebengine-harmony.patch + # Disable GPU rendering on nouveau and wayland (openSUSE) https://bugreports.qt.io/browse/QTBUG-65682 + # patch -p1 -i ../qtwebengine-no-gpu.patch +} + +build() { + cd build + + export PATH="$srcdir/bin:$PATH" + qmake ../${_pkgfqn} -- \ + -proprietary-codecs \ + -system-ffmpeg \ + -webp \ + -spellchecker +# -webengine-icu + make +} + +package() { + cd build + make INSTALL_ROOT="$pkgdir" install + + # Drop QMAKE_PRL_BUILD_DIR because reference the build dir + find "$pkgdir/usr/lib" -type f -name '*.prl' \ + -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \; + + install -Dm644 "$srcdir"/${_pkgfqn}/src/3rdparty/chromium/LICENSE "$pkgdir"/usr/share/licenses/${pkgname}/LICENSE.chromium +} Deleted: qtwebengine-harmony.patch =================================================================== --- qtwebengine-harmony.patch 2018-03-15 19:08:58 UTC (rev 319342) +++ qtwebengine-harmony.patch 2018-03-15 19:09:20 UTC (rev 319343) @@ -1,77 +0,0 @@ ---- qtwebengine-opensource-src-5.9.1/src/3rdparty/chromium/third_party/skia/src/ports/SkFontHost_FreeType.cpp.orig 2017-10-10 17:42:06.956950985 +0200 -+++ qtwebengine-opensource-src-5.9.1/src/3rdparty/chromium/third_party/skia/src/ports/SkFontHost_FreeType.cpp 2017-10-10 17:46:05.824187787 +0200 -@@ -99,8 +99,6 @@ - FreeTypeLibrary() - : fGetVarDesignCoordinates(nullptr) - , fLibrary(nullptr) -- , fIsLCDSupported(false) -- , fLCDExtra(0) - { - if (FT_New_Library(&gFTMemory, &fLibrary)) { - return; -@@ -147,12 +145,7 @@ - } - #endif - -- // Setup LCD filtering. This reduces color fringes for LCD smoothed glyphs. -- // The default has changed over time, so this doesn't mean the same thing to all users. -- if (FT_Library_SetLcdFilter(fLibrary, FT_LCD_FILTER_DEFAULT) == 0) { -- fIsLCDSupported = true; -- fLCDExtra = 2; //Using a filter adds one full pixel to each side. -- } -+ FT_Library_SetLcdFilter(fLibrary, FT_LCD_FILTER_DEFAULT); - } - ~FreeTypeLibrary() { - if (fLibrary) { -@@ -161,8 +153,6 @@ - } - - FT_Library library() { return fLibrary; } -- bool isLCDSupported() { return fIsLCDSupported; } -- int lcdExtra() { return fLCDExtra; } - - // FT_Get_{MM,Var}_{Blend,Design}_Coordinates were added in FreeType 2.7.1. - // Prior to this there was no way to get the coordinates out of the FT_Face. -@@ -173,8 +163,6 @@ - - private: - FT_Library fLibrary; -- bool fIsLCDSupported; -- int fLCDExtra; - - // FT_Library_SetLcdFilterWeights was introduced in FreeType 2.4.0. - // The following platforms provide FreeType of at least 2.4.0. -@@ -704,17 +692,6 @@ - rec->fTextSize = SkIntToScalar(1 << 14); - } - -- if (isLCD(*rec)) { -- // TODO: re-work so that FreeType is set-up and selected by the SkFontMgr. -- SkAutoMutexAcquire ama(gFTMutex); -- ref_ft_library(); -- if (!gFTLibrary->isLCDSupported()) { -- // If the runtime Freetype library doesn't support LCD, disable it here. -- rec->fMaskFormat = SkMask::kA8_Format; -- } -- unref_ft_library(); -- } -- - SkPaint::Hinting h = rec->getHinting(); - if (SkPaint::kFull_Hinting == h && !isLCD(*rec)) { - // collapse full->normal hinting if we're not doing LCD -@@ -1115,11 +1092,11 @@ - void SkScalerContext_FreeType::updateGlyphIfLCD(SkGlyph* glyph) { - if (isLCD(fRec)) { - if (fLCDIsVert) { -- glyph->fHeight += gFTLibrary->lcdExtra(); -- glyph->fTop -= gFTLibrary->lcdExtra() >> 1; -+ glyph->fHeight += 2; -+ glyph->fTop -= 1; - } else { -- glyph->fWidth += gFTLibrary->lcdExtra(); -- glyph->fLeft -= gFTLibrary->lcdExtra() >> 1; -+ glyph->fWidth += 2; -+ glyph->fLeft -= 1; - } - } - } Copied: qt5-webengine/repos/kde-unstable-x86_64/qtwebengine-harmony.patch (from rev 319342, qt5-webengine/kde-unstable/qtwebengine-harmony.patch) =================================================================== --- qtwebengine-harmony.patch (rev 0) +++ qtwebengine-harmony.patch 2018-03-15 19:09:20 UTC (rev 319343) @@ -0,0 +1,77 @@ +--- qtwebengine-opensource-src-5.9.1/src/3rdparty/chromium/third_party/skia/src/ports/SkFontHost_FreeType.cpp.orig 2017-10-10 17:42:06.956950985 +0200 ++++ qtwebengine-opensource-src-5.9.1/src/3rdparty/chromium/third_party/skia/src/ports/SkFontHost_FreeType.cpp 2017-10-10 17:46:05.824187787 +0200 +@@ -99,8 +99,6 @@ + FreeTypeLibrary() + : fGetVarDesignCoordinates(nullptr) + , fLibrary(nullptr) +- , fIsLCDSupported(false) +- , fLCDExtra(0) + { + if (FT_New_Library(&gFTMemory, &fLibrary)) { + return; +@@ -147,12 +145,7 @@ + } + #endif + +- // Setup LCD filtering. This reduces color fringes for LCD smoothed glyphs. +- // The default has changed over time, so this doesn't mean the same thing to all users. +- if (FT_Library_SetLcdFilter(fLibrary, FT_LCD_FILTER_DEFAULT) == 0) { +- fIsLCDSupported = true; +- fLCDExtra = 2; //Using a filter adds one full pixel to each side. +- } ++ FT_Library_SetLcdFilter(fLibrary, FT_LCD_FILTER_DEFAULT); + } + ~FreeTypeLibrary() { + if (fLibrary) { +@@ -161,8 +153,6 @@ + } + + FT_Library library() { return fLibrary; } +- bool isLCDSupported() { return fIsLCDSupported; } +- int lcdExtra() { return fLCDExtra; } + + // FT_Get_{MM,Var}_{Blend,Design}_Coordinates were added in FreeType 2.7.1. + // Prior to this there was no way to get the coordinates out of the FT_Face. +@@ -173,8 +163,6 @@ + + private: + FT_Library fLibrary; +- bool fIsLCDSupported; +- int fLCDExtra; + + // FT_Library_SetLcdFilterWeights was introduced in FreeType 2.4.0. + // The following platforms provide FreeType of at least 2.4.0. +@@ -704,17 +692,6 @@ + rec->fTextSize = SkIntToScalar(1 << 14); + } + +- if (isLCD(*rec)) { +- // TODO: re-work so that FreeType is set-up and selected by the SkFontMgr. +- SkAutoMutexAcquire ama(gFTMutex); +- ref_ft_library(); +- if (!gFTLibrary->isLCDSupported()) { +- // If the runtime Freetype library doesn't support LCD, disable it here. +- rec->fMaskFormat = SkMask::kA8_Format; +- } +- unref_ft_library(); +- } +- + SkPaint::Hinting h = rec->getHinting(); + if (SkPaint::kFull_Hinting == h && !isLCD(*rec)) { + // collapse full->normal hinting if we're not doing LCD +@@ -1115,11 +1092,11 @@ + void SkScalerContext_FreeType::updateGlyphIfLCD(SkGlyph* glyph) { + if (isLCD(fRec)) { + if (fLCDIsVert) { +- glyph->fHeight += gFTLibrary->lcdExtra(); +- glyph->fTop -= gFTLibrary->lcdExtra() >> 1; ++ glyph->fHeight += 2; ++ glyph->fTop -= 1; + } else { +- glyph->fWidth += gFTLibrary->lcdExtra(); +- glyph->fLeft -= gFTLibrary->lcdExtra() >> 1; ++ glyph->fWidth += 2; ++ glyph->fLeft -= 1; + } + } + } Deleted: qtwebengine-no-gpu.patch =================================================================== --- qtwebengine-no-gpu.patch 2018-03-15 19:08:58 UTC (rev 319342) +++ qtwebengine-no-gpu.patch 2018-03-15 19:09:20 UTC (rev 319343) @@ -1,99 +0,0 @@ -From: Antonio Larrosa <alarr...@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.10.0/src/core/web_engine_context.cpp -=================================================================== ---- qtwebengine-everywhere-src-5.10.0.orig/src/core/web_engine_context.cpp -+++ qtwebengine-everywhere-src-5.10.0/src/core/web_engine_context.cpp -@@ -93,6 +93,7 @@ - #include <QOffscreenSurface> - #ifndef QT_NO_OPENGL - # include <QOpenGLContext> -+# include <QOpenGLFunctions> - #endif - #include <QQuickWindow> - #include <QStringList> -@@ -167,6 +168,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 { -@@ -379,6 +413,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() -@@ -389,7 +444,7 @@ WebEngineContext::WebEngineContext() - || enableWebGLSoftwareRendering - #endif - ) -- && !usingQtQuick2DRenderer(); -+ && !usingQtQuick2DRenderer() && !disableGpu; - - if (tryGL) { - if (qt_gl_global_share_context() && qt_gl_global_share_context()->isValid()) { - Copied: qt5-webengine/repos/kde-unstable-x86_64/qtwebengine-no-gpu.patch (from rev 319342, qt5-webengine/kde-unstable/qtwebengine-no-gpu.patch) =================================================================== --- qtwebengine-no-gpu.patch (rev 0) +++ qtwebengine-no-gpu.patch 2018-03-15 19:09:20 UTC (rev 319343) @@ -0,0 +1,99 @@ +From: Antonio Larrosa <alarr...@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.10.0/src/core/web_engine_context.cpp +=================================================================== +--- qtwebengine-everywhere-src-5.10.0.orig/src/core/web_engine_context.cpp ++++ qtwebengine-everywhere-src-5.10.0/src/core/web_engine_context.cpp +@@ -93,6 +93,7 @@ + #include <QOffscreenSurface> + #ifndef QT_NO_OPENGL + # include <QOpenGLContext> ++# include <QOpenGLFunctions> + #endif + #include <QQuickWindow> + #include <QStringList> +@@ -167,6 +168,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 { +@@ -379,6 +413,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() +@@ -389,7 +444,7 @@ WebEngineContext::WebEngineContext() + || enableWebGLSoftwareRendering + #endif + ) +- && !usingQtQuick2DRenderer(); ++ && !usingQtQuick2DRenderer() && !disableGpu; + + if (tryGL) { + if (qt_gl_global_share_context() && qt_gl_global_share_context()->isValid()) { +