From Fedora Project Wiki

This is an old copy of a packaging guideline, preserved here in the wiki while we complete the transition to the Fedora documentation system. The current version is located at . Please update your bookmarks.

This document provides best practices for the usage of the Meson build system in Fedora packages. Meson is a build system (similar to automake) which can generate code for other lower-level build systems. For example, it can generate code for ninja. When packaging software which builds using Meson it's important to use the %meson macros instead of %ninja or other lower-level build system macros directly. The backend used by Meson could change.

Build Dependencies

You MUST add following BuildRequires:

BuildRequires: meson

Available Macros

You will generally make use of these in your specs:

Defines CFLAGS, LDFLAGS, etc. and calls %__meson with appropriate parameters (--libdir=%{_libdir} and such). You can pass -Doption=value to this macro in order to set options for the buildsystem.
An alias for %ninja_build -C %{_vpath_builddir}
An alias for %ninja_install -C %{_vpath_builddir}
An alias for %ninja_test -C %{_vpath_builddir}

It is rarely necessary (but permissible) to use or alter these:

Path (relative to the build directory) where the sources to be built are located (default: .)
Path (relative to the build directory) where the The build directory (default: %{_target_platform})
The path to the meson executable
For more information see the source
%{rpmmacrodir}/macros.meson (/usr/lib/rpm/macros.d/macros.meson)

Example RPM spec file

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

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

License:        zlib
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

%autosetup -c




%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig


%files devel