Následující verze | Předchozí verze |
navody:pokyny_pro_revize_baliku [2007/04/03 13:46] – vytvořeno mildew | navody:pokyny_pro_revize_baliku [2022/11/14 11:25] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 |
---|
====== Pokyny pro revize balíčků ======= | ====== Pokyny pro revize balíčků ======= |
===== Povinné ===== | ===== Povinné ===== |
* rpmlint musi byt spusten na kazdy balicek. Vystup by mel byt prilozen v revizi. | * rpmlint musí být spuštěn na každý balíček. Výstup by měl být přiložen v revizi. |
* Balicek musi byt pojmenovan dle "pravidel pro pojmenovavani balicku" | * Balíček musí být pojmenován dle [[navody:pravidla_pro_pojmenovavani_balicku|pravidel pro pojmenovávání balíčků]]. |
* Nazev spec souboru musi odpovidat zakladnimu jmenu balicku %{name} ve formatu %{name}.spec, pokud balicek nespada do vyjimek v pravidlech pro pojmenovavani balicku. | * Název .spec souboru musí odpovídat základnímu jménu balíčku %{name} ve formátu %{name}.spec, pokud balíček nespadá do výjimek v pravidlech pro pojmenováváni balíčků. |
* Balicek musi vyhovovat pravidlum pro balickovani. | * Balíček musí vyhovovat [[navody:pravidla_pro_balickovani|pravidlům pro balíčkováni]]. |
* Balicek musi byt licencovan open-source kompatibilni licenci a musi vyhovovat ostatnim pravnim? pozadavkum definovanym v pravidlech pro balickovani. | * Balíček musí být licencován open source kompatibilní licencí a musí vyhovovat ostatním pravním požadavkům definovaným v [[navody:pravidla_pro_balickovani|pravidlech pro balíčkování]]. |
* Polozka "License:" ve spec souboru balicku musi souhlasit s licenci obsahu balicku. | * Položka "License:" ve .spec souboru balíčku musí souhlasit s licencí obsahu balíčku. |
* Pokud (a jen tehdy pokud) zdrojovy balicek obsahuje text licence ve vlastnim souboru, pak musi byt tento soubor obsahujici text licence uveden v %doc. | * Pokud (a jen tehdy pokud) zdrojový balíček obsahuje text licence ve vlastním souboru, pak musí byt tento soubor obsahující text licence uveden v %doc. |
* Ve .spec souboru smi byt pouzita jen americka Anglictina. | * Ve .spec souboru smí byt použita jen americká Angličtina. |
* spec soubor MUSI byt citelny. Pokud nebude revizor schopny precist spec soubor, nebude mozne provest revizi. | * .spec soubor MUSÍ být čitelný. Pokud nebude revizor schopný přečíst .spec soubor, nebude možné provést revizi. |
* Zdrojove kody pouzite k sestaveni balicku musi byt shodne se zdrojovymi kody z upstreamu (puvodni, oficialni zdrojove kody) na adrese uvedene ve spec souboru. Revizori by meli pouzivat md5sum k overovani. | * Zdrojové kódy použité k sestavení balíčku musí být shodné se zdrojovými kódy z upstreamu (původní, oficiální zdrojové kódy) na adrese uvedené ve .spec souboru. Revizoři by měli používat md5sum k ověřování. |
* Balicek musi byt uspesne prelozen a sestaven do binarnich rpm alespon na jedne podporovane architekture. | * Balíček musí být úspěšně přeložen a sestaven do binárních rpm alespoň na jedné podporované architektuře. |
* Pokud se balicek na nejake architekture nepodari prelozit, sestavit nebo spustit, pak by mela byt tato architektura uvedena ve spec souboru v polozce ExcludeArch. Kazda architektura uvedeva v ExcludeArch musi mit zaznam v bugzille, ktery obsahuje duvod proc se nepodarilo balicek prelozit, sestavit nebo spustit. Cislo zaznamu by pak melo byt uvedeno v komentari u odpovidajici architektury v ExcludeArch. Nove balicky nebudou mit zaznamy v bugzille pri revizi, takze by mely uvest tyto duvody primo v komentarich dokud nebude balicek schvaleny, az pote vytvorit zaznam a vysvetleni v komentarich nahradit cislem chyby v bugzille. (Nasledujici se tyka jen Extras) Zaznam v bugzille by mel byt oznacen jako blokujici jednoho (nebo vice) z nasledujich zaznamu, aby se ulehcilo sledovani techto pripadu: FE-ExcludeArch-x86, FE-ExcludeArch-x64, FE-ExcludeArch-ppc. | * Pokud se balíček na nějaké architektuře nepodaří přeložit, sestavit nebo spustit, pak by měla být tato architektura uvedena ve .spec souboru v položce ExcludeArch. Každá architektura uvedená v ExcludeArch musí mít záznam v bugzille, který obsahuje důvod proč se nepodařilo balíček přeložit, sestavit nebo spustit. Číslo záznamu by pak mělo být uvedeno v komentáři u odpovídající architektury v ExcludeArch. Nové balíčky nebudou mít záznamy v bugzille při revizi, takže by měly uvést tyto důvody přímo v komentářích dokud nebude balíček schválený, až poté vytvořit záznam a vysvětlení v komentařích nahradit číslem chyby v bugzille. (Následující se týká jen Extras) Záznam v bugzille by měl být označen jako blokující jednoho (nebo více) z následujících záznamů, aby se ulehčilo sledování těchto případů: FE-ExcludeArch-x86, FE-ExcludeArch-x64, FE-ExcludeArch-ppc. |
* Vsechny sestavovaci zavislosti musi byt uvedeny v polozce BuildRequires s vyjimkou tech, ktere jsou uvedeny v sekci vyjimek v pravidlech balickovani. Uvadeni techto zavislosti v BuildRequires je volitelne. Pouzivejte zdravy rozum. | * Všechny sestavovací závislosti musí být uvedeny v položce BuildRequires s výjimkou těch, které jsou uvedeny v sekci výjimek v [[navody:pravidla_pro_balickovani|pravidlech pro balíčkování]]. Uvádění těchto závislostí v BuildRequires je volitelné. Používejte zdravý rozum. |
* spec soubor MUSI pracovat spravne s locales. Toho se docili pouzitim makra %find_lang. Pouzivani %{_datadir}/local/* je priste zakazano. | * .spec soubor MUSÍ pracovat správně s locales. Toho se docílí použitím makra %find_lang. Použivání %{_datadir}/local/* je přísně zakázáno. |
* Kazdy binarni RPM balicek, ktery uklada sdilene knihovny (nejen symbolicke odkazy) do jakehokoliv ze standardnich adresaru linkeru, musi spustit ldconfig v %post a %postun. Pokud ma balickek vice podbalicku s knihovnama, pak by mel kazdy z nich mit taky %post/%postun sekci, ktera spusti ldconfig. Priklad spravneho pouziti: | * Každý binární RPM balíček, který ukládá sdílené knihovny (nejen symbolické odkazy) do jakéhokoliv ze standardních adresářů linkeru, musí spustit ldconfig v %post a %postun. Pokud má balíček více podbalíčků s knihovnama, pak by měl mít každý z nich taky %post/%postun sekci, která spustí ldconfig. Příklad správného použití: |
| |
%post -p /sbin/ldconfig | %post -p /sbin/ldconfig |
%postun -p /sbin/ldconfig | %postun -p /sbin/ldconfig |
| |
* Balicek musi byt vlastnikem vsech adresaru, ktere vytvari. Pokud nevytvari nejaky adresar, ktery pouziva, pak by mel mit zavislost na balicku, ktery tento adresar vytvari. Vyjimky v techto pripadech jsou adresare uvedene v [[http://google.com/search?q=fhs|Filesystem Hierarchy Standard]]. | * Balíček musí být vlastníkem všech adresářů, které vytváří. Pokud nevytváří nějaký adresář, který používá, pak by měl mít závislost na balíčku, který tento adresář vytváří,vlastní. Výjimky v těchto případech jsou adresáře uvedené v [[http://google.com/search?q=fhs|Filesystem Hierarchy Standard]]. |
* Pokud je balicek vytvoren jako "premistitelny", musi jeho tvurce tuto skutecnost uvest v pozadavku na revizi spolu s vysvetlenim/obhajobou teto vlastnosti. Bez tohoto je pouziti Prefix: /usr povazovano za blokujici. | * Pokud je balíček vytvořen jako "přemístitelný", musí jeho tvůrce tuto skutečnost uvést v požadavku na revizi spolu s vysvětlením/obhajobou této vlastnosti. Bez tohoto je použití Prefix: /usr považováno za blokující. |
* Balicek nesmi obsahovat duplikaty v seznamu %files. | * Balíček nesmí obsahovat duplikáty v seznamu %files. |
* Prava u souboru musi byt spravne nastaveny. Napr. spustitelne soubory musi mit nastaven priznak spustitelnosti (+x). Kazda sekce %files musi obsahovat radek s %defattr(...). | * Práva u souboru musí byt správně nastaveny. Např. spustitelné soubory musí mít nastaven příznak spustitelnosti (+x). Každá sekce %files musí obsahovat řádek s %defattr(...). |
* Kazdy balicek musi mit sekci %clean, ktera obsahuje rm -rf %{buidlroot}. | * Každý balíček musí mít sekci %clean, která obsahuje rm -rf %{buidlroot}. |
* Kazdy balicek musi konzistentne pouzivat makra, jak se popsano v sekce makra v pravidlech pro balickovani. | * Každý balíček musí konzistentně používat makra, jak je popsáno v sekci makra v [[navody:pravidla_pro_balickovani|pravidlech pro balíčkování]]. |
* Kazdy balicek musi obsahovat kod nebo pripustny obsah. Detailnejsi vysvetleni je v sekci kod vs. obsah v pravidlech pro balickovani. | * Každý balíček musí obsahovat kód nebo přípustný obsah. Detailnější vysvětlení najdete v sekci kód vs. obsah v [[navody:pravidla_pro_balickovani|pravidlech pro balíčkování]]. |
* Rozsahle soubory s dokumentaci by mely byt v -doc podbalicku. (definice pojmu "rozsahla dokumentace" je ponechana na tvurci balicku, nemusi primo znamenat velikost souboru s dokumentaci) | * Rozsáhlé soubory s dokumentací by měly být v -doc podbalíčku. (definice pojmu "rozsáhlá dokumentace" je ponechána na tvůrci balíčku, nemusí přímo znamenat velikost souboru s dokumentací) |
* Pokud balicek obsahuje cokoliv v %doc, nesmi to ovlivnovat beh programu. Receno jinak: Pokud je neco v %doc, program musi bezet i bez toho. | * Pokud balíček obsahuje cokoliv v %doc, nesmí to ovlivňovat běh programu. Řečeno jinak: Pokud je něco v %doc, program musí fungovat i bez toho. |
* Hlavickove soubory nebo staticke knihovny musi byt v -devel podbalicku. | * Hlavičkové soubory nebo statické knihovny musí být v -devel podbalíčku. |
* Balicek, ktery obsahuje pkgconfig(.pc) soubory musi mit zavislost na pkgconfig (Requires: pkgconfig). | * Balíček, který obsahuje pkgconfig(.pc) soubory musí mít závislost na pkgconfig (Requires: pkgconfig). |
* Pokud balicek obsahuje knihovny s priponou (napr. libfoo.so.1.1), pak musi byt knihovny koncici na .so (bez pripony) v -devel podbalicku. | * Pokud balíček obsahuje knihovny s příponou (např. libfoo.so.1.1), pak musí být knihovny končící na .so (bez přípony) v -devel podbalíčku. |
* V nejhorsim pripade, -devel balicek musi byt zavisly na hlavnim balicku pomoci plne (cele) verze: Requires: %{name} = %{version}-%{release} | * V nejhorším případě, -devel balíček musí být závislý na hlavním balíčku pomocí plné (celé) verze: Requires: %{name} = %{version}-%{release} |
* Balicek nesmi obsahovat zadne .la libtool archivy. | * Balíček nesmí obsahovat žádné .la libtool archivy. |
* Balicky obsahujici GUI aplikace musi obsahovat %{name}.desktop soubor a tento musi byt nainstalovan pomoci desktop-file-install v %install sekci. Detailneji je toto popsane v Pravidlech pro balickovani v sekci Desktopove soubory. Pokud si myslite, ze vase GUI aplikace nepotrebuje .desktop soubor, tak byste to meli vysvetlit komentarem ve .spec souboru. | * Balíčky obsahující GUI aplikace musí obsahovat %{name}.desktop soubor a tento musí být nainstalován pomocí desktop-file-install v %install sekci. Detailněji je toto popsané v [[navody:pravidla_pro_balickovani|pravidlech pro balíčkování]] v sekci Desktopové soubory. Pokud si myslíte, že vaše GUI aplikace nepotřebuje .desktop soubor, tak byste to měli vysvětlit komentářem ve .spec souboru. |
* Balicek nesmi vlastnit soubory nebo adresare, ktere uz vlastni jiny balicek. Pokud si myslite, ze mate duvody k tomu, aby vas balicek vlastnil soubory nebo adresare jineho balicku, tak to uvedte pri revizi (pri pozadavku o revizi). | * Balíček nesmí vlastnit soubory nebo adresáře, které už vlastní jiný balíček. Pokud si myslíte, ze máte důvody k tomu, aby váš balíček vlastnil soubory nebo adresáře jiného balíčku, tak to uveďte při revizi (při požadavku o revizi). |
| |
===== Doporučené ===== | ===== Doporučené ===== |
| |
* Pokud zdrojovy balicek neobsahuje soubor s licenci, pak by mel tvurce balicku pozadat upstream o jeho zarazeni (vytvoreni). | * Pokud zdrojový balíček neobsahuje soubor s licencí, pak by měl tvůrce balíčku požádat upstream o jeho zařazení (vytvoření). |
* Sekce 'popis' a 'shrnuti' (zkraceny popis) ve .spec souboru by mel obsahovat preklady pro podporovane neanglicke jazyky, pokud jsou dostupne. | * Sekce 'Description:' a 'Summary:' (zkrácený popis) ve .spec souboru by měly obsahovat překlady pro podporované neanglické jazyky, pokud jsou dostupné. |
* Revizor by mel overit, ze se balickem spravne sestavi v mocku (viz. mock). | * Revizor by měl ověřit, ze se balíček správně sestaví v mocku (viz. mock). |
* Balicek by se mel zkompilovat a sestavit do binarnich rpm na vsech podporovanych architekturach. | * Balíček by se měl zkompilovat a sestavit do binárních rpm na všech podporovaných architekturách. |
* Revizor by mel overit, ze balicek funguje jak ma. Balicek nesmi segfaultovat (padat:]) apod. | * Revizor by měl ověřit, že balíček funguje jak má. Balíček nesmí segfaultovat (padat:]) apod. |
* Pokud balicek obsahuje skripty mel by revizor overit jejich spravnou funkcnost a smysluplnost. Rozhodovani o smysluplnosti je ponechano zcela na soudnosti inkvizitora. | * Pokud balíček obsahuje skripty měl by revizor ověřit jejich správnou funkčnost a smysluplnost. Rozhodování o smysluplnosti je ponecháno zcela na soudnosti inkvizitora. |
* Podbalicky jine nez -devel by mely zaviset na hlavnim (zakladnim) balicku pomoci plne (cele) verze. | * Podbalíčky jiné než -devel by měly záviset na hlavním (základním) balíčku pomocí plné (celé) verze. |
* Umisteni pkgconfig(.pc) souboru zavisi na jejich pouziti. Vetsinou slouzi pro vyvojove zalezitosti, takze by mely byt v -devel balicku. Oduvodnenou vyjimkou jsou balicku, ktere jsou sami o sobe vyvojove (k vyvojovym ucelum), ktere nejsou instalovany v uzivatelskem prostredi. Napr. gcc nebo gdb. | * Umístění pkgconfig(.pc) souboru závisí na jejich použití. Většinou slouží pro vývojové záležitosti, takže by měly být v -devel balíčku. Odůvodněnou výjimkou jsou balíčky, které jsou sami o sobě vývojové (k vývojovým účelům), které nejsou instalovány v uživatelském prostředí. Např. gcc nebo gdb. |
| |