Buduj RPM używając katalogu źródłowego, a nie tarballa

14

W mojej organizacji wdrażamy całe nasze oprogramowanie na naszych maszynach produkcyjnych przy użyciu RPM. Nasz proces kompilacji (który jest zautomatyzowany) polega na sprawdzeniu źródła z kontroli wersji, tarowaniu katalogu źródłowego w górę, a następnie uruchamianiu rpmbuild przy użyciu tego źródłowego archiwum. rpmbuild używa tego archiwum do rozpakowywania źródeł, aby nad nimi pracować. Wygląda więc na to, że cały proces tarowania i rozjaśniania jest po prostu niepotrzebnym dodatkowym krokiem w procesie kompilacji. Czy istnieje sposób, aby po prostu określić katalog źródłowy w pliku spec, unikając tych dodatkowych kroków?

Eddie
źródło

Odpowiedzi:

5

Tak, możesz to zrobić. Nie wymieniaj żadnych Sources. W %prepsekcji nie używaj %setupmakra (które rozpakowuje źródło); raczej po prostu sprawdź źródło.

Pamiętaj, że jeśli to zrobisz, nie będziesz w stanie zbudować SRPM.

Mark Wagner
źródło
To robi Muszę tylko zmodyfikować procedurę kompilacji, aby zamiast tego sprawdzić zawartość katalogu BUILD rpm. Dzięki!
Eddie
10

To pytanie jest nieco stare, ale w przypadku, gdy inne osoby znajdą je w wyszukiwaniu, istnieje bardziej poprawny sposób, który pozwala to również na utworzenie SRPM.

W sekcji przygotowawczej zamiast makra instalacyjnego powinieneś po prostu wpisać sam, co chcesz, a mianowicie skopiować katalog źródłowy z ŹRÓDŁA do BUILD, zamiast rozpakowywać archiwum. Odkryłem, że musisz także dodać płytę CD do katalogu źródłowego w sekcjach kompilacji i instalacji.

Przykładowy fragment

%prep
# Don't use the setup macro anymore, replace it with typed-out commands
#%setup -q -n myapp-%{version}
cd %{_topdir}/BUILD
rm -rf myapp-%{version}
cp -rf %{_topdir}/SOURCES/myapp-%{version} .
cd myapp-%{version}
/usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .

%patch1 -p1 -b .cert-config
%patch2

%build
cd myapp-%{version}

%install
cd myapp-%{version}
tdimmig
źródło
Powinno %{_topdir}/SOURCESbyć %{_sourcedir}? I %{_topdir}/BUILDmoże być %{buildroot}? ( Nawiasem mówiąc , w podobnych, ale różnych sytuacjach, w których próbujesz dodać dodatkowe pliki, aby zastąpić pliki wyodrębnione %setup, doktorzy Fedory zalecają użycie %{SOURCE2}etc - fedoraproject.org/wiki/Packaging:RPM_Source_Dir )
IBBoard