Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.
Bug 1298011 - qt5-qtwebengine is ExclusiveArch to the architectures supported by Chromium
Summary: qt5-qtwebengine is ExclusiveArch to the architectures supported by Chromium
Keywords:
Status: NEW
Alias: None
Product: Fedora
Classification: Fedora
Component: qt5-qtwebengine
Version: rawhide
Hardware: s390x
OS: Linux
low
low
Target Milestone: ---
Assignee: Kevin Kofler
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
: 1651261 (view as bug list)
Depends On:
Blocks: FE-ExcludeArch-ppc64, F-ExcludeArch-ppc64 F-ExcludeArch-s390x
TreeView+ depends on / blocked
 
Reported: 2016-01-13 00:53 UTC by Kevin Kofler
Modified: 2018-11-20 10:32 UTC (History)
6 users (show)

Fixed In Version:
Doc Type: Enhancement
Doc Text:
Clone Of:
Environment:
Last Closed:


Attachments (Terms of Use)


Links
System ID Priority Status Summary Last Updated
Red Hat Bugzilla 1358918 None CLOSED Review Request: qtwebbrowser - QtWebEngine based browser for embedded touch devices 2019-02-15 04:36:35 UTC

Internal Links: 1358918

Description Kevin Kofler 2016-01-13 00:53:05 UTC
QtWebEngine (qt5-qtwebengine) is ExclusiveArch to the architectures supported by the V8 JIT (the version included with QtWebEngine). This is currently as follows:
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc ppc64 ppc64le mips mipsel mips64el

To add support for an architecture not listed above, you will have to port V8, or merge a third-party port into this package.

The architectures that ARE listed above SHOULD be supported, but I only tested on the primary architectures so far. You may need some minor patching to build on one of the secondary architectures, e.g., to add to the Qt -> Chromium -> V8 arch translations. If you cannot get this package to build on your secondary architecture, please:
* remove your architecture from the list in the specfile AND
* put this bug onto your ExcludeArch tracker.

Note that the initial packages were missing the ExclusiveArch. That was a bug, the package cannot possibly build on other architectures as is.

Comment 1 Ngo Than 2016-04-08 16:48:58 UTC
exclude ppc ppc64 ppc64le as it's not suppoted yet

Comment 2 Kevin Kofler 2016-04-08 17:32:52 UTC
Are you sure we can't get it to work there? V8 support is in there, at least.

We can easily remove offending ExclusiveArch listings, but I'd rather try to get it to build (and hopefully run) instead.

Comment 3 Kevin Kofler 2016-04-08 17:34:30 UTC
If what's failing to build is the bundled FFmpeg, then we just need to add the missing target files to the whitelist as we did for ARM and aarch64.

Comment 4 Ngo Than 2016-04-08 21:00:17 UTC
Kevin, we will enable it again when the support is done.

Comment 5 Kevin Kofler 2016-07-17 15:11:13 UTC
Than, what is the status for ppc, ppc64 and ppc64le? Do we know what is missing to support those architectures (considering that V8 supports them)?

Comment 6 Ngo Than 2016-07-18 12:21:46 UTC
the platform ppc64 and ppc64le doesn't exist. they are missing. We need to add the platform ppc64 and ppc64le into WebKit/Source/platform

Comment 7 Raphael Groner 2016-07-21 19:14:21 UTC
Can we introduce a macro, let's say like %qtwebengine_arches, for all supported build architectures? Currently, those are hard coded ¹ as ExclusiveArch. I built qtwebbrowser ² and it fails of course for all platforms without an available qt5-qtwebengine package, with the generic macro all depending packages could get prevented from any build attempt in prior, e.g. as we do already for mono (%mono_arches) and fpc (%fpc_arches) ³.

¹ http://pkgs.fedoraproject.org/cgit/rpms/qt5-qtwebengine.git/tree/qt5-qtwebengine.spec#n82
² bug #1358918
³ https://fedoraproject.org/wiki/User:Mattia/fpcExclusiveArch

Comment 8 Raphael Groner 2016-07-21 19:18:40 UTC
To be more clear, the macro proposed in comment #7 hands down the supported build architectures to the depending packages to use it also for ExclusiveArch.

Comment 9 Ngo Than 2016-09-13 14:55:35 UTC
yes, it does make sense to add such macro. For this we need to create new package qtwebengine-srpm-macros or maybe we can add it to qt5-rpm-macros

Comment 10 Dan Horák 2016-10-21 13:44:19 UTC
The bundled v8 shouldn't be a problem anymore, it support all Fedora arches

qtwebengine-opensource-src-5.7.0/src/3rdparty/chromium/v8/Makefile contains
...
ARCHES = ia32 x64 x32 arm arm64 mips mipsel mips64 mips64el x87 ppc ppc64 \
                 s390 s390x


What fails now when building qtwebengine locally is
on s390x
...
Project MESSAGE: Running gyp_qtwebengine "/home/sharkcz/qt5-qtwebengine/qtwebengine-opensource-src-5.7.0/s390x-redhat-linux-gnu/src/core" -D qt_cross_compile=0 -D qt_os="desktop_linux" -D use_qt=1 -D v8_use_external_startup_data=0 -D enable_basic_printing=1 -D enable_print_preview=0 -D enable_web_speech=0 -D enable_extensions=0 -D linux_use_bundled_gold=0 -D linux_use_bundled_binutils=0 -D linux_use_gold_flags=0 -D toolkit_uses_gtk=0 -D use_ash=0 -D use_aura=1 -D use_cairo=0 -D use_clipboard_aurax11=0 -D use_cups=0 -D use_gconf=0 -D use_gio=0 -D use_gnome_keyring=0 -D use_kerberos=0 -D use_pango=0 -D use_openssl=1 -D use_nss_certs=1 -D use_openssl_certs=0 -D use_system_zlib=1 -D use_system_libpng=1 -D use_system_libjpeg=1 -D use_system_harfbuzz=1 -D use_system_libevent=1 -D use_system_libwebp=1 -D use_system_libsrtp=1 -D use_system_libxml=1 -D use_system_jsoncpp=1 -D use_system_opus=1 -D use_system_snappy=1 -D use_system_libvpx=1 -D use_system_icu=1 -D icu_use_data_file_flag=0 -D use_system_protobuf=1 -D use_system_re2=1 -D linux_link_libpci=1 -D desktop_linux=1 -D enable_widevine=1 -D clang=0 -D host_clang=0 -D qtwe_process_name_debug=QtWebEngineProcess -D qtwe_process_name_release=QtWebEngineProcess -D disable_glibcxx_debug=1 -D release_extra_cflags=-g1 -D disable_fatal_linker_warnings=1 -D sysroot="" -D enable_spellcheck=0...
using python: /usr/bin/python version: 2.7.12
Using extra options found in /home/sharkcz/qt5-qtwebengine/qtwebengine-opensource-src-5.7.0/src/core/qtwebengine_extras.gypi
Using extra options found in /home/sharkcz/qt5-qtwebengine/qtwebengine-opensource-src-5.7.0/s390x-redhat-linux-gnu/src/core/qmake_extras.gypi
Updating projects from gyp files...
gyp: Undefined variable platform_heap_asm_files in /home/sharkcz/qt5-qtwebengine/qtwebengine-opensource-src-5.7.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/blink_platform.gyp
gyp: Undefined variable c_sources in /home/sharkcz/qt5-qtwebengine/qtwebengine-opensource-src-5.7.0/src/3rdparty/chromium/third_party/ffmpeg/ffmpeg.gyp
Project ERROR: -- running gyp_qtwebengine failed --

on ppc64
...
Project MESSAGE: Running gyp_qtwebengine "/home/sharkcz/qt5-qtwebengine/qtwebengine-opensource-src-5.7.0/ppc64-redhat-linux-gnu/src/core" -D qt_cross_compile=0 -D qt_os="desktop_linux" -D use_qt=1 -D v8_use_external_startup_data=0 -D enable_basic_printing=1 -D enable_print_preview=0 -D enable_web_speech=0 -D enable_extensions=0 -D linux_use_bundled_gold=0 -D linux_use_bundled_binutils=0 -D linux_use_gold_flags=0 -D toolkit_uses_gtk=0 -D use_ash=0 -D use_aura=1 -D use_cairo=0 -D use_clipboard_aurax11=0 -D use_cups=0 -D use_gconf=0 -D use_gio=0 -D use_gnome_keyring=0 -D use_kerberos=0 -D use_pango=0 -D use_openssl=1 -D use_nss_certs=1 -D use_openssl_certs=0 -D use_system_zlib=1 -D use_system_libpng=1 -D use_system_libjpeg=1 -D use_system_harfbuzz=1 -D use_system_libevent=1 -D use_system_libwebp=1 -D use_system_libsrtp=1 -D use_system_libxml=1 -D use_system_jsoncpp=1 -D use_system_opus=1 -D use_system_snappy=1 -D use_system_libvpx=1 -D use_system_icu=1 -D icu_use_data_file_flag=0 -D use_system_protobuf=1 -D use_system_re2=1 -D linux_link_libpci=1 -D desktop_linux=1 -D enable_widevine=1 -D clang=0 -D host_clang=0 -D qtwe_process_name_debug=QtWebEngineProcess -D qtwe_process_name_release=QtWebEngineProcess -D disable_glibcxx_debug=1 -D release_extra_cflags=-g1 -D disable_fatal_linker_warnings=1 -D sysroot="" -D enable_spellcheck=0...
using python: /usr/bin/python version: 2.7.12
Using extra options found in /home/sharkcz/qt5-qtwebengine/qtwebengine-opensource-src-5.7.0/src/core/qtwebengine_extras.gypi
Using extra options found in /home/sharkcz/qt5-qtwebengine/qtwebengine-opensource-src-5.7.0/ppc64-redhat-linux-gnu/src/core/qmake_extras.gypi
Updating projects from gyp files...
gyp: Undefined variable c_sources in /home/sharkcz/qt5-qtwebengine/qtwebengine-opensource-src-5.7.0/src/3rdparty/chromium/third_party/ffmpeg/ffmpeg.gyp
Project ERROR: -- running gyp_qtwebengine failed --

I suspect the chromium buildsystem needs an update for the alt arches.

Comment 11 Kevin Kofler 2016-10-21 14:17:41 UTC
I think it's our scripts to remove encumbered stuff from ffmpeg that needs updating.

Comment 12 Kevin Kofler 2016-10-21 14:19:10 UTC
But actually, for s390x, there's also:

> gyp: Undefined variable platform_heap_asm_files in /home/sharkcz/qt5-qtwebengine/qtwebengine-opensource-src-5.7.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/blink_platform.gyp

which looks like there's unfortunately yet more ASM stuff needed now.

Comment 13 Kevin Kofler 2016-10-21 14:24:03 UTC
Yeah, it looks like we also need an implementation of:
src/3rdparty/chromium/third_party/WebKit/Source/platform/heap/asm/SaveRegisters_$ARCH.$ASMEXT
for every architecture, which needs to be listed in:
src/3rdparty/chromium/third_party/WebKit/Source/platform/heap/blink_heap.gypi

Comment 14 Dan Horák 2016-10-21 17:06:54 UTC
(In reply to Kevin Kofler from comment #13)
> Yeah, it looks like we also need an implementation of:
> src/3rdparty/chromium/third_party/WebKit/Source/platform/heap/asm/
> SaveRegisters_$ARCH.$ASMEXT
> for every architecture, which needs to be listed in:
> src/3rdparty/chromium/third_party/WebKit/Source/platform/heap/blink_heap.gypi

Kevin, thanks for the initial analysis, at least this part shouldn't be difficult.

Comment 15 Kevin Kofler 2016-10-22 06:28:47 UTC
Unfortunately, it looks like there is more architecture-specific hackery in Chromium code. I found some architecture-specific hackery (dependent at least on the stack growing direction, implemented through a hardcoded list of architectures) in src/3rdparty/chromium/base/process/launch_posix.cc. (And it doesn't even seem to work on aarch64, where it is supposed to work, see bug #1387794.)

Comment 16 Kevin Kofler 2016-12-13 04:01:41 UTC
I'm changing the subject to make it clear that V8 is not the (only) limiting factor, unfortunately (as per the discussion above).

Comment 17 Kevin Kofler 2018-11-19 15:49:02 UTC
*** Bug 1651261 has been marked as a duplicate of this bug. ***

Comment 18 Kevin Kofler 2018-11-19 15:52:23 UTC
qt5-srpm-macros defines a %{qt5_qtwebengine_arches} macro.

Packages that require QtWebEngine must use:
ExclusiveArch: %{qt5_qtwebengine_arches}

Packages where QtWebEngine is an optional dependency must use:
%ifarch %{qt5_qtwebengine_arches}
BuildRequires: qt5-qtwebengine-devel
%endif
or an equivalent construct.

Comment 19 Germano Massullo 2018-11-20 10:32:21 UTC
what can you tell me about qt5-qtwebengine-devel missing in EPEL7 for all CPU architectures?


Note You need to log in before you can comment on or make changes to this bug.