Skip to content

Instantly share code, notes, and snippets.

@twouters
Created August 2, 2020 11:25
Show Gist options
  • Save twouters/9496213d4b08c254089ba60e8273e569 to your computer and use it in GitHub Desktop.
Save twouters/9496213d4b08c254089ba60e8273e569 to your computer and use it in GitHub Desktop.
# Maintainer: Felix Yan <felixonmars@archlinux.org>
# Contributor: Andrea Scarpino <andrea@archlinux.org>
pkgname=qt5-webengine
_qtver=5.15.0
pkgver=${_qtver/-/}
pkgrel=5
arch=('x86_64')
url='https://www.qt.io'
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' 'libxslt' 'minizip' 'ffmpeg' 're2' 'libvpx' 'krb5' 'ttf-font')
makedepends=('python2' 'gperf' 'jsoncpp' 'ninja' 'qt5-tools' 'poppler' 'libpipewire02')
optdepends=('libpipewire02: WebRTC desktop sharing under Wayland')
groups=('qt' 'qt5')
_pkgfqn="${pkgname/5-/}-everywhere-src-${_qtver}"
source=("https://download.qt.io/official_releases/qt/${pkgver%.*}/${_qtver}/submodules/${_pkgfqn}.tar.xz"
qt5-webengine-icu67.patch::"https://code.qt.io/cgit/qt/qtwebengine-chromium.git/patch/?id=e941f2bd"
qt5-webengine-gcc10.patch
dark-mode-crash.patch::"https://code.qt.io/cgit/qt/qtwebengine-chromium.git/patch/?id=4e8ca195"
qtbug-85119.patch::"https://code.qt.io/cgit/qt/qtwebengine-chromium.git/patch/?id=c91f4d20"
qtbug-85120.patch::"https://code.qt.io/cgit/qt/qtwebengine-chromium.git/patch/?id=242802ab"
qtbug-85118.patch::"https://code.qt.io/cgit/qt/qtwebengine.git/patch/?id=e42ccdad"
qtbug-62957.patch::"https://code.qt.io/cgit/qt/qtwebengine.git/patch/?id=f341988f"
qtbug-62957-pre.patch::"https://code.qt.io/cgit/qt/qtwebengine.git/patch?id=75412200"
qt5-webengine-pipewire.patch
qt5-fix-webauth-build.patch
qt5-enable-webauth.patch
)
sha256sums=('c38e2fda7ed1b7d5a90f26abf231ec0715d78a5bc39a94673d8e39d75f04c5df'
'22a2265c81bc73dba6843279407ccaec9f192d0987c54a0d9533be7c49b37f29'
'8a6e0c41f708d6a8f1febb751157642ab985b58c07ada1447b73b71cd31b4d99'
'7ea054a95045635fcee9ee50a6a28e9aedf182ca97a76cc6dd680fb1a91748e1'
'758561a5bd52feca16751c37def8e7cd3388073bf5bd072eb0862830c174decc'
'4bb12a72d40e69052946a6b66fff621f28e40c3d3c11ddeec155133a9204f352'
'fc976a6a7198121a4c1b6026318098de278412d73634db31b1815a3cc7502657'
'1a07ab59daa9552ad1a70abd03b00d40e542d9dd64fa6d7404d31c9a51e5eeba'
'd47ec2111c9713312158f800c01ca9358400b4e11273e470d57a53c36b7565c0'
'34cd6fdcdf7d20f9a32d4ad066535edad61735a83a895e9503edab247fee5542'
'73d13858aa4d41d457ed6f25672c5c427793d6cdc9e12ac7a9258696cd2f06ee'
'7163abcf16c01a46a30a6271ae5ff2b49d2e9e042b4ba0ea5b1591654b56d6b3')
prepare() {
mkdir -p build
cd $_pkgfqn
patch -d src/3rdparty -p1 -i "$srcdir"/qt5-webengine-icu67.patch # Fix build with ICU 67
patch -d src/3rdparty -p1 -i "$srcdir"/qt5-webengine-gcc10.patch
patch -d src/3rdparty -p1 -i "$srcdir"/dark-mode-crash.patch # Fix crash in qutebrowser when using dark mode
patch -d src/3rdparty -p1 -i "$srcdir"/qtbug-85119.patch # Extend url library for WebEngine custom schemes
patch -d src/3rdparty -p1 -i "$srcdir"/qtbug-85120.patch # Make XScrnSaver optional
patch -p1 -i ../qtbug-85118.patch # Fix recentlyAudible signal
patch -p1 -i ../qtbug-62957-pre.patch # Avoid the network context reset during http cache clear
patch -p1 -i ../qtbug-62957.patch # Return valid path in Profile::GetPath() for incognito profiles
patch -p1 -i ../qt5-webengine-pipewire.patch # Add screen sharing support on wayland via pipewire
patch -d src/3rdparty -p1 -i "$srcdir"/qt5-fix-webauth-build.patch
patch -p1 -i "$srcdir"/qt5-enable-webauth.patch
}
build() {
cd build
qmake ../${_pkgfqn} -- \
-proprietary-codecs \
-system-ffmpeg \
-webp \
-spellchecker \
-webengine-icu \
-webengine-kerberos \
-webengine-webrtc-pipewire
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
}
From 904330c3a39a29ef078c9c1ddc2a1d1580fa2c32 Mon Sep 17 00:00:00 2001
From: Allan Sandfeld Jensen <allan.jensen@qt.io>
Date: Tue, 21 Jul 2020 09:11:30 +0200
Subject: [PATCH 1/1] Do not turn web auth off
Submodule src/3rdparty 0a4240a9..4a996760:
> Fix building FIDO with gcc5
> [Backport] CVE-2020-6512: Type Confusion in V8 (3/3)
Fixes: QTBUG-85117
Task-number: QTBUG-54720
Change-Id: I074831454b469c17a71f2ca75a075ee48157970d
Reviewed-by: Tamas Zakor <ztamas@inf.u-szeged.hu>
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
---
src/3rdparty | 2 +-
src/buildtools/config/common.pri | 2 +-
src/core/web_engine_context.cpp | 2 --
3 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/src/buildtools/config/common.pri b/src/buildtools/config/common.pri
index 8aeeb38945..ddcd225cc9 100644
--- a/src/buildtools/config/common.pri
+++ b/src/buildtools/config/common.pri
@@ -17,7 +17,7 @@ gn_args += \
enable_resource_whitelist_generation=false \
enable_swiftshader=false \
angle_enable_swiftshader=false \
- enable_web_auth=false \
+ enable_web_auth=true \
enable_web_speech=false \
enable_widevine=true \
has_native_accessibility=false \
diff --git a/src/core/web_engine_context.cpp b/src/core/web_engine_context.cpp
index 01d55a5a1c..11365de625 100644
--- a/src/core/web_engine_context.cpp
+++ b/src/core/web_engine_context.cpp
@@ -649,8 +649,6 @@ WebEngineContext::WebEngineContext()
// Explicitly tell Chromium about default-on features we do not support
appendToFeatureList(disableFeatures, features::kBackgroundFetch.name);
appendToFeatureList(disableFeatures, features::kSmsReceiver.name);
- appendToFeatureList(disableFeatures, features::kWebAuth.name);
- appendToFeatureList(disableFeatures, features::kWebAuthCable.name);
appendToFeatureList(disableFeatures, features::kWebPayments.name);
appendToFeatureList(disableFeatures, features::kWebUsb.name);
appendToFeatureList(disableFeatures, media::kPictureInPicture.name);
--
2.16.3
From 33c93b917c144d3638737ed463b3667ab5bca0de Mon Sep 17 00:00:00 2001
From: Tamas Zakor <ztamas@inf.u-szeged.hu>
Date: Wed, 15 Jul 2020 15:58:44 +0200
Subject: [PATCH] Fix WebAuth build
- Enable typemaps.gni for WebAuth.
- Workaround a gcc 6 compiler error when flat_map is uncopyable.
- Also fix the build with gcc 6 and gcc 7.
Fixes: QTBUG-85117
Change-Id: If73ce3fccdb7fc3dc2cddd39bba998f51956e45a
---
chromium/base/containers/flat_map.h | 6 ++++++
chromium/device/fido/bio/enrollment.cc | 4 ++--
chromium/device/fido/cable/fido_cable_discovery.cc | 2 +-
.../mojo/public/tools/bindings/chromium_bindings_configuration.gni | 2 +-
4 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/chromium/base/containers/flat_map.h b/chromium/base/containers/flat_map.h
index 41682d5958d..8fbf554b38f 100644
--- a/chromium/base/containers/flat_map.h
+++ b/chromium/base/containers/flat_map.h
@@ -240,6 +240,12 @@ class flat_map : public ::base::internal::flat_tree<
friend void swap(flat_map& lhs, flat_map& rhs) noexcept { lhs.swap(rhs); }
};
+
+#if defined(__GNUC__) && !defined(__clang__) && __GNUC__ <= 7
+template <typename... T>
+struct is_trivially_copy_constructible<flat_map<T...>> : std::false_type {};
+#endif
+
// ----------------------------------------------------------------------------
// Lifetime.
diff --git a/chromium/device/fido/bio/enrollment.cc b/chromium/device/fido/bio/enrollment.cc
index 981c4397ca2..a1749e35d06 100644
--- a/chromium/device/fido/bio/enrollment.cc
+++ b/chromium/device/fido/bio/enrollment.cc
@@ -131,7 +131,7 @@ base::Optional<BioEnrollmentResponse> BioEnrollmentResponse::Parse(
BioEnrollmentResponse response;
if (!cbor_response || !cbor_response->is_map()) {
- return response;
+ return base::make_optional<BioEnrollmentResponse>(std::move(response));
}
const auto& response_map = cbor_response->GetMap();
@@ -252,7 +252,7 @@ base::Optional<BioEnrollmentResponse> BioEnrollmentResponse::Parse(
response.template_infos = std::move(template_infos);
}
- return std::move(response);
+ return base::make_optional<BioEnrollmentResponse>(std::move(response));
}
BioEnrollmentResponse::BioEnrollmentResponse() = default;
diff --git a/chromium/device/fido/cable/fido_cable_discovery.cc b/chromium/device/fido/cable/fido_cable_discovery.cc
index aa130900be2..ac8a4b4b099 100644
--- a/chromium/device/fido/cable/fido_cable_discovery.cc
+++ b/chromium/device/fido/cable/fido_cable_discovery.cc
@@ -348,7 +348,7 @@ FidoCableDiscovery::CreateHandshakeHandler(
return base::nullopt;
}
- return handler;
+ return base::make_optional<std::unique_ptr<FidoCableHandshakeHandler> >(std::move(handler));
}
void FidoCableDiscovery::DeviceAdded(BluetoothAdapter* adapter,
diff --git a/chromium/mojo/public/tools/bindings/chromium_bindings_configuration.gni b/chromium/mojo/public/tools/bindings/chromium_bindings_configuration.gni
index 1ad43c69c92..35840baac15 100644
--- a/chromium/mojo/public/tools/bindings/chromium_bindings_configuration.gni
+++ b/chromium/mojo/public/tools/bindings/chromium_bindings_configuration.gni
@@ -18,7 +18,7 @@ _typemap_imports = [
"//components/chromeos_camera/common/typemaps.gni",
"//components/sync/mojom/typemaps.gni",
"//components/typemaps.gni",
-# "//content/browser/typemaps.gni",
+ "//content/browser/typemaps.gni",
"//content/common/typemaps.gni",
"//content/public/common/typemaps.gni",
"//device/bluetooth/public/mojom/typemaps.gni",
--
2.16.3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment