PLD CVS: SPECS baggins

Tomasz Kłoczko kloczek w rudy.mif.pg.gda.pl
Wto, 8 Cze 1999, 22:25:56 CEST


On Tue, 8 Jun 1999, PLD CVS wrote:

> CVSROOT:	/cvsroot
> Module name:	SPECS
> Changes by:	baggins	99/06/08 11:02:52
> 
> Modified files:
> 	.              : ClanLib.spec GXedit.spec Gtk-perl.spec 
> 	                 WSoundPrefs.spec WindowMaker.spec aalib.spec 
> 	                 amanda.spec arpwatch.spec ash.spec autolog.spec 
> 	                 automake.spec bison.spec byacc.spec cdecl.spec 
> 	                 cdparanoia.spec chkfontpath.spec 
> 	                 console-tools.spec control-center.spec 
> 	                 diffutils.spec ed.spec elvis.spec flex.spec 
> 	                 fonty.spec genius.spec gnome-media.spec 
> 	                 gnome-objc.spec gpm.spec guile.spec gzip.spec 
> 	                 icewm.spec ld.so.spec mingetty.spec 
> 	                 perl-libnet.spec perl-libwww.spec ppp.spec 
> 	                 slrn.spec texinfo.spec textutils.spec vim.spec 
> 	                 xfreecd.spec 
> 
> Log message:
> kupa drobnych poprawek (teraz te pakiety buduja sie poprawnie)

Pewna uwaga do speców z modułami perlowymi jaki modyfikowałeś i dodatkowy 
wniosek jaki mi się w związku z tym pojawił pod czaską, który będzie
ważny dla tych co będą chcieli robić pakiety z modułami perlowymi. Otóż
poprawki jakie wprowadziłeś w tych specach to:

-%requires_eq   perl
+Requires:      perl >= 5.002

Primo, to makro %requires_eq działa poprawnie i wszystko się kompiluje, a
jeżeli coś Ci nie szło to znaczy, że masz coś nie tak z rpm-em jakiego
używasz. Secundo, to pakiety te zawierają zasoby wkładane w katalogi,
których nazwa jest _ściśle_ uzależniona od konkretnej wersji perla stąd i
użycie makra %requires_eq, które jest rozwijane na:

$ rpm --showrc | grep requires_eq
-14: requires_eq        %(LC_ALL="C" rpm -q --queryformat 'Requires:%%{NAME} = %%{VERSION}' %1| grep -v "is not")

czyli jest ono rozwijane do wymuszania posiadania wersji perla takiej
samej jak w trakcie budowania pakietu, czyli w tym wypadku np. u mnie:

Requires:	perl = 5.005_03 

Jest to potrzebne gdyż np. w perl-libnet w %files jest używane makro
%{perl_sitearch}, które jest rozwijane do:

$ rpm --showrc | grep perl_sitearch 
-14: perl_sitearch      %(eval "`perl -V:installsitearch`"; echo $installsitearch)

U mnie:
$ eval "`perl -V:installsitearch`"; echo $installsitearch
/usr/lib/perl5/site_perl/5.005/i686-linux-thread

i ta ścieżka już jest nie tylko zależna od wersji ale także i od
architektóry jak i od tego czy perl był kompilowany z wątkami.
Teraz jeżeli wymieni się:

-%requires_eq   perl
+Requires:      perl >= 5.002

tak jak to zrobiłeś, to po tym wynikowy pakiet taki jak perl-libnet uda
się zainstalować w środowisku w którym będzie on kompletnie bezużyteczny
(dla perla zainstalowany perl-libnet będzie w tym wypadku kompletnie
niewidoczny). W zasadzie jak się teraz nad tym zastanawiam to poprzednia
zawartość tych speców (z przed Twoich zmian) jest i tak niewystarczająca i
dla uzyskania pełnej pewności, że pakiet zostanie zainstalowany w
poprawnym środowisku o ile w %files jest używane makro takie makro jak
%{perl_sitearch} to w nagółwek dodatkowo powinno wskoczyć dodatkowo:

Requires: %{perl_sitearch}

co zapewni, że pakiet zależny od konkretnej wersji perla będzie
zainstalowany z wersją perla o właściwej wersji, pod
konkretną architektórę i skompilowany z wątkami bąć nie.

Sama linijka:

Requires: %{perl_sitearch}

zamiast:

%requires_eq   perl

to jeszcze zamało choć jedno jest w pewnym sensie ekwiwalentem drugiego.
Niemniej wstawka w nagółwku powinna być w tym wypadku w postaci:

%requires_eq	perl
Requires:	%{perl_sitearch}

po to żeby było wiadomo, że wymaga się perla w konkretny sposób
konfigurowanego na etapie budowania.

I jeszcze raz Janek .. jeżeli z %requires_eq nie chciało Ci się to
zbudować to znaczy, że masz najprawdopodobniej rpm-a bez tego makra albo w
jakiś sposób jego działanie jest zakłucane przez makra jakie masz u siebie
w ~/.rpmmacros. Żeby nie było wątpliwości to makra te (zarówno do perla
jak i %requires_eq) jakie wykombinował jakiś czas temu Artur są już w
oficjalnych zródłach rpm-a czyli nie są to rzeczy "PLD specyfic".
Żeby nie było wątpliwości to w tej chwili używam:

$ rpm -q rpm
rpm-3.0.1-15

Pozwolisz, że jednak skoryguję te pakiety według powyższych wniosków.

kloczek
-- 
-----------------------------------------------------------
*Ludzie nie mają problemów, tylko sobie sami je stwarzają*
-----------------------------------------------------------
Tomasz Kłoczko, sys adm @zie.pg.gda.pl|*e-mail: kloczek w rudy.mif.pg.gda.pl*



Więcej informacji o liście dyskusyjnej pld-devel-pl