added extra/qt5-webengine

This commit is contained in:
Kevin Mihelich 2016-07-10 03:16:51 +00:00
parent 025963c481
commit a6a83b917e
6 changed files with 266 additions and 0 deletions

View file

@ -0,0 +1,76 @@
# $Id: PKGBUILD 240297 2015-06-03 10:22:03Z fyan $
# Maintainer: Felix Yan <felixonmars@archlinux.org>
# Contributor: Andrea Scarpino <andrea@archlinux.org>
# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
# - patch to disable neon
# - patch to use system ffmpeg, depend on ffmpeg, add system_ffmpeg to WEBENGINE_CONFIG
buildarch=12
pkgname=qt5-webengine
_qtver=5.7.0
pkgver=${_qtver/-/}
pkgrel=2
arch=('i686' 'x86_64')
url='http://qt-project.org/'
license=('GPL3' 'LGPL3' 'FDL' 'custom')
pkgdesc='Provides support for web applications using the Chromium browser project'
depends=('qt5-webchannel' 'qt5-location' 'libxcomposite' 'libxrandr' 'libxtst' 'libxcursor' 'libpulse' 'pciutils' 'libxss' 'libvpx' 'opus'
'libevent' 'libsrtp' 'jsoncpp' 'libwebp' 'snappy' 'nss' 'protobuf' 'ffmpeg') # minizip
makedepends=('python2' 'git' 'gperf')
groups=('qt' 'qt5')
_pkgfqn="${pkgname/5-/}-opensource-src-${_qtver}"
source=("http://download.qt.io/official_releases/qt/${pkgver%.*}/${_qtver}/submodules/${_pkgfqn}.tar.xz" qt5-webengine-nss.patch
qt5-webengine-fno-delete-null-pointer-checks.patch qt5-webengine-fno-delete-null-pointer-checks-2.patch
qtwebengine-opensource-src-5.6.0-beta-no-neon.patch
system-ffmpeg.patch)
md5sums=('937f64886fbcb038d6fa4b44ae80cbeb'
'2a1610b34204102938a24154a52e5571'
'5671a16fef65152928789bffd1f7cf24'
'8145ce05fb86e762f012ca1b56f718fe'
'5bf00425cacab1a6580c46b9ac8b57ac'
'9f79b14f7c5ff603c1fcd87f37a8904f')
prepare() {
mkdir -p build
# Hack to force using python2
mkdir -p bin
ln -s /usr/bin/python2 bin/python
# Fix opening some websites with recent NSS https://github.com/QupZilla/qupzilla/issues/1870 (KaOSx patch)
cd ${_pkgfqn}
# patch -p1 -i ../qt5-webengine-nss.patch
# Workaround for v8 segfaults with GCC 6
patch -p1 -i "$srcdir"/qt5-webengine-fno-delete-null-pointer-checks.patch
cd src/3rdparty
patch -p1 -i "$srcdir"/qt5-webengine-fno-delete-null-pointer-checks-2.patch
cd ../..
[[ $CARCH == "armv7h" ]] && patch -p1 -i ../qtwebengine-opensource-src-5.6.0-beta-no-neon.patch
patch -p1 -i ../system-ffmpeg.patch
}
build() {
cd build
export PATH="$srcdir/bin:$PATH"
export CXXFLAGS+=" -fno-delete-null-pointer-checks"
qmake WEBENGINE_CONFIG+="use_proprietary_codecs system_ffmpeg" ../${_pkgfqn}
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 -d "$pkgdir"/usr/share/licenses
ln -s /usr/share/licenses/qt5-base "$pkgdir"/usr/share/licenses/${pkgname}
}

View file

@ -0,0 +1,50 @@
From ba36da6c1f59da7687f6924cc558105dcd1c44dc Mon Sep 17 00:00:00 2001
From: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Date: Fri, 10 Jun 2016 13:26:22 +0200
Subject: [PATCH] Use -fno-delete-null-pointer-checks with gcc 6
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
V8 is not safe for removing null pointer checks. Until it is, we need
to disable optimizations in GCC that assume it is not doing something
wrong.
This patch only enables it for v8, and requires it to be activated
by qtwebengine.
Change-Id: I9da15ecf85719f211ba921a620e9d195eff26178
Task-number: QTBUG-53956
Reviewed-by: Michael Brüning <michael.bruning@qt.io>
---
chromium/v8/build/toolchain.gypi | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/chromium/v8/build/toolchain.gypi b/chromium/v8/build/toolchain.gypi
index 8a26cc2..2dd4a50 100644
--- a/chromium/v8/build/toolchain.gypi
+++ b/chromium/v8/build/toolchain.gypi
@@ -72,6 +72,10 @@
# Some versions of GCC 4.5 seem to need -fno-strict-aliasing.
'v8_no_strict_aliasing%': 0,
+ # V8 needs support for illegal null this pointers, and must disable
+ # optimizations in GCC 6 that relies on correct behavior.
+ 'v8_no_delete_null_pointer_checks%': 0,
+
# Chrome needs this definition unconditionally. For standalone V8 builds,
# it's handled in build/standalone.gypi.
'want_separate_host_toolset%': 1,
@@ -1066,6 +1070,9 @@
[ 'v8_no_strict_aliasing==1', {
'cflags': [ '-fno-strict-aliasing' ],
}],
+ [ 'v8_no_delete_null_pointer_checks==1', {
+ 'cflags_cc': [ '-fno-delete-null-pointer-checks' ],
+ }],
], # conditions
}],
['OS=="solaris"', {
--
2.8.3

View file

@ -0,0 +1,27 @@
From 5133f095bea2d147e86b99eacaa48363d08db35b Mon Sep 17 00:00:00 2001
From: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Date: Fri, 10 Jun 2016 14:46:24 +0200
Subject: [PATCH] Enable -fno_delete_null_pointer_checks on V8 for G++ 6
Detect g++ 6 and disable null pointer check optimizations on v8.
Change-Id: I5064823af3784786d455ce86592b5e65c1020f21
Task-number: QTBUG-53956
---
diff --git a/src/core/config/linux.pri b/src/core/config/linux.pri
index 8854a4b..b579e2a 100644
--- a/src/core/config/linux.pri
+++ b/src/core/config/linux.pri
@@ -29,6 +29,8 @@ use?(nss) {
use_openssl_certs=1
}
+gcc:!clang: greaterThan(QT_GCC_MAJOR_VERSION, 5): GYP_CONFIG += v8_no_delete_null_pointer_checks=1
+
contains(QT_CONFIG, system-zlib): use?(system_minizip): GYP_CONFIG += use_system_zlib=1
contains(QT_CONFIG, system-png): GYP_CONFIG += use_system_libpng=1
contains(QT_CONFIG, system-jpeg): GYP_CONFIG += use_system_libjpeg=1
--
2.8.3

View file

@ -0,0 +1,31 @@
diff -ur qtwebengine-opensource-src-5.6.0-beta/src/3rdparty/chromium/net/socket/ssl_client_socket_openssl.cc
qtwebengine-opensource-src-5.6.0-beta-chimera-nss-init/src/3rdparty/chromium/net/socket/ssl_client_socket_openssl.cc
--- qtwebengine-opensource-src-5.6.0-beta/src/3rdparty/chromium/net/socket/ssl_client_socket_openssl.cc 2015-12-10 18:17:21.000000000 +0100
+++ qtwebengine-opensource-src-5.6.0-beta-chimera-nss-init/src/3rdparty/chromium/net/socket/ssl_client_socket_openssl.cc 2016-01-14
17:11:38.432633534 +0100
@@ -57,6 +57,10 @@
#include "net/ssl/ssl_platform_key.h"
#endif
+#if defined(USE_NSS_CERTS) || defined(OS_IOS)
+#include "net/cert_net/nss_ocsp.h"
+#endif
+
namespace net {
namespace {
@@ -795,6 +799,14 @@
DCHECK(!ssl_);
DCHECK(!transport_bio_);
+#if defined(USE_NSS_CERTS) || defined(OS_IOS)
+ if (ssl_config_.cert_io_enabled) {
+ // TODO(davidben): Move this out of SSLClientSocket. See
+ // https://crbug.com/539520.
+ EnsureNSSHttpIOInit();
+ }
+#endif
+
SSLContext* context = SSLContext::GetInstance();
crypto::OpenSSLErrStackTracer err_tracer(FROM_HERE);

View file

@ -0,0 +1,15 @@
diff -ur qtwebengine-opensource-src-5.6.0-beta/src/core/gyp_run.pro qtwebengine-opensource-src-5.6.0-beta-no-neon/src/core/gyp_run.pro
--- qtwebengine-opensource-src-5.6.0-beta/src/core/gyp_run.pro 2015-12-14 16:27:24.000000000 +0100
+++ qtwebengine-opensource-src-5.6.0-beta-no-neon/src/core/gyp_run.pro 2016-01-10 17:48:45.689954050 +0100
@@ -74,7 +74,10 @@
# we use arm_neon_optional for ARMv7 and newer and let chromium decide
# about the mfpu option.
contains(MFPU, "neon")|contains(MFPU, "neon-vfpv4"): GYP_CONFIG += arm_fpu=\"$$MFPU\" arm_neon=1
- else:!lessThan(MARMV, 7): GYP_CONFIG += arm_neon=0 arm_neon_optional=1
+ # Disable NEON entirely for now, because it fails to build:
+ # https://bugzilla.redhat.com/show_bug.cgi?id=1282495
+ # (This line was also missing the required arm_fpu flag, which I added.)
+ # else:!lessThan(MARMV, 7): GYP_CONFIG += arm_fpu=\"$$MFPU\" arm_neon=0 arm_neon_optional=1
else: GYP_CONFIG += arm_fpu=\"$$MFPU\" arm_neon=0 arm_neon_optional=0
}

View file

@ -0,0 +1,67 @@
diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h
index 11659fb..e943b16 100644
--- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h
+++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h
@@ -21,10 +21,6 @@
// Include FFmpeg header files.
extern "C" {
-// Disable deprecated features which result in spammy compile warnings. This
-// list of defines must mirror those in the 'defines' section of BUILD.gn file &
-// ffmpeg.gyp file or the headers below will generate different structures!
-#define FF_API_CONVERGENCE_DURATION 0
// Upstream libavcodec/utils.c still uses the deprecated
// av_dup_packet(), causing deprecation warnings.
// The normal fix for such things is to disable the feature as below,
@@ -39,7 +35,6 @@ MSVC_PUSH_DISABLE_WARNING(4244);
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#if !defined(USE_SYSTEM_FFMPEG)
-#include <libavformat/internal.h>
#endif
#include <libavformat/avio.h>
#include <libavutil/avutil.h>
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc
index 237c938..2b6cd3e 100644
--- a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc
@@ -1036,24 +1036,6 @@ void FFmpegDemuxer::OnFindStreamInfoDone(const PipelineStatusCB& status_cb,
std::vector<base::TimeDelta> start_time_estimates(format_context->nb_streams,
kInfiniteDuration());
#if !defined(USE_SYSTEM_FFMPEG)
- const AVFormatInternal* internal = format_context->internal;
- if (internal && internal->packet_buffer &&
- format_context->start_time != static_cast<int64_t>(AV_NOPTS_VALUE)) {
- struct AVPacketList* packet_buffer = internal->packet_buffer;
- while (packet_buffer != internal->packet_buffer_end) {
- DCHECK_LT(static_cast<size_t>(packet_buffer->pkt.stream_index),
- start_time_estimates.size());
- const AVStream* stream =
- format_context->streams[packet_buffer->pkt.stream_index];
- if (packet_buffer->pkt.pts != static_cast<int64_t>(AV_NOPTS_VALUE)) {
- const base::TimeDelta packet_pts =
- ConvertFromTimeBase(stream->time_base, packet_buffer->pkt.pts);
- if (packet_pts < start_time_estimates[stream->index])
- start_time_estimates[stream->index] = packet_pts;
- }
- packet_buffer = packet_buffer->next;
- }
- }
#endif
AVStream* audio_stream = NULL;
diff --git a/src/core/config/linux.pri b/src/core/config/linux.pri
index 8854a4b..9af24c5 100644
--- a/src/core/config/linux.pri
+++ b/src/core/config/linux.pri
@@ -21,6 +21,10 @@ GYP_CONFIG += \
use_pango=0 \
use_openssl=1
+GYP_CONFIG += \
+ enable_webrtc=0 \
+ use_system_ffmpeg=1
+
use?(nss) {
GYP_CONFIG += use_nss_certs=1 \
use_openssl_certs=0