User Tools

Site Tools


pl:developingpld:basicspecupdate

Differences

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

Link to this comparison view

Next revision
Previous revision
pl:developingpld:basicspecupdate [2009-09-26 03:00] qwiatpl:developingpld:basicspecupdate [2009-09-30 23:59] (current) qwiat
Line 1: Line 1:
  
  
-====== Aktualizacja Speca ====== +====== Aktualizacja pliku spec w przykładach ====== 
-Zakładam, że mamy już [[:pl:DevelopingPLD:PreparingWorkingEnvironment|przygotowane środowisko budowania]], dlatego przejdziemy od razu do rzeczy.  +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. 
  
-Założyłem że aktualizujemy pakiet **foo**  wersji 1.5 do 1.6 +Zaczynamy od pobrania skryptem [[:pl:DevelopingPLD:BuilderScript|builder]] całej paczki z HEAD (ewentualnie odpowiedniego brancha): 
  
  
  
-===== Trywialna aktualizacja ===== +<file>$ builder -g foo 
-Pobieramy całą paczkę z HEAD (ewentualnie z odpowiedniego brancha)+</file> 
 +aby było nam wygodniej pracować, możemy zmienić katalog
  
-''$ builder -g foo''  
  
 +
 +<file>$ cd ~/rpm/packages/foo
 +</file>
 +
 +
 +===== Aktualizacja aplikacji w specu =====
 Teraz za pomocą edytora tekstu otwieramy plik spec:  Teraz za pomocą edytora tekstu otwieramy plik spec: 
  
-''$ vim ~/rpm/packages/foo/foo.spec''  
  
 +
 +<file>$ vim ~/rpm/packages/foo/foo.spec
 +</file>
 i odszukujemy sekcje odpowiedzialne za wersję, które mogą wyglądać następująco:  i odszukujemy sekcje odpowiedzialne za wersję, które mogą wyglądać następująco: 
  
Line 23: Line 31:
 <file>Version:        1.5  <file>Version:        1.5 
 Release:        3</file> 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. +wartość **Version:** zmieniamy na **1.6** zaś **Release:** na **1**. Zmiana wersji wymaga, by Release ustawić na wartość 1. Wyjątkiem jest sytuacja gdy trzeba 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: 
  
  
-===== Test budowania ===== 
-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:  
  
-''$ builder -5 foo'' +<file>$ builder -5 foo 
 +</file> 
 +teraz możemy budować, w poniższym przykładzie budujemy tylko binarne wersje (-bb) żeby oszczędzić na czasie. 
  
-teraz możemy budować, w poniższym przykładzie budujemy tylko binarne wersje (-bb) żeby szczedzić na czasie.  
  
-''$ builder -bb foo''  
  
 +<file>$ builder -bb foo
 +</file>
 Jeśli pakiet się zbudował możemy wykonać commit, dodaniem odpowiedniego komentarza (-m):  Jeśli pakiet się zbudował możemy wykonać commit, dodaniem odpowiedniego komentarza (-m): 
  
-''$ cvs ci -m "- updated to 1.6" foo.spec''  
  
-Jeśli pakiet się nie buduje to czytaj dalej + 
 +<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). 
  
  
Line 49: Line 79:
  
  
-==== Błąd przy nakładaniu łat ==== +==== Błąd przy nakładaniu łatek ==== 
-TODO +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 z informacją o usunięciu łatki:  
 + 
 + 
 + 
 +<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. 
  
  
-==== Niespakietowane pliki ==== 
-TODO  
  
 +==== Uwagi ====
 +Warto, nawet po najmniejszej zmianie w specu, uruchomić skrypt [[:pl:DevelopingPLD:AdapterScript|adapter]], w celu weryfikacji i dokonania automatycznych poprawek: 
  
  
-===== Podbicie Release ===== 
-TODO  
  
 +<file>$ ./adapter foo.spec
 +</file>
  
pl/developingpld/basicspecupdate.1253926806.txt.gz · Last modified: 2009-09-26 03:00 by qwiat

Except where otherwise noted, content on this wiki is licensed under the following license: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS PLD Linux Driven by DokuWiki