Poprzednia NastΩpna Spis Tre╢ci

7. Tworzenie RPM-≤w na wiele platform.

RPM mo┐e byµ wykorzystywany do tworzenia pakiet≤w dla Intel i386, Digital Alpha pracuj▒cych pod Linux, oraz Sparc. S▒ te┐ doniesienia o jego wykorzystaniu na platformach SGI i HP. RPM ma parΩ cech kt≤re czyni▒ tworzenie pakiet≤w na wiele platform prostszymi. Pierwsz▒ z nich jest dyrektywa ``optflags'' w pliku /etc/rpmrc. Mo┐e ona byµ wykorzystana do ustawienia odpowiednich opcji i flag, specyficznych dla architektury, potrzebnych do kompilacji b▒d╝ instalacji. NastΩpn▒ cech▒ u│atwiaj▒c▒ tworzenie pakiet≤w na wiele platform s▒ makra ``arch'' w pliku specyfikuj▒cym. Mog▒ one byµ wykorzystane do wykonania r≤┐nych rzeczy zale┐nych od architektury na kt≤rej pakiet jest instalowany. NastΩpn▒ tak▒ cech▒ jest dyrektywa ``Exclude'' w nag│≤wku.

7.1 Przyk│adowy plik ze specyfikacj▒

Poni┐ej zamieszczona jest czΩ╢µ pliku specyfikuj▒cego dla pakietu ``fileutils''. Jest on przygotowany do instalacji na dw≤ch platformach: Alphach i Intelu.

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

W poni┐szym przyk│adzie przedstawione zostanie u┐ycie dyrektywy ``optflags'' z /etc/rpmrc. RPM_OPT_FLAGS przyjmuj▒ odpowiedni▒ warto╢µ w zale┐no╢ci od tego na jakiej platformie instalowany jest pakiet. Do pliku Makefile u┐ytego w pakiecie nale┐y nanie╢µ poprawki by korzysta│ z tej zmiennej zamiast standardowych opcji (np. -m486 lub -O2). Mo┐esz siΩ zorientowaµ co powinno byµ zrobione poprzez zainstalowanie pakietu ╝r≤d│owego, jego rozpakowanie i przyjrzenie siΩ plikowi Makefile. NastΩpnie nale┐y zajrzeµ do plik≤w z poprawkami dla pliku Makefile i sprawdziµ jakie zmiany powinny byµ wprowadzone.

7.3 Makra

Makro %ifarch jest bardzo istotne dla tworzenia pakiet≤w na wiele architektur. W wiΩkszo╢ci przypadk≤w potrzebujesz nanie╢µ jedn▒ lub dwie poprawki specyficzne tylko dla jednej, konkretnej architektury. W takiej sytacji RPM pozwala na naniesienie poprawki wy│▒cznie dla tej jednej architektury.

W powy┐szym przypadku, pakiet fileutils ma poprawkΩ dla maszyn 64-bitowych. To naturalnie w chwili obecnej stosuje siΩ tylko do Alf. Tak wiΩc dodajemy makro %ifarch nanosz▒ce odpowiedni▒ poprawkΩ:

%ifarch axp
%patch1 -p1
%endif
To zapewni, ┐e poprawka nie bΩdzie naniesiona na ┐adnej innej architekturze a wy│▒cznie na alfach.

7.4 Wy│▒czanie pewnych platform w pakietach

Mo┐na opiekowaµ siΩ ╝r≤d│owymi RPM-ami w jednym katalogu dla wszystkich platform. Uzyskuje siΩ to poprzez ``wy│▒czenie'' (ang. exclude) pewnych pakiet≤w z tworzenia ich dla pewnych architektur, tak, ┐e ci▒gle mo┐liwym jest:

rpm --rebuild /usr/src/SRPMS/*.rpm
daj▒ce w wyniku poprawne pakiety. Je╢li aplikacja nie zosta│a jeszcze do tej pory przeniesiona na dan▒ platformΩ to wystarczy dodaµ wiersz wygladaj▒cy mniej wiΩcej tak:
ExcludeArch: axp
do nag│≤wka pliku specyfikuj▒cego pakiet ╝r≤d│owy. NastΩpnie przebuduj pakiet na platformΩ na kt≤rej ju┐ pracuje. W ten spos≤b uzyskuje siΩ pakiet, kt≤ry kompiluje siΩ/tworzy siΩ np. na Intel-u podczas gdy mo┐e byµ │atwo pominiΩty (skipped) na Alphie.

7.5 Ostatnie poprawki

Wykorzystanie RPM to tworzenia pakiet≤w przeznaczonych na wiele platform jest zazwyczaj prostsze ni┐ doprowadzenie pakietu do stanu w kt≤rym dajΩ siΩ on na nich zainstalowaµ. Jednak┐e w miarΩ jak powstaje wiΩcej i wiΩcej pakiet≤w w postaci binarnej staje siΩ to coraz prostsze. Je╢li przy tworzeniu pakietu zabrniesz w ╢lep▒ uliczkΩ to jak zwykle, rozwi▒zaniem mo┐e byµ zajrzenie do kodu ╝r≤d│owego podobnego pakietu.


Poprzednia NastΩpna Spis Tre╢ci