Log In
Log In
Places
All Projects
Status Monitor
Collapse sidebar
infoserver
qt5-qtwebengine
qt5-qtwebengine.spec
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File qt5-qtwebengine.spec of Package qt5-qtwebengine
%global qt_module qtwebengine %global _hardened_build 1 # define to build docs, need to undef this for bootstrapping # where qt5-qttools builds are not yet available # only primary archs (for now), allow secondary to bootstrap %ifarch %{arm} %{ix86} x86_64 %global docs 1 %endif %if 0%{?fedora} > 23 # need libvpx >= 1.5.0 %global use_system_libvpx 1 %endif %if 0%{?fedora} > 23 # need libwebp >= 0.5.0 %global use_system_libwebp 1 %endif # NEON support on ARM (detected at runtime) - disable this if you are hitting # FTBFS due to e.g. GCC bug https://bugzilla.redhat.com/show_bug.cgi?id=1282495 %global arm_neon 1 #global prerelease rc # exclude plugins (all architectures) and libv8.so (i686, it's static everywhere # else) %global __provides_exclude ^lib.*plugin\\.so.*|libv8\\.so$ # exclude libv8.so (i686, it's static everywhere else) %global __requires_exclude ^libv8\\.so$ Summary: Qt5 - QtWebEngine components Name: qt5-qtwebengine Version: 5.7.1 Release: 4%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html # The other licenses are from Chromium and the code it bundles License: (LGPLv2 with exceptions or GPLv3 with exceptions) and BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2) URL: http://www.qt.io # cleaned tarball with patent-encumbered codecs removed from the bundled FFmpeg # wget http://download.qt.io/official_releases/qt/5.7/5.7.0/submodules/qtwebengine-opensource-src-5.7.0.tar.xz # ./clean_qtwebengine.sh 5.7.0 Source0: qtwebengine-opensource-src-%{version}-clean.tar.xz # cleanup scripts used above Source1: clean_qtwebengine.sh Source2: clean_ffmpeg.sh Source3: get_free_ffmpeg_source_files.py # some tweaks to linux.pri (system libs, link libpci, run unbundling script) Patch0: qtwebengine-opensource-src-5.7.0-linux-pri.patch # quick hack to avoid checking for the nonexistent icudtl.dat and silence the # resulting warnings - not upstreamable as is because it removes the fallback # mechanism for the ICU data directory (which is not used in our builds because # we use the system ICU, which embeds the data statically) completely Patch1: qtwebengine-opensource-src-5.6.0-no-icudtl-dat.patch # fix extractCFlag to also look in QMAKE_CFLAGS_RELEASE, needed to detect the # ARM flags with our %%qmake_qt5 macro, including for the next patch Patch2: qtwebengine-opensource-src-5.6.0-beta-fix-extractcflag.patch # disable NEON vector instructions on ARM where the NEON code FTBFS due to # GCC bug https://bugzilla.redhat.com/show_bug.cgi?id=1282495 # otherwise, we use the arm-fpu-fix below instead (which this patch contains) Patch3: qtwebengine-opensource-src-5.7.1-no-neon.patch # use the system NSPR prtime (based on Debian patch) # We already depend on NSPR, so it is useless to copy these functions here. # Debian uses this just fine, and I don't see relevant modifications either. Patch4: qtwebengine-opensource-src-5.7.0-system-nspr-prtime.patch # use the system ICU UTF functions # We already depend on ICU, so it is useless to copy these functions here. # I checked the history of that directory, and other than the renames I am # undoing, there were no modifications at all. Must be applied after Patch5. Patch5: qtwebengine-opensource-src-5.7.0-system-icu-utf.patch # do not require SSE2 on i686 # cumulative revert of upstream reviews 187423002, 308003004, 511773002 (parts # relevant to QtWebEngine only), 516543004, 1152053004 and 1161853008, along # with some custom fixes and improvements # also build V8 shared and twice on i686 (once for x87, once for SSE2) Patch6: qtwebengine-opensource-src-5.7.0-no-sse2.patch # fix ARM NEON handling in webrtc gyp files # Fix video_processing.gypi to only build NEON files when actually requested # (i.e., not if arm_neon=0 arm_neon_optional=0). Patch7: qtwebengine-opensource-src-5.7.0-webrtc-neon.patch # don't require the time zone detection API backported from ICU 55 (thanks spot) Patch8: qtwebengine-opensource-src-5.6.0-beta-system-icu54.patch # fix missing ARM -mfpu setting (see the comment in the no-neon patch above) Patch9: qtwebengine-opensource-src-5.7.1-arm-fpu-fix.patch # remove Android dependencies from openmax_dl ARM NEON detection (detect.c) Patch10: qtwebengine-opensource-src-5.7.1-openmax-dl-neon.patch # chromium-skia: build SkUtilsArm.cpp also on non-Android ARM Patch11: qtwebengine-opensource-src-5.7.1-skia-neon.patch # webrtc: backport https://codereview.webrtc.org/1820133002/ "Implement CPU # feature detection for ARM Linux." and enable the detection also for Chromium Patch12: qtwebengine-opensource-src-5.7.1-webrtc-neon-detect.patch # handled by qt5-srpm-macros, which defines %%qt5_qtwebengine_arches ExclusiveArch: %{qt5_qtwebengine_arches} BuildRequires: qt5-qtbase-devel >= %{version} BuildRequires: qt5-qtbase-private-devel # TODO: check of = is really needed or if >= would be good enough -- rex %{?_qt5:Requires: %{_qt5}%{?_isa} = %{_qt5_version}} BuildRequires: qt5-qtdeclarative-devel >= %{version} BuildRequires: qt5-qtxmlpatterns-devel >= %{version} BuildRequires: qt5-qtlocation-devel >= %{version} BuildRequires: qt5-qtsensors-devel >= %{version} BuildRequires: qt5-qtwebchannel-devel >= %{version} BuildRequires: qt5-qttools-static >= %{version} BuildRequires: ninja-build BuildRequires: cmake BuildRequires: bison BuildRequires: git-core BuildRequires: gperf BuildRequires: libicu-devel BuildRequires: libjpeg-devel BuildRequires: re2-devel BuildRequires: snappy-devel %ifarch %{ix86} x86_64 BuildRequires: yasm %endif BuildRequires: pkgconfig(expat) BuildRequires: pkgconfig(gobject-2.0) BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(fontconfig) BuildRequires: pkgconfig(freetype2) BuildRequires: pkgconfig(gl) BuildRequires: pkgconfig(egl) BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(libudev) %if 0%{?use_system_libwebp} BuildRequires: pkgconfig(libwebp) >= 0.5.0 %endif BuildRequires: pkgconfig(harfbuzz) BuildRequires: pkgconfig(jsoncpp) BuildRequires: pkgconfig(protobuf) BuildRequires: pkgconfig(libdrm) BuildRequires: pkgconfig(opus) BuildRequires: pkgconfig(libevent) BuildRequires: pkgconfig(zlib) BuildRequires: pkgconfig(minizip) BuildRequires: pkgconfig(libxml-2.0) BuildRequires: pkgconfig(libxslt) BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(xi) BuildRequires: pkgconfig(xcursor) BuildRequires: pkgconfig(xext) BuildRequires: pkgconfig(xfixes) BuildRequires: pkgconfig(xrender) BuildRequires: pkgconfig(xdamage) BuildRequires: pkgconfig(xcomposite) BuildRequires: pkgconfig(xtst) BuildRequires: pkgconfig(xrandr) BuildRequires: pkgconfig(xscrnsaver) BuildRequires: pkgconfig(libcap) BuildRequires: pkgconfig(libpulse) BuildRequires: pkgconfig(alsa) BuildRequires: pkgconfig(libpci) BuildRequires: pkgconfig(dbus-1) BuildRequires: pkgconfig(nss) BuildRequires: pkgconfig(libsrtp) BuildRequires: perl BuildRequires: python %if 0%{?use_system_libvpx} BuildRequires: pkgconfig(vpx) >= 1.5.0 %endif # extra (non-upstream) functions needed, see # src/3rdparty/chromium/third_party/sqlite/README.chromium for details #BuildRequires: pkgconfig(sqlite3) ## Various bundled libraries that Chromium does not support unbundling :-( ## Only the parts actually built are listed. ## Query for candidates: ## grep third_party/ build.log | sed 's!third_party/!\nthird_party/!g' | \ ## grep third_party/ | sed 's!^third_party/!!g' | sed 's!/.*$!!g' | \ ## sed 's/\;.*$//g' | sed 's/ .*$//g' | sort | uniq | less ## some false positives where only shim headers are generated for some reason ## some false positives with dummy placeholder dirs (swiftshader, widevine) ## some false negatives where a header-only library is bundled (e.g. x86inc) ## Spot's chromium.spec also has a list that I checked. # Of course, Chromium itself is bundled. It cannot be unbundled because it is # not a library, but forked (modified) application code. # Some security fixes are backported, see: # http://code.qt.io/cgit/qt/qtwebengine-chromium.git/log/?h=49-based Provides: bundled(chromium) = 49 # Bundled in src/3rdparty/chromium/third_party: # Check src/3rdparty/chromium/third_party/*/README.chromium for version numbers, # except where specified otherwise. Provides: bundled(angle) = 2422 # Google's fork of OpenSSL # We cannot build against NSS instead because it no longer works with NSS 3.21: # HTTPS on, ironically, Google's sites (Google, YouTube, etc.) stops working # completely and produces only ERR_SSL_PROTOCOL_ERROR errors: # http://kaosx.us/phpBB3/viewtopic.php?t=1235 # https://bugs.launchpad.net/ubuntu/+source/chromium-browser/+bug/1520568 # So we have to do what Chromium now defaults to (since 47): a "chimera build", # i.e., use the BoringSSL code and the system NSS certificates. Provides: bundled(boringssl) Provides: bundled(brotli) # Don't get too excited. MPEG and other legally problematic stuff is stripped # out. See clean_qtwebengine.sh, clean_ffmpeg.sh, and # get_free_ffmpeg_source_files.py. # see src/3rdparty/chromium/third_party/ffmpeg/Changelog for the version number Provides: bundled(ffmpeg) = 2.8 Provides: bundled(iccjpeg) # bundled as "khronos", headers only Provides: bundled(khronos_headers) # bundled as "leveldatabase" Provides: bundled(leveldb) Provides: bundled(libjingle) = 11250 %if !0%{?use_system_libvpx} # bundled as "libvpx_new" # the version in README.chromium is wrong, see # src/3rdparty/chromium/third_party/libvpx_new/source/libvpx/CHANGELOG for the # real version number Provides: bundled(libvpx) = 1.5.0 %endif %if !0%{?use_system_libwebp} Provides: bundled(libwebp) = 0.5.0 %endif Provides: bundled(libXNVCtrl) = 302.17 Provides: bundled(libyuv) = 1563 Provides: bundled(modp_b64) Provides: bundled(mojo) # headers only Provides: bundled(npapi) Provides: bundled(openmax_dl) = 1.0.2 Provides: bundled(ots) Provides: bundled(qcms) = 4 Provides: bundled(sfntly) Provides: bundled(skia) # bundled as "smhasher" Provides: bundled(SMHasher) = 0-0.1.svn147 Provides: bundled(sqlite) = 3.8.7.4 Provides: bundled(usrsctp) Provides: bundled(webrtc) = 90 %ifarch %{ix86} x86_64 # header (for assembly) only Provides: bundled(x86inc) = 0 %endif # Bundled in src/3rdparty/chromium/base/third_party: # Check src/3rdparty/chromium/third_party/base/*/README.chromium for version # numbers, except where specified otherwise. Provides: bundled(dmg_fp) Provides: bundled(dynamic_annotations) = 4384 Provides: bundled(superfasthash) = 0 Provides: bundled(symbolize) # bundled as "valgrind", headers only Provides: bundled(valgrind.h) # bundled as "xdg_mime" Provides: bundled(xdg-mime) # bundled as "xdg_user_dirs" Provides: bundled(xdg-user-dirs) = 0.10 # Bundled in src/3rdparty/chromium/net/third_party: # Check src/3rdparty/chromium/third_party/net/*/README.chromium for version # numbers, except where specified otherwise. Provides: bundled(mozilla_security_manager) = 1.9.2 # Bundled in src/3rdparty/chromium/url/third_party: # Check src/3rdparty/chromium/third_party/url/*/README.chromium for version # numbers, except where specified otherwise. # bundled as "mozilla", file renamed and modified Provides: bundled(nsURLParsers) # Bundled outside of third_party, apparently not considered as such by Chromium: # see src/3rdparty/chromium/v8/include/v8_version.h for the version number Provides: bundled(v8) = 4.9.385.33 # bundled by v8 (src/3rdparty/chromium/v8/src/third_party/fdlibm) # see src/3rdparty/chromium/v8/src/third_party/fdlibm/README.v8 for the version Provides: bundled(fdlibm) = 5.3 %{?_qt5_version:Requires: qt5-qtbase%{?_isa} = %{_qt5_version}} %description %{summary}. %package devel Summary: Development files for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} Requires: qt5-qtbase-devel%{?_isa} Requires: qt5-qtdeclarative-devel%{?_isa} %description devel %{summary}. %package examples Summary: Example files for %{name} %description examples %{summary}. %if 0%{?docs} %package doc Summary: API documentation for %{name} BuildRequires: qt5-qhelpgenerator BuildRequires: qt5-qdoc BuildArch: noarch %description doc %{summary}. %endif %prep %setup -q -n %{qt_module}-opensource-src-%{version}%{?prerelease:-%{prerelease}} %patch0 -p1 -b .linux-pri %patch1 -p1 -b .no-icudtl-dat %patch2 -p1 -b .fix-extractcflag %if 0%{?arm_neon} %patch9 -p1 -b .arm-fpu-fix %else %patch3 -p1 -b .no-neon %endif %patch4 -p1 -b .system-nspr-prtime %patch5 -p1 -b .system-icu-utf %patch6 -p1 -b .no-sse2 %patch7 -p1 -b .webrtc-neon %patch8 -p1 -b .system-icu54 %patch10 -p1 -b .openmax-dl-neon %patch11 -p1 -b .skia-neon %patch12 -p1 -b .webrtc-neon-detect # fix // in #include in content/renderer/gpu to avoid debugedit failure sed -i -e 's!gpu//!gpu/!g' \ src/3rdparty/chromium/content/renderer/gpu/compositor_forwarding_message_filter.cc # remove ./ from #line commands in ANGLE to avoid debugedit failure (?) sed -i -e 's!\./!!g' \ src/3rdparty/chromium/third_party/angle/src/compiler/preprocessor/Tokenizer.cpp \ src/3rdparty/chromium/third_party/angle/src/compiler/translator/glslang_lex.cpp # http://bugzilla.redhat.com/1337585 # can't just delete, but we'll overwrite with system headers to be on the safe side cp -bv /usr/include/re2/*.h src/3rdparty/chromium/third_party/re2/src/re2/ %ifnarch x86_64 # most arches run out of memory with full debuginfo, so use -g1 on non-x86_64 sed -i -e 's/=-g$/=-g1/g' src/core/gyp_run.pro %endif # copy the Chromium license so it is installed with the appropriate name cp -p src/3rdparty/chromium/LICENSE LICENSE.Chromium %build export STRIP=strip export NINJAFLAGS="-v %{_smp_mflags}" export NINJA_PATH=%{_bindir}/ninja-build export CFLAGS="%{optflags}" %ifnarch x86_64 # most arches run out of memory with full debuginfo, so use -g1 on non-x86_64 export CFLAGS=`echo "$CFLAGS" | sed -e 's/ -g / -g1 /g'` %endif export CXXFLAGS="%{optflags} -fno-delete-null-pointer-checks" %ifnarch x86_64 # most arches run out of memory with full debuginfo, so use -g1 on non-x86_64 export CXXFLAGS=`echo "$CXXFLAGS" | sed -e 's/ -g / -g1 /g'` %endif mkdir %{_target_platform} pushd %{_target_platform} %{qmake_qt5} CONFIG+="webcore_debug v8base_debug force_debug_info" WEBENGINE_CONFIG+="use_system_icu use_system_protobuf" .. # if we keep these set here, gyp picks up duplicate flags unset CFLAGS export CFLAGS unset CXXFLAGS export CXXFLAGS # workaround, disable parallel compilation as it fails to compile in brew make %{?_smp_mflags} %if 0%{?docs} make %{?_smp_mflags} docs %endif popd %install make install INSTALL_ROOT=%{buildroot} -C %{_target_platform} %if 0%{?docs} make install_docs INSTALL_ROOT=%{buildroot} -C %{_target_platform} %endif ## .prl/.la file love # nuke .prl reference(s) to %%buildroot, excessive (.la-like) libs pushd %{buildroot}%{_qt5_libdir} for prl_file in libQt5*.prl ; do sed -i -e "/^QMAKE_PRL_BUILD_DIR/d" ${prl_file} if [ -f "$(basename ${prl_file} .prl).so" ]; then rm -fv "$(basename ${prl_file} .prl).la" sed -i -e "/^QMAKE_PRL_LIBS/d" ${prl_file} fi done popd %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %files %license LICENSE.* src/webengine/doc/src/qtwebengine-3rdparty.qdoc %{_qt5_libdir}/libQt5*.so.* %{_qt5_libdir}/qt5/qml/* %{_qt5_libdir}/qt5/libexec/QtWebEngineProcess %ifarch %{ix86} # shared V8 library and its SSE2 version %{_qt5_libdir}/qtwebengine/ %endif %{_qt5_plugindir}/designer/libqwebengineview.so %{_qt5_datadir}/resources/ %dir %{_qt5_translationdir}/qtwebengine_locales %lang(am) %{_qt5_translationdir}/qtwebengine_locales/am.pak %lang(ar) %{_qt5_translationdir}/qtwebengine_locales/ar.pak %lang(bg) %{_qt5_translationdir}/qtwebengine_locales/bg.pak %lang(bn) %{_qt5_translationdir}/qtwebengine_locales/bn.pak %lang(ca) %{_qt5_translationdir}/qtwebengine_locales/ca.pak %lang(cs) %{_qt5_translationdir}/qtwebengine_locales/cs.pak %lang(da) %{_qt5_translationdir}/qtwebengine_locales/da.pak %lang(de) %{_qt5_translationdir}/qtwebengine_locales/de.pak %lang(el) %{_qt5_translationdir}/qtwebengine_locales/el.pak %lang(en) %{_qt5_translationdir}/qtwebengine_locales/en-GB.pak %lang(en) %{_qt5_translationdir}/qtwebengine_locales/en-US.pak %lang(es) %{_qt5_translationdir}/qtwebengine_locales/es-419.pak %lang(es) %{_qt5_translationdir}/qtwebengine_locales/es.pak %lang(et) %{_qt5_translationdir}/qtwebengine_locales/et.pak %lang(fa) %{_qt5_translationdir}/qtwebengine_locales/fa.pak %lang(fi) %{_qt5_translationdir}/qtwebengine_locales/fi.pak %lang(fil) %{_qt5_translationdir}/qtwebengine_locales/fil.pak %lang(fr) %{_qt5_translationdir}/qtwebengine_locales/fr.pak %lang(gu) %{_qt5_translationdir}/qtwebengine_locales/gu.pak %lang(he) %{_qt5_translationdir}/qtwebengine_locales/he.pak %lang(hi) %{_qt5_translationdir}/qtwebengine_locales/hi.pak %lang(hr) %{_qt5_translationdir}/qtwebengine_locales/hr.pak %lang(hu) %{_qt5_translationdir}/qtwebengine_locales/hu.pak %lang(id) %{_qt5_translationdir}/qtwebengine_locales/id.pak %lang(it) %{_qt5_translationdir}/qtwebengine_locales/it.pak %lang(ja) %{_qt5_translationdir}/qtwebengine_locales/ja.pak %lang(kn) %{_qt5_translationdir}/qtwebengine_locales/kn.pak %lang(ko) %{_qt5_translationdir}/qtwebengine_locales/ko.pak %lang(lt) %{_qt5_translationdir}/qtwebengine_locales/lt.pak %lang(lv) %{_qt5_translationdir}/qtwebengine_locales/lv.pak %lang(ml) %{_qt5_translationdir}/qtwebengine_locales/ml.pak %lang(mr) %{_qt5_translationdir}/qtwebengine_locales/mr.pak %lang(ms) %{_qt5_translationdir}/qtwebengine_locales/ms.pak %lang(nb) %{_qt5_translationdir}/qtwebengine_locales/nb.pak %lang(nl) %{_qt5_translationdir}/qtwebengine_locales/nl.pak %lang(pl) %{_qt5_translationdir}/qtwebengine_locales/pl.pak %lang(pt_BR) %{_qt5_translationdir}/qtwebengine_locales/pt-BR.pak %lang(pt_PT) %{_qt5_translationdir}/qtwebengine_locales/pt-PT.pak %lang(ro) %{_qt5_translationdir}/qtwebengine_locales/ro.pak %lang(ru) %{_qt5_translationdir}/qtwebengine_locales/ru.pak %lang(sk) %{_qt5_translationdir}/qtwebengine_locales/sk.pak %lang(sl) %{_qt5_translationdir}/qtwebengine_locales/sl.pak %lang(sr) %{_qt5_translationdir}/qtwebengine_locales/sr.pak %lang(sv) %{_qt5_translationdir}/qtwebengine_locales/sv.pak %lang(sw) %{_qt5_translationdir}/qtwebengine_locales/sw.pak %lang(ta) %{_qt5_translationdir}/qtwebengine_locales/ta.pak %lang(te) %{_qt5_translationdir}/qtwebengine_locales/te.pak %lang(th) %{_qt5_translationdir}/qtwebengine_locales/th.pak %lang(tr) %{_qt5_translationdir}/qtwebengine_locales/tr.pak %lang(uk) %{_qt5_translationdir}/qtwebengine_locales/uk.pak %lang(vi) %{_qt5_translationdir}/qtwebengine_locales/vi.pak %lang(zh_CN) %{_qt5_translationdir}/qtwebengine_locales/zh-CN.pak %lang(zh_TW) %{_qt5_translationdir}/qtwebengine_locales/zh-TW.pak %files devel %{_qt5_headerdir}/Qt*/ %{_qt5_libdir}/libQt5*.so %{_qt5_libdir}/libQt5*.prl %{_qt5_libdir}/cmake/Qt5*/ %{_qt5_libdir}/pkgconfig/Qt5*.pc %{_qt5_archdatadir}/mkspecs/modules/*.pri %files examples %{_qt5_examplesdir}/ %if 0%{?docs} %files doc %{_qt5_docdir}/* %endif
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Contact
Support
@OBShq
The Open Build Service is an
openSUSE project
.
Log In
Places
Places
All Projects
Status Monitor