====== Pokyny pro revize balíčků ======= ===== Povinné ===== * rpmlint musí být spuštěn na každý balíček. Výstup by měl být přiložen v revizi. * Balíček musí být pojmenován dle [[navody:pravidla_pro_pojmenovavani_balicku|pravidel pro pojmenovávání balíčků]]. * 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ů. * Balíček musí vyhovovat [[navody:pravidla_pro_balickovani|pravidlům pro balíčkováni]]. * 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í]]. * Položka "License:" ve .spec souboru balíčku musí souhlasit s licencí obsahu balíčku. * 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 smí byt použita jen americká Angličtina. * .spec soubor MUSÍ být čitelný. Pokud nebude revizor schopný přečíst .spec soubor, nebude možné provést revizi. * 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í. * 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 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. * 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 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. * 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 %postun -p /sbin/ldconfig * 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 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í. * Balíček nesmí obsahovat duplikáty v seznamu %files. * 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(...). * Každý balíček musí mít sekci %clean, která obsahuje rm -rf %{buidlroot}. * 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í]]. * 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í]]. * 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 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. * Hlavičkové soubory nebo statické knihovny musí být v -devel podbalíčku. * Balíček, který obsahuje pkgconfig(.pc) soubory musí mít závislost na pkgconfig (Requires: pkgconfig). * 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 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} * Balíček nesmí obsahovat žádné .la libtool archivy. * 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. * 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é ===== * 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 'Description:' a 'Summary:' (zkrácený popis) ve .spec souboru by měly obsahovat překlady pro podporované neanglické jazyky, pokud jsou dostupné. * Revizor by měl ověřit, ze se balíček správně sestaví v mocku (viz. mock). * Balíček by se měl zkompilovat a sestavit do binárních rpm na všech podporovaných architekturách. * Revizor by měl ověřit, že balíček funguje jak má. Balíček nesmí segfaultovat (padat:]) apod. * 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. * Podbalíčky jiné než -devel by měly záviset na hlavním (základním) balíčku pomocí plné (celé) verze. * 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.