1 # TODO: review configure options:
2 # - FTL_JIT on !x86_64?
3 # - WEB_RTC+MEDIA_STREAM (BR: openwebrtc)
4 # - AVIF? (BR: libavif-devel >= 0.9.0)
5 # - JPEGXL? (BR: libjxl-devel)
6 # - THUNDER? (BR: Thunder + ThunderClientLibraries)
9 %bcond_without introspection # GObject introspection
10 %bcond_without libsoup2 # webkit-4.0 (libsoup2 based) variant
11 %bcond_without libsoup3 # webkit-4.1 (libsoup3 based) variant (HTTP/2 support)
12 %bcond_without gtk3 # webkit-4.x (gtk3 based) variants
13 %bcond_without gtk4 # webkit-5.0 (gtk4/libsoup3 based) variant
14 %bcond_without wayland # Wayland target (requires GTK+ wayland target)
16 # it's not possible to build this with debuginfo on 32bit archs due to
17 # memory constraints during linking
19 %define _enable_debug_packages 0
21 Summary: Port of WebKit embeddable web component to GTK+ 3
22 Summary(pl.UTF-8): Port osadzalnego komponentu WWW WebKit do GTK+ 3
24 # NOTE: 2.34.x is stable, 2.35.x devel
29 Source0: https://webkitgtk.org/releases/webkitgtk-%{version}.tar.xz
30 # Source0-md5: e6100df7f82d95a4e65176b10f5ab011
32 Patch1: %{name}-icu59.patch
33 URL: https://webkitgtk.org/
34 BuildRequires: /usr/bin/ld.gold
35 BuildRequires: EGL-devel
36 BuildRequires: OpenGL-GLX-devel
37 BuildRequires: OpenGLESv2-devel
38 BuildRequires: at-spi2-core-devel >= 2.5.3
39 BuildRequires: atk-devel >= 1:2.16.0
40 BuildRequires: bubblewrap >= 0.3.1
41 BuildRequires: cairo-devel >= 1.16.0
42 BuildRequires: cmake >= 3.12
43 BuildRequires: docbook-dtd412-xml
44 BuildRequires: enchant2-devel >= 2
45 BuildRequires: fontconfig-devel >= 2.13.0
46 BuildRequires: freetype-devel >= 1:2.9.0
47 BuildRequires: gcc-c++ >= 6:7.3.0
48 BuildRequires: gettext-devel
49 BuildRequires: gettext-tools
50 BuildRequires: glib2-devel >= 1:2.67.1
51 BuildRequires: glibc-misc
52 %{?with_introspection:BuildRequires: gobject-introspection-devel >= 1.32.0}
53 BuildRequires: gperf >= 3.0.1
54 BuildRequires: gstreamer-devel >= 1.14
55 BuildRequires: gstreamer-gl-devel >= 1.10.0
56 # codecparsers,mpegts with -DUSE_GSTREAMER_MPEGTS=ON
57 #BuildRequires: gstreamer-plugins-bad-devel >= 1.10.0
58 # app,audio,fft,pbutils,tag,video
59 BuildRequires: gstreamer-plugins-base-devel >= 1.10.0
60 %{?with_gtk3:BuildRequires: gtk+3-devel >= 3.22.0}
61 %{?with_gtk4:BuildRequires: gtk4-devel >= 4.0}
62 BuildRequires: gtk-doc >= 1.10
63 BuildRequires: harfbuzz-devel >= 1.4.2
64 BuildRequires: harfbuzz-icu-devel >= 1.4.2
65 BuildRequires: hyphen-devel
66 BuildRequires: libgcrypt-devel >= 1.7.0
67 BuildRequires: libicu-devel >= 61.2
68 BuildRequires: libjpeg-devel
69 BuildRequires: libmanette-devel >= 0.2.4
70 BuildRequires: libnotify-devel
71 BuildRequires: libpng-devel
72 BuildRequires: libseccomp-devel
73 BuildRequires: libsecret-devel
74 %{?with_libsoup2:BuildRequires: libsoup-devel >= 2.54}
75 %{?with_libsoup3:BuildRequires: libsoup3-devel >= 3.0}
77 BuildRequires: libstdc++-devel >= 6:8
78 BuildRequires: libtasn1-devel
79 BuildRequires: libwebp-devel
80 BuildRequires: libwpe-devel >= 1.3.0
81 BuildRequires: libxml2-devel >= 1:2.8.0
82 BuildRequires: libxslt-devel >= 1.1.7
83 BuildRequires: openjpeg2-devel >= 2.2.0
84 BuildRequires: pango-devel >= 1:1.32.0
85 BuildRequires: perl-base >= 1:5.10.0
86 BuildRequires: pkgconfig
87 BuildRequires: python >= 1:2.7.0
88 BuildRequires: rpm-build >= 4.6
89 BuildRequires: rpmbuild(macros) >= 1.699
90 BuildRequires: ruby >= 1:1.9
91 BuildRequires: ruby-modules >= 1:1.9
92 BuildRequires: sqlite3-devel >= 3
93 BuildRequires: systemd-devel
94 BuildRequires: tar >= 1:1.22
96 BuildRequires: wayland-devel
97 BuildRequires: wayland-egl-devel
98 BuildRequires: wayland-protocols >= 1.12
100 BuildRequires: wpebackend-fdo-devel >= 1.6.0
101 BuildRequires: woff2-devel >= 1.0.2
102 BuildRequires: xdg-dbus-proxy
103 BuildRequires: xorg-lib-libICE-devel
104 BuildRequires: xorg-lib-libXcomposite-devel
105 BuildRequires: xorg-lib-libXdamage-devel
106 BuildRequires: xorg-lib-libXext-devel
107 BuildRequires: xorg-lib-libXrender-devel
108 BuildRequires: xorg-lib-libXt-devel
110 BuildRequires: zlib-devel
111 Requires: at-spi2-core-libs >= 2.5.3
112 Requires: atk >= 1:2.16.0
113 Requires: cairo >= 1.16.0
114 Requires: fontconfig-libs >= 2.13.0
115 Requires: freetype >= 1:2.9.0
116 Requires: glib2 >= 1:2.67.1
117 Requires: gstreamer >= 1.2.3
118 Requires: gstreamer-plugins-base >= 1.2.3
119 Requires: gtk+3 >= 3.22.0
120 Requires: harfbuzz >= 1.4.2
121 Requires: libgcrypt >= 1.7.0
122 Requires: libsoup >= 2.54
123 Requires: libxml2 >= 1:2.8.0
124 Requires: libxslt >= 1.1.7
125 Requires: openjpeg2 >= 2.2.0
126 Requires: pango >= 1:1.32.0
127 Requires: woff2 >= 1.0.2
128 Requires: wpebackend-fdo >= 1.6.0
129 %{?with_introspection:Conflicts: gir-repository < 0.6.5-7}
130 # Source/JavaScriptCore/CMakeLists.txt /WTF_CPU_
131 ExclusiveArch: %{ix86} %{x8664} x32 %{arm} aarch64 hppa mips ppc ppc64 ppc64le s390 s390x sh4
132 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
134 # __once_call, __once_called non-function symbols from libstdc++
135 %define skip_post_check_so lib.*gtk-4.0.*
138 gtk-webkit4 is a port of the WebKit embeddable web component to GTK+
141 %description -l pl.UTF-8
142 gtk-webkit4 to port osadzalnego komponentu WWW WebKit do GTK+ 3.
145 Summary: Development files for WebKit for GTK+ 3
146 Summary(pl.UTF-8): Pliki programistyczne komponentu WebKit dla GTK+ 3
147 Group: X11/Development/Libraries
148 Requires: %{name} = %{version}-%{release}
149 Requires: glib2-devel >= 1:2.67.1
150 Requires: gtk+3-devel >= 3.22.0
151 Requires: libsoup-devel >= 2.54
152 Requires: libstdc++-devel >= 6:8
155 Development files for WebKit for GTK+ 3.
157 %description devel -l pl.UTF-8
158 Pliki programistyczne komponentu WebKit dla GTK+ 3.
161 Summary: API documentation for WebKit GTK+ 3 port
162 Summary(pl.UTF-8): Dokumentacja API portu WebKitu do GTK+ 3
164 Requires: gtk-doc-common
168 API documentation for WebKit GTK+ 3 port.
170 %description apidocs -l pl.UTF-8
171 Dokumentacja API portu WebKitu do GTK+ 3.
173 %package -n gtk-webkit4.1
174 Summary: Port of WebKit embeddable web component to GTK+ 3 with HTTP/2 support
175 Summary(pl.UTF-8): Port osadzalnego komponentu WWW WebKit do GTK+ 3 z obsługą HTTP/2
177 Requires: at-spi2-core-libs >= 2.5.3
178 Requires: atk >= 1:2.16.0
179 Requires: cairo >= 1.16.0
180 Requires: fontconfig-libs >= 2.13.0
181 Requires: freetype >= 1:2.9.0
182 Requires: glib2 >= 1:2.67.1
183 Requires: gstreamer >= 1.2.3
184 Requires: gstreamer-plugins-base >= 1.2.3
185 Requires: gtk+3 >= 3.22.0
186 Requires: harfbuzz >= 1.4.2
187 Requires: libgcrypt >= 1.7.0
188 Requires: libsoup3 >= 3.0
189 Requires: libxml2 >= 1:2.8.0
190 Requires: libxslt >= 1.1.7
191 Requires: openjpeg2 >= 2.2.0
192 Requires: pango >= 1:1.32.0
193 Requires: woff2 >= 1.0.2
194 Requires: wpebackend-fdo >= 1.6.0
196 %description -n gtk-webkit4.1
197 gtk-webkit4.1 is a port of the WebKit embeddable web component to GTK+
198 3 with HTTP/2 (libsoup 3) support.
200 %description -n gtk-webkit4.1 -l pl.UTF-8
201 gtk-webkit4.1 to port osadzalnego komponentu WWW WebKit do GTK+ 3 z
202 obsługą HTTP/2 (libsoup 3).
204 %package -n gtk-webkit4.1-devel
205 Summary: Development files for WebKit for GTK+ 3 with HTTP/2 support
206 Summary(pl.UTF-8): Pliki programistyczne komponentu WebKit dla GTK+ 3 z obsługą HTTP/2
207 Group: X11/Development/Libraries
208 Requires: gtk-webkit4.1 = %{version}-%{release}
209 Requires: glib2-devel >= 1:2.67.1
210 Requires: gtk+3-devel >= 3.22.0
211 Requires: libsoup3-devel >= 3.0
212 Requires: libstdc++-devel >= 6:8
214 %description -n gtk-webkit4.1-devel
215 Development files for WebKit for GTK+ 3 with HTTP/2 support.
217 %description -n gtk-webkit4.1-devel -l pl.UTF-8
218 Pliki programistyczne komponentu WebKit dla GTK+ 3 z obsługą HTTP/2.
220 %package -n gtk-webkit5
221 Summary: Port of WebKit embeddable web component to GTK 4
222 Summary(pl.UTF-8): Port osadzalnego komponentu WWW WebKit do GTK 4
224 Requires: at-spi2-core-libs >= 2.5.3
225 Requires: atk >= 1:2.16.0
226 Requires: cairo >= 1.16.0
227 Requires: fontconfig-libs >= 2.13.0
228 Requires: freetype >= 1:2.9.0
229 Requires: glib2 >= 1:2.67.1
230 Requires: gstreamer >= 1.2.3
231 Requires: gstreamer-plugins-base >= 1.2.3
232 Requires: gtk4 >= 4.0
233 Requires: harfbuzz >= 1.4.2
234 Requires: libgcrypt >= 1.7.0
235 Requires: libsoup3 >= 3.0
236 Requires: libxml2 >= 1:2.8.0
237 Requires: libxslt >= 1.1.7
238 Requires: openjpeg2 >= 2.2.0
239 Requires: pango >= 1:1.32.0
240 Requires: woff2 >= 1.0.2
241 Requires: wpebackend-fdo >= 1.6.0
243 %description -n gtk-webkit5
244 gtk-webkit5 is a port of the WebKit embeddable web component to GTK 4.
246 %description -n gtk-webkit5 -l pl.UTF-8
247 gtk-webkit5 to port osadzalnego komponentu WWW WebKit do GTK+ 4.
249 %package -n gtk-webkit5-devel
250 Summary: Development files for WebKit for GTK 4
251 Summary(pl.UTF-8): Pliki programistyczne komponentu WebKit dla GTK 4
252 Group: X11/Development/Libraries
253 Requires: gtk-webkit5 = %{version}-%{release}
254 Requires: glib2-devel >= 1:2.67.1
255 Requires: gtk4-devel >= 4.0
256 Requires: libsoup3-devel >= 3.0
257 Requires: libstdc++-devel >= 6:8
259 %description -n gtk-webkit5-devel
260 Development files for WebKit for GTK 4.
262 %description -n gtk-webkit5-devel -l pl.UTF-8
263 Pliki programistyczne komponentu WebKit dla GTK 4.
265 %package -n gtk-webkit5-apidocs
266 Summary: API documentation for WebKit GTK 4 port
267 Summary(pl.UTF-8): Dokumentacja API portu WebKitu do GTK 4
269 Requires: gtk-doc-common
272 %description -n gtk-webkit5-apidocs
273 API documentation for WebKit GTK 4 port.
275 %description -n gtk-webkit5-apidocs -l pl.UTF-8
276 Dokumentacja API portu WebKitu do GTK 4.
279 %setup -q -n webkitgtk-%{version}
284 for kind in %{?with_gtk3:%{?with_libsoup2:soup2} %{?with_libsoup3:soup3}} %{?with_gtk4:gtk4} ; do
285 install -d build-${kind}
287 # gtk4 variant is missing some files in dist:
288 # Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-5.0-sections.txt
289 # Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-5.0.types
290 # don't know how to generate them, disable GTKDOC for now
292 -DENABLE_GEOLOCATION=ON \
293 $([ "$kind" != "gtk4" ] && echo -DENABLE_GTKDOC=ON) \
294 %{!?with_introspection:-DENABLE_INTROSPECTION=OFF} \
296 %{!?with_wayland:-DENABLE_WAYLAND_TARGET=OFF} \
297 -DENABLE_WEB_AUDIO=ON \
302 -DENABLE_SAMPLING_PROFILER=OFF \
304 %ifarch %{ix86} %{x8664} x32
305 -DHAVE_SSE2_EXTENSIONS=ON \
308 -DSHOULD_INSTALL_JS_SHELL=ON \
309 $([ "$kind" = "gtk4" ] && echo -DUSE_GTK4=ON) \
310 $([ "$kind" = "soup2" ] && echo -DUSE_SOUP2=ON)
317 rm -rf $RPM_BUILD_ROOT
319 for kind in %{?with_gtk3:%{?with_libsoup2:soup2} %{?with_libsoup3:soup3}} %{?with_gtk4:gtk4} ; do
320 %{__make} -C build-${kind} install \
321 DESTDIR=$RPM_BUILD_ROOT
324 %if "%{_gtkdocdir}" != "%{_datadir}/gtk-doc/html"
325 install -d $RPM_BUILD_ROOT%{_gtkdocdir}
326 %{__mv} $RPM_BUILD_ROOT%{_datadir}/gtk-doc/html/* $RPM_BUILD_ROOT%{_gtkdocdir}
329 %find_lang WebKit2GTK-4.0
330 %find_lang WebKit2GTK-4.1
331 %find_lang WebKit2GTK-5.0
334 rm -rf $RPM_BUILD_ROOT
336 %post -p /sbin/ldconfig
337 %postun -p /sbin/ldconfig
339 %post -n gtk-webkit4.1 -p /sbin/ldconfig
340 %postun -n gtk-webkit4.1 -p /sbin/ldconfig
342 %post -n gtk-webkit5 -p /sbin/ldconfig
343 %postun -n gtk-webkit5 -p /sbin/ldconfig
345 %if %{with gtk3} && %{with libsoup2}
346 %files -f WebKit2GTK-4.0.lang
347 %defattr(644,root,root,755)
349 %attr(755,root,root) %{_bindir}/WebKitWebDriver
350 %attr(755,root,root) %{_libdir}/libwebkit2gtk-4.0.so.*.*.*
351 %attr(755,root,root) %ghost %{_libdir}/libwebkit2gtk-4.0.so.37
352 %attr(755,root,root) %{_libdir}/libjavascriptcoregtk-4.0.so.*.*.*
353 %attr(755,root,root) %ghost %{_libdir}/libjavascriptcoregtk-4.0.so.18
354 %if %{with introspection}
355 %{_libdir}/girepository-1.0/JavaScriptCore-4.0.typelib
356 %{_libdir}/girepository-1.0/WebKit2-4.0.typelib
357 %{_libdir}/girepository-1.0/WebKit2WebExtension-4.0.typelib
359 %if "%{_libexecdir}" != "%{_libdir}"
360 %dir %{_libexecdir}/webkit2gtk-4.0
362 %attr(755,root,root) %{_libexecdir}/webkit2gtk-4.0/WebKitNetworkProcess
363 %attr(755,root,root) %{_libexecdir}/webkit2gtk-4.0/WebKitWebProcess
364 %attr(755,root,root) %{_libexecdir}/webkit2gtk-4.0/jsc
365 %dir %{_libdir}/webkit2gtk-4.0
366 %dir %{_libdir}/webkit2gtk-4.0/injected-bundle
367 %attr(755,root,root) %{_libdir}/webkit2gtk-4.0/injected-bundle/libwebkit2gtkinjectedbundle.so
370 %defattr(644,root,root,755)
371 %attr(755,root,root) %{_libdir}/libwebkit2gtk-4.0.so
372 %attr(755,root,root) %{_libdir}/libjavascriptcoregtk-4.0.so
373 %if %{with introspection}
374 %{_datadir}/gir-1.0/JavaScriptCore-4.0.gir
375 %{_datadir}/gir-1.0/WebKit2-4.0.gir
376 %{_datadir}/gir-1.0/WebKit2WebExtension-4.0.gir
378 %{_includedir}/webkitgtk-4.0
379 %{_pkgconfigdir}/javascriptcoregtk-4.0.pc
380 %{_pkgconfigdir}/webkit2gtk-4.0.pc
381 %{_pkgconfigdir}/webkit2gtk-web-extension-4.0.pc
386 %defattr(644,root,root,755)
387 %{_gtkdocdir}/jsc-glib-4.0
388 %{_gtkdocdir}/webkit2gtk-4.0
389 %{_gtkdocdir}/webkitdomgtk-4.0
392 %if %{with gtk3} && %{with libsoup3}
393 %files -n gtk-webkit4.1 -f WebKit2GTK-4.1.lang
394 %defattr(644,root,root,755)
396 %attr(755,root,root) %{_libdir}/libwebkit2gtk-4.1.so.*.*.*
397 %attr(755,root,root) %ghost %{_libdir}/libwebkit2gtk-4.1.so.0
398 %attr(755,root,root) %{_libdir}/libjavascriptcoregtk-4.1.so.*.*.*
399 %attr(755,root,root) %ghost %{_libdir}/libjavascriptcoregtk-4.1.so.0
400 %if %{with introspection}
401 %{_libdir}/girepository-1.0/JavaScriptCore-4.1.typelib
402 %{_libdir}/girepository-1.0/WebKit2-4.1.typelib
403 %{_libdir}/girepository-1.0/WebKit2WebExtension-4.1.typelib
405 %if "%{_libexecdir}" != "%{_libdir}"
406 %dir %{_libexecdir}/webkit2gtk-4.1
408 %attr(755,root,root) %{_libexecdir}/webkit2gtk-4.1/WebKitNetworkProcess
409 %attr(755,root,root) %{_libexecdir}/webkit2gtk-4.1/WebKitWebProcess
410 %attr(755,root,root) %{_libexecdir}/webkit2gtk-4.1/jsc
411 %dir %{_libdir}/webkit2gtk-4.1
412 %dir %{_libdir}/webkit2gtk-4.1/injected-bundle
413 %attr(755,root,root) %{_libdir}/webkit2gtk-4.1/injected-bundle/libwebkit2gtkinjectedbundle.so
415 %files -n gtk-webkit4.1-devel
416 %defattr(644,root,root,755)
417 %attr(755,root,root) %{_libdir}/libwebkit2gtk-4.1.so
418 %attr(755,root,root) %{_libdir}/libjavascriptcoregtk-4.1.so
419 %if %{with introspection}
420 %{_datadir}/gir-1.0/JavaScriptCore-4.1.gir
421 %{_datadir}/gir-1.0/WebKit2-4.1.gir
422 %{_datadir}/gir-1.0/WebKit2WebExtension-4.1.gir
424 %{_includedir}/webkitgtk-4.1
425 %{_pkgconfigdir}/javascriptcoregtk-4.1.pc
426 %{_pkgconfigdir}/webkit2gtk-4.1.pc
427 %{_pkgconfigdir}/webkit2gtk-web-extension-4.1.pc
431 %files -n gtk-webkit5 -f WebKit2GTK-5.0.lang
432 %defattr(644,root,root,755)
434 %attr(755,root,root) %{_libdir}/libwebkit2gtk-5.0.so.*.*.*
435 %attr(755,root,root) %ghost %{_libdir}/libwebkit2gtk-5.0.so.0
436 %attr(755,root,root) %{_libdir}/libjavascriptcoregtk-5.0.so.*.*.*
437 %attr(755,root,root) %ghost %{_libdir}/libjavascriptcoregtk-5.0.so.0
438 %if %{with introspection}
439 %{_libdir}/girepository-1.0/JavaScriptCore-5.0.typelib
440 %{_libdir}/girepository-1.0/WebKit2-5.0.typelib
441 %{_libdir}/girepository-1.0/WebKit2WebExtension-5.0.typelib
443 %if "%{_libexecdir}" != "%{_libdir}"
444 %dir %{_libexecdir}/webkit2gtk-5.0
446 %attr(755,root,root) %{_libexecdir}/webkit2gtk-5.0/WebKitNetworkProcess
447 %attr(755,root,root) %{_libexecdir}/webkit2gtk-5.0/WebKitWebProcess
448 %attr(755,root,root) %{_libexecdir}/webkit2gtk-5.0/jsc
449 %dir %{_libdir}/webkit2gtk-5.0
450 %dir %{_libdir}/webkit2gtk-5.0/injected-bundle
451 %attr(755,root,root) %{_libdir}/webkit2gtk-5.0/injected-bundle/libwebkit2gtkinjectedbundle.so
453 %files -n gtk-webkit5-devel
454 %defattr(644,root,root,755)
455 %attr(755,root,root) %{_libdir}/libwebkit2gtk-5.0.so
456 %attr(755,root,root) %{_libdir}/libjavascriptcoregtk-5.0.so
457 %if %{with introspection}
458 %{_datadir}/gir-1.0/JavaScriptCore-5.0.gir
459 %{_datadir}/gir-1.0/WebKit2-5.0.gir
460 %{_datadir}/gir-1.0/WebKit2WebExtension-5.0.gir
462 %{_includedir}/webkitgtk-5.0
463 %{_pkgconfigdir}/javascriptcoregtk-5.0.pc
464 %{_pkgconfigdir}/webkit2gtk-5.0.pc
465 %{_pkgconfigdir}/webkit2gtk-web-extension-5.0.pc
467 # disabled for now, see note on cmake
469 %files -n gtk-webkit5-apidocs
470 %defattr(644,root,root,755)
471 %{_gtkdocdir}/jsc-glib-5.0
472 %{_gtkdocdir}/webkit2gtk-5.0
473 %{_gtkdocdir}/webkitdomgtk-5.0