Tento týden byl pro mě určitě jedením z nejintenzívnějších z hlediska studia toho, jak ve Fedoře funguje buildovací systém/proces. Konečně jsem byl schválen coby balíčkovač, což znamená, že budu mít více zodpovědnosti. Naneštěstí jsou instrukce ve wiki mnohdy rozesety na různých místech a člověk toho musí spoustu přečíst a hodně se vyptávat, aby nedělal chyby. Pro začátečníka je to spousta informací a i s otázkami je nutné si dávat záležet, abyste dostali správné odpovědi.
Poznámka: Článek původně vydal na svém blogu Axilleas Pipinellis s licencí CC BY-NC-ND 3.0 jako I got approved as a packager, now what?
Začínám si myslet, že je to záměr – průběžné testování znalostí o tom, jak věci ve Fedoře fungují. Bez práce nejsou koláče.
Myslím, že se mi podařilo většině věcí porozumět, a níže celý proces popíšu v naději, že by to mohlo pomoci lidem, kteří se v budoucnu ocitnou v podobné situaci jako já. Popíšu celý postup až po odeslání balíčku, včetně výstupů mnoha příkazů, které jsem dříve nepoužíval. Tato wiki stránka vše shrnuje, ale přečtěte si ji, až proces pochopíte. K dispozici je také hezký průvodce workflow balení rpm, který celý postup ukazuje od úplného počátku. Pěkné čtení.
S laskavou pomocí lidí na #fedora-devel
jsem to dokázal, takže vám všem děkuji 🙂
Co dělat, až vás schválí
Gratuluji, povýšili vás na balíkáře! Po schválení je potřeba udělat pár věcí, které lze shrnout do následujících dvou kroků:
- Požádejte o SCM
- Použijte
fedpkg
k poslání, sestavení a nahrání svého balíku [commit, build, upload]
Podívejme se na to podrobněji.
Žádost o SCM
Povinná četba: Package SCM admin requests.
Mimochodem, SCM znamená Source Code Management. Po schválení balíku je potřeba udělat dvě věci, které se týkají bugzilly.
- Nastavit příznak fedora-cvs na ?
- Přidat nový komentář s následujícím vyplněným formulářem:
New Package SCM Request ======================= Package Name: Short Description: Owners: Branches: InitialCC:
- Dát
Save Changes
u 1 i 2. Podívejte se, jak jsem to udělal já.
Poznámka: Pokud s Bugzillou začínáte jako já, řeknu vám malé tajemství. Proveďte všechny změny, které potřebujete, dokonce můžete i vložit komentář, a pak klikněte na Save Changes
, což uloží VŠECHNY změny, které jste udělali. Jsou na to dvě tlačítka: jedno v pravém horním rohu a jedno pod formulářem Additional Comments
. Fungují obě stejně. Nezní to jako něco světoborného, ale já o tom nevěděl, takže jsem nejdřív zanechal komentář a pak změnil příznak, a e-mailové oznámení se odeslalo dvakrát.
Pošlete, sestavte a nahrajte [commit, build, upload] svůj balíček
Povinná četba: Add Package to Source Code Management (SCM) system and Set Owner.
Po odeslání žádosti o SCM dostanete několik e-mailů z Bugzilly a PackageDB, které vám poví, že můžete pokračovat. Pokud se podíváte na cgit, uvidíte prázdný repozitář.
Celý sestavovací proces používá fedpkg
a příkazy gitu, takže pokud s gitem neumíte, doporučuji navštívit Fedora wiki.
Kroky s fedpkg a git
- Vytvořte nový adresář, abyste měli ve svých balíčcích pořádek.
mkdir ~/fedora-scm cd ~/fedora-scm
- Naklonujte nově vytvořený repozitář gitu.
fedpkg clone rubygem-bootstrap-sass cd rubygem-bootstrap-sass
Obsah konfiguračního souboru gitu vypadá takto:
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = ssh://axilleas@pkgs.fedoraproject.org/rubygem-bootstrap-sass fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master
- Importujte src.rpm:
fedpkg import /var/lib/mock/fedora-rawhide-x86_64/results/rubygem-bootstrap-sass-f20.src.rpm
Měli byste vidět něco jako tohle:
Uploading: 4f0c887ea7cd95812edcc6b8b01b9329 bootstrap-sass-2.3.2.1.gem ######################################################################## 100.0% Uploaded and added to .gitignore: bootstrap-sass-2.3.2.1.gem ... diff status of all files to be commited ... New content staged and new sources uploaded. Commit if happy or revert with: git reset --hard HEAD
Teď jsou v adresáři tři soubory:
-r--r--r--. 1 axil axil 86528 Jul 20 15:30 bootstrap-sass-2.3.2.1.gem -rw-r--r--. 1 axil axil 2314 Jul 20 15:30 rubygem-bootstrap-sass.spec -rw-r--r--. 1 axil axil 61 Jul 20 15:30 sources
sources
je textový soubor se zdrojovým balíkem (gem) a jeho hashem v md5. Všimněte si, že název gemu byl automaticky umístěn do.
g
itignore
. Když spustítegit status
, uvidíte, že v přípravném prostoru jsou tři soubory:# On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: .gitignore # new file: rubygem-bootstrap-sass.spec # modified: sources #
Pokud se změnami souhlasíte, pošlete je [commit a push] do hlavní [master] (rawhide) větve. Použijte ID Bugzilly z vaší žádosti o kontrolu. Nebudou to parsovat žádné skripty, je to jen pro referenci.
git commit -m "Initial import (#982679)." git push
Pokud se nyní znovu podíváte na cgit, uvidíte poslané změny.
Sestavování na koji
Nakonec zadejte tento příkaz pro spuštění sestavování na koji:
fedpkg build
Výstup:
Building rubygem-bootstrap-sass-2.3.2.1-1.fc20 for rawhide Created task: 5631690 Task info: http://koji.fedoraproject.org/koji/taskinfo?taskID=5631690 Watching tasks (this may be safely interrupted)... 5631690 build (rawhide, /rubygem-bootstrap-sass:md5): open (arm02-builder11.arm.fedoraproject.org) 5631691 buildSRPMFromSCM (/rubygem-bootstrap-sass:md5): open (buildvm-25.phx2.fedoraproject.org) 5631716 buildArch (rubygem-bootstrap-sass-2.3.2.1-1.fc20.src.rpm, noarch): open (buildvm-01.phx2.fedoraproject.org) 5631691 buildSRPMFromSCM (/rubygem-bootstrap-sass:md5): open (buildvm-25.phx2.fedoraproject.org) -> closed 0 free 2 open 1 done 0 failed 5631716 buildArch (rubygem-bootstrap-sass-2.3.2.1-1.fc20.src.rpm, noarch): open (buildvm-01.phx2.fedoraproject.org) -> closed 0 free 1 open 2 done 0 failed 5631737 tagBuild (noarch): closed 5631690 build (rawhide, /rubygem-bootstrap-sass:md5): open (arm02-builder11.arm.fedoraproject.org) -> closed 0 free 0 open 4 done 0 failed 5631690 build (rawhide, /rubygem-bootstrap-sass:054f742970e4b930bc55a5d3802fb31d26c57d0d) completed successfully
Bude vám poslán e-mail, jakmile se sestavování dokončí a balíček se automagicky objeví v repozitářích rawhide. Chcete-li balíček protlačit do stabilní verze Fedory, čtěte dál.
Předložení balíčku do aktuálních verzí Fedory
Tento krok je volitelný – týká se pouze balíčků, u kterých chcete udržovat i jiné verze než pro rawhide. Přepněte na příslušnou verzi pomocí fx
, kde x
je daná verze Fedory:
fedpkg switch-branch f19
Příkaz git branch -r
zobrazí dosud používané verze:
origin/HEAD -> origin/master origin/f19 origin/master
Tip: Doporučuji používat shell, který vám ukáže, ve které jste větvi. Já mám rád zsh, a když zkusíte oh-my-zsh, budou to podporovat téměř všechna přibalená témata. Moje vypadá takto:
Získejte změny z větve master a sestavte jako předtím:
git merge master git push fedpkg build
Protlačte svůj balíček na bodhi
Pokud máte na lokálním stroji stejné uživatelské jméno jako na FAS, tento krok přeskočte. Tato volba není v návodu na wiki uvedená – našel jsem ji zde.
echo "export BODHI_USER=axilleas >> ~/.zshrc" source ~/.zshrc
Nahraďte .zshrc
konfiguračním souborem svého shellu.
Poslední krok je poslat balíček na bodhi, aby byl zpracován a dostal se do repozitářů. Máte dvě možnosti: příkazovou řádku a webové rozhraní bodhi. Vyberte si, co vám více vyhovuje.
Pokud dáte přednost webovému rozhraní, následujte tento odkaz, přihlaste se a vyplňte prázdná pole.
Každá sekce mát kontextovou nápovědu, která vysvětluje, co je potřeba vyplnit, ale podívejme se na to i zde:
Popis | Volba | Význam |
---|---|---|
Package | rubygem-bootstrap-sass | Začněte psát název svého balíčku a doplní se automaticky. |
Type | newpackage | Protože jde o první balíček, zvolil jsem newpackage. |
Request | Testing | Aby balíček přistál nejprve v updates-testing, než se dostane do stabilní (doporučené). |
Bugs | 982679 | ID vaší žádosti o kontrolu z Bugzilly. Stav se tak bude měnit automaticky. |
Notes | Popis balíčku | Další poznámky, např. proč jste dělali tuto aktualizaci, jaké byly opraveny chyby, jde-li o opravu chyb, atd. |
Suggest Reboot | Zrušte zaškrtnutí | Doporučení, jestli má uživatel po instalaci provést restart systému. |
Enable karma | Zaškrtněte | Povolit automatizaci požadavku na aktualizace na základě zpětné vazby uživatelů. |
Threshold to stable | 3 | Výchozí hodnota. 3 je potřeba, aby to prošlo do stabilních repozitářů. |
Threshold for unpushing | -3 | Dostane-li 3 body, odmítne balíček z testing. |
Druhou možností je provést aktualizaci v příkazové řádce. To funguje jen u větví jiných než rawhide. Zkusíte-li rawhide, fedpkg
vypíše varování.
Když spustíte níže uvedený příkaz, budete muset upravit šablonu pomocí výchozího systémového editoru, což je vi
. Chcete-li jiný, např. vim
, použijte příkaz export
. V rámci větve f19
proveďte:
export EDITOR=vim fedpkg update
Šablona vypadá takto:
[ rubygem-bootstrap-sass-2.3.2.1-1.fc19 ] # bugfix, security, enhancement, newpackage (required) type= # testing, stable request=testing # Bug numbers: 1234,9876 bugs= # Description of your update notes=Here is where you give an explanation of your update. # Enable request automation based on the stable/unstable karma thresholds autokarma=True stable_karma=3 unstable_karma=-3 # Automatically close bugs when this marked as stable close_bugs=True # Suggest that users restart after update suggest_reboot=False
Až provedete příslušné změny, soubor uložte a zavřete. Budete dotázáni na heslo k FAS, aby se mohl proces dokončit, a výstup bude vypadat podobně jako tento:
================================================================================ rubygem-bootstrap-sass-2.3.2.1-1.fc19 ================================================================================ Release: Fedora 19 Status: pending Type: newpackage Karma: 0 Bugs: 982679 - Review Request: rubygem-bootstrap-sass - Twitter's : Bootstrap, converted to Sass and ready to drop into : Rails or Compass Notes: Initial commit Submitter: axilleas Submitted: 2013-07-20 15:20:18 https://admin.fedoraproject.org/updates/rubygem-bootstrap-sass-2.3.2.1-1.fc19
Po odeslání projde váš balík těmito stavy.
Časté dotazy
Tohle je pár otázek, na které jsem v průběhu tohoto procesu hledal odpovědi. Pomohli mi na #fedora-devel
, za což jim znovu děkuji.
Otázka: Během fedpkg import src.rpm
musím poskytnout foo-f20.src.rpm
nebo bude fungovat i foo-f19.src.rpm
?
Odpověď: Je možné vzít jakýkoliv platný srpm z Fedory/RHEL, bez ohledu na to, pro kterou verzi to bylo vytvořeno.
Otázka: Co když omylem spustím fedpkg update
pro rawhide (větev master)?
Odpověď: Nové verze fedpkg by to měly odmítnout.
Otázka: Pokud se během kontroly balíčku zvýšila verze vydání specifikace, měl bych před posíláním na cgit vrátit verzi na 1?
Odpověď: Ne, to není potřeba.
Závěr
Bylo to docela dobrodružství a hodně jsem se toho naučil. Jsem si jistý, že jde jen o špičku ledovce a čeká mě toho ještě mnohem víc. Tento zápisek mi trvalo napsat celý den, protože jsem postup zaznamenával za pochodu – doufám, že to někomu může pomoci. Najdete-li nějakou chybu nebo chcete-li něco dodat, komentujte.
29. 7. 2013 at 16:31
Já vám nevím, ale článek ve formě osobního zápisku bez jména autora je divný. Kdo že se to stal baličem?
29. 7. 2013 at 16:53
Viz druhý odst. článku.