User Tools

Site Tools


pl:developingpld

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
Last revision Both sides next revision
pl:developingpld [2009-06-28 03:19]
qwiat update
pl:developingpld [2013-10-29 18:20]
draenog [Distfiles - źródła w postaci binarnej]
Line 12: Line 12:
  
   * Podstawowe operacje ''​rpm'' ​   * Podstawowe operacje ''​rpm'' ​
-  * Korzystanie z systemów kontroli wersji takich jak ''​cvs''​ czy ''​svn'' ​+  * Korzystanie z systemów kontroli wersji takich jak ''​git''​ czy ''​svn'' ​
   * Obsługa różnic między plikami w oparciu o ''​diff''​ i ''​patch'' ​   * Obsługa różnic między plikami w oparciu o ''​diff''​ i ''​patch'' ​
   * Kompilowanie oprogramowania ze źródeł ​   * Kompilowanie oprogramowania ze źródeł ​
Line 30: Line 30:
  
 ==== Pliki spec ==== ==== Pliki spec ====
-Plik ''​spec'' ​zawiera metadane i instrukcje budowania wymagane do stworzenia przynajmniej jednego pakietu RPM. Jest to plik tekstowy przeznaczony do pracy skryptu ''​builder'',​ który z kolei obsługuje cały proces, od skompletowania wszystkich niezbędnych źródeł z infrastruktury PLD (lub bezpośrednio z Internetu), do pakowania wyników w instalowalny plik RPM (druga część jest wykonywana przez narzędzie ''​rpmbuild''​). ​+Plik [[http://​www.rpm.org/​max-rpm/​ch-rpm-inside.html|spec]] zawiera metadane i instrukcje budowania wymagane do stworzenia przynajmniej jednego pakietu RPM. Jest to plik tekstowy przeznaczony do pracy skryptu ''​builder'',​ który z kolei obsługuje cały proces, od skompletowania wszystkich niezbędnych źródeł z infrastruktury PLD (lub bezpośrednio z Internetu), do pakowania wyników w instalowalny plik RPM (druga część jest wykonywana przez narzędzie ''​rpmbuild''​). ​
  
-Możesz także [[http://​www.rpm.org/​max-rpm/​ch-rpm-inside.html|poczytać więcej o plikach spec]].  +Pliki ''​spec''​ rezydują ​w podkatalogach poszczególnych pakietów ​wewnątrz ​katalogu ​//​packages//​ naszego [[:​pl:​Repositories| serwera ​git]]. 
- +
-Wszystkie pliki ''​spec''​ rezydują wewnątrz ​modułu ​//​packages//​ naszego [[:​pl:​Repositories| serwera ​CVS]]. Moduł ten zawiera także inne specjalne pliki, najbardziej istotny jest skrypt ''​builder''​+
  
  
  
 ==== Distfiles - źródła w postaci binarnej ==== ==== Distfiles - źródła w postaci binarnej ====
-Distfiles to serwer FTP/HTTP, służący do przechowywania plików binarnych, np. spakowanych źródeł programów. Dokonując zmiany w SPECU, automat pobiera plik, wskazany w polu SourceX pliku spec, następnie umieszcza go na serwerze. Dzięki temu budowane pakiety będą pobierane zawsze z tego serwera. Archiwa ze źródłami,​ których nie obsłuży ten automat - np. źródła pobrane z systemu kontroli wersji, muszą być umieszczane osobiście przez dewelopera przy każdej ich zmianie. Więcej o [[http://​cvs.pld-linux.org/​cgi-bin/​cvsweb/​PLD-doc/​Distfiles-Quick-HowTo|distfiles]]. ​+Distfiles to serwer FTP/HTTP, służący do przechowywania plików binarnych, np. spakowanych źródeł programów. Dokonując zmiany w SPECU, automat pobiera plik, wskazany w polu SourceX pliku spec, następnie umieszcza go na serwerze. Dzięki temu budowane pakiety będą pobierane zawsze z tego serwera. Archiwa ze źródłami,​ których nie obsłuży ten automat - np. źródła pobrane z systemu kontroli wersji, muszą być umieszczane osobiście przez dewelopera przy każdej ich zmianie. Więcej o [[http://​cvs.pld-linux.org/​cgi-bin/​viewvc.cgi/​cvs/​PLD-doc/​Distfiles-Quick-HowTo?​view=markup|distfiles]]. ​
  
  
  
-==== Źródła w CVS-ie ​==== +==== Źródła w git ==== 
-Łatki źródeł programów (trzymanych w distfiles), init-skrypty i źródła innych plików koniecznych do budowania pakietów, są przechowywane w CVS-ie ​w katalogu pakietu. Dawniej były trzymane w SOURCES+Łatki źródeł programów (trzymanych w distfiles), init-skrypty i źródła innych plików koniecznych do budowania pakietów, są przechowywane w git w katalogu pakietu. ​
  
  
  
 ==== Skrypt builder ==== ==== Skrypt builder ====
-Skrypt ​''​builder'' ​jest odpowiedzialny za cały proces montowania pakietu. Zbiera wszystkie potrzebne źródła, sprawdza wymagane zależności,​ rozpakowuje źródła, kompiluje je i na końcu pakuje rezultaty w instalowalny plik RPM.  +Skrypt ​[[:​pl:​DevelopingPLD:​BuilderScript|builder]] jest odpowiedzialny za cały proces montowania pakietu. Zbiera wszystkie potrzebne źródła, sprawdza wymagane zależności,​ rozpakowuje źródła, kompiluje je i na końcu pakuje rezultaty w instalowalny plik RPM. 
- +
-Możesz także [[:​pl:​DevelopingPLD:​BuilderScript|poczytać więcej o skrypcie builder]]+
  
 Skrypt ten może zostać uruchomiony przez użytkownika w specjalnej strukturze katalogów w katalogu domowym użytkownika i w znacznym stopniu jest zależny od programu ''​rpmbuild''​ dostarczanego przez pakiet ''​rpm-build''​. ​ Skrypt ten może zostać uruchomiony przez użytkownika w specjalnej strukturze katalogów w katalogu domowym użytkownika i w znacznym stopniu jest zależny od programu ''​rpmbuild''​ dostarczanego przez pakiet ''​rpm-build''​. ​
Line 75: Line 71:
 Każda linia dystrybucji ma swój własny zestaw narzędzi do tworzenia pakietów, i własną kolejkę budowania zarządzaną przez grupę zaufanych deweloperów. ​ Każda linia dystrybucji ma swój własny zestaw narzędzi do tworzenia pakietów, i własną kolejkę budowania zarządzaną przez grupę zaufanych deweloperów. ​
  
-[[:pl:​DevelopingPLD:​ThRequestsRules|Zasady wysyłania żądań do budowania pakietów PLD 3.0 (Th) ]]. +[[:​DevelopingPLD:​ThRequestsRules| Zasady wysyłania żądań do budowania pakietów ​PLD 3.0 (Th) ]].  
 + 
 +[[:​DevelopingPLD:​AcRequestsRules| Zasady wysyłania żądań do budowania pakietów PLD 2.0 (Ac) ]].  
 + 
 +[[http://​ep09.pld-linux.org/​~builderth/​queue.html|Kolejka builderów ​PLD 3.0 (Th)]]. ​
  
-[[:pl:​DevelopingPLD:​AcRequestsRules|Zasady wysyłania żądań do budowania pakietów ​PLD 2.0 (Ac) ]]. +[[http://​ep09.pld-linux.org/​~builderti/​queue.html|Kolejka builderów ​PLD Titanium ​]]. 
  
  
Line 87: Line 87:
 Powinieneś zacząć od zapisania się na przynajmniej jedną z naszych [[:​MailingLists| list mailingowych]]. Zwłaszcza na ''​pld-devel-en''​ (lub ''​pl''​ dla polskich deweloperów),​ a także na ''​pld-discuss''​ przeznaczoną na różne dyskusje związane z dystrybucją. ​ Powinieneś zacząć od zapisania się na przynajmniej jedną z naszych [[:​MailingLists| list mailingowych]]. Zwłaszcza na ''​pld-devel-en''​ (lub ''​pl''​ dla polskich deweloperów),​ a także na ''​pld-discuss''​ przeznaczoną na różne dyskusje związane z dystrybucją. ​
  
-Zauważ, że istnieje także specjalna lista ''​pld-cvs-commit'',​ która nie jest przeznaczona do dyskusji. Zbiera ona natomiast informacje o wszystkich zmianach wprowadzanych przez innych deweloperów na stronie www, czy w repozytorium ​CVS i SVN. +Zauważ, że istnieje także specjalna lista ''​pld-cvs-commit'',​ która nie jest przeznaczona do dyskusji. Zbiera ona natomiast informacje o wszystkich zmianach wprowadzanych przez innych deweloperów na stronie www, czy w repozytoriach git, CVS i SVN. 
  
  
Line 97: Line 97:
  
 ==== Praca nad pakietami ==== ==== Praca nad pakietami ====
-Zacznij od prostych rzeczy. Wybranie losowego pakietu i aktualizowanie go, może wydawać się dobrym pomysłem, ale w ten sposób prędzej sprowadzisz na siebie kłopoty. Zepsucie aplikacji, od której zależą inne pakiety, nie zaszkodzi dystrybucji samej w sobie, ale zdenerwuje ludzi i utrudni ci dalszą pracę. Spróbuj dodać plik ''​spec'' ​dla małej aplikacji, której używasz każdego dnia, albo zaktualizuj istniejący ''​spec'' ​ pod nowe wydanie jakiegoś użytecznego narzędzia, bez którego nie możesz żyć. ​+Zacznij od prostych rzeczy. Wybranie losowego pakietu i [[:​pl:​DevelopingPLD:​BasicSpecUpdate|aktualizowanie go]], może wydawać się dobrym pomysłem, ale w ten sposób prędzej sprowadzisz na siebie kłopoty. Zepsucie aplikacji, od której zależą inne pakiety, nie zaszkodzi dystrybucji samej w sobie, ale zdenerwuje ludzi i utrudni ci dalszą pracę. Spróbuj ​[[:​pl:​DevelopingPLD:​AddNewSpec|dodać plik spec]] dla małej aplikacji, której używasz każdego dnia, albo zaktualizuj istniejący ''​spec'' ​ pod nowe wydanie jakiegoś użytecznego narzędzia, bez którego nie możesz żyć. ​
  
 Zanim stwierdzisz,​ że jesteś gotowy opublikować swój ''​spec'',​ dwa razy sprawdź sekcję zależności i upewnij się, że pakiet buduje się czysto (na przykład po stworzeniu pliku RPM nie zostają żadne pliki - ''​builder''​ informuje o tym na końcu procesu). ​ Zanim stwierdzisz,​ że jesteś gotowy opublikować swój ''​spec'',​ dwa razy sprawdź sekcję zależności i upewnij się, że pakiet buduje się czysto (na przykład po stworzeniu pliku RPM nie zostają żadne pliki - ''​builder''​ informuje o tym na końcu procesu). ​
  
-Jeżeli się nudzisz i nie wiesz co mógłbyś zrobić, możesz spróbować zająć się listą [[http://​cvs.pld-linux.org/​PLD-doc/​PLD-specs-TODO?rev=HEAD|PLD-doc/​PLD-specs-TODO]] (Ta sama lista na wiki, z dodatkowymi wpisami [[http://​pld-users.org/​specs-todo|http://​pld-users.org/​specs-todo]]),​ albo generowanymi automatycznie nagłówkami TODO z *.spec: [[http://​cvs.pld-linux.org/​PLD-doc/​specs-auto-todo.txt?​rev=HEAD|PLD-doc/​specs-auto-todo.txt]] ​+Jeżeli się nudzisz i nie wiesz co mógłbyś zrobić, możesz spróbować zająć się listą [[http://​cvs.pld-linux.org/​cgi-bin/​cvsweb.cgi/​PLD-doc/​PLD-specs-TODO|PLD-doc/​PLD-specs-TODO]] (Ta sama lista na wiki, z dodatkowymi wpisami [[http://​pld-users.org/​specs-todo|http://​pld-users.org/​specs-todo]]),​ albo [[http://​cvs.pld-linux.org/​cgi-bin/​cvsweb.cgi/​PLD-doc/​PLD-update-TODO|PLD-doc/​PLD-update-TODO]]. Poza tym jest lista z generowanymi automatycznie nagłówkami TODO z *.spec: [[http://​cvs.pld-linux.org/​PLD-doc/​specs-auto-todo.txt?​rev=HEAD|PLD-doc/​specs-auto-todo.txt]]
  
  
  
 ==== Publikowanie zmian ==== ==== Publikowanie zmian ====
-Jako początkujący deweloper nie będziesz miał dostępu odczytu/​zapisu do repozytorium ​CVS, więc będziesz musiał znaleźć kogoś kto sprawdzi twoje zmiany i doda je do repozytorium. Najlepszym wyjściem jest wysłanie maila na listę ''​pld-devel-en''​ (lub ''​pl''​) i dołączenie do niego //unified diff// twoich zmian zamiast oryginalnych plików (czy wręcz całych, jeżeli jakieś dodajesz) wraz z krótkim opisem tego co zrobiłeś. ​+Jako początkujący deweloper nie będziesz miał dostępu odczytu/​zapisu do repozytorium ​git, więc będziesz musiał znaleźć kogoś kto sprawdzi twoje zmiany i doda je do repozytorium. Najlepszym wyjściem jest wysłanie maila na listę ''​pld-devel-en''​ (lub ''​pl''​) i dołączenie do niego //unified diff// twoich zmian zamiast oryginalnych plików (czy wręcz całych, jeżeli jakieś dodajesz) wraz z krótkim opisem tego co zrobiłeś. ​
  
 Jak tylko jakiś deweloper będzie miał czas przyjrzeć się twoim zmianom, zostaniesz poinformowany o ewentualnych błędach wymagających poprawek i w końcu twoje pliki zostaną opublikowane. ​ Jak tylko jakiś deweloper będzie miał czas przyjrzeć się twoim zmianom, zostaniesz poinformowany o ewentualnych błędach wymagających poprawek i w końcu twoje pliki zostaną opublikowane. ​
Line 112: Line 112:
 Kiedy twoje zmiany okażą się szczególnie cenne, inni deweloperzy mogą zdecydować się przyznać ci pełne prawa dostępu do naszego repozytorium. Ten proces jest zawsze inicjowany przez kogoś kto ma już prawa odczytu/​zapisu. Wysyłanie próśb o ten dostęp nie będzie mile widziane. ​ Kiedy twoje zmiany okażą się szczególnie cenne, inni deweloperzy mogą zdecydować się przyznać ci pełne prawa dostępu do naszego repozytorium. Ten proces jest zawsze inicjowany przez kogoś kto ma już prawa odczytu/​zapisu. Wysyłanie próśb o ten dostęp nie będzie mile widziane. ​
  
-Mając już prawa odczytu/​zapisu,​ będziesz mógł regularnie aktualizować ​CVS. Pamiętaj o sprawdzeniu plików, które dodajesz przez wysłaniem ich do repozytorium. Upewnij się także, że udostępniasz zrozumiały zapis zmian (commitlog). Zapis ten powinien mieć taki format: ​+Mając już prawa odczytu/​zapisu,​ będziesz mógł regularnie aktualizować ​repozytoria na serwerze git. Pamiętaj o sprawdzeniu plików, które dodajesz przez wysłaniem ich do repozytorium. Upewnij się także, że udostępniasz zrozumiały zapis zmian (commitlog). Zapis ten powinien mieć taki format: ​
  
  
pl/developingpld.txt · Last modified: 2013-10-29 18:24 by draenog