Dominique Leuenberger
396383b2e8
- Add -Wno-int-conversion to CFLAGS to enable compilation with GCC 14. If the request is ok, please forward it to Factory soon so that it is ready when the default compiler is switched. OBS-URL: https://build.opensuse.org/request/show/1190675 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gtk4?expand=0&rev=168
443 lines
16 KiB
RPMSpec
443 lines
16 KiB
RPMSpec
#
|
|
# spec file for package gtk4
|
|
#
|
|
# Copyright (c) 2024 SUSE LLC
|
|
# 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 https://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
%define gtk_binary_version 4.0.0
|
|
%define _name gtk
|
|
|
|
%bcond_without gst
|
|
|
|
# disable gstreamer media player when bootstrapping on workbench
|
|
%if 0%{?workbench_version} > 0
|
|
%bcond_with gst
|
|
%endif
|
|
|
|
Name: gtk4
|
|
Version: 4.15.4
|
|
Release: 0
|
|
Summary: The GTK+ toolkit library (version 4)
|
|
License: LGPL-2.1-or-later
|
|
Group: Development/Libraries/X11
|
|
URL: https://www.gtk.org/
|
|
|
|
Source: %{_name}-%{version}.tar.zst
|
|
Source2: settings.ini
|
|
Source3: macros.gtk4
|
|
Source99: gtk4-rpmlintrc
|
|
|
|
# Temporarily revert this until we figure out how to best restore
|
|
# private requires that are needed for rpm automatic dep extraction.
|
|
# https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/4756
|
|
# PATCH-FIX-OPENSUSE 0001-Revert-Meson-Simplify-pkgconfig-file-generator.patch -- Revert "Meson: Simplify pkgconfig file generator"
|
|
Patch0: 0001-Revert-Meson-Simplify-pkgconfig-file-generator.patch
|
|
|
|
BuildRequires: cups-devel >= 2.0
|
|
# We do not support building against cups 2.3 betas
|
|
BuildConflicts: (cups-devel > 2.3 with cups-devel < 2.3.0)
|
|
%if 0%{?sle_version} && 0%{?sle_version} <= 150400
|
|
BuildRequires: Mesa-libGLESv2-devel
|
|
%endif
|
|
BuildRequires: Mesa-libGLESv3-devel
|
|
BuildRequires: docbook-xsl-stylesheets
|
|
BuildRequires: docutils
|
|
BuildRequires: fdupes
|
|
BuildRequires: gcc-c++
|
|
BuildRequires: gettext-tools >= 0.19.7
|
|
BuildRequires: hicolor-icon-theme
|
|
BuildRequires: meson >= 0.50.1
|
|
BuildRequires: pkgconfig
|
|
BuildRequires: sassc
|
|
BuildRequires: shaderc
|
|
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.3.1
|
|
BuildRequires: pkgconfig(colord)
|
|
BuildRequires: pkgconfig(epoxy) >= 1.4
|
|
BuildRequires: pkgconfig(fontconfig)
|
|
BuildRequires: pkgconfig(gdk-pixbuf-2.0) >= 2.30.0
|
|
BuildRequires: pkgconfig(gi-docgen)
|
|
BuildRequires: pkgconfig(glib-2.0) >= 2.72.0
|
|
BuildRequires: pkgconfig(gmodule-2.0)
|
|
BuildRequires: pkgconfig(gobject-2.0) >= 2.53.7
|
|
BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.72.0
|
|
BuildRequires: pkgconfig(graphene-1.0) >= 1.10.0
|
|
BuildRequires: pkgconfig(graphene-gobject-1.0) >= 1.10.0
|
|
BuildRequires: pkgconfig(vulkan)
|
|
%if %{with gst}
|
|
BuildRequires: pkgconfig(gstreamer-gl-1.0)
|
|
BuildRequires: pkgconfig(gstreamer-player-1.0)
|
|
%endif
|
|
BuildRequires: pkgconfig(harfbuzz) >= 2.6.0
|
|
BuildRequires: pkgconfig(iso-codes)
|
|
# Disabled until upstream enables ffmpeg support by default
|
|
# BuildRequires: pkgconfig(libavfilter)
|
|
BuildRequires: pkgconfig(libjpeg)
|
|
BuildRequires: pkgconfig(libpng)
|
|
BuildRequires: pkgconfig(libtiff-4)
|
|
BuildRequires: pkgconfig(pango) >= 1.50.0
|
|
BuildRequires: pkgconfig(pangocairo) >= 1.14.0
|
|
BuildRequires: pkgconfig(pangoft2)
|
|
BuildRequires: pkgconfig(tracker-sparql-3.0)
|
|
BuildRequires: pkgconfig(wayland-client) >= 1.21.0
|
|
BuildRequires: pkgconfig(wayland-cursor) >= 1.9.91
|
|
BuildRequires: pkgconfig(wayland-egl)
|
|
BuildRequires: pkgconfig(wayland-protocols) >= 1.36
|
|
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-1
|
|
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}-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
|
|
# gtk+ can work without branding/translations. Built in defaults will be used then.
|
|
Recommends: %{name}-branding
|
|
Recommends: gvfs
|
|
Obsoletes: %{name}-data
|
|
# IM modules have been dropped in 3.94.0
|
|
Obsoletes: %{name}-immodule-amharic
|
|
Obsoletes: %{name}-immodule-broadway
|
|
Obsoletes: %{name}-immodule-inuktitut
|
|
Obsoletes: %{name}-immodule-multipress
|
|
Obsoletes: %{name}-immodule-thai
|
|
Obsoletes: %{name}-immodule-tigrigna
|
|
Obsoletes: %{name}-immodule-vietnamese
|
|
Obsoletes: %{name}-immodule-xim
|
|
# with version 4.0.0, the soname was actually changed to libgtk-4.so.1
|
|
# but the package was nor correctly renamed
|
|
Obsoletes: libgtk-4-0 >= 4
|
|
# Provide main package to make the lang subpackage installable
|
|
Provides: %{name} = %{version}
|
|
|
|
%description -n libgtk-4-1
|
|
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
|
|
Requires: (python3-gobject-Gdk if python3-gobject)
|
|
Requires: (python310-gobject-Gdk if python310-gobject)
|
|
Requires: (python38-gobject-Gdk if python38-gobject)
|
|
Requires: (python39-gobject-Gdk if python39-gobject)
|
|
|
|
%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 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 devel-tools
|
|
Summary: Auxiliary utilities for the GTK+ toolkit library v4
|
|
Group: System/Libraries
|
|
|
|
%description devel-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 schema
|
|
Summary: Config schema for the GTK+ toolkit library v4
|
|
# The schema is shared between gtk3 and gtk4 - gtk4 wins
|
|
Group: System/Libraries
|
|
BuildArch: noarch
|
|
|
|
%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-1 = %{version}
|
|
Supplements: (libgtk-4-1 and 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 docs
|
|
Summary: Developer documentation for GTK
|
|
BuildArch: noarch
|
|
|
|
%description docs
|
|
This package contains developer documentation for version 4 of the GTK
|
|
widget toolkit.
|
|
|
|
%package devel
|
|
Summary: Development files for the GTK+ toolkit library v4
|
|
Group: Development/Libraries/X11
|
|
Requires: %{name}-devel-tools = %{version}
|
|
Requires: %{name}-tools = %{version}
|
|
Requires: gettext-its-%{name} >= %{version}
|
|
Requires: libgtk-4-1 = %{version}
|
|
Requires: typelib-1_0-Gtk-4_0 = %{version}
|
|
|
|
%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
|
|
%autosetup -p1 -n %{_name}-%{version}
|
|
|
|
%build
|
|
export CFLAGS=-Wno-int-conversion
|
|
%meson \
|
|
-Ddocumentation=true \
|
|
-Dbroadway-backend=true \
|
|
-Dcloudproviders=enabled \
|
|
-Dcolord=enabled \
|
|
-Dprint-cups=enabled \
|
|
-Dwayland-backend=true \
|
|
-Dx11-backend=true \
|
|
-Dintrospection=enabled \
|
|
-Dman-pages=true \
|
|
-Dtracker=enabled \
|
|
%if %{with gst}
|
|
-Dmedia-gstreamer=enabled \
|
|
%else
|
|
-Dmedia-gstreamer=disabled \
|
|
%endif
|
|
-Dbuild-testsuite=false \
|
|
-Dbuild-tests=false \
|
|
-Dbuild-examples=false \
|
|
%{nil}
|
|
%meson_build
|
|
|
|
%install
|
|
%meson_install
|
|
|
|
%find_lang gtk40 %{?no_lang_C}
|
|
install -m 644 -D %{SOURCE2} %{buildroot}%{_datadir}/gtk-4.0/settings.ini
|
|
# create modules directory that should have been created during the build
|
|
if test ! -d %{buildroot}%{_libdir}/gtk-4.0/modules; then
|
|
mkdir %{buildroot}%{_libdir}/gtk-4.0/modules
|
|
else
|
|
echo 'Remove this no-longer-needed modulesdir hack.'
|
|
fi
|
|
# create theming-engines directory that should have been created during the build
|
|
if test ! -d %{buildroot}%{_libdir}/gtk-4.0/%{gtk_binary_version}/theming-engines; then
|
|
mkdir %{buildroot}%{_libdir}/gtk-4.0/%{gtk_binary_version}/theming-engines
|
|
else
|
|
echo 'Remove this no-longer-needed themingdir hack.'
|
|
fi
|
|
# Install rpm macros
|
|
mkdir -p %{buildroot}%{_rpmmacrodir}
|
|
cp %{SOURCE3} %{buildroot}%{_rpmmacrodir}
|
|
%fdupes %{buildroot}%{_datadir}
|
|
%fdupes %{buildroot}%{_libdir}
|
|
|
|
%ldconfig_scriptlets -n libgtk-4-1
|
|
|
|
%files -n libgtk-4-1
|
|
%license COPYING
|
|
%doc AUTHORS NEWS
|
|
%dir %{_libdir}/gtk-4.0
|
|
%dir %{_libdir}/gtk-4.0/%{gtk_binary_version}
|
|
%dir %{_libdir}/gtk-4.0/%{gtk_binary_version}/printbackends/
|
|
%{_libdir}/gtk-4.0/%{gtk_binary_version}/printbackends/libprintbackend-cups.so
|
|
%{_libdir}/gtk-4.0/%{gtk_binary_version}/printbackends/libprintbackend-file.so
|
|
%if %{with gst}
|
|
%dir %{_libdir}/gtk-4.0/%{gtk_binary_version}/media/
|
|
#%%{_libdir}/gtk-4.0/%%{gtk_binary_version}/media/libmedia-ffmpeg.so
|
|
%{_libdir}/gtk-4.0/%{gtk_binary_version}/media/libmedia-gstreamer.so
|
|
%endif
|
|
%dir %{_libdir}/gtk-4.0/%{gtk_binary_version}/theming-engines/
|
|
%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/GdkWayland-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 tools
|
|
%{_bindir}/gtk4-broadwayd
|
|
%{_bindir}/gtk4-launch
|
|
%{_bindir}/gtk4-path-tool
|
|
%{_bindir}/gtk4-query-settings
|
|
%{_bindir}/gtk4-update-icon-cache
|
|
%dir %{_datadir}/gtk-4.0/emoji
|
|
%{_datadir}/gtk-4.0/emoji/*.gresource
|
|
%{_mandir}/man1/gtk4-broadwayd.1%{?ext_man}
|
|
%{_mandir}/man1/gtk4-launch.1%{?ext_man}
|
|
%{_mandir}/man1/gtk4-query-settings.1%{?ext_man}
|
|
%{_mandir}/man1/gtk4-update-icon-cache.1%{?ext_man}
|
|
# English should be offered to every installation by default.
|
|
%{_datadir}/locale/en/
|
|
%{_datadir}/locale/en_GB/
|
|
%{_datadir}/locale/en@shaw/
|
|
%{_datadir}/locale/en_CA/
|
|
|
|
%files devel-tools
|
|
%{_bindir}/gtk4-builder-tool
|
|
%{_bindir}/gtk4-demo
|
|
%{_bindir}/gtk4-demo-application
|
|
%{_bindir}/gtk4-encode-symbolic-svg
|
|
%{_bindir}/gtk4-icon-browser
|
|
%{_bindir}/gtk4-image-tool
|
|
%{_bindir}/gtk4-node-editor
|
|
%{_bindir}/gtk4-print-editor
|
|
%{_bindir}/gtk4-rendernode-tool
|
|
%{_bindir}/gtk4-widget-factory
|
|
%{_datadir}/applications/org.gtk.Demo4.desktop
|
|
%{_datadir}/applications/org.gtk.IconBrowser4.desktop
|
|
%{_datadir}/applications/org.gtk.gtk4.NodeEditor.desktop
|
|
%{_datadir}/applications/org.gtk.PrintEditor4.desktop
|
|
%{_datadir}/applications/org.gtk.WidgetFactory4.desktop
|
|
%dir %{_datadir}/gtk-4.0
|
|
%{_datadir}/gtk-4.0/gtk4builder.rng
|
|
%{_datadir}/icons/hicolor/scalable/apps/org.gtk.Demo4.svg
|
|
%{_datadir}/icons/hicolor/scalable/apps/org.gtk.IconBrowser4.svg
|
|
%{_datadir}/icons/hicolor/scalable/apps/org.gtk.gtk4.NodeEditor.Devel.svg
|
|
%{_datadir}/icons/hicolor/scalable/apps/org.gtk.gtk4.NodeEditor.svg
|
|
%{_datadir}/icons/hicolor/symbolic/apps/org.gtk.gtk4.NodeEditor-symbolic.svg
|
|
%{_datadir}/icons/hicolor/scalable/apps/org.gtk.PrintEditor4.Devel.svg
|
|
%{_datadir}/icons/hicolor/scalable/apps/org.gtk.PrintEditor4.svg
|
|
%{_datadir}/icons/hicolor/scalable/apps/org.gtk.WidgetFactory4.svg
|
|
%{_datadir}/icons/hicolor/symbolic/apps/org.gtk.Demo4-symbolic.svg
|
|
%{_datadir}/icons/hicolor/symbolic/apps/org.gtk.IconBrowser4-symbolic.svg
|
|
%{_datadir}/icons/hicolor/symbolic/apps/org.gtk.PrintEditor4-symbolic.svg
|
|
%{_datadir}/icons/hicolor/symbolic/apps/org.gtk.WidgetFactory4-symbolic.svg
|
|
# This schemas file stays here and not in the schemas package
|
|
%{_datadir}/glib-2.0/schemas/org.gtk.Demo4.gschema.xml
|
|
%{_datadir}/metainfo/org.gtk.Demo4.appdata.xml
|
|
%{_datadir}/metainfo/org.gtk.IconBrowser4.appdata.xml
|
|
%{_datadir}/metainfo/org.gtk.gtk4.NodeEditor.appdata.xml
|
|
%{_datadir}/metainfo/org.gtk.PrintEditor4.appdata.xml
|
|
%{_datadir}/metainfo/org.gtk.WidgetFactory4.appdata.xml
|
|
%{_mandir}/man1/gtk4-builder-tool.1%{?ext_man}
|
|
%{_mandir}/man1/gtk4-demo-application.1%{?ext_man}
|
|
%{_mandir}/man1/gtk4-demo.1%{?ext_man}
|
|
%{_mandir}/man1/gtk4-encode-symbolic-svg.1%{?ext_man}
|
|
%{_mandir}/man1/gtk4-icon-browser.1%{?ext_man}
|
|
%{_mandir}/man1/gtk4-image-tool.1%{?ext_man}
|
|
%{_mandir}/man1/gtk4-node-editor.1%{?ext_man}
|
|
%{_mandir}/man1/gtk4-path-tool.1%{?ext_man}
|
|
%{_mandir}/man1/gtk4-rendernode-tool.1%{?ext_man}
|
|
%{_mandir}/man1/gtk4-widget-factory.1%{?ext_man}
|
|
|
|
%files schema
|
|
%{_datadir}/glib-2.0/schemas/org.gtk.gtk4.Settings.ColorChooser.gschema.xml
|
|
%{_datadir}/glib-2.0/schemas/org.gtk.gtk4.Settings.Debug.gschema.xml
|
|
%{_datadir}/glib-2.0/schemas/org.gtk.gtk4.Settings.EmojiChooser.gschema.xml
|
|
%{_datadir}/glib-2.0/schemas/org.gtk.gtk4.Settings.FileChooser.gschema.xml
|
|
|
|
%files branding-upstream
|
|
%{_datadir}/gtk-4.0/settings.ini
|
|
|
|
%files docs
|
|
%{_datadir}/doc/gdk4/
|
|
%{_datadir}/doc/gdk4-wayland/
|
|
%{_datadir}/doc/gdk4-x11/
|
|
%{_datadir}/doc/gsk4/
|
|
%{_datadir}/doc/gtk4/
|
|
|
|
%files devel
|
|
%doc CONTRIBUTING.md
|
|
%{_datadir}/gir-1.0/*.gir
|
|
%{_includedir}/gtk-4.0/
|
|
%{_libdir}/pkgconfig/gtk4.pc
|
|
%{_libdir}/pkgconfig/gtk4-atspi.pc
|
|
%{_libdir}/pkgconfig/gtk4-broadway.pc
|
|
%{_libdir}/pkgconfig/gtk4-wayland.pc
|
|
%{_libdir}/pkgconfig/gtk4-unix-print.pc
|
|
%{_libdir}/pkgconfig/gtk4-x11.pc
|
|
%{_libdir}/libgtk-4.so
|
|
%{_rpmmacrodir}/macros.gtk4
|
|
%dir %{_datadir}/gtk-4.0/valgrind
|
|
%{_datadir}/gtk-4.0/valgrind/gtk.supp
|
|
|
|
%files -n gettext-its-%{name}
|
|
%dir %{_datadir}/gettext/
|
|
%dir %{_datadir}/gettext/its/
|
|
%{_datadir}/gettext/its/gtk4builder.its
|
|
%{_datadir}/gettext/its/gtk4builder.loc
|
|
|
|
%files lang -f gtk40.lang
|
|
# Those shouldn't be here in the first place.
|
|
%exclude %{_datadir}/locale/en/
|
|
%exclude %{_datadir}/locale/en_GB/
|
|
%exclude %{_datadir}/locale/en@shaw/
|
|
%exclude %{_datadir}/locale/en_CA/
|
|
|
|
%changelog
|