Bug 1298011 - qt5-qtwebengine is ExclusiveArch to the architectures supported by Chromium
qt5-qtwebengine is ExclusiveArch to the architectures supported by Chromium
Status: NEW
Product: Fedora
Classification: Fedora
Component: qt5-qtwebengine (Show other bugs)
rawhide
s390x Linux
low Severity low
: ---
: ---
Assigned To: Kevin Kofler
Fedora Extras Quality Assurance
: FutureFeature, Tracking
Depends On:
Blocks: FE-ExcludeArch-ppc64/F-ExcludeArch-ppc64 F-ExcludeArch-s390x
  Show dependency treegraph
 
Reported: 2016-01-12 19:53 EST by Kevin Kofler
Modified: 2017-04-22 17:37 EDT (History)
5 users (show)

See Also:
Fixed In Version:
Doc Type: Enhancement
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed:
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Kevin Kofler 2016-01-12 19:53:05 EST
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 12:48:58 EDT
exclude ppc ppc64 ppc64le as it's not suppoted yet
Comment 2 Kevin Kofler 2016-04-08 13:32:52 EDT
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 13:34:30 EDT
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 17:00:17 EDT
Kevin, we will enable it again when the support is done.
Comment 5 Kevin Kofler 2016-07-17 11:11:13 EDT
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 08:21:46 EDT
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 15:14:21 EDT
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 15:18:40 EDT
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 10:55:35 EDT
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 09:44:19 EDT
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 10:17:41 EDT
I think it's our scripts to remove encumbered stuff from ffmpeg that needs updating.
Comment 12 Kevin Kofler 2016-10-21 10:19:10 EDT
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 10:24:03 EDT
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 13:06:54 EDT
(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 02:28:47 EDT
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-12 23:01:41 EST
I'm changing the subject to make it clear that V8 is not the (only) limiting factor, unfortunately (as per the discussion above).

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