3 %bcond_without apidocs # gi-docgen based API documentation
4 %bcond_without broadway # Broadway target
5 %bcond_without wayland # Wayland target
6 %bcond_without vulkan # Vulkan graphics support
7 %bcond_without ffmpeg # FFmpeg media backend
8 %bcond_without gstreamer # GStreamer media backend
9 %bcond_without cups # CUPS print backend
10 %bcond_without cloudproviders # cloudproviders support
11 %bcond_without static_libs # static library
12 %bcond_with sysprof # sysprof tracing support
13 %bcond_with tracker # Tracker3 filechooser search
15 Summary: The GIMP Toolkit
16 Summary(cs.UTF-8): Sada nástrojů pro GIMP
17 Summary(de.UTF-8): Der GIMP-Toolkit
18 Summary(fi.UTF-8): GIMP-työkalukokoelma
19 Summary(fr.UTF-8): Le toolkit de GIMP
20 Summary(it.UTF-8): Il toolkit per GIMP
21 Summary(pl.UTF-8): GIMP Toolkit
22 Summary(tr.UTF-8): GIMP ToolKit arayüz kitaplığı
28 Source0: https://download.gnome.org/sources/gtk/4.6/gtk-%{version}.tar.xz
29 # Source0-md5: 41c25ca304052f1a592f698f83922e23
30 Patch0: %{name}-lpr.patch
31 URL: https://www.gtk.org/
32 %{?with_vulkan:BuildRequires: Vulkan-Loader-devel}
33 # cairo-gobject + cairo-pdf,cairo-ps,cairo-svg
34 BuildRequires: cairo-gobject-devel >= 1.14.0
35 BuildRequires: colord-devel >= 0.1.9
37 BuildRequires: cups-devel >= 1:2.0
39 BuildRequires: docbook-dtd412-xml
40 BuildRequires: docbook-style-xsl
41 BuildRequires: fontconfig-devel
42 # libavfilter >= 6.47.100, libavformat >= 57.41.100, libavcodec >= 57.48.101, libavutil >= 55.28.100, libswscale >= 4.6.100
43 %{?with_ffmpeg:BuildRequires: ffmpeg-devel >= 3.1.1}
44 BuildRequires: freetype-devel >= 1:2.7.1
45 BuildRequires: fribidi-devel >= 0.19.7
46 BuildRequires: gdk-pixbuf2-devel >= 2.31.0
47 BuildRequires: gettext-tools >= 0.19.7
48 %{?with_apidocs:BuildRequires: gi-docgen >= 2021.1}
49 BuildRequires: glib2-devel >= 1:2.66.0
50 BuildRequires: gobject-introspection-devel >= 1.39.0
51 BuildRequires: graphene-devel >= 1.9.1
52 %{?with_gstreamer:BuildRequires: gstreamer-devel >= 1.12.3}
53 # pkgconfig(gstreamer-player-1.0)
54 %{?with_gstreamer:BuildRequires: gstreamer-plugins-bad-devel >= 1.12.3}
55 BuildRequires: harfbuzz-devel >= 0.9
56 BuildRequires: iso-codes
57 %{?with_cloudproviders:BuildRequires: libcloudproviders-devel >= 0.3.1}
58 BuildRequires: libepoxy-devel >= 1.4
59 BuildRequires: libstdc++-devel
60 BuildRequires: libtool >= 2:2.2.6
61 BuildRequires: libxml2-progs >= 1:2.6.31
62 BuildRequires: libxslt-progs >= 1.1.20
63 BuildRequires: meson >= 0.59
64 BuildRequires: ninja >= 1.5
65 BuildRequires: pango-devel >= 1:1.50.0
66 BuildRequires: perl-base
67 BuildRequires: pkgconfig
68 BuildRequires: rpm-build >= 4.6
69 BuildRequires: rpm-pythonprov
70 BuildRequires: rpmbuild(macros) >= 1.752
71 # glslc required to rebuild some files from source
72 %{?with_vulkan:BuildRequires: shaderc}
73 BuildRequires: sqlite3-devel
74 %{?with_sysprof:BuildRequires: sysprof-devel >= 3.38.0}
75 BuildRequires: tar >= 1:1.22
76 %{?with_tracker:BuildRequires: tracker3-devel >= 3.0}
77 BuildRequires: xorg-lib-libX11-devel >= 1.5.0
78 BuildRequires: xorg-lib-libXcomposite-devel
79 BuildRequires: xorg-lib-libXcursor-devel
80 BuildRequires: xorg-lib-libXdamage-devel
81 BuildRequires: xorg-lib-libXext-devel
82 BuildRequires: xorg-lib-libXfixes-devel
83 BuildRequires: xorg-lib-libXft-devel
84 BuildRequires: xorg-lib-libXi-devel >= 1.8
85 BuildRequires: xorg-lib-libXinerama-devel
86 BuildRequires: xorg-lib-libXrandr-devel >= 1.5.0
87 BuildRequires: xorg-lib-libXrender-devel
89 %{?with_broadway:BuildRequires: zlib-devel}
91 # wayland-client, wayland-cursor, wayland-scanner
92 BuildRequires: wayland-devel >= 1.16.91
93 BuildRequires: wayland-egl-devel
94 BuildRequires: wayland-protocols >= 1.21
95 BuildRequires: xorg-lib-libxkbcommon-devel >= 0.2.0
97 Requires: xorg-lib-libX11 >= 1.5.0
98 Requires(post,postun): glib2 >= 1:2.66.0
99 Requires: cairo-gobject >= 1.14.0
100 Requires: freetype >= 1:2.7.1
101 Requires: gdk-pixbuf2 >= 2.31.0
102 Requires: glib2 >= 1:2.66.0
103 Requires: graphene >= 1.9.1
105 %{?with_cloudproviders:Requires: libcloudproviders >= 0.3.1}
106 Requires: libepoxy >= 1.4
107 Requires: pango >= 1:1.50.0
108 Requires: xorg-lib-libXi >= 1.8
109 Requires: xorg-lib-libXrandr >= 1.5.0
111 Requires: wayland >= 1.16.91
112 Requires: xorg-lib-libxkbcommon >= 0.2.0
114 # evince is used as gtk-print-preview-command by default
115 Suggests: evince-backend-pdf
117 # cups is used by default if gtk is built with cups
118 Suggests: %{name}-cups = %{version}-%{release}
120 Obsoletes: gtk+4 < 3.95
121 Obsoletes: gtk+4-papi < 3.94
122 Obsoletes: gtk+4-cloudprint < 3.95
123 Obsoletes: gtk4-cloudprint < 4.4
124 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
126 %define abivers 4.0.0
128 %if "%{_lib}" != "lib"
129 %define libext %(lib="%{_lib}"; echo ${lib#lib})
130 %define pqext -%{libext}
136 GTK, which stands for the GIMP ToolKit, is a library for creating
137 graphical user interfaces for the X Window System. It is designed to
138 be small, efficient, and flexible. GTK is written in C with a very
139 object-oriented approach. GDK (part of GTK) is a drawing toolkit
140 which provides a thin layer over Xlib to help automate things like
141 dealing with different color depths, and GTK is a widget set for
142 creating user interfaces.
144 %description -l cs.UTF-8
145 Knihovny X původně psané pro GIMP, které nyní používá také řada jiných
148 %description -l da.UTF-8
149 X biblioteker, oprindeligt udviklet til GIMP, men anvendes nu af flere
150 forskellige programmer.
152 %description -l de.UTF-8
153 Die X-Libraries, die ursprünglich für GIMP geschrieben wurden und
154 mittlerweile für eine ganze Reihe anderer Programme benutzt werden.
156 %description -l fr.UTF-8
157 X-kirjastot, jotka alunperin kirjoitettiin GIMP:lle, mutta joita
158 käytetään nyt myös useissa muissakin ohjelmissa.
160 %description -l it.UTF-8
161 Libreria X scritta per GIMP. Viene usata da diversi programmi.
163 %description -l pl.UTF-8
164 GTK, która to biblioteka stała się podstawą programu GIMP, zawiera
165 funkcje do tworzenia graficznego interfejsu użytkownika pod X Window.
166 Była tworzona z założeniem żeby była mała, efektywna i wygodna. GTK
167 jest napisane w C z podejściem zorientowanym bardzo obiektowo. GDK
168 (część GTK) jest warstwą pośrednią pomiędzy Xlib a właściwym GTK
169 zapewniającą pracę niezależnie od głębi koloru (ilości bitów na
170 piksel). GTK (druga część GTK) jest natomiast już zbiorem różnego
171 rodzaju kontrolek służących do tworzenia interfejsu użytkownika.
173 %description -l tr.UTF-8
174 Başlangıçta GIMP için yazılmış X kitaplıkları. Şu anda başka
175 programlarca da kullanılmaktadır.
177 %package update-icon-cache
178 Summary: Utility to update icon cache used by GTK library
179 Summary(pl.UTF-8): Narzędzie do uaktualniania cache'a ikon używanego przez bibliotekę GTK
180 Group: Applications/System
181 Requires: gdk-pixbuf2 >= 2.31.0
182 Requires: glib2 >= 1:2.66.0
183 Obsoletes: gtk+4-update-icon-cache < 3.95
185 %description update-icon-cache
186 Utility to update icon cache used by GTK library.
188 %description update-icon-cache -l pl.UTF-8
189 Narzędzie do uaktualniania cache'a ikon używanego przez bibliotekę
193 Summary: GTK header files and development documentation
194 Summary(cs.UTF-8): Sada nástrojů GIMP a kreslící kit GIMP
195 Summary(da.UTF-8): GIMP Toolkit og GIMP Tegnings-værktøj
196 Summary(de.UTF-8): GIMP Toolkit und GIMP Drawing Kit
197 Summary(fi.UTF-8): Gimp-työkalukokoelma ja Gimp-piirtotyökalut
198 Summary(fr.UTF-8): Toolkit de GIMP (GTK) et Kit de dessin de GIMP (GDK)
199 Summary(it.UTF-8): GIMP Toolkit and GIMP Drawing Kit
200 Summary(pl.UTF-8): Pliki nagłówkowe i dokumentacja do GTK
201 Summary(tr.UTF-8): GIMP araç takımı ve çizim takımı
202 Group: X11/Development/Libraries
203 Requires: %{name} = %{version}-%{release}
204 %{?with_vulkan:Requires: Vulkan-Loader-devel}
205 Requires: cairo-gobject-devel >= 1.14.0
206 Requires: fontconfig-devel
207 Requires: gdk-pixbuf2-devel >= 2.31.0
208 Requires: glib2-devel >= 1:2.65.0
209 Requires: graphene-devel >= 1.9.1
210 Requires: libepoxy-devel >= 1.4
211 Requires: pango-devel >= 1:1.50.0
212 Requires: shared-mime-info
213 Requires: xorg-lib-libX11-devel >= 1.5.0
214 Requires: xorg-lib-libXcomposite-devel
215 Requires: xorg-lib-libXcursor-devel
216 Requires: xorg-lib-libXdamage-devel
217 Requires: xorg-lib-libXext-devel
218 Requires: xorg-lib-libXfixes-devel
219 Requires: xorg-lib-libXi-devel >= 1.8
220 Requires: xorg-lib-libXinerama-devel
221 Requires: xorg-lib-libXrandr-devel >= 1.5.0
223 Requires: wayland-devel >= 1.16.91
224 Requires: wayland-egl-devel
225 Requires: wayland-protocols >= 1.21
226 Requires: xorg-lib-libxkbcommon-devel >= 0.2.0
229 Obsoletes: gtk+4-devel < 3.95
232 Header files and development documentation for the GTK libraries.
234 %description devel -l pl.UTF-8
235 Pliki nagłówkowe i dokumentacja do bibliotek GTK.
238 Summary: GTK static libraries
239 Summary(pl.UTF-8): Biblioteki statyczne GTK
240 Group: X11/Development/Libraries
241 Requires: %{name}-devel = %{version}-%{release}
242 Obsoletes: gtk+4-static < 3.95
245 GTK static libraries.
247 %description static -l pl.UTF-8
248 Biblioteki statyczne GTK
251 Summary: GTK API documentation
252 Summary(pl.UTF-8): Dokumentacja API GTK
254 Requires: gtk-doc-common
255 Obsoletes: gtk+4-apidocs < 3.95
259 GTK API documentation.
261 %description apidocs -l pl.UTF-8
262 Dokumentacja API GTK.
265 Summary: GTK - example programs
266 Summary(pl.UTF-8): GTK - programy przykładowe
267 Group: X11/Development/Libraries
268 Requires(post,postun): glib2 >= 1:2.65.0
269 Requires: %{name}-devel = %{version}-%{release}
270 Obsoletes: gtk+4-examples < 3.95
272 %description examples
273 GTK - example programs.
275 %description examples -l pl.UTF-8
276 GTK - przykładowe programy.
278 %package media-ffmpeg
279 Summary: FFmpeg media backend for GTK
280 Summary(pl.UTF-8): Backend multimedialny FFmpeg dla GTK
282 Requires: %{name} = %{version}-%{release}
283 Requires: ffmpeg-libs >= 3.1.1
285 %description media-ffmpeg
286 FFmpeg media backend for GTK.
288 %description media-ffmpeg -l pl.UTF-8
289 Backend multimedialny FFmpeg dla GTK.
291 %package media-gstreamer
292 Summary: GStreamer media backend for GTK
293 Summary(pl.UTF-8): Backend multimedialny GStreamer dla GTK
295 Requires: %{name} = %{version}-%{release}
296 Requires: gstreamer >= 1.12.3
298 %description media-gstreamer
299 GStreamer media backend for GTK.
301 %description media-gstreamer -l pl.UTF-8
302 Backend multimedialny GStreamer dla GTK.
305 Summary: CUPS printing module for GTK
306 Summary(pl.UTF-8): Moduł GTK do drukowania przez CUPS
308 Requires: %{name} = %{version}-%{release}
309 Requires: cups-lib >= 2.0
310 Obsoletes: gtk+4-cups < 3.95
313 CUPS printing module for GTK.
315 %description cups -l pl.UTF-8
316 Moduł GTK do drukowania przez CUPS.
319 %setup -q -n gtk-%{version}
322 %{__sed} -i -e '1s,/usr/bin/env python3,%{__python3},' demos/gtk-demo/geninclude.py
323 %{__sed} -i -e '1s,/usr/bin/env .* gjs,/usr/bin/gjs,' examples/labels.js
324 %{__sed} -i -e '1s,/usr/bin/env .* python3,%{__python3},' examples/squares.py
326 %if %{with static_libs}
327 %{__sed} -i -e '/^libgtk = / s/shared_library/library/' gtk/meson.build
330 # FIXME: common location for gi-docgen generated docs
331 %{__sed} -i -e "/^docs_dir =/ s,gtk_datadir / 'doc','%{_gtkdocdir}'," docs/reference/meson.build
335 %{?with_broadway:-Dbroadway-backend=true} \
336 %{?with_cloudproviders:-Dcloudproviders=enabled} \
338 %{?with_apidocs:-Dgtk_doc=true} \
339 -Dinstall-tests=false \
341 %{?with_ffmpeg:-Dmedia-ffmpeg=enabled} \
342 %{!?with_gstreamer:-Dmedia-gstreamer=disabled} \
343 %{!?with_cups:-Dprint-cups=disabled} \
345 %{?with_sysprof:-Dsysprof=enabled} \
346 %{?with_tracker:-Dtracker=enabled} \
347 %{!?with_vulkan:-Dvulkan=disabled} \
348 %{!?with_wayland:-Dwayland-backend=false}
350 %ninja_build -C build
353 rm -rf $RPM_BUILD_ROOT
355 %ninja_install -C build
357 install -d $RPM_BUILD_ROOT%{_libdir}/gtk-4.0/%{abivers}/{immodules,inspector}
359 install -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
360 cp -a demos examples $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
362 %{__mv} $RPM_BUILD_ROOT%{_localedir}/{sr@ije,sr@ijekavian}
363 # unsupported by glibc
364 %{__rm} -r $RPM_BUILD_ROOT%{_localedir}/io
366 # gtk40 and gtk40-properties domains
367 %find_lang %{name} --all-name
370 rm -rf $RPM_BUILD_ROOT
374 %glib_compile_schemas
376 gio-querymodules %{_libdir}/gtk-4.0/%{abivers}/immodules
377 gio-querymodules %{_libdir}/gtk-4.0/%{abivers}/printbackends
382 if [ "$1" != "0" ]; then
384 gio-querymodules %{_libdir}/gtk-4.0/%{abivers}/immodules
385 gio-querymodules %{_libdir}/gtk-4.0/%{abivers}/printbackends
387 %glib_compile_schemas
392 %glib_compile_schemas
393 %update_desktop_database
394 %update_icon_cache hicolor
397 %glib_compile_schemas
398 %update_desktop_database
399 %update_icon_cache hicolor
403 gio-querymodules %{_libdir}/gtk-4.0/%{abivers}/printbackends
406 if [ "$1" != "0" ]; then
408 gio-querymodules %{_libdir}/gtk-4.0/%{abivers}/printbackends
412 %files -f %{name}.lang
413 %defattr(644,root,root,755)
414 %doc AUTHORS NEWS README.md
415 %{?with_broadway:%attr(755,root,root) %{_bindir}/gtk4-broadwayd}
416 %attr(755,root,root) %{_bindir}/gtk4-launch
417 %attr(755,root,root) %{_libdir}/libgtk-4.so.*.*.*
418 %attr(755,root,root) %ghost %{_libdir}/libgtk-4.so.1
420 %dir %{_libdir}/gtk-4.0
421 %dir %{_libdir}/gtk-4.0/%{abivers}
422 %dir %{_libdir}/gtk-4.0/%{abivers}/immodules
423 %dir %{_libdir}/gtk-4.0/%{abivers}/inspector
424 %dir %{_libdir}/gtk-4.0/%{abivers}/media
425 %dir %{_libdir}/gtk-4.0/%{abivers}/printbackends
426 %attr(755,root,root) %{_libdir}/gtk-4.0/%{abivers}/printbackends/libprintbackend-file.so
427 %attr(755,root,root) %{_libdir}/gtk-4.0/%{abivers}/printbackends/libprintbackend-lpr.so
428 %{_libdir}/girepository-1.0/Gdk-4.0.typelib
430 %{_libdir}/girepository-1.0/GdkWayland-4.0.typelib
432 %{_libdir}/girepository-1.0/GdkX11-4.0.typelib
433 %{_libdir}/girepository-1.0/Gsk-4.0.typelib
434 %{_libdir}/girepository-1.0/Gtk-4.0.typelib
436 %{_datadir}/glib-2.0/schemas/org.gtk.gtk4.Settings.ColorChooser.gschema.xml
437 %{_datadir}/glib-2.0/schemas/org.gtk.gtk4.Settings.Debug.gschema.xml
438 %{_datadir}/glib-2.0/schemas/org.gtk.gtk4.Settings.EmojiChooser.gschema.xml
439 %{_datadir}/glib-2.0/schemas/org.gtk.gtk4.Settings.FileChooser.gschema.xml
440 %{?with_broadway:%{_mandir}/man1/gtk4-broadwayd.1*}
441 %{_mandir}/man1/gtk4-launch.1*
443 %files update-icon-cache
444 %defattr(644,root,root,755)
445 %attr(755,root,root) %{_bindir}/gtk4-encode-symbolic-svg
446 %attr(755,root,root) %{_bindir}/gtk4-update-icon-cache
447 %{_mandir}/man1/gtk4-encode-symbolic-svg.1*
448 %{_mandir}/man1/gtk4-update-icon-cache.1*
451 %defattr(644,root,root,755)
452 %attr(755,root,root) %{_bindir}/gtk4-builder-tool
453 %attr(755,root,root) %{_bindir}/gtk4-query-settings
454 %attr(755,root,root) %{_libdir}/libgtk-4.so
455 %{_includedir}/gtk-4.0
456 %{_pkgconfigdir}/gtk4.pc
457 %{_pkgconfigdir}/gtk4-unix-print.pc
458 %{_pkgconfigdir}/gtk4-x11.pc
460 %{_pkgconfigdir}/gtk4-broadway.pc
463 %{_pkgconfigdir}/gtk4-wayland.pc
465 %{_datadir}/gettext/its/gtk4builder.its
466 %{_datadir}/gettext/its/gtk4builder.loc
468 %{_datadir}/gir-1.0/Gdk-4.0.gir
470 %{_datadir}/gir-1.0/GdkWayland-4.0.gir
472 %{_datadir}/gir-1.0/GdkX11-4.0.gir
473 %{_datadir}/gir-1.0/Gsk-4.0.gir
474 %{_datadir}/gir-1.0/Gtk-4.0.gir
475 %{_mandir}/man1/gtk4-builder-tool.1*
476 %{_mandir}/man1/gtk4-query-settings.1*
478 %if %{with static_libs}
480 %defattr(644,root,root,755)
481 %{_libdir}/libgtk-4.a
486 %defattr(644,root,root,755)
488 %{_gtkdocdir}/gdk4-wayland
489 %{_gtkdocdir}/gdk4-x11
495 %defattr(644,root,root,755)
496 %attr(755,root,root) %{_bindir}/gtk4-demo
497 %attr(755,root,root) %{_bindir}/gtk4-demo-application
498 %attr(755,root,root) %{_bindir}/gtk4-icon-browser
499 %attr(755,root,root) %{_bindir}/gtk4-print-editor
500 %attr(755,root,root) %{_bindir}/gtk4-widget-factory
501 %{_datadir}/glib-2.0/schemas/org.gtk.Demo4.gschema.xml
502 %{_datadir}/metainfo/org.gtk.Demo4.appdata.xml
503 %{_datadir}/metainfo/org.gtk.IconBrowser4.appdata.xml
504 %{_datadir}/metainfo/org.gtk.PrintEditor4.appdata.xml
505 %{_datadir}/metainfo/org.gtk.WidgetFactory4.appdata.xml
506 %{_desktopdir}/org.gtk.Demo4.desktop
507 %{_desktopdir}/org.gtk.IconBrowser4.desktop
508 %{_desktopdir}/org.gtk.PrintEditor4.desktop
509 %{_desktopdir}/org.gtk.WidgetFactory4.desktop
510 %{_iconsdir}/hicolor/scalable/apps/org.gtk.Demo4.svg
511 %{_iconsdir}/hicolor/scalable/apps/org.gtk.IconBrowser4.svg
512 %{_iconsdir}/hicolor/scalable/apps/org.gtk.PrintEditor4.svg
513 %{_iconsdir}/hicolor/scalable/apps/org.gtk.PrintEditor4.Devel.svg
514 %{_iconsdir}/hicolor/scalable/apps/org.gtk.WidgetFactory4.svg
515 %{_iconsdir}/hicolor/symbolic/apps/org.gtk.Demo4-symbolic.svg
516 %{_iconsdir}/hicolor/symbolic/apps/org.gtk.IconBrowser4-symbolic.svg
517 %{_iconsdir}/hicolor/symbolic/apps/org.gtk.PrintEditor4-symbolic.svg
518 %{_iconsdir}/hicolor/symbolic/apps/org.gtk.WidgetFactory4-symbolic.svg
519 %{_mandir}/man1/gtk4-demo.1*
520 %{_mandir}/man1/gtk4-demo-application.1*
521 %{_mandir}/man1/gtk4-icon-browser.1*
522 %{_mandir}/man1/gtk4-widget-factory.1*
523 %{_examplesdir}/%{name}-%{version}
527 %defattr(644,root,root,755)
528 %attr(755,root,root) %{_libdir}/gtk-4.0/%{abivers}/media/libmedia-ffmpeg.so
531 %if %{with gstreamer}
532 %files media-gstreamer
533 %defattr(644,root,root,755)
534 %attr(755,root,root) %{_libdir}/gtk-4.0/%{abivers}/media/libmedia-gstreamer.so
539 %defattr(644,root,root,755)
540 %attr(755,root,root) %{_libdir}/gtk-4.0/%{abivers}/printbackends/libprintbackend-cups.so