Vlastni porty

Dan Lukes dan at obluda.cz
Fri Nov 8 23:03:40 CET 2013


Miroslav Prýmek wrote:
> Jde mi o to, jakym zpusobem si organizujete vlastni porty/balicky. Tj.
> veci dvou typu:
> 1. sw, ktery jsem napsal sam, at uz jenom pro sebe, nebo ho i zverejnil
> 2. sw, ktery bud v portech neni, nebo ho potrebuji v nejake verzi se
> svymi upravami
> -- a zaroven ten soft chci mit v systemu standardnim zpusobem, ktery
> pouzivam pro ostatni veci z portu - at uz pouzivam balicky nebo
> kompiluju primo na cilovem stroji.

Uz jsem to tady nejspis nekdy popisoval. Vlastni software si ukladam
formou portu do k tomu urcenemu adresari portu - /usr/ports/local


Do /etc/make.conf pridas:

> VALID_CATEGORIES=local
> .if ${.CURDIR} == /usr/ports
> SUBDIR+=local
> .endif

V samotnem /usr/ports/local pak vyrobis Makefile:

> /usr/ports/local/Makefile
>     COMMENT = Local ports
> 
>     SUBDIR += rad_eap_test
>     SUBDIR += nagvis
>     SUBDIR += sleuth
>     SUBDIR += waitfornetwork
>     SUBDIR += pam_af
> 
> .include <bsd.port.subdir.mk>

V nem uz jsou podadresare ve kterych mas Makefile jednotlivych svych
portu. V prikladu vyse jich vidis pet.

Tak s nima muzes pracovat jako s naprosto klasickejma portama. Vcetne
toho, ze si muzes nechat prelozit packages a vsude jinde pak uz
samozrejne neprekladas, ale instalujes hotove packages.

> Prvni problematika je vubec, jak provozovat upraveny strom portu. Jsou
> to zas imho dva pripady:
> A] jenom pridavam svuj vlastni adresar, napr. /usr/ports/prymek + k
> tomu vse potrebne, aby to fungovalo (na to navody jsou a uz jsme se o
> tom tady myslim bavili, netreba rozvijet)

To by sice slo take, ale /usr/ports/local na to je urceny.

> B] chci nejake veci upravovat v existujicich portech - treba nejak
> zmenit /usr/ports/www/apache24/Makefile

To jsou dva podproblemy.

Ba) pridat k nekteremu portu vlastni patch, ktery neco meni v souborech
pouzitych pri prekladu

 To je jednoducha vec, proste si pridas vlastni soubor patch-* do
podadresare "files" daneho portu. Ja abych je snadno poznal od
"standardnich" pojmenovavan soubory jako patch-DAN-*, ale to uz je drobnost.

Nejcasteji tak opravuji chyby v konkretnich portech, doplnuju dosud
nedoplnenou funkcnost pripadne menim hodnoty defaultnich nastaveni.

Aktualne mam ve stromu portu 63 takovych vlastnich patch souboru.

Bb) Menit neco v existujicich souborech, tedy napriklad zmineny priklad
zmeny v www/apache24/Makefile

  To je, alespon dle meho nazoru, spise vyjimecny pripad, ja mam v
aktualnim stromu pouhe ctyri takove pripady. Vetsinou to opravdu neni
potreba, protoze pozadovaneho lze dosahnout nejakym nastavenim nekde.
Kde presne zavisi na tom co presne pouzivas.

Ale kdyz na ten vyjimecny pripad dojde, tak to zas takovy problem neni.

Vyuzivam toho, ze program 'make' sahne v aktualnim adresari driv po
souboru BSDmake nez po Makefile. Takze v /usr/ports mam vlastni BSDmake,
ten je schopen poznat, ze se vola 'make update' (v ostatnich propadech
proste zavola make na puvodni Makefile) a v takovem pripadu nejprve
odstrani lokalni upravy (svn revert), pak zavola standardni make update
a po jeho skonceni aplikuje definovany seznam patchu.

V pripade zajmu neni problem ode me ten BSDmake soubor dostat. Ve
skutecnosti je malinko slozitejsi nez jak by vypadalo z popisu nahore,
protoze ja chtel, aby byl opravdu maximalne transparentni a fungovaly i
takove veci jako make -V ... a podobne.

> Co pouzivate a co povazujete ze nejelegantnejsi?

Pouzivam standardni nastroj, coz je v teto chvili, pokud vim, svn. Jen
jeho volani, respektive cely Makefile, mam obaleny tim BSDmake wrapperem.


> Anebo zdrojaky proste oddelene nemit a udrzovat si jenom git repo s
> tim adresarem portu a zdrojaky jednoduse prsknout do files/. Ale to mi
> prijde trochu prasacky...

Pokud se stale jeste bavime o portech, tak pro zdrojaky je urcen
/usr/ports/distfiles


Dan




More information about the Users-l mailing list