Bug 1298011
| Summary: | qt5-qtwebengine is ExclusiveArch to the architectures supported by Chromium | ||
|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Kevin Kofler <kevin> |
| Component: | qt5-qtwebengine | Assignee: | Kevin Kofler <kevin> |
| Status: | NEW --- | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
| Severity: | low | Docs Contact: | |
| Priority: | low | ||
| Version: | rawhide | CC: | dan, germano.massullo, kde-sig, kevin, projects.rg, than |
| Target Milestone: | --- | Keywords: | FutureFeature, Tracking |
| Target Release: | --- | ||
| Hardware: | s390x | ||
| OS: | Linux | ||
| Whiteboard: | |||
| 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: | --- | Target Upstream Version: | |
| Embargoed: | |||
| Bug Depends On: | |||
| Bug Blocks: | 238953, 485231, 2027889 | ||
exclude ppc ppc64 ppc64le as it's not suppoted yet 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. 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. Kevin, we will enable it again when the support is done. 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)? the platform ppc64 and ppc64le doesn't exist. they are missing. We need to add the platform ppc64 and ppc64le into WebKit/Source/platform 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 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. 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 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.
I think it's our scripts to remove encumbered stuff from ffmpeg that needs updating. 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.
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 (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. 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.) I'm changing the subject to make it clear that V8 is not the (only) limiting factor, unfortunately (as per the discussion above). *** Bug 1651261 has been marked as a duplicate of this bug. *** 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.
what can you tell me about qt5-qtwebengine-devel missing in EPEL7 for all CPU architectures? |
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.