2017-11-28 4 views
1

Ich versuche rpmbuild (4.11.3) mit .spec-Datei, aber es löscht das Buildverzeichnis, ich möchte rpmbuild keine Dateien in meinem Build-Verzeichnis zu löschen, wie ich sie brauche andere Dinge nach dem RPM gebaut wird. Ich habe versucht, mit -Bi-Option, aber es hat nicht funktioniert, löscht das Build-Verzeichnis.rpmbuild mit .spec-Datei löscht Build-Verzeichnis

Hier ist die SPEC-Datei:

Name: newfile 
Version: 1.0 
Release: 1%{?dist} 
AutoReqProv: no 
Prereq: /bin/chmod 
Prereq: /bin/chown 
Summary: Testing 
%description 
TBD 
%install 

mkdir -p $RPM_BUILD_ROOT/test/opb 

%files -f testingfiles.files 
%defattr(-,root,root,755) 
%dir /test/opb 
%dir /test/opb 
%dir /test/opb/new 
%dir /test/opb/new1 
%dir /test/opb/new2 
%dir /test/opb/new2 

Befehl:

/usr/bin/rpmbuild --define '_tmppath /var/tmp/rpmgen24431.d' --define '_topdir pkg/tst' -bi --buildroot /testing/new/dest pkg/tst/newfile.spec 

Es löscht alle Dateien in/testing/new/dest. Wie rpm-Datei zu erstellen, ohne Build-Dateien zu löschen.

+0

Gibt es einen Grund, warum Sie nicht eine oder mehrere 'Source' Direktiven in der Spec-Datei verwenden? –

Antwort

1

können Sie hinzufügen:

%define __spec_install_pre /bin/true 

auf der Spec-Datei.

Aber ich fühle mich wirklich schade, diese Antwort zu liefern, da Ihre SPEC bereits voller Hack ist und dies fügt nur eine weitere Schicht eines schmutzigen Hacks hinzu. Statt dieser Frage sollten Sie sich lieber fragen, wie Sie das tun können, was Sie mit der regelmäßigen Bereinigung von Buildroot erreichen möchten.

EDIT: __spec_install_pre ist definiert als:

__spec_install_pre %{___build_pre} 
    [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "${RPM_BUILD_ROOT}" 
    mkdir -p `dirname "$RPM_BUILD_ROOT"` 
    mkdir "$RPM_BUILD_ROOT" 
%{nil} 

so, wenn Sie es so definieren:

%{___build_pre} 
    mkdir -p `dirname "$RPM_BUILD_ROOT"` 
    mkdir "$RPM_BUILD_ROOT" 
%{nil} 

Es verhält genau das gleiche, nur nicht die buildroot löschen. Die Multiline% Definition kann auf zwei Arten definiert werden, abhängig von der Version Ihrer rpm. Ich werde es Ihnen überlassen :)

Verwandte Themen