===== RPM Macros =====
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
Differences in EPEL 4 & 5
* **%{_initddir}** does not exist in EPEL 4 & 5, use the deprecated **%{_initrddir}** macro instead
* **%{_sharedstatedir}** expands to **%{_prefix}/com** in EPEL 4 & 5
==== 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. Is 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
**%{_buildrootdir}** does not exist in EPEL 4 & 5
{{tag> rpm }}