# # spec file for package gtk4 # # Copyright (c) 2018 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/ # # When updating the binary version, do not forget to also update baselibs.conf %define gtk_binary_version 4.0.0 %define _name gtk+ Name: gtk4 Version: 3.93.0 Release: 0 Summary: The GTK+ toolkit library (version 4) License: LGPL-2.1-or-later Group: Development/Libraries/X11 URL: http://www.gtk.org/ Source: http://download.gnome.org/sources/gtk+/3.93/%{_name}-%{version}.tar.xz Source2: settings.ini Source3: macros.gtk4 Source98: gtk4-rpmlintrc Source99: baselibs.conf Patch0: gtkmm.patch BuildRequires: cups-devel >= 1.2 BuildRequires: docbook-xsl-stylesheets BuildRequires: fdupes BuildRequires: gcc-c++ BuildRequires: gettext-tools >= 0.19.7 BuildRequires: gtk-doc BuildRequires: hicolor-icon-theme BuildRequires: meson >= 0.42.1 BuildRequires: pkgconfig BuildRequires: translation-update-upstream 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(cairo-gobject) >= 1.14.0 BuildRequires: pkgconfig(cloudproviders) >= 0.2.5 BuildRequires: pkgconfig(colord) BuildRequires: pkgconfig(epoxy) >= 1.4 BuildRequires: pkgconfig(fontconfig) BuildRequires: pkgconfig(gdk-pixbuf-2.0) >= 2.30.0 BuildRequires: pkgconfig(glib-2.0) >= 2.53.7 BuildRequires: pkgconfig(gmodule-2.0) BuildRequires: pkgconfig(gobject-2.0) >= 2.53.7 BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.39.0 BuildRequires: pkgconfig(graphene-1.0) >= 1.5.1 BuildRequires: pkgconfig(graphene-gobject-1.0) >= 1.5.1 BuildRequires: pkgconfig(json-glib-1.0) BuildRequires: pkgconfig(pango) >= 1.37.3 BuildRequires: pkgconfig(pangocairo) >= 1.14.0 BuildRequires: pkgconfig(pangoft2) BuildRequires: pkgconfig(rest-0.7) BuildRequires: pkgconfig(wayland-client) >= 1.9.91 BuildRequires: pkgconfig(wayland-cursor) >= 1.9.91 BuildRequires: pkgconfig(wayland-egl) BuildRequires: pkgconfig(wayland-protocols) >= 1.9 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(xkbcommon) BuildRequires: pkgconfig(xrandr) >= 1.2.99 %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) # gtk4-data is currently not being built, might be an upstream oversight though Group: System/Libraries Requires: %{name}-data >= %{version} Requires: %{name}-schema >= %{version} # Require Adwaita Icon Theme: It's GTKs icon set, that's guaranteed to be there Requires: adwaita-icon-theme # 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 Requires(post): %{name}-tools # 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 Obsoletes: %{name}-data < %{version} Provides: %{name}-data = %{version} # 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: Introspection bindings for the GTK+ toolkit library v4 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 immodule-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: %{name}-immodules-tigrigna = %{version} Provides: locale(%{name}:ti) Obsoletes: %{name}-immodules-tigrigna < %{version} %description immodule-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: Config schema for the GTK+ toolkit library v4 # The schema is shared between gtk3 and gtk4 - gtk4 wins Group: System/Libraries Provides: gtk3-schema = %{version} Obsoletes: gtk3-schema < %{version} BuildArch: noarch %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} Supplements: packageand(libgtk-4-0:branding-upstream) Conflicts: %{name}-branding Provides: %{name}-branding = %{version} 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 %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} %patch0 -p1 translation-update-upstream %build %meson \ -Dbuild-tests=false \ -Ddocumentation=true \ -Denable-broadway-backend=true \ -Denable-cloudprint-print-backend=yes \ -Denable-cloudproviders=false \ -Denable-colord=yes \ -Denable-cups-print-backend=yes \ -Denable-vulkan=yes \ -Denable-wayland-backend=true \ -Denable-x11-backend=true \ -Denable-xinerama=yes \ -Dintrospection=true \ -Dman-pages=true %meson_build %install %meson_install %find_lang gtk40 %find_lang gtk40-properties install -m 644 -D %{SOURCE2} %{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 %{SOURCE3} %{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 immodule-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 %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 immodule-tigrigna %{_gtk_query_immodules_update_cache} %postun immodule-vietnamese %{_gtk_query_immodules_update_cache} %postun immodule-xim %{_gtk_query_immodules_update_cache} %files -n libgtk-4-0 %license COPYING %doc AUTHORS 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 %{_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 %{_libdir}/gtk-4.0/%{gtk_binary_version}/immodules/im-am-et.so %files immodule-broadway %{_libdir}/gtk-4.0/%{gtk_binary_version}/immodules/im-broadway.so %files immodule-inuktitut %{_libdir}/gtk-4.0/%{gtk_binary_version}/immodules/im-inuktitut.so %files immodule-multipress %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 %{_libdir}/gtk-4.0/%{gtk_binary_version}/immodules/im-thai.so %files immodule-tigrigna %{_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 %{_libdir}/gtk-4.0/%{gtk_binary_version}/immodules/im-viqr.so %files immodule-xim %{_libdir}/gtk-4.0/%{gtk_binary_version}/immodules/im-xim.so %files tools %{_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 data #defattr(-,root,root) #{_datadir}/themes/Default/ #{_datadir}/themes/Emacs/ %files schema %{_datadir}/glib-2.0/schemas/org.gtk.Demo.gschema.xml %{_datadir}/glib-2.0/schemas/org.gtk.Settings.ColorChooser.gschema.xml %{_datadir}/glib-2.0/schemas/org.gtk.Settings.Debug.gschema.xml %{_datadir}/glib-2.0/schemas/org.gtk.Settings.EmojiChooser.gschema.xml %{_datadir}/glib-2.0/schemas/org.gtk.Settings.FileChooser.gschema.xml %files branding-upstream %{_datadir}/gtk-4.0/settings.ini %files devel %doc CONTRIBUTING.md NEWS.pre-1-0 README.commits %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/gtk+-4.0.pc %{_libdir}/pkgconfig/gtk+-broadway-4.0.pc %{_libdir}/pkgconfig/gtk+-wayland-4.0.pc %{_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} %dir %{_datadir}/gettext/ %dir %{_datadir}/gettext/its/ %{_datadir}/gettext/its/gtkbuilder.its %{_datadir}/gettext/its/gtkbuilder.loc %files lang -f gtk40.lang -f gtk40-properties.lang %changelog