# # spec file for package gtk4 # # Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # Copyright (c) 2010 Dominique Leuenebrger, Amsterdam, Netherlands # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # %if 0%{?suse_version} == 1315 %define build_wayland_backend 0 %else %define build_wayland_backend 1 %endif # When updating the binary version, do not forget to also update baselibs.conf %define gtk_binary_version 4.0.0 Name: gtk4 %define _name gtk+ Version: 3.89.4 Release: 0 Summary: The GTK+ toolkit library (version 4) License: LGPL-2.1+ Group: Development/Libraries/X11 Url: http://www.gtk.org/ Source: http://download.gnome.org/sources/gtk+/3.89/%{_name}-%{version}.tar.xz Source2: settings.ini Source3: macros.gtk4 Source99: baselibs.conf BuildRequires: cups-devel >= 1.2 BuildRequires: docbook-xsl-stylesheets BuildRequires: fdupes BuildRequires: gettext-tools >= 0.19.7 BuildRequires: hicolor-icon-theme %if !0%{?is_opensuse} BuildRequires: translation-update-upstream %endif BuildRequires: vulkan-devel BuildRequires: xsltproc BuildRequires: pkgconfig(atk) >= 2.15.1 BuildRequires: pkgconfig(atk-bridge-2.0) BuildRequires: pkgconfig(cairo) >= 1.14.0 BuildRequires: pkgconfig(colord) BuildRequires: pkgconfig(epoxy) >= 1.0 BuildRequires: pkgconfig(fontconfig) BuildRequires: pkgconfig(gdk-pixbuf-2.0) >= 2.30.0 BuildRequires: pkgconfig(glib-2.0) >= 2.49.1 BuildRequires: pkgconfig(gmodule-2.0) BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.39.0 BuildRequires: pkgconfig(graphene-1.0) >= 1.5.1 BuildRequires: pkgconfig(json-glib-1.0) BuildRequires: pkgconfig(pango) >= 1.37.3 BuildRequires: pkgconfig(pangoft2) BuildRequires: pkgconfig(rest-0.7) BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(xcomposite) BuildRequires: pkgconfig(xcursor) BuildRequires: pkgconfig(xdamage) BuildRequires: pkgconfig(xext) BuildRequires: pkgconfig(xfixes) BuildRequires: pkgconfig(xi) BuildRequires: pkgconfig(xinerama) BuildRequires: pkgconfig(xrandr) %if %{build_wayland_backend} BuildRequires: pkgconfig(wayland-client) >= 1.9.91 BuildRequires: pkgconfig(wayland-cursor) BuildRequires: pkgconfig(wayland-egl) BuildRequires: pkgconfig(wayland-protocols) >= 1.7 BuildRequires: pkgconfig(xkbcommon) %endif BuildRoot: %{_tmppath}/%{name}-%{version}-build %description GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. %package -n libgtk-4-0 Summary: The GTK+ toolkit library (version 4) Group: System/Libraries Requires(post): %{name}-tools Requires: %{name}-data >= %{version} Requires: %{name}-schema >= %{version} # While hicolor is not a Requires strictly speaking, we put it as # such instead of as a Recommends because many applications just # assume it's there and we need to have a low-level package to # bring it in. Requires: hicolor-icon-theme # Require Adwaita Icon Theme: It's GTKs icon set, that's guaranteed to be there Requires: adwaita-icon-theme # gtk+ can work without branding/translations. Built in defaults will be used then. Recommends: %{name}-branding # it's nice to have input modules for various locales installed by default Recommends: %{name}-immodule-amharic = %{version} Recommends: %{name}-immodule-inuktitut = %{version} Recommends: %{name}-immodule-thai = %{version} Recommends: %{name}-immodule-tigrigna = %{version} Recommends: %{name}-immodule-vietnamese = %{version} Recommends: %{name}-lang Recommends: gvfs # Provide %%{name} to make the lang and immodules packages installable Provides: %{name} = %{version} %description -n libgtk-4-0 GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. %package -n typelib-1_0-Gtk-4_0 Summary: The GTK+ toolkit library (version 4) -- Introspection bindings Group: System/Libraries %description -n typelib-1_0-Gtk-4_0 GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. This package provides the GObject Introspection bindings for GTK+. %package immodule-amharic Summary: Amharic input method for the GTK+ toolkit library v4 Group: System/Libraries Requires: %{name} = %{version} Requires(post): %{name}-tools Requires(postun): %{name}-tools Provides: locale(%{name}:am) %description immodule-amharic GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. This package provides an input method for Amharic. %package immodule-broadway Summary: Broadway input method for the GTK+ toolkit library v4 Group: System/Libraries Requires: %{name} = %{version} Requires(post): %{name}-tools Requires(postun): %{name}-tools %description immodule-broadway GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. This package provides an input method for Broadway. %package immodule-inuktitut Summary: Inuktitut input method for the GTK+ toolkit library v4 Group: System/Libraries Requires: %{name} = %{version} Requires(post): %{name}-tools Requires(postun): %{name}-tools Provides: locale(%{name}:iu) %description immodule-inuktitut GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. This package provides an input method for Inuktitut. %package immodule-multipress Summary: Multipress input method for the GTK+ toolkit library v4 Group: System/Libraries Requires: %{name} = %{version} Requires(post): %{name}-tools Requires(postun): %{name}-tools %description immodule-multipress GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. This package provides an input method which allows text entry via the multi-press method, as on a mobile phone. %package immodule-thai Summary: Thai-Lao input method for the GTK+ toolkit library v4 Group: System/Libraries Requires: %{name} = %{version} Requires(post): %{name}-tools Requires(postun): %{name}-tools Provides: locale(%{name}:lo) Provides: locale(%{name}:th) %description immodule-thai GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. This package provides an input method for Thai-Lao. %package immodules-tigrigna Summary: Tigrigna input method for the GTK+ toolkit library v4 Group: System/Libraries Requires: %{name} = %{version} Requires(post): %{name}-tools Requires(postun): %{name}-tools Provides: locale(%{name}:ti) %description immodules-tigrigna GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. This package provides two input methods for Tigrigna. %package immodule-vietnamese Summary: Vietnamese input method for the GTK+ toolkit library v4 Group: System/Libraries Requires: %{name} = %{version} Requires(post): %{name}-tools Requires(postun): %{name}-tools Provides: locale(%{name}:vi) %description immodule-vietnamese GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. This package provides an input method for Vietnamese. %package immodule-xim Summary: X input method for the GTK+ toolkit library v4 Group: System/Libraries Requires: %{name} = %{version} Requires(post): %{name}-tools Requires(postun): %{name}-tools Provides: locale(%{name}:ja) Provides: locale(%{name}:ko) Provides: locale(%{name}:th) Provides: locale(%{name}:zh) %description immodule-xim GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. This package provides an input method based on the X Input Method. %package tools Summary: Auxiliary utilities for the GTK+ toolkit library v4 Group: System/Libraries %description tools GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. %package data Summary: Data files for the GTK+ toolkit library v4 Group: System/Libraries BuildArch: noarch %description data GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. %package schema Summary: The GTK+ toolkit library (version 3) -- Config schema Group: System/Libraries BuildArch: noarch # The schema is shared between gtk3 and gtk4 - gtk4 wins Provides: gtk3-schema = %{version} Obsoletes: gtk3-schema < %{version} %glib2_gsettings_schema_requires %description schema GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. %package branding-upstream Summary: Upstream theme configuration for the GTK+ toolkit library v4 Group: System/Libraries Requires: libgtk-4-0 = %{version} Provides: %{name}-branding = %{version} Conflicts: otherproviders(%{name}-branding) Supplements: packageand(libgtk-4-0:branding-upstream) BuildArch: noarch #BRAND: Provides /usr/share/gtk-4.0/settings.ini, to define default theme and icon #BRAND: theme. #BRAND: Do not forget to add proper Requires in branding package if changing #BRAND: those. %description branding-upstream GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. This package provides the upstream theme configuration for widgets and icon themes. %package devel Summary: Development files for the GTK+ toolkit library v4 Group: Development/Libraries/X11 Requires: gettext-its-%{name} >= %{version} Requires: libgtk-4-0 = %{version} Requires: typelib-1_0-Gtk-4_0 = %{version} Requires: vulkan-devel %glib2_gsettings_schema_requires %description devel GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. This package contains the development files for GTK+ 4.x. %package -n gettext-its-%{name} Summary: International Tag Set for GTK+ 4 # The ITS is compatible between GTK3 and GTK4 Group: Development/Libraries/X11 Provides: gettext-its-gtk3 = %{version} Obsoletes: gettext-its-gtk3 < %{version} %description -n gettext-its-%{name} This package enhances gettext with an International Tag Set for GTK+ 4 %lang_package %prep %setup -q -n %{_name}-%{version} %build %configure \ --disable-static \ --enable-man \ --enable-x11-backend \ --enable-introspection \ --enable-broadway-backend \ %if %{build_wayland_backend} --enable-wayland-backend \ --enable-explicit-deps=yes \ %endif --enable-colord \ --enable-vulkan %{__make} %{?_smp_mflags} %install %makeinstall find %{buildroot}%{_libdir} -name '*.la' -delete -print # Do not install the exampleapp glib schema, as the app itself is noinst rm %{buildroot}%{_datadir}/glib-2.0/schemas/org.gtk.exampleapp.gschema.xml %find_lang gtk40 %find_lang gtk40-properties install -m 644 -D %{S:2} %{buildroot}%{_datadir}/gtk-4.0/settings.ini touch %{buildroot}%{_libdir}/gtk-4.0/%{gtk_binary_version}/immodules.cache # create modules directory that should have been created during the build test ! -d %{buildroot}%{_libdir}/gtk-4.0/modules mkdir %{buildroot}%{_libdir}/gtk-4.0/modules # create theming-engines directory that should have been created during the build test ! -d %{buildroot}%{_libdir}/gtk-4.0/%{gtk_binary_version}/theming-engines mkdir %{buildroot}%{_libdir}/gtk-4.0/%{gtk_binary_version}/theming-engines # Install rpm macros mkdir -p %{buildroot}%{_sysconfdir}/rpm cp %{S:3} %{buildroot}%{_sysconfdir}/rpm %fdupes %{buildroot}%{_datadir} %fdupes %{buildroot}%{_libdir} ########################################################################### # Note: when updating scriptlets, don't forget to also update baselibs.conf ########################################################################### # Convenient %%define for the scriplets %define _gtk_query_immodules %{_bindir}/gtk4-query-immodules %define _gtk_query_immodules_update_cache %{_gtk_query_immodules} --update-cache %post -n libgtk-4-0 /sbin/ldconfig %if 0 # In case libgtk-4-0 gets installed before gtk4-tools, we don't want to fail. # So we make the call to gtk4-query-immodules dependent on the existence of # the binary. This is why we also have a %%post for gtk4-tools. %endif if test -f %{_gtk_query_immodules}; then %{_gtk_query_immodules_update_cache} fi %post immodule-amharic %{_gtk_query_immodules_update_cache} %post immodule-broadway %{_gtk_query_immodules_update_cache} %post immodule-inuktitut %{_gtk_query_immodules_update_cache} %post immodule-multipress %{_gtk_query_immodules_update_cache} %post immodule-thai %{_gtk_query_immodules_update_cache} %post immodules-tigrigna %{_gtk_query_immodules_update_cache} %post immodule-vietnamese %{_gtk_query_immodules_update_cache} %post immodule-xim %{_gtk_query_immodules_update_cache} %post tools %if 0 # If we install gtk4-tools for the first time, then we should run it in case # libgtk-4-0 was installed first (ie, if # %%{_libdir}/gtk-4.0/%%{gtk_binary_version} already exists) which means # gtk4-query-immodules couldn't run there. %endif if [ $1 = 1 ]; then test -d %{_libdir}/gtk-4.0/%{gtk_binary_version} if test $? -eq 0; then %{_gtk_query_immodules_update_cache} fi fi %post schema %glib2_gsettings_schema_post %post devel %icon_theme_cache_post %glib2_gsettings_schema_post %if 0 # No need to call gtk-query-immodules-3.0 in postun: # - if it's an upgrade, it will have been called in post # - if it's an uninstall, we don't care about this anymore %endif %postun -n libgtk-4-0 -p /sbin/ldconfig %postun immodule-amharic %{_gtk_query_immodules_update_cache} %postun immodule-broadway %{_gtk_query_immodules_update_cache} %postun immodule-inuktitut %{_gtk_query_immodules_update_cache} %postun immodule-multipress %{_gtk_query_immodules_update_cache} %postun immodule-thai %{_gtk_query_immodules_update_cache} %postun immodules-tigrigna %{_gtk_query_immodules_update_cache} %postun immodule-vietnamese %{_gtk_query_immodules_update_cache} %postun immodule-xim %{_gtk_query_immodules_update_cache} %postun schema %glib2_gsettings_schema_postun %postun devel %glib2_gsettings_schema_postun %icon_theme_cache_post %files -n libgtk-4-0 %defattr(-, root, root) %doc AUTHORS COPYING README NEWS %dir %{_sysconfdir}/gtk-4.0 %dir %{_libdir}/gtk-4.0 %dir %{_libdir}/gtk-4.0/%{gtk_binary_version} %dir %{_libdir}/gtk-4.0/%{gtk_binary_version}/immodules/ %{_libdir}/gtk-4.0/%{gtk_binary_version}/immodules/im-cedilla.so %{_libdir}/gtk-4.0/%{gtk_binary_version}/immodules/im-cyrillic-translit.so %{_libdir}/gtk-4.0/%{gtk_binary_version}/immodules/im-ipa.so %dir %{_libdir}/gtk-4.0/%{gtk_binary_version}/printbackends/ %{_libdir}/gtk-4.0/%{gtk_binary_version}/printbackends/libprintbackend-cloudprint.so %{_libdir}/gtk-4.0/%{gtk_binary_version}/printbackends/libprintbackend-cups.so %{_libdir}/gtk-4.0/%{gtk_binary_version}/printbackends/libprintbackend-file.so %{_libdir}/gtk-4.0/%{gtk_binary_version}/printbackends/libprintbackend-lpr.so %dir %{_libdir}/gtk-4.0/%{gtk_binary_version}/theming-engines/ %ghost %{_libdir}/gtk-4.0/%{gtk_binary_version}/immodules.cache %dir %{_libdir}/gtk-4.0/modules %{_libdir}/libgtk-4.so.* %files -n typelib-1_0-Gtk-4_0 %defattr(-,root,root) %{_libdir}/girepository-1.0/Gdk-4.0.typelib %{_libdir}/girepository-1.0/GdkX11-4.0.typelib %{_libdir}/girepository-1.0/Gsk-4.0.typelib %{_libdir}/girepository-1.0/Gtk-4.0.typelib %files immodule-amharic %defattr(-,root,root) %{_libdir}/gtk-4.0/%{gtk_binary_version}/immodules/im-am-et.so %files immodule-broadway %defattr(-,root,root) %{_libdir}/gtk-4.0/%{gtk_binary_version}/immodules/im-broadway.so %files immodule-inuktitut %defattr(-,root,root) %{_libdir}/gtk-4.0/%{gtk_binary_version}/immodules/im-inuktitut.so %files immodule-multipress %defattr(-,root,root) %doc modules/input/README.multipress %{_libdir}/gtk-4.0/%{gtk_binary_version}/immodules/im-multipress.so %config %{_sysconfdir}/gtk-4.0/im-multipress.conf %files immodule-thai %defattr(-,root,root) %{_libdir}/gtk-4.0/%{gtk_binary_version}/immodules/im-thai.so %files immodules-tigrigna %defattr(-,root,root) %{_libdir}/gtk-4.0/%{gtk_binary_version}/immodules/im-ti-er.so %{_libdir}/gtk-4.0/%{gtk_binary_version}/immodules/im-ti-et.so %files immodule-vietnamese %defattr(-,root,root) %{_libdir}/gtk-4.0/%{gtk_binary_version}/immodules/im-viqr.so %files immodule-xim %defattr(-,root,root) %{_libdir}/gtk-4.0/%{gtk_binary_version}/immodules/im-xim.so %files tools %defattr(-,root,root) %{_bindir}/gtk4-broadwayd %{_bindir}/gtk4-icon-browser %{_bindir}/gtk4-builder-tool %{_bindir}/gtk4-encode-symbolic-svg %{_bindir}/gtk4-launch %{_bindir}/gtk4-query-immodules %{_bindir}/gtk4-query-settings %{_bindir}/gtk4-update-icon-cache %{_datadir}/applications/gtk4-icon-browser.desktop %{_mandir}/man1/gtk4-broadwayd.1%{?ext_man} %{_mandir}/man1/gtk4-icon-browser.1%{ext_man} %{_mandir}/man1/gtk4-builder-tool.1%{?ext_man} %{_mandir}/man1/gtk4-encode-symbolic-svg.1%{?ext_man} %{_mandir}/man1/gtk4-launch.1%{?ext_man} %{_mandir}/man1/gtk4-query-immodules.1%{?ext_man} %{_mandir}/man1/gtk4-query-settings.1%{?ext_man} %{_mandir}/man1/gtk4-update-icon-cache.1%{?ext_man} %files schema %defattr(-,root,root) %{_datadir}/glib-2.0/schemas/org.gtk.Settings.ColorChooser.gschema.xml %{_datadir}/glib-2.0/schemas/org.gtk.Settings.FileChooser.gschema.xml %{_datadir}/glib-2.0/schemas/org.gtk.Settings.Debug.gschema.xml %{_datadir}/glib-2.0/schemas/org.gtk.Demo.gschema.xml %files data %defattr(-,root,root) %{_datadir}/themes/Default/ %{_datadir}/themes/Emacs/ %files branding-upstream %defattr(-,root,root) %{_datadir}/gtk-4.0/settings.ini %files lang -f gtk40.lang -f gtk40-properties.lang %files devel %defattr(-,root,root) %doc ChangeLog %doc %{_datadir}/gtk-doc/html/gdk4/ %doc %{_datadir}/gtk-doc/html/gsk4/ %doc %{_datadir}/gtk-doc/html/gtk4/ %{_bindir}/gtk4-demo %{_bindir}/gtk4-demo-application %{_bindir}/gtk4-widget-factory %{_mandir}/man1/gtk4-demo.1%{?ext_man} %{_mandir}/man1/gtk4-demo-application.1%{?ext_man} %{_mandir}/man1/gtk4-widget-factory.1%{?ext_man} %{_datadir}/applications/gtk4-demo.desktop %{_datadir}/applications/gtk4-widget-factory.desktop %{_datadir}/gir-1.0/*.gir %dir %{_datadir}/gtk-4.0 %{_datadir}/gtk-4.0/gtkbuilder.rng %{_datadir}/icons/hicolor/*/apps/gtk4-demo.png %{_datadir}/icons/hicolor/*/apps/gtk4-widget-factory.png %{_datadir}/icons/hicolor/*/apps/gtk4-demo-symbolic.symbolic.png %{_datadir}/icons/hicolor/*/apps/gtk4-widget-factory-symbolic.symbolic.png %{_includedir}/gtk-4.0/ %{_libdir}/pkgconfig/gail-4.0.pc %{_libdir}/pkgconfig/gtk+-4.0.pc %{_libdir}/pkgconfig/gtk+-broadway-4.0.pc %if %{build_wayland_backend} %{_libdir}/pkgconfig/gtk+-wayland-4.0.pc %endif %{_libdir}/pkgconfig/gtk+-unix-print-4.0.pc %{_libdir}/pkgconfig/gtk+-x11-4.0.pc %{_libdir}/libgtk-4.so %{_sysconfdir}/rpm/macros.gtk4 %files -n gettext-its-%{name} %defattr(-,root,root) %dir %{_datadir}/gettext/ %dir %{_datadir}/gettext/its/ %{_datadir}/gettext/its/gtkbuilder.its %{_datadir}/gettext/its/gtkbuilder.loc %changelog