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: lcms2-devel
67 BuildRequires: libgcrypt-devel >= 1.7.0
68 BuildRequires: libicu-devel >= 61.2
69 BuildRequires: libjpeg-devel
70 BuildRequires: libmanette-devel >= 0.2.4
71 BuildRequires: libnotify-devel
72 BuildRequires: libpng-devel
73 BuildRequires: libseccomp-devel
74 BuildRequires: libsecret-devel
75 %{?with_libsoup2:BuildRequires: libsoup-devel >= 2.54}
76 %{?with_libsoup3:BuildRequires: libsoup3-devel >= 3.0}
78 BuildRequires: libstdc++-devel >= 6:8
79 BuildRequires: libtasn1-devel
80 BuildRequires: libwebp-devel
81 BuildRequires: libwpe-devel >= 1.3.0
82 BuildRequires: libxml2-devel >= 1:2.8.0
83 BuildRequires: libxslt-devel >= 1.1.7
84 BuildRequires: openjpeg2-devel >= 2.2.0
85 BuildRequires: pango-devel >= 1:1.32.0
86 BuildRequires: perl-base >= 1:5.10.0
87 BuildRequires: pkgconfig
88 BuildRequires: python >= 1:2.7.0
89 BuildRequires: rpm-build >= 4.6
90 BuildRequires: rpmbuild(macros) >= 1.699
91 BuildRequires: ruby >= 1:1.9
92 BuildRequires: ruby-modules >= 1:1.9
93 BuildRequires: sqlite3-devel >= 3
94 BuildRequires: systemd-devel
95 BuildRequires: tar >= 1:1.22
97 BuildRequires: wayland-devel
98 BuildRequires: wayland-egl-devel
99 BuildRequires: wayland-protocols >= 1.12
101 BuildRequires: wpebackend-fdo-devel >= 1.6.0
102 BuildRequires: woff2-devel >= 1.0.2
103 BuildRequires: xdg-dbus-proxy
104 BuildRequires: xorg-lib-libICE-devel
105 BuildRequires: xorg-lib-libXcomposite-devel
106 BuildRequires: xorg-lib-libXdamage-devel
107 BuildRequires: xorg-lib-libXext-devel
108 BuildRequires: xorg-lib-libXrender-devel
109 BuildRequires: xorg-lib-libXt-devel
111 BuildRequires: zlib-devel
112 Requires: at-spi2-core-libs >= 2.5.3
113 Requires: atk >= 1:2.16.0
114 Requires: cairo >= 1.16.0
115 Requires: fontconfig-libs >= 2.13.0
116 Requires: freetype >= 1:2.9.0
117 Requires: glib2 >= 1:2.67.1
118 Requires: gstreamer >= 1.2.3
119 Requires: gstreamer-plugins-base >= 1.2.3
120 Requires: gtk+3 >= 3.22.0
121 Requires: harfbuzz >= 1.4.2
122 Requires: libgcrypt >= 1.7.0
123 Requires: libsoup >= 2.54
124 Requires: libxml2 >= 1:2.8.0
125 Requires: libxslt >= 1.1.7
126 Requires: openjpeg2 >= 2.2.0
127 Requires: pango >= 1:1.32.0
128 Requires: woff2 >= 1.0.2
129 Requires: wpebackend-fdo >= 1.6.0
130 %{?with_introspection:Conflicts: gir-repository < 0.6.5-7}
131 # Source/JavaScriptCore/CMakeLists.txt /WTF_CPU_
132 ExclusiveArch: %{ix86} %{x8664} x32 %{arm} aarch64 hppa mips ppc ppc64 ppc64le s390 s390x sh4
133 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
135 # __once_call, __once_called non-function symbols from libstdc++
136 %define skip_post_check_so lib.*gtk-4.0.*
139 gtk-webkit4 is a port of the WebKit embeddable web component to GTK+
142 %description -l pl.UTF-8
143 gtk-webkit4 to port osadzalnego komponentu WWW WebKit do GTK+ 3.
146 Summary: Development files for WebKit for GTK+ 3
147 Summary(pl.UTF-8): Pliki programistyczne komponentu WebKit dla GTK+ 3
148 Group: X11/Development/Libraries
149 Requires: %{name} = %{version}-%{release}
150 Requires: glib2-devel >= 1:2.67.1
151 Requires: gtk+3-devel >= 3.22.0
152 Requires: libsoup-devel >= 2.54
153 Requires: libstdc++-devel >= 6:8
156 Development files for WebKit for GTK+ 3.
158 %description devel -l pl.UTF-8
159 Pliki programistyczne komponentu WebKit dla GTK+ 3.
162 Summary: API documentation for WebKit GTK+ 3 port
163 Summary(pl.UTF-8): Dokumentacja API portu WebKitu do GTK+ 3
165 Requires: gtk-doc-common
169 API documentation for WebKit GTK+ 3 port.
171 %description apidocs -l pl.UTF-8
172 Dokumentacja API portu WebKitu do GTK+ 3.
174 %package -n gtk-webkit4.1
175 Summary: Port of WebKit embeddable web component to GTK+ 3 with HTTP/2 support
176 Summary(pl.UTF-8): Port osadzalnego komponentu WWW WebKit do GTK+ 3 z obsługą HTTP/2
178 Requires: at-spi2-core-libs >= 2.5.3
179 Requires: atk >= 1:2.16.0
180 Requires: cairo >= 1.16.0
181 Requires: fontconfig-libs >= 2.13.0
182 Requires: freetype >= 1:2.9.0
183 Requires: glib2 >= 1:2.67.1
184 Requires: gstreamer >= 1.2.3
185 Requires: gstreamer-plugins-base >= 1.2.3
186 Requires: gtk+3 >= 3.22.0
187 Requires: harfbuzz >= 1.4.2
188 Requires: libgcrypt >= 1.7.0
189 Requires: libsoup3 >= 3.0
190 Requires: libxml2 >= 1:2.8.0
191 Requires: libxslt >= 1.1.7
192 Requires: openjpeg2 >= 2.2.0
193 Requires: pango >= 1:1.32.0
194 Requires: woff2 >= 1.0.2
195 Requires: wpebackend-fdo >= 1.6.0
197 %description -n gtk-webkit4.1
198 gtk-webkit4.1 is a port of the WebKit embeddable web component to GTK+
199 3 with HTTP/2 (libsoup 3) support.
201 %description -n gtk-webkit4.1 -l pl.UTF-8
202 gtk-webkit4.1 to port osadzalnego komponentu WWW WebKit do GTK+ 3 z
203 obsługą HTTP/2 (libsoup 3).
205 %package -n gtk-webkit4.1-devel
206 Summary: Development files for WebKit for GTK+ 3 with HTTP/2 support
207 Summary(pl.UTF-8): Pliki programistyczne komponentu WebKit dla GTK+ 3 z obsługą HTTP/2
208 Group: X11/Development/Libraries
209 Requires: gtk-webkit4.1 = %{version}-%{release}
210 Requires: glib2-devel >= 1:2.67.1
211 Requires: gtk+3-devel >= 3.22.0
212 Requires: libsoup3-devel >= 3.0
213 Requires: libstdc++-devel >= 6:8
215 %description -n gtk-webkit4.1-devel
216 Development files for WebKit for GTK+ 3 with HTTP/2 support.
218 %description -n gtk-webkit4.1-devel -l pl.UTF-8
219 Pliki programistyczne komponentu WebKit dla GTK+ 3 z obsługą HTTP/2.
221 %package -n gtk-webkit5
222 Summary: Port of WebKit embeddable web component to GTK 4
223 Summary(pl.UTF-8): Port osadzalnego komponentu WWW WebKit do GTK 4
225 Requires: at-spi2-core-libs >= 2.5.3
226 Requires: atk >= 1:2.16.0
227 Requires: cairo >= 1.16.0
228 Requires: fontconfig-libs >= 2.13.0
229 Requires: freetype >= 1:2.9.0
230 Requires: glib2 >= 1:2.67.1
231 Requires: gstreamer >= 1.2.3
232 Requires: gstreamer-plugins-base >= 1.2.3
233 Requires: gtk4 >= 4.0
234 Requires: harfbuzz >= 1.4.2
235 Requires: libgcrypt >= 1.7.0
236 Requires: libsoup3 >= 3.0
237 Requires: libxml2 >= 1:2.8.0
238 Requires: libxslt >= 1.1.7
239 Requires: openjpeg2 >= 2.2.0
240 Requires: pango >= 1:1.32.0
241 Requires: woff2 >= 1.0.2
242 Requires: wpebackend-fdo >= 1.6.0
244 %description -n gtk-webkit5
245 gtk-webkit5 is a port of the WebKit embeddable web component to GTK 4.
247 %description -n gtk-webkit5 -l pl.UTF-8
248 gtk-webkit5 to port osadzalnego komponentu WWW WebKit do GTK+ 4.
250 %package -n gtk-webkit5-devel
251 Summary: Development files for WebKit for GTK 4
252 Summary(pl.UTF-8): Pliki programistyczne komponentu WebKit dla GTK 4
253 Group: X11/Development/Libraries
254 Requires: gtk-webkit5 = %{version}-%{release}
255 Requires: glib2-devel >= 1:2.67.1
256 Requires: gtk4-devel >= 4.0
257 Requires: libsoup3-devel >= 3.0
258 Requires: libstdc++-devel >= 6:8
260 %description -n gtk-webkit5-devel
261 Development files for WebKit for GTK 4.
263 %description -n gtk-webkit5-devel -l pl.UTF-8
264 Pliki programistyczne komponentu WebKit dla GTK 4.
266 %package -n gtk-webkit5-apidocs
267 Summary: API documentation for WebKit GTK 4 port
268 Summary(pl.UTF-8): Dokumentacja API portu WebKitu do GTK 4
270 Requires: gtk-doc-common
273 %description -n gtk-webkit5-apidocs
274 API documentation for WebKit GTK 4 port.
276 %description -n gtk-webkit5-apidocs -l pl.UTF-8
277 Dokumentacja API portu WebKitu do GTK 4.
280 %setup -q -n webkitgtk-%{version}
285 for kind in %{?with_gtk3:%{?with_libsoup2:soup2} %{?with_libsoup3:soup3}} %{?with_gtk4:gtk4} ; do
286 install -d build-${kind}
288 # gtk4 variant is missing some files in dist:
289 # Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-5.0-sections.txt
290 # Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-5.0.types
291 # don't know how to generate them, disable GTKDOC for now
293 -DENABLE_GEOLOCATION=ON \
294 $([ "$kind" != "gtk4" ] && echo -DENABLE_GTKDOC=ON) \
295 %{!?with_introspection:-DENABLE_INTROSPECTION=OFF} \
297 %{!?with_wayland:-DENABLE_WAYLAND_TARGET=OFF} \
298 -DENABLE_WEB_AUDIO=ON \
303 -DENABLE_SAMPLING_PROFILER=OFF \
305 %ifarch %{ix86} %{x8664} x32
306 -DHAVE_SSE2_EXTENSIONS=ON \
309 -DSHOULD_INSTALL_JS_SHELL=ON \
310 $([ "$kind" = "gtk4" ] && echo -DUSE_GTK4=ON) \
311 $([ "$kind" = "soup2" ] && echo -DUSE_SOUP2=ON)
318 rm -rf $RPM_BUILD_ROOT
320 for kind in %{?with_gtk3:%{?with_libsoup2:soup2} %{?with_libsoup3:soup3}} %{?with_gtk4:gtk4} ; do
321 %{__make} -C build-${kind} install \
322 DESTDIR=$RPM_BUILD_ROOT
325 %if "%{_gtkdocdir}" != "%{_datadir}/gtk-doc/html"
326 install -d $RPM_BUILD_ROOT%{_gtkdocdir}
327 %{__mv} $RPM_BUILD_ROOT%{_datadir}/gtk-doc/html/* $RPM_BUILD_ROOT%{_gtkdocdir}
330 %{?with_gtk3:%{?with_libsoup2:%find_lang WebKit2GTK-4.0}}
331 %{?with_gtk3:%{?with_libsoup3:%find_lang WebKit2GTK-4.1}}
332 %{?with_gtk4:%find_lang WebKit2GTK-5.0}
335 rm -rf $RPM_BUILD_ROOT
337 %post -p /sbin/ldconfig
338 %postun -p /sbin/ldconfig
340 %post -n gtk-webkit4.1 -p /sbin/ldconfig
341 %postun -n gtk-webkit4.1 -p /sbin/ldconfig
343 %post -n gtk-webkit5 -p /sbin/ldconfig
344 %postun -n gtk-webkit5 -p /sbin/ldconfig
346 %if %{with gtk3} && %{with libsoup2}
347 %files -f WebKit2GTK-4.0.lang
348 %defattr(644,root,root,755)
350 %attr(755,root,root) %{_bindir}/WebKitWebDriver
351 %attr(755,root,root) %{_libdir}/libwebkit2gtk-4.0.so.*.*.*
352 %attr(755,root,root) %ghost %{_libdir}/libwebkit2gtk-4.0.so.37
353 %attr(755,root,root) %{_libdir}/libjavascriptcoregtk-4.0.so.*.*.*
354 %attr(755,root,root) %ghost %{_libdir}/libjavascriptcoregtk-4.0.so.18
355 %if %{with introspection}
356 %{_libdir}/girepository-1.0/JavaScriptCore-4.0.typelib
357 %{_libdir}/girepository-1.0/WebKit2-4.0.typelib
358 %{_libdir}/girepository-1.0/WebKit2WebExtension-4.0.typelib
360 %if "%{_libexecdir}" != "%{_libdir}"
361 %dir %{_libexecdir}/webkit2gtk-4.0
363 %attr(755,root,root) %{_libexecdir}/webkit2gtk-4.0/WebKitNetworkProcess
364 %attr(755,root,root) %{_libexecdir}/webkit2gtk-4.0/WebKitWebProcess
365 %attr(755,root,root) %{_libexecdir}/webkit2gtk-4.0/jsc
366 %dir %{_libdir}/webkit2gtk-4.0
367 %dir %{_libdir}/webkit2gtk-4.0/injected-bundle
368 %attr(755,root,root) %{_libdir}/webkit2gtk-4.0/injected-bundle/libwebkit2gtkinjectedbundle.so
371 %defattr(644,root,root,755)
372 %attr(755,root,root) %{_libdir}/libwebkit2gtk-4.0.so
373 %attr(755,root,root) %{_libdir}/libjavascriptcoregtk-4.0.so
374 %if %{with introspection}
375 %{_datadir}/gir-1.0/JavaScriptCore-4.0.gir
376 %{_datadir}/gir-1.0/WebKit2-4.0.gir
377 %{_datadir}/gir-1.0/WebKit2WebExtension-4.0.gir
379 %{_includedir}/webkitgtk-4.0
380 %{_pkgconfigdir}/javascriptcoregtk-4.0.pc
381 %{_pkgconfigdir}/webkit2gtk-4.0.pc
382 %{_pkgconfigdir}/webkit2gtk-web-extension-4.0.pc
387 %defattr(644,root,root,755)
388 %{_gtkdocdir}/jsc-glib-4.0
389 %{_gtkdocdir}/webkit2gtk-4.0
390 %{_gtkdocdir}/webkitdomgtk-4.0
393 %if %{with gtk3} && %{with libsoup3}
394 %files -n gtk-webkit4.1 -f WebKit2GTK-4.1.lang
395 %defattr(644,root,root,755)
397 %attr(755,root,root) %{_libdir}/libwebkit2gtk-4.1.so.*.*.*
398 %attr(755,root,root) %ghost %{_libdir}/libwebkit2gtk-4.1.so.0
399 %attr(755,root,root) %{_libdir}/libjavascriptcoregtk-4.1.so.*.*.*
400 %attr(755,root,root) %ghost %{_libdir}/libjavascriptcoregtk-4.1.so.0
401 %if %{with introspection}
402 %{_libdir}/girepository-1.0/JavaScriptCore-4.1.typelib
403 %{_libdir}/girepository-1.0/WebKit2-4.1.typelib
404 %{_libdir}/girepository-1.0/WebKit2WebExtension-4.1.typelib
406 %if "%{_libexecdir}" != "%{_libdir}"
407 %dir %{_libexecdir}/webkit2gtk-4.1
409 %attr(755,root,root) %{_libexecdir}/webkit2gtk-4.1/WebKitNetworkProcess
410 %attr(755,root,root) %{_libexecdir}/webkit2gtk-4.1/WebKitWebProcess
411 %attr(755,root,root) %{_libexecdir}/webkit2gtk-4.1/jsc
412 %dir %{_libdir}/webkit2gtk-4.1
413 %dir %{_libdir}/webkit2gtk-4.1/injected-bundle
414 %attr(755,root,root) %{_libdir}/webkit2gtk-4.1/injected-bundle/libwebkit2gtkinjectedbundle.so
416 %files -n gtk-webkit4.1-devel
417 %defattr(644,root,root,755)
418 %attr(755,root,root) %{_libdir}/libwebkit2gtk-4.1.so
419 %attr(755,root,root) %{_libdir}/libjavascriptcoregtk-4.1.so
420 %if %{with introspection}
421 %{_datadir}/gir-1.0/JavaScriptCore-4.1.gir
422 %{_datadir}/gir-1.0/WebKit2-4.1.gir
423 %{_datadir}/gir-1.0/WebKit2WebExtension-4.1.gir
425 %{_includedir}/webkitgtk-4.1
426 %{_pkgconfigdir}/javascriptcoregtk-4.1.pc
427 %{_pkgconfigdir}/webkit2gtk-4.1.pc
428 %{_pkgconfigdir}/webkit2gtk-web-extension-4.1.pc
432 %files -n gtk-webkit5 -f WebKit2GTK-5.0.lang
433 %defattr(644,root,root,755)
435 %attr(755,root,root) %{_libdir}/libwebkit2gtk-5.0.so.*.*.*
436 %attr(755,root,root) %ghost %{_libdir}/libwebkit2gtk-5.0.so.0
437 %attr(755,root,root) %{_libdir}/libjavascriptcoregtk-5.0.so.*.*.*
438 %attr(755,root,root) %ghost %{_libdir}/libjavascriptcoregtk-5.0.so.0
439 %if %{with introspection}
440 %{_libdir}/girepository-1.0/JavaScriptCore-5.0.typelib
441 %{_libdir}/girepository-1.0/WebKit2-5.0.typelib
442 %{_libdir}/girepository-1.0/WebKit2WebExtension-5.0.typelib
444 %if "%{_libexecdir}" != "%{_libdir}"
445 %dir %{_libexecdir}/webkit2gtk-5.0
447 %attr(755,root,root) %{_libexecdir}/webkit2gtk-5.0/WebKitNetworkProcess
448 %attr(755,root,root) %{_libexecdir}/webkit2gtk-5.0/WebKitWebProcess
449 %attr(755,root,root) %{_libexecdir}/webkit2gtk-5.0/jsc
450 %dir %{_libdir}/webkit2gtk-5.0
451 %dir %{_libdir}/webkit2gtk-5.0/injected-bundle
452 %attr(755,root,root) %{_libdir}/webkit2gtk-5.0/injected-bundle/libwebkit2gtkinjectedbundle.so
454 %files -n gtk-webkit5-devel
455 %defattr(644,root,root,755)
456 %attr(755,root,root) %{_libdir}/libwebkit2gtk-5.0.so
457 %attr(755,root,root) %{_libdir}/libjavascriptcoregtk-5.0.so
458 %if %{with introspection}
459 %{_datadir}/gir-1.0/JavaScriptCore-5.0.gir
460 %{_datadir}/gir-1.0/WebKit2-5.0.gir
461 %{_datadir}/gir-1.0/WebKit2WebExtension-5.0.gir
463 %{_includedir}/webkitgtk-5.0
464 %{_pkgconfigdir}/javascriptcoregtk-5.0.pc
465 %{_pkgconfigdir}/webkit2gtk-5.0.pc
466 %{_pkgconfigdir}/webkit2gtk-web-extension-5.0.pc
468 # disabled for now, see note on cmake
470 %files -n gtk-webkit5-apidocs
471 %defattr(644,root,root,755)
472 %{_gtkdocdir}/jsc-glib-5.0
473 %{_gtkdocdir}/webkit2gtk-5.0
474 %{_gtkdocdir}/webkitdomgtk-5.0