From Fedora Project Wiki
(Created page with "= Guidelines for Meson = This document provides best-practices for usage of [https://ninja-build.org/ ninja] in packaging RPMs for Fedora. == BuildRequires == You '''MUST''...") |
|||
(8 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
= Guidelines for Meson = | = Guidelines for Meson = | ||
This document provides best-practices for usage of [https://ninja-build.org/ ninja] | This document provides best-practices for usage of [http://mesonbuild.com/ The Meson Build System] in packaging RPMs for Fedora. Meson is a buildsystem like automake (it generates code for make) which can generate code for some of lower-level build systems, for example [https://ninja-build.org/ ninja]. It's important to use %meson prefixed macro instead of %ninja, because backend could be easily changed. | ||
== BuildRequires == | == BuildRequires == | ||
Line 14: | Line 14: | ||
* <code>%__meson</code> -- meson executable | * <code>%__meson</code> -- meson executable | ||
* <code>% | * <code>%_vpath_srcdir</code> -- source directory ('''NOTE''': you can override it using <tt>%global</tt>, default: <code>.</code>) | ||
* <code>% | * <code>%_vpath_builddir</code> -- build directory ('''NOTE''': you can override it using <tt>%global</tt>, default: <code>%{_target_platform}</code>) | ||
* <code>% | * <code>%meson</code> -- function which defines CFLAGS, LDFLAGS, etc. and calls %__meson with appropriate parameters (<tt>--libdir=%{_libdir}</tt> and such) | ||
* <code>%meson_build</code> -- alias for <code>%ninja_build -C %{ | * <code>%meson_build</code> -- alias for <code>%ninja_build -C %{_vpath_builddir}</code> | ||
* <code>%meson_install</code> -- alias for <code>%ninja_install -C %{ | * <code>%meson_install</code> -- alias for <code>%ninja_install -C %{_vpath_builddir}</code> | ||
* <code>%meson_test</code> -- alias for <code>%ninja_test -C %{ | * <code>%meson_test</code> -- alias for <code>%ninja_test -C %{_vpath_builddir}</code> | ||
{{admon/tip|For more information see source code|<tt>%{rpmmacrodir}/macros. | {{admon/tip|For more information see source code|<tt>%{rpmmacrodir}/macros.meson</tt> (<tt>/usr/lib/rpm/macros.d/macros.meson</tt>)}} | ||
== Example RPM spec file == | == Example RPM spec file == | ||
<pre> | <pre> | ||
Name: | %global _vpath_srcdir sdk/%{name}/projects/meson | ||
Version: 1 | |||
Name: angelscript | |||
Version: 2.31.1 | |||
Release: 1%{?dist} | Release: 1%{?dist} | ||
Summary: | Summary: Flexible cross-platform scripting library | ||
License: | License: zlib | ||
URL: | URL: http://www.angelcode.com/angelscript/ | ||
Source: %{url}/%{name} | Source: %{url}sdk/files/%{name}_%{version}.zip | ||
BuildRequires: meson | 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 | %prep | ||
%autosetup | %autosetup -c | ||
%build | %build | ||
Line 49: | Line 59: | ||
%check | %check | ||
%meson_test | %meson_test | ||
%post -p /sbin/ldconfig | |||
%postun -p /sbin/ldconfig | |||
%files | %files | ||
%{ | %{_libdir}/lib%{name}.so.* | ||
%files devel | |||
%{_libdir}/lib%{name}.so | |||
%{_includedir}/%{name}.h | |||
</pre> | </pre> |
Latest revision as of 17:42, 15 December 2016
Guidelines for Meson
This document provides best-practices for usage of The Meson Build System in packaging RPMs for Fedora. Meson is a buildsystem like automake (it generates code for make) which can generate code for some of lower-level build systems, for example ninja. It's important to use %meson prefixed macro instead of %ninja, because backend could be easily changed.
BuildRequires
You MUST add following BuildRequires:
BuildRequires: meson
RPM Macros
%__meson
-- meson executable%_vpath_srcdir
-- source directory (NOTE: you can override it using %global, default:.
)%_vpath_builddir
-- build directory (NOTE: you can override it using %global, default:%{_target_platform}
)%meson
-- function which defines CFLAGS, LDFLAGS, etc. and calls %__meson with appropriate parameters (--libdir=%{_libdir} and such)%meson_build
-- alias for%ninja_build -C %{_vpath_builddir}
%meson_install
-- alias for%ninja_install -C %{_vpath_builddir}
%meson_test
-- alias for%ninja_test -C %{_vpath_builddir}
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 URL: http://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 %build %meson %meson_build %install %meson_install %check %meson_test %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %files %{_libdir}/lib%{name}.so.* %files devel %{_libdir}/lib%{name}.so %{_includedir}/%{name}.h