2012-12-11 13 views
8

ja otrzymuję następujący w moim dzienniku budowy:rpmbuild% czysta faza bez usuwania plików

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 

Chciałbym uniknąć rpmbuild usunięcie wszystkich plików w moim katalogu build jak muszę je na inne rzeczy po RPM jest zbudowany. Czy mogę zmienić to zachowanie?

Przeczytałem, że niektóre wersje RPM obsługują argument --noclean, ale nasz niestety nie.

Odpowiedz

9

Okazuje się, że wystarczy podać własną dyrektywę %clean w pliku specyfikacji i pozostawić ją pustą, aby nadpisać domyślną. Z jakiegoś powodu nie spodziewałem się, że to zadziała. ;)

Definicja może warunkować fazę % czyszczenia%, aby osiągnąć ten sam efekt co --noclean.

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

Zadzwoń pod rpmbuild --define 'noclean 1', aby wyłączyć czyszczenie.

+0

Niestety, to nie działa z wersją RPM 4.11.1: jeśli noclean jest niezdefiniowana,% {noclean} zostaje rozwinięte do% {n o c l e n} (bez spacji) zamiast pustego łańcucha. – Bulletmagnet

2

Dla budynek z spec-file, rpmbuild ma opcję -bi. Pozostawia $RPM_BUILD_ROOT, jak jest; to nie ma wartości %clean.

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

(rpmbuild --help)


Dla budynku z SRPM (pakiet źródłowy RPM; yumdownloader dostaniesz tych), istnieje również --recompile opcja:

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

Wreszcie istnieje --noclean rozwiązaniem dla rpmbuild - ale w moim przypadku (RPM version 4.11.3) to nie działa.

Powiązane problemy