/[packages]/updates/8/qtwebengine5/current/SPECS/qtwebengine5.spec
ViewVC logotype

Contents of /updates/8/qtwebengine5/current/SPECS/qtwebengine5.spec

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1934943 - (show annotations) (download)
Mon Jan 23 05:14:26 2023 UTC (14 months, 3 weeks ago) by daviddavid
File size: 15925 byte(s)
- build with system ffmpeg (Thanks to M H, mga#31383)
- add patch to fix GN flags for in built Chromium (Thanks to M H, mga#31383)
- enable pipewire 0.3 support

1 # (tmb) limit cpus to reduce memory hogging
2 %global _smp_ncpus_max 4
3
4 %define snapshot 0
5 %define pre 0
6
7 %ifarch %{arm} aarch64 x86_64
8 %global docs 0
9 %else
10 %global docs 1
11 %endif
12
13 %define qtmajor 5
14 %define qtminor 15
15 %define qtsubminor 8
16
17 # NEON support on ARM (detected at runtime) - disable this if you are hitting
18 # FTBFS due to e.g. GCC bug https://bugzilla.redhat.com/show_bug.cgi?id=1282495
19 %global arm_neon 0
20
21 # the QMake CONFIG flags to force debugging information to be produced in
22 # release builds, and for all parts of the code
23 %ifarch %{arm} aarch64
24 # the ARM builder runs out of memory during linking with the full setting below,
25 # so omit debugging information for the parts upstream deems it dispensable for
26 # (webcore, v8base)
27 %global debug_config %{nil}
28 %else
29 %global debug_config force_debug_info
30 # webcore_debug v8base_debug
31 %endif
32
33 %define subrel 1
34 %define rel 1
35
36 %define major_private 1
37 %define qtversion %{qtmajor}.%{qtminor}.%{qtsubminor}
38
39 %define libwebengine %mklibname qt5webengine %{qtmajor}
40 %define libwebenginecore %mklibname qt5webenginecore %{qtmajor}
41 %define libwebenginewidgets %mklibname qt5webenginewidgets %{qtmajor}
42 %define libpdf %mklibname qt5pdf %{qtmajor}
43 %define libpdfwidgets %mklibname qt5pdfwidgets %{qtmajor}
44 %define libwebengine_d %mklibname qt5webengine -d
45
46 %if %snapshot
47 %define qttarballdir qtwebengine-everywhere-src-%{qtversion}-%{pre}
48 %else
49 %define qttarballdir qtwebengine-everywhere-src-%{qtversion}
50 %endif
51
52 # exclude plugins (all architectures) and libv8.so (i686, it's static everywhere
53 # else)
54 %global __provides_exclude ^lib.*plugin\\.so.*|libv8\\.so$
55 # exclude libv8.so (i686, it's static everywhere else)
56 %global __requires_exclude ^libv8\\.so$
57 # exclude devel(libv8)
58 %global __requires_exclude %{?__requires_exclude:%__requires_exclude|}devel\\(libv8.*
59
60 %global use_system_re2 1
61
62 %bcond_without system_ffmpeg
63 %bcond_without pipewire
64
65 Name: qtwebengine5
66 Version: %{qtversion}
67 Release: %mkrel %{rel}
68 Summary: Integrates chromium's fast moving web capabilities into Qt
69 Group: Development/KDE and Qt
70 # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details
71 # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html
72 # The other licenses are from Chromium and the code it bundles
73 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)
74 URL: https://www.qt.io/
75 #Source0: https://download.qt.io/official_releases/qt/%%{qtmajor}.%%{qtminor}/%%{version}/submodules/%%{qttarballdir}.tar.xz
76 # cleaned tarball with patent-encumbered codecs removed from the bundled FFmpeg
77 # ./qtwebengine-release.sh
78 Source0: qtwebengine-everywhere-src-%{version}-clean.tar.xz
79 # release script used above
80 Source1: qtwebengine-release.sh
81 # cleanup scripts used above
82 Source2: clean_qtwebengine.sh
83 Source3: clean_ffmpeg.sh
84 Source4: get_free_ffmpeg_source_files.py
85 # macros
86 Source10: macros.qt5-qtwebengine
87 # fix extractCFlag to also look in QMAKE_CFLAGS_RELEASE, needed to detect the
88 # ARM flags with our %%qmake_qt5 macro, including for the next patch
89 Patch2: qtwebengine-opensource-src-5.14.1-fix-extractcflag.patch
90 # disable NEON vector instructions on ARM where the NEON code FTBFS due to
91 # GCC bug https://bugzilla.redhat.com/show_bug.cgi?id=1282495
92 Patch3: qtwebengine-opensource-src-5.14.1-no-neon.patch
93 # use the system NSPR prtime (based on Debian patch)
94 # We already depend on NSPR, so it is useless to copy these functions here.
95 # Debian uses this just fine, and I don't see relevant modifications either.
96 Patch4: qtwebengine-everywhere-src-5.15.2-system-nspr-prtime.patch
97 # gcc-12 FTBFS "use of deleted function"
98 Patch6: chromium-angle-nullptr.patch
99 Patch7: chromium-hunspell-nullptr.patch
100 # fix missing ARM -mfpu setting
101 Patch9: qtwebengine-opensource-src-5.14.1-arm-fpu-fix.patch
102 # Fix/workaround FTBFS on aarch64 with newer glibc
103 Patch24: qtwebengine-everywhere-src-5.11.3-aarch64-new-stat.patch
104 # workaround FTBFS against kernel-headers-5.2.0+
105 Patch25: qtwebengine-SIOCGSTAMP.patch
106 # FTBFS TRUE/FALSE undeclared
107 Patch31: qtwebengine-everywhere-src-5.15.5-TRUE.patch
108 # fix GN flags for in built Chromium
109 Patch41: qtwebengine-gn_args.patch
110 # patch to port to pipewire 0.3, credit Opensuse developers
111 Patch43: qtwebengine-pipewire-0.3.patch
112
113 ## Upstream patches:
114
115 BuildRequires: qtbase5-devel
116 BuildRequires: pkgconfig(Qt5Quick)
117 BuildRequires: pkgconfig(Qt5WebChannel)
118 BuildRequires: pkgconfig(Qt5QuickWidgets)
119 BuildRequires: pkgconfig(Qt5QuickControls2)
120 BuildRequires: pkgconfig(Qt5Location)
121 BuildRequires: pkgconfig(Qt5Positioning)
122 BuildRequires: pkgconfig(Qt5PrintSupport)
123 BuildRequires: pkgconfig(Qt5Sensors)
124 BuildRequires: pkgconfig(Qt5Svg)
125 BuildRequires: pkgconfig(dbus-1)
126 BuildRequires: pkgconfig(flac)
127 BuildRequires: pkgconfig(fontconfig)
128 BuildRequires: pkgconfig(harfbuzz)
129 BuildRequires: pkgconfig(icu-i18n)
130 BuildRequires: pkgconfig(icu-uc)
131 BuildRequires: pkgconfig(lcms2)
132 %if %{with system_ffmpeg}
133 BuildRequires: pkgconfig(libavcodec)
134 BuildRequires: pkgconfig(libavformat)
135 BuildRequires: pkgconfig(libavutil)
136 %endif
137 BuildRequires: pkgconfig(libcap)
138 BuildRequires: pkgconfig(libdrm)
139 BuildRequires: pkgconfig(libevent)
140 BuildRequires: pkgconfig(libpci)
141 BuildRequires: pkgconfig(libpng)
142 BuildRequires: pkgconfig(libpulse)
143 BuildRequires: pkgconfig(libwebp) >= 0.6.0
144 BuildRequires: pkgconfig(libwebpdemux)
145 BuildRequires: pkgconfig(libxml-2.0)
146 BuildRequires: pkgconfig(libxslt)
147 BuildRequires: pkgconfig(minizip)
148 BuildRequires: pkgconfig(nss)
149 BuildRequires: pkgconfig(opus)
150 BuildRequires: pkgconfig(poppler-cpp)
151 %if %{with pipewire}
152 BuildRequires: pkgconfig(libpipewire-0.3)
153 %endif
154 %if 0%{?use_system_re2}
155 BuildRequires: pkgconfig(re2)
156 %endif
157 BuildRequires: pkgconfig(speex)
158 BuildRequires: pkgconfig(vpx) >= 1.8.0
159 BuildRequires: pkgconfig(xcomposite)
160 BuildRequires: pkgconfig(xcursor)
161 BuildRequires: pkgconfig(xdamage)
162 BuildRequires: pkgconfig(xext)
163 BuildRequires: pkgconfig(xfixes)
164 BuildRequires: pkgconfig(xi)
165 BuildRequires: pkgconfig(xkbcommon)
166 BuildRequires: pkgconfig(xkbfile)
167 BuildRequires: pkgconfig(xrandr)
168 BuildRequires: pkgconfig(xscrnsaver)
169 BuildRequires: pkgconfig(xtst)
170 BuildRequires: pkgconfig(zlib)
171 BuildRequires: pkgconfig(jsoncpp)
172 BuildRequires: pkgconfig(snappy)
173 BuildRequires: nodejs-devel
174 BuildRequires: git-core
175 BuildRequires: gperf
176 BuildRequires: bison
177 BuildRequires: flex
178 BuildRequires: re2c
179 BuildRequires: ninja
180 BuildRequires: nodejs
181 # fesco exception to allow python2 use: https://pagure.io/fesco/issue/2208
182 # per https://fedoraproject.org/wiki/Changes/RetirePython2#FESCo_exceptions
183 # Only the interpreter is needed
184 BuildRequires: python2
185 # gn links statically (for now)
186 BuildRequires: libstdc++-static-devel
187
188 #Branch Patchs
189
190 #Trunk Patchs
191
192 #Patch from Mageia
193
194 %description
195 The Qt WebEngine module provides the WebEngineView API which allows QML
196 applications to render regions of dynamic web content. A WebEngineView
197 component may share the screen with other QML components or encompass
198 the full screen as specified within the QML application.
199
200 It allows an application to load pages into the WebEngineView, either by
201 URL or with an HTML string, and navigate within session history. By
202 default, links to different pages load within the same WebEngineView, but
203 web sites may request them to be opened as a new tab, window or dialog.
204
205 %files
206 %{_qt5_translationdir}/qtwebengine_locales
207 %{_qt5_qml}/QtWebEngine/
208 %{_qt5_qml}/QtQuick/Pdf/
209 %dir %{_qt5_datadir}/resources/
210 %{_qt5_datadir}/resources/*.pak
211 %{_qt5_bindir}/qwebengine_convert_dict
212 %{_qt5_plugindir}/imageformats/libqpdf.so
213 #ifarch %%{ix86}
214 %if 0%{?sse2}
215 # shared V8 library and its SSE2 version
216 %{_qt5_libdir}/qtwebengine/
217 %endif
218 %{_qt5_libexecdir}/QtWebEngineProcess
219
220 #------------------------------------------------------------------------------
221
222 %if %{docs}
223 %package doc
224 Summary: QtWebEngine%{qtmajor} APIs and tools docs
225 Group: Documentation
226 BuildArch: noarch
227 BuildRequires: qttools5
228 # This one is required to build QCH-format documentation
229 # for APIs and tools in this package set
230 BuildRequires: qttools5-assistant
231 Recommends: qttools5-assistant
232
233 %description doc
234 Documentation for APIs and tools in QtWebEngine5 package for use with
235 Qt Assistant.
236
237 %files doc
238 %{_qt5_docdir}/qtwebengine.qch
239 %{_qt5_docdir}/qtwebengine/
240 %{_qt5_docdir}/qtpdf.qch
241 %{_qt5_docdir}/qtpdf/
242 %endif
243
244 #------------------------------------------------------------------------------
245
246 %package -n %{libwebengine}
247 Summary: Qt%{qtmajor} WebEngine Component Library
248 Group: System/Libraries
249
250 %description -n %{libwebengine}
251 Qt%{qtmajor} WebEngine Component Library.
252
253 %files -n %{libwebengine}
254 %{_qt5_libdir}/libQt5WebEngine.so.%{qtmajor}{,.*}
255
256 #------------------------------------------------------------------------------
257
258 %package -n %{libwebenginecore}
259 Summary: Qt%{qtmajor} WebEngineCore Component Library
260 Group: System/Libraries
261 Requires: %{name} = %{version}
262
263 %description -n %{libwebenginecore}
264 Qt%{qtmajor} WebEngineCore Component Library.
265
266 %files -n %{libwebenginecore}
267 %{_qt5_libdir}/libQt5WebEngineCore.so.%{qtmajor}{,.*}
268
269 #------------------------------------------------------------------------------
270
271 %package -n %{libwebenginewidgets}
272 Summary: Qt%{qtmajor} WebEngineWidgets Component Library
273 Group: System/Libraries
274
275 %description -n %{libwebenginewidgets}
276 Qt%{qtmajor} WebEngineWidgets Component Library.
277
278 %files -n %{libwebenginewidgets}
279 %{_qt5_libdir}/libQt5WebEngineWidgets.so.%{qtmajor}{,.*}
280
281 #------------------------------------------------------------------------------
282
283 %package -n %{libpdf}
284 Summary: Qt%{qtmajor} Pdf Component Library
285 Group: System/Libraries
286
287 %description -n %{libpdf}
288 Qt%{qtmajor} Pdf Component Library.
289
290 %files -n %{libpdf}
291 %{_qt5_libdir}/libQt5Pdf.so.%{qtmajor}{,.*}
292
293 #------------------------------------------------------------------------------
294
295 %package -n %{libpdfwidgets}
296 Summary: Qt%{qtmajor} PdfWidgets Component Library
297 Group: System/Libraries
298
299 %description -n %{libpdfwidgets}
300 Qt%{qtmajor} PdfWidgets Component Library.
301
302 %files -n %{libpdfwidgets}
303 %{_qt5_libdir}/libQt5PdfWidgets.so.%{qtmajor}{,.*}
304
305 #------------------------------------------------------------------------------
306
307 %package -n %{libwebengine_d}
308 Summary: Devel files needed to build apps based on %{name}
309 Group: Development/KDE and Qt
310 Requires: %{name} = %{version}
311 Requires: %{libwebengine} = %{version}
312 Requires: %{libwebenginecore} = %{version}
313 Requires: %{libwebenginewidgets} = %{version}
314 Requires: %{libpdf} = %{version}
315 Requires: %{libpdfwidgets} = %{version}
316 Provides: libwebengine5-devel = %{version}
317 Provides: webengine5-devel = %{version}
318 Provides: qtwebengine5-devel = %{version}
319 Provides: qt5webengine-devel = %{version}
320
321 %description -n %{libwebengine_d}
322 Devel files needed to build apps based on %{name}.
323
324 %files -n %{libwebengine_d}
325 %{_qt5_libdir}/*.so
326 %{_qt5_libdir}/*.prl
327 %{_qt5_libdir}/pkgconfig/*.pc
328 %{_qt5_includedir}/QtWebEngine/
329 %{_qt5_includedir}/QtWebEngineCore/
330 %{_qt5_includedir}/QtWebEngineWidgets/
331 %{_qt5_includedir}/QtPdf/
332 %{_qt5_includedir}/QtPdfWidgets/
333 %{_qt5_libdir}/cmake/Qt5WebEngine/
334 %{_qt5_libdir}/cmake/Qt5WebEngineCore/
335 %{_qt5_libdir}/cmake/Qt5WebEngineWidgets/
336 %{_qt5_libdir}/cmake/Qt5Pdf/
337 %{_qt5_libdir}/cmake/Qt5PdfWidgets/
338 %{_qt5_libdir}/cmake/Qt5Gui/Qt5Gui_QPdfPlugin.cmake
339 %{_qt5_archdatadir}/mkspecs/modules/*.pri
340 %{_qt5_examplesdir}/webenginewidgets/
341 %{_qt5_examplesdir}/webengine/
342 %{_qt5_examplesdir}/pdfwidgets/
343 %{_qt5_examplesdir}/pdf/
344
345 #------------------------------------------------------------------------------
346
347 %prep
348 %setup -q -n %{qttarballdir}
349
350 %patch2 -p1 -b .fix-extractcflag
351 %if !0%{?arm_neon}
352 %patch3 -p1 -b .no-neon
353 %endif
354 %patch4 -p1 -b .system-nspr-prtime
355 %patch6 -p1 -b .angle_nullptr
356 %patch7 -p1 -b .hunspell_nullptr
357
358 ## upstream patches
359
360 %patch9 -p1 -b .arm-fpu-fix
361 %patch24 -p1 -b .aarch64-new-stat
362 %patch25 -p1 -b .SIOCGSTAMP
363 %patch31 -p1 -b .TRUE
364
365 %patch41 -p1 -b .gn_args
366 %if %{with pipewire}
367 %patch43 -p1 -b .pipewire3
368 %endif
369
370 # delete all "toolprefix = " lines from build/toolchain/linux/BUILD.gn, as we
371 # never cross-compile in native Fedora RPMs, fixes ARM and aarch64 FTBFS
372 sed -i -e '/toolprefix = /d' -e 's/\${toolprefix}//g' \
373 src/3rdparty/chromium/build/toolchain/linux/BUILD.gn
374
375 # https://bugzilla.redhat.com/1337585
376 # can't just delete, but we'll overwrite with system headers to be on the safe side
377 %if 0%{?use_system_re2}
378 cp -bv /usr/include/re2/*.h src/3rdparty/chromium/third_party/re2/src/re2/
379 %endif
380
381 %if 0
382 #ifarch x86_64
383 # enable this to force -g2 on x86_64 (most arches run out of memory with -g2)
384 # DISABLED BECAUSE OF:
385 # /usr/lib/rpm/find-debuginfo.sh: line 188: 3619 Segmentation fault
386 # (core dumped) eu-strip --remove-comment $r $g -f "$1" "$2"
387 sed -i -e 's/symbol_level=1/symbol_level=2/g' src/core/config/common.pri
388 %endif
389
390 # generate qtwebengine-3rdparty.qdoc, it is missing from the tarball
391 pushd src/3rdparty
392 %{__python2} chromium/tools/licenses.py \
393 --file-template ../../tools/about_credits.tmpl \
394 --entry-template ../../tools/about_credits_entry.tmpl \
395 credits >../webengine/doc/src/qtwebengine-3rdparty.qdoc
396 popd
397
398 # copy the Chromium license so it is installed with the appropriate name
399 cp -p src/3rdparty/chromium/LICENSE LICENSE.Chromium
400
401 # fix missing files for armv7hl
402 cp -a src/3rdparty/chromium/base/numerics/{safe_conversions_arm_impl.h,safe_math_arm_impl.h} src/3rdparty/gn/base/numerics/
403
404 # consider doing this as part of the tarball creation step instead? rdieter
405 # fix/workaround
406 # fatal error: QtWebEngineCore/qtwebenginecoreglobal.h: No such file or directory
407 if [ ! -f "./include/QtWebEngineCore/qtwebenginecoreglobal.h" ]; then
408 %{_qt5_bindir}/syncqt.pl -version %{version}
409 fi
410
411 # abort if this doesn't get created by syncqt.pl
412 test -f "./include/QtWebEngineCore/qtwebenginecoreglobal.h"
413
414 %build
415 export STRIP=strip
416 export NINJAFLAGS="%{__ninja_common_opts}"
417 export NINJA_PATH=%{__ninja}
418
419 %{qmake_qt5} \
420 %{?debug_config:CONFIG+="%{debug_config}}" \
421 CONFIG+="link_pulseaudio use_gold_linker" \
422 QMAKE_EXTRA_ARGS+="-system-webengine-icu" \
423 QMAKE_EXTRA_ARGS+="-webengine-kerberos" \
424 %if %{with system_ffmpeg}
425 QMAKE_EXTRA_ARGS+="-system-webengine-ffmpeg" \
426 QMAKE_EXTRA_ARGS+="-webengine-proprietary-codecs" \
427 %endif
428 %if %{with pipewire}
429 QMAKE_EXTRA_ARGS+="-webengine-webrtc-pipewire" \
430 %endif
431 .
432
433 %make_build
434
435 %if 0%{?docs}
436 %__make docs
437 %endif
438
439 %install
440 %make_install INSTALL_ROOT=%{buildroot}
441
442 %if 0%{?docs}
443 %make_install install_docs INSTALL_ROOT=%{buildroot}
444 %endif
445
446 # .la and .a files, die, die, die.
447 find %{buildroot} -name '*.la' -delete
448 find %{buildroot} -name '*.a' -delete
449
450 ## .prl/.la file love
451 # nuke .prl reference(s) to %%buildroot, excessive (.la-like) libs
452 pushd %{buildroot}%{_qt5_libdir}
453 for prl_file in libQt5*.prl ; do
454 sed -i -e "/^QMAKE_PRL_BUILD_DIR/d" ${prl_file}
455 if [ -f "$(basename ${prl_file} .prl).so" ]; then
456 rm -fv "$(basename ${prl_file} .prl).la"
457 sed -i -e "/^QMAKE_PRL_LIBS/d" ${prl_file}
458 fi
459 done
460 popd
461
462 # adjust cmake dep(s) to allow for using the same Qt5 that was used to build it
463 # using the lesser of %%version, %%_qt5_version
464 sed -i -e "s|%{version} \${_Qt5WebEngine|5.15.2 \${_Qt5WebEngine|" \
465 %{buildroot}%{_qt5_libdir}/cmake/Qt5WebEngine*/Qt5WebEngine*Config.cmake
466
467 %filetriggerin -- %{_datadir}/myspell
468 while read filename ; do
469 case "$filename" in
470 *.dic)
471 bdicname=%{_qtwebengine_dictionaries_dir}/`basename -s .dic "$filename"`.bdic
472 %{_qt5_bindir}/qwebengine_convert_dict "$filename" "$bdicname" &> /dev/null || :
473 ;;
474 esac
475 done

  ViewVC Help
Powered by ViewVC 1.1.30