2012-12-11 17 views
8

Sto ottenendo il seguente nel mio log di compilazione:rpmbuild% Fase pulita senza rimuovere i file

Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.CgE2Qn 
+ umask 022 
+ cd /export/home/svn_checkouts/*snip*/Output/release/bin/packaging/BUILD 
+ /bin/rm -rf /export/home/svn_checkouts/*snip*/Output/release/bin 
+ exit 0 

vorrei evitare rpmbuild l'eliminazione di tutti i file nella mia directory di compilazione, come ho bisogno di loro per altre cose dopo l'RPM è costruito. Posso sovrascrivere questo comportamento?

Ho letto che alcune versioni di RPM supportano un argomento --noclean, ma purtroppo non è nostro.

risposta

9

È venuto fuori che avevo solo bisogno di fornire la mia direttiva %clean nel file spec e lasciarlo vuoto per sovrascrivere il valore predefinito. Per qualche motivo non mi aspettavo che funzionasse. ;)

Una definizione può condizionare la fase Clean %% modo che lo stesso effetto può essere raggiunto --noclean.

%Clean 
%if "%{noclean}" == "" 
    rm -rf $RPM_BUILD_ROOT 
%endif 

chiamate con rpmbuild --define 'noclean 1' per disabilitare la pulizia.

+0

Purtroppo non funziona con RPM versione 4.11.1: se noclean non è definito,% {noclean} viene esteso a% {n o c l e a n} (senza spazi) anziché una stringa vuota. – Bulletmagnet

2

Per edificio spec -file, rpmbuild ha la possibilità -bi. Lascia lo $RPM_BUILD_ROOT così com'è; non fa %clean.

-bi  build through %install (%prep, %build, then install) from <specfile> 

(rpmbuild --help)


Per edificio SRPM (un pacchetto RPM sorgente; yumdownloader ti porterà quelli), c'è anche --recompile opzione:

--rebuild build binary package from <source package> 
--recompile build through %install (%prep, %build, then install) from <source package> 

Infine, c'è --noclean opzione per rpmbuild - ma nel mio caso (RPM version 4.11.3) non ha funzionato.

Problemi correlati