Krótki opis distfiles Co to? Żeby uniknąć problemów z powtarzającymi się nazwami plików (z inną zawartością) pliki są identyfikowalne po sumie md5 ich zawartości. Sumy md5 są trzymane bezpośrednio w specach. Po co to to? Jak to wygląda? SourceN: ... należy umieścić komentarz # SourceN-md5: ... w ten sposób: Source3: ftp://foo.com/%{name}/%{name}-%{version}.tar.gz Od tej chwili SPECS/builder będzie szukał pliku na distfiles. Po wykonaniu commitu automat chodzący na distfiles sam sobie dociągnie plik z podanego URL-a i umieści go na serwerze distfiles. Następnie wyśle raport osobie dokonującej commita. Uwaga: dotyczy to tylko źródeł dystrybuowalnych; niedystrybuowalnym, oznaczonym przez "NoSource: numer" _nie_ dodajemy znacznika SourceN-md5. Chyba zwariowałeś! Nie będę tyle pisał. -nd No distfiles -- nie korzystaj z distfiles. -5, --update-md5 Przeszukuje speca i poprawia istniejące wpisy # SourceK-md5:. -a5, --add-md5 Dodaj # Source-md5: -U, --update Jak -5, ale dodatkowo próbuje dociągać wszystkie pliki z podanych URL-i. Yyy? W skrócie. b) mamy już źródła i poprawionego
speca c) dodajemy nowy pakiet Widać tutaj kilka zalet tego podejścia: 1. URL-e są sprawdzane Co trzymać w distfiles, a czego nie? Nie trzymać: Czyli to co "Nie trzymać" w distfiles - trafia normalnie do SOURCES.
Jeśli mamy spec foo.spec oraz plik foo-1.2.tar.gz należy: 1. poprawić md5 w specu (./builder -5 foo.spec), spec
powinien wyglądać Source0: foo-1.2.tar.gz 2. wrzucić foo-1.2.tar.gz pod adres 3. commitnąć speca, spowoduje to automagiczne przeniesienie pliku ze skrzynki wrzutowej do odpowiedniego katalogu na distfiles. Skrzynki wrzutowe służą tylko do pisania, nie można z nich czytać. Dodatkowo, jeśli źródła nie są tajne (np. snapshoty z ktown), można podać URL na distfiles/src, np: Source0: ftp://distfiles.pld-linux.org/src/foo-1.2.tar.gz Reszta procedury jest w tym wypadku taka sama jak przy braku URL.
W przypadku, gdy źródła są na branchu, podajesz brancha
jako parametr za spec:
Makra %(echo foo | sed -e ...) również nie są rozpoznawane z jednym małym wyjątkiem: %(echo ... | tr ABC abc) gdzie abc to dowlne ciągi znaków. Np. zamiast : %(echo %{version} | sed -e 's/\\.//g') należy użyć: %(echo %{version} | tr -d .) Pełne wsparcie dla %(shell code) jest niemożliwe
ze względów bezpieczeństwa. |