stderr

Jakub Jedelský

Jak dostat vlastní RPM do Fedory

TL;DR: Toto není návod na sestavení RPM. Jen jsem si potřeboval utříbit a sepsat postup pro doručení již připraveného balíčku do repozitářů Fedory a EPELu. Ani nechci zabíhat do detailu - většinou odkazuji na příslušnou wiki (ale často jsem se neudržel).

Postup jsem popsal pro balíček vertica-python, který si tuto cestu už absolvoval. Hned na začátek doporučuji nastavit filtr e-mailu - do gmailu mi naskákalo celkem kolem 30 zpráv ve 13 vláknech.

Všechno začíná (a končí) v bugzille

Každý nový balíček se musí pěkně jmenovat a splnit pár jednoduchých podmínek, aby prošel kontrolou od některého z jiných vývojářů. Ke komunikaci slouží ticket typu Review Request, kam kromě základních informací pošlete odkaz své SPEC a SRPM soubory. Pokud jde o váš úplně nejprvnější balík, je potřeba si sehnat svého sponzora, který se za nováčka "zaručí" a bude mu případně pomáhat. Potom, co vám ostatní najdou spoustu chyb, vy je úspěšně opravíte (nebo obhájíte) a někdo nastaví flag fedora-review na +, zažádáme o nový repozitář.

Žádost o repozitář, ze kterého pak probíhá vlastní sestavení balíku, jde opět formou komentáře do Review Request ticketu. Zároveň s tím změníme flag fedora-csv na ? (aby si nás admini všimli). Komentář vypadá nějak takto, vzor je opět na wiki:

New Package SCM Request
=======================
Package Name: vertica-python
Short description: A native python adapter for the Vertica database
Owners: kubo
Branches: f19 f20 el6 epel7

K tomu snad jedinou poznámku - větev master (pro rawhide) dostanete automaticky.

Do pár hodin pak máte odpověď od některého z adminů, že je repozitář připravený, flag fedora-csv se změní na +.

Repozitář, sestavení a zveřejnění

Zdrojové kódy se SPEC souborem a případnými patchi (nebo patchemi, patchema? Pačema?) se ukládají do veřejně přístupného gitovského repozitáře. Fedora nabízí pro práci (nejen) s tímto repozitářem nástroj fedpkg, ale obejdete se i bez něj. Ale ne zde v dalších krocích.

Nejprve si repozitář naklonujeme k sobě...

fedpkg clone vertica-python

...a naimportujeme schválený SRPM balík

cd vertica-python
fedpkg import /var/lib/mock/fedora-rawhide-x86_64/result/vertica-python-0.2.0-4.fc21.src.rpm

Import na nás vyrukuje s logem, který zkontrolujeme a změny commitneme. Vše pošleme do vzdáleného repozitáře a spustíme build na koji:

# hele ho, git!
git commit -m "Initial import (#1080669)"
git push
fedpkg build

V tuto chvíli se sestavuje balíček pro rawhide. Můžeme zatím vesele pokračovat s dalšími větvemi (od nejvyšší verze dolů):

fedpkg switch-branch f20
git merge master
git push
fedpkg build
fedpkg switch-branch f19
...
..
.

V koji už teď máme uložená sestavení, která (předpokládám) prošla - můžeme tak začít balíček ládovat do repozitářů. Toto probíhá pomocí nástroje Bodhi. Pro všechny větve (kromě masteru a aktuálně epel7, který je v betě) pošleme požadavek na zařazení do testovacích repozitářů (udělat to lze i přes webové rozhraní Bodhi):

git checkout f20 # nebo fedpkg switch-branch f20
fedpkg update

Update bude chtít vyplnit pár informací. Nás zajímají řádky:

  • type= (jde o opravu chyby, vylepšení nebo nový balíček?)
  • request= (žádáte o testovací nebo stable repozitář?)
  • bugs= (ID v Bugzille)
  • notes= (u nového balíčku krátký popis).

Pro vertica-python to vypadalo takto:

[ vertica-python-0.2.0-4.fc20 ]

# bugfix, security, enhancement, newpackage (required)
type=newpackage

# testing, stable
request=testing

# Bug numbers: 1234,9876
bugs=1080669

# Changelog:
# - remove buildrood tag
# - edit dateutil patch for el6 
#
# Here is where you give an explanation of your update. 
notes=A native python adapter for the Vertica database

# 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

Po uložení se žádost zpracuje a dostaneme potvrzení:

Creating a new update for  vertica-python-0.2.0-4.fc20 
Update successfully created
================================================================================
     vertica-python-0.2.0-4.fc20
================================================================================
    Release: Fedora 20
     Status: pending
       Type: newpackage
      Karma: 0
    Request: testing
       Bugs: 1080669 - Review Request: vertica-python - A native Python adapter
           : for the Vertica database
      Notes: A native Python adapter for the Vertica database
  Submitter: kubo
  Submitted: 2014-03-31 13:35:36
   Comments: bodhi - 2014-03-31 13:35:49 (karma 0)
             This update has been submitted for testing by kubo.

  https://admin.fedoraproject.org/updates/vertica-python-0.2.0-4.fc20

Na posledním řádku je vidět i odkaz, kde můžete sledovat, jak se požadavek zpracovává a kudy rpm cestuje. Cesta do stabilních repozitářů Fedory trvá týden, pro EPEL jsou to hned týdny dva. Mezitím vám jiní uživatelé (QA) můžou dávat veselý a smutný smajlíky. Za tři veselý se do stabilního repozitáře dostanete hned, dobrý ne?

Končíme na Bugzille

Kecám. Pokud vše projde jak má a balíček se prokouše až do stabilních repozitářů, pak Bodhli za vás ticket automaticky zavře. Takže se už o nic nemusíte starat.

A na závěr nezbývá než popřát všem RPM balíkům šťastnou cestu.