Paketbaurichtlinien für Meson

Dieses Dokument beschreibt die beste Vorgehensweise für die Verwendung des https://mesonbuild.com/ [Meson-Build-Systems] in Fedora-Paketen. Meson ist ein Build-System (ähnlich wie Automake), das Code für andere Low-Level-Build-Systeme generieren kann. Beispielsweise kann es Code für Ninja generieren. Beim Paketieren von Software, die mit Meson erstellt wird, ist es wichtig, die Makros %meson anstelle von %ninja oder anderen Low-Level-Build-System-Makros direkt zu verwenden. Das von Meson verwendete Backend kann sich ändern.

Bauabhängigkeiten

Sie MÜSSEN die folgenden BuildRequires hinzufügen:

BuildRequires: meson

Verfügbare Makros

Diese werden Sie in Ihren Spec-Dateien im Allgemeinen verwenden:

%meson

Definiert CFLAGS, LDFLAGS usw. und ruft %__meson mit entsprechenden Parametern auf (--libdir=%{_libdir} usw.). Sie können -DOption=Wert an dieses Makro übergeben, um Optionen für das Buildsystem festzulegen.

%meson_build

Ein Alias für %ninja_build -C %{_vpath_builddir}.

%meson_install

Ein Alias für %ninja_install -C %{_vpath_builddir}.

%meson_test

Ein Alias für %ninja_test -C %{_vpath_builddir}.

Es ist selten notwendig (aber zulässig), diese zu verwenden oder zu ändern:

%__meson

Der Pfad zur ausführbaren »meson«-Datei

Beispiel einer RPM-Spec-Datei

%global _vpath_srcdir sdk/%{name}/projects/meson

Name:           angelscript
Version:        2.31.1
Release:        1%{?dist}
Summary:        Flexible cross-platform scripting library

License:        zlib
URL:            https://www.angelcode.com/angelscript/
Source:         %{url}sdk/files/%{name}_%{version}.zip

BuildRequires:  meson
BuildRequires:  gcc

%package devel
Summary:        Development libraries and header files for %{name}
Requires:       %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}

%description devel
%{summary}.

%prep
%autosetup -c

%conf
%meson

%build
%meson_build

%install
%meson_install

%check
%meson_test

%files
%{_libdir}/lib%{name}.so.*

%files devel
%{_libdir}/lib%{name}.so
%{_includedir}/%{name}.h

HINWEIS: Wenn für EPEL < 10 erstellt wird, sollte %meson in %build stehen.