Page suivantePage pr�c�denteTable des mati�res

7. Construire des RPM pour plusieurs architectures

RPM peut maintenant �tre utilis� pour construire des paquetages pour intel 386, le Digital Alpha faisant tourner linux, et le Sparc. Il a �t� signal� qu'il fonctionnait aussi bien sur des stations de travail SGI et HP. De nombreuses options permettent de construire des paquetages sur toutes les plateformes facilement. La premi�re de celles-ci est la directive "optflags" dans /etc/rpmrc. Elle peut �tre utilis�e pour positionner des options utilis�s durant la compilation concernant des valeurs sp�cifiques � l'architecture. Elles peuvent �tre utilis�es pour faire diff�rentes choses qui d�pend de l'architecture sur laquelle vous compilez. Une fonctionnalit� est la directive "Exclude" dans le header.

7.1 Exemple de fichier spec

La partie qui suit est extraite du fichier spec pour le paquetage fileutils. Il est param�tr� pour compiler aussi bien sur Alpha que sur Intel.


 Summary: GNU File Utilities
 Name: fileutils
 Version: 3.16
 Release: 1
 Copyright: GPL
 Group: Utilities/File
 Source0: prep.ai.mit.edu:/pub/gnu/fileutils-3.16.tar.gz
 Source1: DIR_COLORS
 Patch: fileutils-3.16-mktime.patch
 %description
 These are the GNU file management utilities.  It includes programs
 to copy, move, list, etc, files.
 The ls program in this package now incorporates color ls!
 %prep
 %setup
 %ifarch alpha
 %patch -p1
 autoconf
 %endif
 %build
 configure --prefix=/usr --exec-prefix=/
 make CFLAGS="$RPM_OPT_FLAGS" LDFLAGS=-s
 %install
 rm -f /usr/info/fileutils*
 make install
 gzip -9nf /usr/info/fileutils*

7.2 Optflags

Dans cet exemple, vous pouvez voir comment la directive "optflags" est utilis�e dans le /etc/rpmrc. Selon l'architecture sur laquelle vous compilez, la valeur est donn�e � RPM_OPT_FLAGS. Vous devez patcher le Makefile pour votre paquetage pour utiliser cette variable � la place des directives normales que vous utilisez probablement (comme -m486 et -O2). Vous pouvez obtenir un meilleur aspect de ce dont vous avez � faire par l'installation du paquetage source, la d�compression de celui-ci et l'examen du Makefile. Ensuite regardez au patch pour le Makefile et voyez les changements � faire.

7.3 Macros

la macro %ifarch est tr�s important pour tout cela. LA plupart du temps vous autre besoin de faire un patch ou deux qui sera sp�cifique � une architecture seulement. Dans ce cas, RPM va vous permettre d'appliquer ce patch uniquement sur cette architecture.

Dans l'exemple plus haut, fileutils a un patch pour les machines 64 bits. Manifestement, cela doit uniquement �tre appliqu� sur Alpha � ce jour. Donc, on ajoute une macro %ifarch pour le patch 64 bits comme suit:

 %ifarch axp
 %patch1 -p1
 %endif
Cela garantira que le patch ne sera pas appliqu� sur une autre architecture que Alpha.

7.4 Exclure des architectures des paquetages

Comme vous pouvez maintenir les RPMs sources dans un r�pertoire pour toutes les plateformes, nous avons impl�ment� la capacit� d'exclure des paquetages d'�tre compil�es sur certaines architectures. C'est ce que vous pouvez faire avec quelque chose comme

 rpm --rebuild /usr/src/SRPMS/*.rpm

et vous obtenez les vrais paquetages compil�s. Si vous n'avez pas encore port� une application sur une certaine platefome, tout ce que vous devez faire est une ligne comme:

 ExcludeArch: axp

� l'en-t�te du fichier spec des paquetages source. Ensuite recompilez les paquetages sur les plateformes sur lesquelles il compile. Vous aurez alors un paquetage source qui compile sur Intel et peut facilement �tre saut� sur Alpha.

7.5 Pour finir

Utilisez RPM pour construire des paquetages multi-architectures est habituellement plus simple � faire que d'obtenir du paquetage lui-m�me qu'il compile sur des architectures diff�rentes. Aussi plus les paquetages compilent difficilement plus vous obtiendrez de facilit� (Ndt: ?). Comme toujours, la meilleure aide quand la construction d'un RPM vous pose probl�me est de regarder un paquetage source similaire.


Page suivantePage pr�c�denteTable des mati�res

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:15