Sekarang RPM dapat digunakan untuk membangun paket untuk Intel i386,
Digital Alpha yang menjalankan Linux, dan Sparc. RPM juga dilaporkan bekerja
dalam SGI dan workstation HP dengan baik. Ada beberapa kemampuan yang membuat
pembangunan dalam platform-platform tersebut menjadi mudah,
Pertama adalah directive ``optflags'' yang ada dalam /etc/rpmrc
. Ini dapat
digunakan untuk mengeset flag yang digunakan saat membangun perangkat lunak
ke arsitektur yang spesifik. Kemampuan lain adalah makro ``arch'' dalam
file spesifikasi. Mereka dapat digunakan untuk mengerjakan sesuatu yang
berbeda berdasarkan atas arsitektur dimana anda membangunnya. Kemampuan
yang lain lagi adalah directive ``Exclude'' dalam header / kepalanya.
Bagian di bawah ini adalah file spesifikasi dari paket ``fileutils''. Ini adalah setup untuk dibangun di atas Alpha dan 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*
.
.
.
Dalam contoh tersebut, anda melihat bagaimana directive ``optflags''
digunakan dalam /etc/rpmrc
. Bergantung kepada arsitektur mana anda membangunnya,
harga yang wajar diberikan kepada RPM_OPT_FLAGS. Anda harus menambal Makefile
untuk paket anda untuk menggunakan variabel ini di tempat directive yang
normal yang mungkin anda gunakan seperti -m486 dan -O2. Anda dapat merasakan
perasaan yang nyaman untuk kebutuhan apa yang harus dikerjakan dengan menginstall
paket source ini dan kemudian melakukan unpack source dan
menguji Makefile. Setelah itu lihatlah patch untuk Makefile dan
lihat perubahan apa yang harus dibuat.
Makro %ifarch
sangat penting secara keseluruhan. Banyak waktu akan diperlukan
untuk membuat sebuah patch atau dua yang spesifik ke satu arsitektur
saja. dalam kasus ini, RPM akan mengizinkan anda untuk menerapkan patch
itu untuk satu arsitektur saja.
Dalam contoh di atas fileutils mempunyai patch untuk mesin 64 bit. Dengan jelas, ini seharusnya diterapkan untuk Alpha saat ini. Jadi, kami menambahkan sebuah makro %ifarch di sekitar patch 64 bit seperti ini :
%ifarch axp
%patch1 -p1
%endif
Hal tersebut akan memastikan bahwa patch itu tidak diterapkan untuk semua arsitektur, kecuali alpha.
Anda dapat memelihara source RPM dalam satu direktori untuk semua paltform, kami telah mengimplementasikan kemampuan untuk ``mengecualikan'' paket dari proses pembangunan dalam arsitektur tertentu. Dengan ini anda masih dapat mengerjakan sesuatu seperti
rpm --rebuild /usr/src/SRPMS/*.rpm
dan mendapatkan paket yang benar sudah dibangun. Bila anda belum membuat porting sebuah aplikasi dalam platform tertentu, semua yang harus anda lakukan adalah menambahkan sebuah baris, seperti :
ExcludeArch: axp
ke dalam kepala dari file spesifikasi dari paket source. Kemudian bangun ulang paketnya di atas platform dimana ia telah dibangun di atasnya. Anda akan mempunyai paket source yang dibangun di atas Intel dan dapat dengan mudah berpindah ke atas Alpha.
Menggunakan RPM untuk membuat paket multi-arsitektur pada umumnya lebih mudah dikerjakan daripada mendapatkan paket itu sendiri dibangun dalam kedua tempat. Seperti lebih dari paket yang dibangun, ini akan menjadi mudah, bagaimana pun juga. Sebagaimana lazimnya, bantuan yang terbaik saat anda mulai bingung dalam membangun sebuah RPM adalah melihat paket source yang mirip.