Valid RPM Macros
Note: this is based on official Fedora Wiki page and could be outdated!
Here are the definitions for some common specfile macros as they are
defined on Fedora 13 (rpm-4.8.0-14.fc13). For definitions of more
macros, examine the output of rpm --showrc
. To see the expanded
definition of a macro use the command rpm --eval "%{macro}
. Note that
neither command will take into account macros defined inside specfiles,
but both will take into account macros defined in your ~/.rpmmacros
file and macros defined on the command line.
Keep in mind that some of these macros may evaluate differently on older Fedora or EPEL releases.
Macros mimicking autoconf variables
%{_sysconfdir} /etc
%{_prefix} /usr
%{_exec_prefix} %{_prefix}
%{_bindir} %{_exec_prefix}/bin
%{_libdir} %{_exec_prefix}/%{_lib}
%{_libexecdir} %{_exec_prefix}/libexec
%{_sbindir} %{_exec_prefix}/sbin
%{_sharedstatedir} /var/lib
%{_datarootdir} %{_prefix}/share
%{_datadir} %{_datarootdir}
%{_includedir} %{_prefix}/include
%{_infodir} /usr/share/info
%{_mandir} /usr/share/man
%{_localstatedir} /var
%{_initddir} %{_sysconfdir}/rc.d/init.d
Other macros and variables for paths
These macros should be used for paths that are not covered by the
macros mimicking autoconf variables. The %{buildroot}
macro or the
$RPM_BUILD_ROOT
variable is the directory that should be assumed to
be the root file system when installing files. It is used as the value
for the DESTDIR
variable.
%{_var} /var
%{_tmppath} %{_var}/tmp
%{_usr} /usr
%{_usrsrc} %{_usr}/src
%{_lib} lib (lib64 on 64bit multilib systems)
%{_docdir} %{_datadir}/doc
%{buildroot} %{_buildrootdir}/%{name}-%{version}-%{release}.%{_arch}
$RPM_BUILD_ROOT %{buildroot}
Build flags macros and variables
These macros should be used as flags for the compiler or linker. Note that the values for the macros below reflect the settings on Fedora 13 (i686) with redhat-rpm-config installed.
%{__global_cflags} -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4
%{optflags} %{__global_cflags} -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables
$RPM_OPT_FLAGS %{optflags}
RPM directory macros
The macros are usually used with rpmbuild --define
to specify which
directories rpmbuild should use, it is unusual to use them within
SPEC files.
%{_topdir} %{getenv:HOME}/rpmbuild
%{_builddir} %{_topdir}/BUILD
%{_rpmdir} %{_topdir}/RPMS
%{_sourcedir} %{_topdir}/SOURCES
%{_specdir} %{_topdir}/SPECS
%{_srcrpmdir} %{_topdir}/SRPMS
%{_buildrootdir} %{_topdir}/BUILDROOT