upgrade na gcc3 [delší]

Milan Kerslager milan.kerslager na spsselib.hiedu.cz
Pátek Listopad 2 23:02:57 CET 2001


On Thu, 1 Nov 2001, Pavel XPJ Jisl wrote:

> Vzpoměl jsem si potom na jeden FAQ soubor, který byl u nějakého
> staršího mplayeru. Dotaz byl "I need gcc 3.x? Super! I have one from
> RedHat Rawhide/Mandrake Cooker" a odpověď ve stylu: "No! They used to
> compile this their gcc 2.96, so their gcc 3.x is the same shit like
> 2.96!!!" Takže jsem si zkompiloval gcc3 ze zdrojáků (make bootstrap),
> ale žádný rozdíl (tedy, chybové hlášení vidím stále stejné :) Takže
> zvesela kompiluju skrze 2.96 a koukám se na divx filmy...

Distribuce se totiz dela tak, ze se vezme referencni prostredi a v nem se
vsechno prelozi. To referencni prostredi je v podstate sama distribuce,
ale nekdy z pocastku zamrznuti (tj. temer vse bude stejne, u nekterych
komponent tam budou o jeden dva patchlevely starsi veci) [u RH se to
preklada na nejakem stroji v chrootovanem prostredi].

Drive se to delalo tak, ze distribuce kompilovala sama sebe (coz se muze
zdat logicke a lepsi), ale to prinaselo problemy: kdyz se zmenila nejaka
knihovna (treba kvuli fixu), pak pri kompilaci mohly vzniknout vedlejsi
side-efekty, ktere zanesly do celeho systemu nahodne chyby (tezko
odhalitelne bez komplexniho testovani znovu od zacatku).

Jinymi slovy - pokud udelate upgrade v referencnim prostredi (tj. v tom,
ktere pouzivate pro kompilaci balicku), musite znovu udelat rozsahle QA
testy na vsechny komponenty, ktere jsou danou zmenou postihnute. Aby se
tedy nemusela vsechna testovani (provedena do te doby) zahodit, zamrzne
referencni prostredi pro kopilaci o neco drive, nez vlastni distribuce.
Samozrejme pak nelze do distribuce dat novejsi verzi knihovny, ktera by
byla nekompatibilni s tou, ktera se pouziva pri kompilaci...


Kompilatory prekladaji vzdy sve novejsi verze :-) a kdybyste si chtel GCC
3.0 prelozit pomoci GCC 3.0, pak to predchozi GCC muselo byt nutne
prelozene nejakou nizsi verzi :-) a mame z toho docela zajimavy
vejco-slepicoidni problem.

Kdyz byste se podival (aspon trochu nezaujate) na ruzne verze kompilatoru,
pak budete muset konstatovat, ze vetsina (slozitejsich) programu je psana
tak, aby se vyhla znamym chybam (starsich kompilatoru). Z tohoto pohledu
pak je 2.96 kompilator jako kazdy jiny, akorat zkriplene zdrojaky (tj.
fixnute programy tak, aby sly prelozit historickymi verzemi) je potreba
tak jako tak opravit (v 2.96 ma uz finalni podobu forem zapisu kodu), aby
sly prelozit v nadchazejicich verzich GCC (>3.0).

Duvody pro volbu 2.96 v RH jsou sepsany zde:

http://www.lwn.net/2000/1005/a/rh-tools.php3
http://www.linux.cz/lists/archive/linux/122877.html

V tom prispevku je to shrnuto a prelozeno do cestiny.

-- 
                        Milan Kerslager
                        E-mail: milan.kerslager na pslib.cz
                        WWW:    http://www.pslib.cz/~kerslage/




Další informace o konferenci Linux