Next Previous Contents

7. Pembangunan RPM multi-arsitektur

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.

7.1 Contoh file spesikasi

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*

.
.
.

7.2 Optflags

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.

7.3 Makro

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

7.4 Membuat perkecualian Arsitektur dari Paket

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.

7.5 Penyelesaian Akhir

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.


Next Previous Contents