freebsd-update -r 9.2-RELEASE upgrade - cast 3, vlastni patche

Dan Lukes dan at obluda.cz
Fri Mar 7 01:17:01 CET 2014


V nekterych pripadech jsou reakce oficialniho vyvojarskeho tymu velmi
jemne reseno "nedostatecne vcasne".

Nekdy jsou to i chyby bezpecnostni, casteji ale funkcni, tykajic se
funkce neceho, co neni dostatecne v centru zajmu. Nekde jsou to chyby v
ovladani konkretniho hardwaru, nekdy chyby, ktere jsou zpusobile zkratit
realnou zivodnost hardwaru.

Jeste tragictejsi je situace u "feature request" - pokud neco
potrebujete a netrefite se nahodou do noty zadnemu z vyvojaru, tak to do
systemu proste nedostanete.

To vsechno vede k myslence vlastnich patchu jak v zdrojovem stromu
samotneho systemu tak ve stromu portu.

E) Vlastni patche

Cilem je vytvorit takovy system, ktery nebude branit udrzbe zdrojovych
stromu beznym zpusobem, a tim se mysli nejen pouziti 'svn' ale i to aby
se update provadel stejnym prikazem jako "normalne".

Resenim je umistit do /usr/src a /usr/ports soubor BSDMake

Ten ma pri spousteni 'make' prednost pred Makefile a tak ho lze pouzit
jako "hook", ktery nam umozni vkladat operace podle potreby.

Moje jsou tady:
> http://www.freebsd.cz/~dan/usr::src::BSDmakefile
> http://www.freebsd.cz/~dan/usr::ports::BSDmakefile

Oba potrebuji seznam patchu, ktere maji aplikovat. Ty ja mam v
/etc/make.conf a vypada to takto:

> LOCAL_SRC_PATCHES =/usr/src/patch-OPENSSH-AUTH /usr/src/patch-ATAPICD /usr/src/patch-UHID
> LOCAL_SRC_PATCHES+=/usr/src/patch-LIBALIAS+NATD /usr/src/patch-ETC-PROFILE
> LOCAL_SRC_PATCHES+=/usr/src/patch-INSTALL /usr/src/patch-confGENERIC
> LOCAL_SRC_PATCHES+=/usr/src/patch-NAMED /usr/src/patch-EAPOL_TEST
> LOCAL_SRC_PATCHES+=/usr/src/patch-acpi-video /usr/src/patch-acpidump-TCPA
> LOCAL_SRC_PATCHES+=/usr/src/patch-MERGEMASTER /usr/src/patch-module-ixgbe /usr/src/patch-re
> LOCAL_SRC_PATCHES+=/usr/src/patch-sysinstall /usr/src/patch-du /usr/src/patch-CRYPT_BLF
> LOCAL_SRC_PATCHES+=/usr/src/patch-hddsecurity /usr/src/patch-usb-QUIRKS
> LOCAL_SRC_PATCHES+=/usr/src/patch-fs::nfsserver::nfs_nfsdserv.c /usr/src/patch-NOSVN
> LOCAL_SRC_PATCHES+=/usr/src/patch-ETC-NTP.CONF
> 
> LOCAL_PORTS_PATCHES =/usr/ports/patch-OPENSSL /usr/ports/patch-libreoffice

Jednotlive patche najdete take na http://www.freebsd.cz/~dan/ ale co
ktery resi uz sem psat nebudu. V pripade zajmu tomu venuju samostatny mail.

F) Vlastni patche portu

To je neco jineho nez patche stromu portu popsane v bodu (E). Zde
nemluvime o zmenach souboru patricich do stromu portu, ale o pridani
vlastniho patche k nejakemu portu.

To je nastesti jednoduche. Kazdy port ma FreeBSD-specific patche v
podadresari files/

Takze pokud chcete pridat nejaky svuj, proste ho vlozite tam.

Z praktickych duvodu doporucuju dodrzovat nejakou vhodnou konvenci pri
pojmenovavani tech souboru tak, abyste je dokazali "oslovit" najednou -
treba kdyz je budete chtit nekam okopirovat.

Vsechny me patche ve stromu portu maji nazev zacinajici patch-DAN- nebo
patch-~DAN- (ta druha proto, ze nekdy si potrebuju byt jisty, ze se muj
patch aplikuje az jako posledni a ony se aplikuji abecedne podle nazvu
souboru).

G) Vlastni porty

Nekdy proste neni ve stromu portu ten port, ktery potrebujete. Treba vas
vlastni program.

Pro tyto pripady existuje /usr/ports/local ale jeho pouziti neni tak
trivialni jak by mohlo byt.

Do /etc/make.conf pridejte
> VALID_CATEGORIES=local
> .if ${.CURDIR} == /usr/ports
> SUBDIR+=local
> .endif

Do /usr/ports/local pridejte soubor Makefile vypadajici nejak takhle:
>     COMMENT = Local ports
> 
>     SUBDIR += rad_eap_test
>     SUBDIR += nagvis
>     SUBDIR += sleuth
>     SUBDIR += waitfornetwork
>     SUBDIR += pam_af
>     SUBDIR += p5-Config-File
>     SUBDIR += check_mssql
> 
> .include <bsd.port.subdir.mk>

Pricemz jednotlive 'SUBDIR' odpovidaji podadresarum jednotlivych vasich
portu (v prikladu tedy 7 vlastnich portu).

Do podadresaru uz umistujte vlastni porty zpusobem obdobnym jako je tomu
u portu standardnich. V jejich Makefile uvedte
> CATEGORIES=     local

Pokud mate vlastni porty tak pri aktualizaci stromu portu urcite
zapomente na 'make fetchindex'. Rozhodne musite pouzit 'make index'.

 --------------------------------------------------------------------

Pokud je ten-ktery bod nejasny, nebo nejaky zcela chybi, ptejte se.

Tak - to mame vlastni patche existujicich souvory v /usr/src a
/usr/ports, dale vlastni patche pro jednotlive porty a nakonec - vlastni
porty.

Neni toho uz docela dost ? A to je porad jen dost hruba osnova. To jsem
nejake skoro ctyri hodiny sepisoval know-how jehoz ziskani trvalo
desetileti. Ze ja se dal na to vzdelavani misto toho, abych to za tezky
penize prodaval ...

Tak pokud se nekdo tim smerem vydate a bude vam to k uzitku, tak mi pak
aspon dejte vedet, ze vam to k necemu bylo.

Do popisu k cemu je ten-ktery patch v systemu se mi ted uz fakt nechce.
Pritom ale treba takovy patch-re prodluzuje zivotnost interni EEPROM
sitovych karet if_re a ty jsou zrovna v kde-cem.

Tak treba po nejaky ty pauze. Vetsi sance bude pokud alespon nekdo
rekne, ze by mu to k necemu bylo. At zbytecne netravim spoustu casu
sepisovanim neceho, co nikdo neupotrebi.

Dan



More information about the Users-l mailing list