Portál AbcLinuxu, 20. května 2025 18:33
.spec
soubor a zdrojový tarball, takže bylo potřeba vytvořit zdrojový balík lokálně. Nedařilo se mi spustit fedpkg --dist f22 srpm
v adresáři s .spec
se nesmyslně snaží stáhnout tarball se zdrojáky, které má k dispozici. Nakonec jsem musel použít starý dobrý rpmbuild, který však podle všeho neumí pracovat se zdrojáky v aktuálním adresáři jako to dělá fedpkg.
ln -s `realpath netresolve-0.0.1.tar.xz` ~/rpmbuild/SOURCES/ rpmbuild -bs *.specDál jsem musel výsledek publikovat někde na webu, protože copr nepřijímá nic jiného než webová URL...
scp /home/pavlix/rpmbuild/SRPMS/netresolve-0.0.1-0.4.20141102git.src.rpm data:data/fedora/Předal jsem source rpm url copru pomocí webového rozhraní k buildu. Vzhledem k úpravám v upstreamu build podle očekávání selhal a dostal jsem se k logům na jejichž základě můžu
.spec
soubor ladit. Až bude úspěšný build, budu vědět o něco více.
Nicméně tento postup je značně krkolomný. Jako by nestačilo, že tomu celému předcházela ručně spuštěná kombinace ./autogen.sh
a make dist
, nakopírování vzniklého tarballu do adresáře s .spec
souborem a úprava .spec
souboru, aby balík obsahoval aktuální datum, což jsem tak nějak považoval za nutné zlo při buildování pro Fedoru.
Osobně jsem dost zhýčkaný z Gentoo, které je relativně blízko mému ideálu balení software z gitu. Jestliže už RPM nepočítá s balením software přímo z gitu, představoval bych si to tak, že za všech okolností, tedy bez ohledu na to, jaké nástroje se chystám k buildu používat, začnu tím, že vytvořím adresář ~/fedora/netresolve
(pro tento balík a při použití mé současné konvence umístění fedořích balíků v domovském adresáři), v něm vytvořím netresolve.spec
a rovněž do něj uložím všechny ostatní potřebné soubory včetně zdrojového tarballu. Tak přesně to dělám jako maintainer fedořích balíků. V tu chvíli očekávám, že budu moci jedním příkazem spustit build. Jako fedoří maintainer používám fedpkg push & fedpkg build
poté, co udělám potřebné úpravy a vytvořím gitovský commit, což s výhradami považuju za přijatelné. Pro scratch buildy používám fedpkg build --srpm --scratch
, což zajistí lokální vytvoření SRPM balíku a jeho odeslání k buildu.
Dost by mě zajímalo, jestli je vůbec možné používat copr a přitom zavést nějaký efektivní workflow nad jedním adresářem se stejnou strukturou jako pro dist-git, a proč vůbec musím při jeho použití řešit převod .spec
a zdrojového tarballu na SRPM, když to s koji u finálních buildů řešit vůbec nemusím a u scratch buildů to vyřeší volba --srpm
na místě. O tom, že musím ještě řešit webové úložiště pro zdrojové balíky snad raději pomlčím.
UPDATE:
To tlačítko na zopakování buildu se zdá býti k ničemu, vzhledem k tomu, že ani nestáhne opravený zdrojový balík z uvedeného URL a místo toho použije ten původní špatný.
Tiskni
Sdílej:
fedpkg --dist=f22 srpm
zajistí a počítám, že si ho i upravím, aby fungoval.
pokud menis Source ve spec file, musis upravit i soubor 'sources' aby se ti zbytecne nestahovalo neco co nepotrebujesJakým příkazem můžu nechat sources přizpůsobit novému souboru v případě, že balík není ve Fedoře?
fedpkg push && fedpkg build
, ale i o build z adresáře ve smyslu fedpkg build --srpm --scratch
, což by navíc mělo být podstatně jednodušší.
UPDATE: To tlačítko na zopakování buildu se zdá býti k ničemu, vzhledem k tomu, že ani nestáhne opravený zdrojový balík z uvedeného URL a místo toho použije ten původní špatný.
To nie je tak celkom pravda, build moze padnut aj kvoli veciam, co nesuvisia so samotnym srpm, napr. nedostatok ram alebo miesta na disku na pridelenej masine, co sa mi aj par krat stalo. Vtedy to tlacitko zmysel ma.
V prvotnej faze vyvoja bolo to tlacitko urcite velmi uzitocne, tam sa to rozsypavalo urcite skoro stale. Ja som zachytil ostru testing fazu a aj tam som mal problemy, kde som to vyuzil. Samozrejme to chce nieco narocnejsie na buildenie, aby na tie problemy clovek narazil.
S tym, ze by to chcelo nejaky lepsi sposob nez manualny upload samozrejme suhlasim. Napr. koji toto riesi moznostou uploadu src.rpm na ich servere (preto funguje fedpkg --srpm --scratch), copr na to afaik nema vzdialene api. Rozmyslal som nad zneuzitim koji na tieto ucely, ale v pripade koji api to nie je vseobecne zneuzitelne -- vracia to nieco ako lokalny identifikator uploadu toho src.rpm, ktory nie je stiahnutelny z vonka.
V prvotnej faze vyvoja bolo to tlacitko urcite velmi uzitocneV prvotní fázi vývoje bych GUI vůbec nepoužíval, zvlášť u takového projektu ;).
copr na to afaik nema vzdialene apiOno by se to dalo schovat i tím, že by dotyčný tool nahrál data třeba na fedorapeople, když už stejně člověk potřebuje fedoří account.
Předal jsem source rpm url copru pomocí webového rozhraní k buildu.
Jak je to s kontrolou podpisu nebo alespoň otisku zdrojového balíčku?
Smyslem je ochrana před MITM mezi tvým serverem a strojem, kde běží copr.
setup.py
nebo alespoň Makefile.am
. Objevil jsem setup.py
až v podadresáři cli
, ale ten sám o sobě stejně nefunguje. Hlavně že se mezi zdrojáky nachází soubor README
, ve kterém ovšem není ani slovo o tom, jak software správně instalovat. Tak snad se to zlepší a nebudu muset dopisovat vlastní build systém jako součást ebuildu.
#!/bin/sh user="$USER" project="$1" srpm="$2" scp $srpm fedorapeople.org:public_html/ || exit 1 copr-cli build "$project" "http://fedorapeople.org/$user/$srpm" || exit 1(~/bin/copr-build)
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.