AppStream/AppStream.spec

338 lines
10 KiB
RPMSpec
Raw Normal View History

#
# spec file for package AppStream
#
# Copyright (c) 2024 SUSE LLC
#
# 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/
#
%global flavor @BUILD_FLAVOR@%{nil}
%if "%flavor" == "qt6"
%define pkg_suffix -qt6
%define qt6 1
%define min_qt_version 6.2.4
%else
%define min_qt_version 5.15
%if 0%{?sle_version} >= 150400 && 0%{?is_opensuse} || 0%{?sle_version} >= 150600 || 0%{?suse_version} > 1500
%bcond_without vala
%endif
%endif
# The default Leap compiler is too old for building AppStream-qt6. use the same compiler for both flavors
%if 0%{?suse_version} == 1500
%bcond_without gcc13
%endif
%define rname AppStream
%define libappstream_sover 5
%define libAppStreamQt_sover 3
%define libappstream_compose_sover 0
Name: AppStream%{?pkg_suffix}
Version: 1.0.3
Release: 0
Summary: Tools and libraries to work with AppStream metadata
License: LGPL-2.1-or-later
URL: https://www.freedesktop.org/software/appstream/docs/
Source0: http://www.freedesktop.org/software/appstream/releases/%{rname}-%{version}.tar.xz
Source1: http://www.freedesktop.org/software/appstream/releases/%{rname}-%{version}.tar.xz.asc
Source2: AppStream.keyring
# PATCH-FIX-OPENSUSE
Patch0: support-meson0.59.patch
BuildRequires: cairo-devel
BuildRequires: docbook-xsl-stylesheets
%if %{with gcc13}
BuildRequires: gcc13
BuildRequires: gcc13-c++
%endif
BuildRequires: gdk-pixbuf-loader-rsvg
BuildRequires: gettext-devel
BuildRequires: gperf
BuildRequires: itstool
BuildRequires: meson >= 0.59
BuildRequires: pkgconfig
BuildRequires: xsltproc
%if 0%{?qt6}
BuildRequires: pkgconfig(Qt6Core) >= %{min_qt_version}
BuildRequires: pkgconfig(Qt6Test) >= %{min_qt_version}
%else
BuildRequires: pkgconfig(Qt5Core) >= %{min_qt_version}
BuildRequires: pkgconfig(Qt5Test) >= %{min_qt_version}
%endif
BuildRequires: pkgconfig(gdk-pixbuf-2.0)
BuildRequires: pkgconfig(gio-2.0)
BuildRequires: pkgconfig(glib-2.0) >= 2.62
BuildRequires: pkgconfig(gobject-introspection-1.0)
BuildRequires: pkgconfig(libcurl)
BuildRequires: pkgconfig(librsvg-2.0)
BuildRequires: pkgconfig(libsystemd)
BuildRequires: pkgconfig(libxml-2.0)
BuildRequires: pkgconfig(pango)
BuildRequires: pkgconfig(xmlb) >= 0.3.14
BuildRequires: pkgconfig(yaml-0.1)
Recommends: curl
%if %{with vala}
BuildRequires: vala
%endif
%description
AppStream-Core makes it easy to access application information from the
AppStream database over a nice GObject-based interface.
%if 0%{?qt6}
%package -n libAppStreamQt%{libAppStreamQt_sover}
Summary: Qt 6 bindings for AppStream
License: GPL-2.0-or-later AND LGPL-2.1-or-later
%description -n libAppStreamQt%{libAppStreamQt_sover}
The Qt 6 bindings for AppStream.
%package -n appstream-qt6-devel
Summary: Header files for AppStream's Qt 6 bindings
License: GPL-2.0-or-later AND LGPL-2.1-or-later
Requires: libAppStreamQt%{libAppStreamQt_sover} = %{version}
Requires: libappstream%{libappstream_sover} = %{version}
Conflicts: libAppStreamQt-devel < 1.0
%description -n appstream-qt6-devel
This package contains all necessary include files, libraries,
configuration files and development tools (with manual pages) needed to
compile and link applications using the Qt bindings for AppStream.
%else
%package -n libappstream%{libappstream_sover}
Summary: The main library for AppStream
License: GPL-2.0-or-later AND LGPL-2.1-or-later
%description -n libappstream%{libappstream_sover}
The main library for AppStream.
%package -n libAppStreamQt5-%{libAppStreamQt_sover}
Summary: Qt 5 bindings for AppStream
License: GPL-2.0-or-later AND LGPL-2.1-or-later
%description -n libAppStreamQt5-%{libAppStreamQt_sover}
The Qt 5 bindings for AppStream.
%package -n appstream-qt5-devel
Summary: Header files for AppStream's Qt 5 bindings
License: GPL-2.0-or-later AND LGPL-2.1-or-later
Requires: libAppStreamQt5-%{libAppStreamQt_sover} = %{version}
Requires: libappstream%{libappstream_sover} = %{version}
# Renamed after the 1.0.0 release
Provides: libAppStreamQt-devel = %{version}
Obsoletes: libAppStreamQt-devel < %{version}
%description -n appstream-qt5-devel
This package contains all necessary include files, libraries,
configuration files and development tools (with manual pages) needed to
compile and link applications using the Qt bindings for AppStream.
%package compose
Summary: Support for appstreamcli compose
License: GPL-2.0-or-later AND LGPL-2.1-or-later
Requires: AppStream = %{version}
Requires: gdk-pixbuf-loader-rsvg
%description compose
This package contains all necessary files, libraries,
configuration files to add compose support to appstreamcli.
%package -n libappstream-compose%{libappstream_compose_sover}
Summary: Libraries for appstream compose support
License: GPL-2.0-or-later AND LGPL-2.1-or-later
%description -n libappstream-compose%{libappstream_compose_sover}
The library for AppStream compose support.
%package compose-devel
Summary: Header files for AppStream Compose support
License: GPL-2.0-or-later AND LGPL-2.1-or-later
Requires: AppStream = %{version}
Requires: AppStream-compose = %{version}
Requires: libappstream-compose%{libappstream_compose_sover} = %{version}
%description compose-devel
This package contains all necessary files, libraries,
configuration files to add compose support using compose.
%package devel
Summary: Header files for AppStream development
License: GPL-2.0-or-later
Requires: AppStream = %{version}
Requires: libappstream%{libappstream_sover} = %{version}
%description devel
This package contains all necessary include files, libraries,
configuration files and development tools (with manual pages) needed to
compile and link applications using AppStream.
This package contains the documentation for AppStream.
%package doc
Summary: Documentation for AppStream
License: GPL-2.0-or-later
BuildArch: noarch
%description doc
AppStream-Core makes it easy to access application information from the
AppStream database over a nice GObject-based interface.
This package contains the documentation files for AppStream.
%package -n typelib-1_0-AppStream-compose-1.0
Summary: Introspection bindings for AppStream Compose
License: LGPL-2.1-or-later
Group: System/Libraries
%description -n typelib-1_0-AppStream-compose-1.0
GObject introspection bindings for interfaces provided by AppStream Compose
%package -n typelib-1_0-AppStream-1.0
Summary: Introspection bindings for AppStream
License: LGPL-2.1-or-later
Group: System/Libraries
%description -n typelib-1_0-AppStream-1.0
GObject introspection bindings for interfaces provided by AppStream.
%lang_package
%endif
%prep
%autosetup -p1 -n %{rname}-%{version}
%build
%define common_options -Ddocs=false -Dapidocs=false -Dstemming=false
%if %{with vala}
%define build_vapi true
%else
%define build_vapi false
%endif
%if 0%{?qt6}
%define options -Dqt=true -Dqt-versions=6 -Dvapi=false -Dcompose=false -Dgir=false
%else
%define options -Dqt=true -Dqt-versions=5 -Dcompose=true -Dvapi=%{build_vapi}
%endif
%if %{with gcc13}
export CC=gcc-13 CXX=g++-13
%endif
%meson %{common_options} %{options}
%meson_build
%install
%meson_install
# Unneeded test file
rm -r %{buildroot}%{_datadir}/installed-tests
# Only keep the Qt6 library when using the qt6 flavor
%if 0%{?qt6}
rm %{buildroot}%{_bindir}/appstreamcli
rm %{buildroot}%{_libdir}/libappstream.so*
rm -r %{buildroot}%{_datadir}/{appstream,doc,gettext,locale,man,metainfo}
rm -r %{buildroot}%{_includedir}/appstream
rm -r %{buildroot}%{_libdir}/pkgconfig
%else
%find_lang appstream %{name}.lang
%endif
%check
%meson_test
%if 0%{?qt6}
%ldconfig_scriptlets -n libAppStreamQt%{libAppStreamQt_sover}
%else
%ldconfig_scriptlets -n libappstream%{libappstream_sover}
%ldconfig_scriptlets -n libAppStreamQt5-%{libAppStreamQt_sover}
%ldconfig_scriptlets -n libappstream-compose%{libappstream_compose_sover}
%endif
%if 0%{?qt6}
%files -n libAppStreamQt%{libAppStreamQt_sover}
%{_libdir}/libAppStreamQt.so.%{libAppStreamQt_sover}
%{_libdir}/libAppStreamQt.so.%{version}
%files -n appstream-qt6-devel
%{_includedir}/AppStreamQt/
%{_libdir}/cmake/AppStreamQt/
%{_libdir}/libAppStreamQt.so
%else
%files lang -f %{name}.lang
%files
%doc NEWS
%{_bindir}/appstreamcli
%dir %{_datadir}/appstream
%{_datadir}/appstream/appstream.conf
%dir %{_datadir}/metainfo
%{_datadir}/metainfo/org.freedesktop.appstream.cli.metainfo.xml
%{_mandir}/man1/appstreamcli.*
%files -n libappstream%{libappstream_sover}
%license COPYING AUTHORS
%{_libdir}/libappstream.so.%{libappstream_sover}
%{_libdir}/libappstream.so.%{version}
%files -n libAppStreamQt5-%{libAppStreamQt_sover}
%{_libdir}/libAppStreamQt5.so.%{libAppStreamQt_sover}
%{_libdir}/libAppStreamQt5.so.%{version}
%files -n appstream-qt5-devel
%{_includedir}/AppStreamQt5/
%{_libdir}/cmake/AppStreamQt5/
%{_libdir}/libAppStreamQt5.so
%files compose
%{_datadir}/metainfo/org.freedesktop.appstream.compose.metainfo.xml
%{_libexecdir}/appstreamcli-compose
%{_mandir}/man1/appstreamcli-compose*.1.gz
%files -n libappstream-compose%{libappstream_compose_sover}
%{_libdir}/libappstream-compose.so.%{version}
%{_libdir}/libappstream-compose.so.%{libappstream_compose_sover}
%files compose-devel
%{_libdir}/libappstream-compose.so
%{_libdir}/pkgconfig/appstream-compose.pc
%{_includedir}/appstream-compose/
%{_datadir}/gir-1.0/AppStreamCompose-1.0.gir
%files devel
%{_libdir}/libappstream.so
%{_libdir}/pkgconfig/appstream.pc
%{_includedir}/appstream/
%{_datadir}/gir-1.0/AppStream-1.0.gir
%{_datadir}/gettext/
%if %{with vala}
%dir %{_datadir}/vala/
%dir %{_datadir}/vala/vapi/
%{_datadir}/vala/vapi/appstream.deps
%{_datadir}/vala/vapi/appstream.vapi
%endif
%files doc
%{_datadir}/doc/appstream
%files -n typelib-1_0-AppStream-1.0
%{_libdir}/girepository-1.0/AppStream-1.0.typelib
%files -n typelib-1_0-AppStream-compose-1.0
%{_libdir}/girepository-1.0/AppStreamCompose-1.0.typelib
%endif
%changelog