User Tools

Site Tools


pl:developingpld:basicspecupdate

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
pl:developingpld:basicspecupdate [2009-09-27 14:10]
qwiat
pl:developingpld:basicspecupdate [2009-09-30 23:59]
qwiat
Line 1: Line 1:
- 
- 
-====== Aktualizacja pliku spec w przykładach ====== 
-Zakładam, że mamy już [[:​pl:​DevelopingPLD:​PreparingWorkingEnvironment|przygotowane środowisko budowania]],​ dlatego przejdziemy od razu do rzeczy. W przykładach będziemy aktualizować fikcyjny pakiet **foo** z  wersji 1.5 do 1.6.  
- 
-Zaczynamy od pobrania całej paczki z HEAD (ewentualnie z odpowiedniego brancha): ​ 
- 
- 
- 
-<​file>​$ builder -g foo 
-</​file>​ 
- 
- 
-===== Aktualizacja aplikacji w specu ===== 
-Teraz za pomocą edytora tekstu otwieramy plik spec:  
- 
- 
- 
-<​file>​$ vim ~/​rpm/​packages/​foo/​foo.spec 
-</​file>​ 
-i odszukujemy sekcje odpowiedzialne za wersję, które mogą wyglądać następująco: ​ 
- 
- 
- 
-<​file>​Version: ​       1.5  
-Release: ​       3</​file>​ 
-wartość **Version:​** zmieniamy na **1.6** zaś **Release:​** na **1**. Zmiana wersji wymaga, by Release ustawić na wartość 1. Wyjątkiem jest sytuacja gdy chyba zasygnalizować,​ że spec nie jest skończony, wtedy nadajemy ułamkową wartość ​ np.: 0.1. Teraz musimy sprawdzić czy pakiet się buduje. ​ 
- 
-Musimy sprawdzić czy pakiet się buduje zanim wykonamy commit lub wyślemy łatkę do jakiegoś dewelopera. Zaczniemy od aktualizacji sum md5 źródeł w pakiecie: ​ 
- 
- 
- 
-<​file>​$ builder -5 foo 
-</​file>​ 
-teraz możemy budować, w poniższym przykładzie budujemy tylko binarne wersje (-bb) żeby oszczędzić na czasie. ​ 
- 
- 
- 
-<​file>​$ builder -bb foo 
-</​file>​ 
-Jeśli pakiet się zbudował możemy wykonać commit, dodaniem odpowiedniego komentarza (-m):  
- 
- 
- 
-<​file>​$ cvs ci -m "- updated to 1.6" foo.spec 
-</​file>​ 
-Jeśli pakiet się nie buduje to czytaj o Rozwiązywaniu problemów poniżej. ​ 
- 
- 
- 
-===== Inne aktualizacje w specu ===== 
-Każde zmiany nie dotyczące aktualizacji samej aplikacji np.:  
- 
- 
-  * nałożenie łatek ​ 
-  * poprawienie zależności:​ **Requires** i **[[:​BuildRequires|BuildRequires]]** ​ 
-  * modyfikacje opisów ​ 
-wymagają podbicia tagu **Release**,​ tak by pakiet mógł być zbudowany i zaktualizowany. Podbicia dokonuje się także wtedy, gdy żadne zmiany nie są robione w specu, robi się tak by aplikacja została na nowo zbudowana, np. w celu zlinkowania z nowszą wersją ​ bibliotek. ​ 
- 
-Po każdej zmianie, a zwłaszcza po nałożeniu łatek musimy się przekonać czy pakiet się buduje, zatem: ​ 
- 
- 
- 
-<​file>​$ builder -bb foo 
-</​file>​ 
-Kiedy wszystko jest w porządku możemy dokonać commit speca (i ewentualnie łatek). ​ 
- 
- 
- 
-===== Rozwiązywanie problemów ===== 
-Przy aktualizacji może pojawić się każdy możliwy problem jednak najczęściej pojawia się problem z łatami i/lub niespakietowanymi plikami. ​ 
- 
- 
- 
-==== Błąd przy nakładaniu łatek ==== 
-Zdarza sie, że w nowszej wersji aplikacji autorzy nałożyli już taką łatkę i jedyne co pozostaje nam zrobić to usunąć ją ze speca. W gorszym przypadku kod źródłowy zmienił się na tyle, że łatka po prostu nie da się nałożyć. Musimy porównać źródło z łatką i podjąć odpowiednie kroki: usunąć łatkę lub ją zmodyfikować,​ tak by się nakładała. Przy okazji można sprawdzić czy łatka w ogóle jest potrzebna, trzeba sprawdzić w historii rewizji po co w ogóle została dodana. ​ 
- 
-Aby wyłączyć łatkę usuwamy ze speca odpowiedni tag **Patch{NR}** z nagłówka speca i  polecenie nakładające go z **%prep**. Teraz próbujemy budować (jak powyżej). Jeśli wszystko działa poprawnie usuwamy łatkę, w tym celu wchodzi my do katalogu ~/​rpm/​packages/​foo/​ i usuwamy plik o odpowiedniej nazwie np.:  
- 
- 
- 
-<​file>​$ rm foo-special-fix.patch 
-</​file>​ 
-usuwamy łatkę ze CVS-u: ​ 
- 
- 
- 
-<​file>​$ cvs remove foo-special-fix.patch 
-</​file>​ 
-i teraz możemy zrobić commit wszystkich zmian: ​ 
- 
- 
- 
-<​file>​$ cvs ci 
-</​file>​ 
- 
- 
-==== Niespakietowane pliki/brak plików ==== 
-Rozwój aplikacji powoduje czasami większe lub mniejsze zmiany w liście plików. Builder nas poinformuje,​ w takim wypadku musimy dokonać zmian w sekcjach **%files**. Musimy to pamiętać by używać makr zamiast konkretnych ścieżek. ​ 
- 
  
pl/developingpld/basicspecupdate.txt · Last modified: 2009-09-30 23:59 by qwiat