[Primipassi] Opzioni passate a ./configure tramite rpmbuild

Marco Ermini markoer@usa.net
Lun 19 Maggio 2003 18:15:25 CEST


On Thu, 15 May 2003 22:17:15 +0200, Francesco Poli <frx@firenze.linux.it>
wrote:

[...]
> La mia domanda e`: come faccio a passare delle opzioni per il
> ../configure tramite rpmbuild? Tempo fa ho cercato in lungo e in largo
> sulle manpage e sul web, ma non sono riuscito a trovare come... :(
> 
> Esempio: ho il pacchetto programma-mitico.src.rpm e vorrei compilarlo
> dopo aver passato le opzioni --enable-ssl --altraopzione al ./configure
> 
> # rpmbuild --rebuild --opzionimisteriose programma-mitico.src.rpm
> 
> Come faccio?

# RPM_OPT_FLAGS="-O3 -mcpu=pentium2" rpmbuild --rebuild --opzionimisteriose
programma-mitico.src.rpm

questo permette di eseguire praticamente un

CFLAGS="$RPM_OPT_FLAGS" ./configure

questo ovviamente *se* l'RPM prevede di utilizzare in questo modo CFLAGS o
CXXFLAGS (di solito e' cosi').

Quello che vuoi fare te pero' non si puo' fare, e sarebbe semplicemente
sbagliato. Il perche' te lo puoi immaginare: l'RPM dovrebbe gestire
probabilmente, alla fine della compilazione, librerie o dipendenze diverse
da quelle che l'autore dell'RPM si aspettava che venissero gestite.

Se vuoi creare un RPM che ti permetta di essere compilato con opzioni
diverse, devi prevederlo esplicitamente. Basta che, nel .spec, fai una cosa
del tipo:


%define _with_ssl 0
Version: 3.0.0

Name: programma-mitico
BuildPrereq: qt-devel kdelibs-devel zlib-devel libjpeg-devel libpng-devel
%{?_with_ssl: BuildPrereq: openssl-devel}
Requires: openssl
%endif
Prefix: /usr
Release: 0.1
Source: ftp://ftp.miosito.org/pub/%{name}-%{version}.tar.bz2
Patch0: buffer-overflow.patch
Patch1: errno.patch
Icon: %{name}.xpm
Epoch: 6
Group: Amusements/Games
BuildRoot: %{_tmppath}/%{name}-buildroot
License: GPL

%description
[...]
                                                                      
%package %{name}
[...]

%prep
rm -rf $RPM_BUILD_ROOT
[...]

%build

CFLAGS="$RPM_OPT_FLAGS -DNO_DEBUG -DNDEBUG" \
CXXFLAGS="$RPM_OPT_FLAGS -DNO_DEBUG -DNDEBUG -fno-check-new" \
./configure --prefix=%{prefix} \
            --includedir=%{prefix}/include/kde \
%{?_with_ssl:   --enable-ssl} \
%{!?_with_ssl:  --disable-ssl}

make

[...]

%install
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
[...]

%files devel
%if%{!?_with_ssl:1}%{?_with_ssl:0}
%attr(755,root,root) %{_libdir}/libreria-programma-mitico_ssl.so
%endif
[...]

Praticamente, con uno .spec del genere, puoi ricompilare con rpmbuild
passando le opzioni cosi':

# rpmbuild -ba programma-mitico.spec --with ssl

oppure

# rpmbuild --rebuild programma-mitico.src.rpm --with ssl

ma solo se e' appunto previsto dallo .spec. Non so se e' chiaro. Se ti
guardi lo .spec di mplayer, per esempio, vedrai che e' pieno di opzioni del
genere.

In certi casi, magari, non vengono generati files in piu' o comunque l'rpm
potrebbe gestirli automaticamente come potrebbe gestire le dipendenze. Sta
al creatore dello spec permettere flessibilita' all'utente che ricompila il
programma.

In realta', il fare le cose in un modo o nell'altro dipende
dall'opportunita'.


ciao

-- 
Marco Ermini
http://macchi.markoer.org - ICQ 50825709 - GPG KEY 0x64ABF7C6 - L.U. #180221
Perche' perdere tempo ad imparare quando l'ignoranza e' istantanea? (Hobbes)
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome:        non disponibile
Tipo:        application/pgp-signature
Dimensione:  189 bytes
Descrizione: non disponibile
URL:         <http://lists.linux.it/pipermail/primipassi/attachments/20030519/f7948960/attachment.pgp>


Maggiori informazioni sulla lista primipassi