# CENTOS: Les Macros RPM
Cet article présente les listes des macros courantes :
- Pour les définitions de plusieurs macros,voir le résultat de "rpm --showrc".
- Pour voir la définition développée d'une macro, utiliser la commande rpm --eval "% {macro}".
Aucune de ces commandes ne prendra en compte les macros définies dans les fichiers de spécifications, mais les deux prendront en compte les macros définies dans le fichier ~ /.rpmmacros et les macros définies sur la ligne de commande.
Certaines de ces macros peuvent être évaluées différemment en fonction des versions de Fedora ou EPEL.
# Liste des Macros courantes
## Macros imitant les variables autoconf
^Macro ^Valeur retournée ^
|%{_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|
## Autres macros et variables pour les chemins
Ces macros doivent être utilisées pour les chemins qui ne sont pas couverts par les macros imitant les variables autoconf. La macro% {buildroot} ou la variable **$RPM\_BUILD\_ROOT** est le répertoire qui doit être supposé être le système de fichiers racine lors de l'installation de fichiers. Il est utilisé comme valeur pour la variable DESTDIR.
^Macro ^Valeur retournée ^
|%{_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}|
## Construire des macros et des variables de drapeaux
Ces macros doivent être utilisées comme indicateurs pour le compilateur ou l'éditeur de liens.
Les valeurs des macros ci-dessous reflètent les paramètres de Fedora 13 (i686) avec redhat-rpm-config installé.
^Macro ^Valeur retournée ^
|%{__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}|
## Macros de répertoires RPM
Les macros sont généralement utilisées avec rpmbuild --define pour spécifier les répertoires que rpmbuild doit utiliser. Il est inhabituel de les utiliser dans des fichiers SPEC.
^Macro ^Valeur retournée ^
|%{_topdir} |%{getenv:HOME}/rpmbuild|
|%{_builddir} |%{_topdir}/BUILD|
|%{_rpmdir} |%{_topdir}/RPMS|
|%{_sourcedir} |%{_topdir}/SOURCES|
|%{_specdir} |%{_topdir}/SPECS|
|%{_srcrpmdir} |%{_topdir}/SRPMS|
|%{_buildrootdir} |%{_topdir}/BUILDROOT|
# Le fichier .rpmmacros
Toutes les macros définies dans ~/.rpmmacros remplacent les macros système, ainsi dans l'exemple suivant :
%_topdir% (echo $HOME)/rpmbuild
%_smp_mflags -j3
%__arch_install_post /usr/lib/rpm/check-rpaths /usr/lib/rpm/check-buildroot
- La macro %\_topdir définit le répertoire racine de l'environnement de construction de RPM dans /home/[utilisateur]/rpmbuild.
- La macro %\_smp_mflags contient l'option -j (-jobs) de la commande make, définissant le nombre de travaux pouvant être exécutés simultanément. Généralement, cette valeur est définie sur le nombre de cœurs de processeur plus un. Dans l'exemple avec des processeurs double cœur, les drapeaux smp sont réglés sur -j3.
- La macro %\_\_arch\_install\_post définit les vérifications qui doivent être exécutées sur les fichiers de la location BUILDROOT avec les valeurs par défaut check-rpaths et check-buildroot.