rh 7.0, gcc a problemy
Milan Kerslager
milan.kerslager na spsselib.hiedu.cz
Středa Leden 3 15:13:20 CET 2001
On Wed, 3 Jan 2001, Libor Chocholaty wrote:
> Doporucuju si precist:
> http://www.linuxworld.cz/lw.nsf/page/F4A16C55C6442031C12569B9002F7CF0
Napsal bych tam reakci, ale nejde to (je to nejake rozbite).
Ten clanek je silne jednostranne vedeny v duchu uz zde prezentovaneho
sporu s kolegou Janikem.
Ani po podani vycerpavajicich argumentu proc to tak neni a proc nema
pravdu (tedy spise ze neumi uznat protiargumenty druhe strany a na vsechny
vypady existuji vyznamne 'ale'), bude snad jeste nekolikrat omilat toto
tema.
Vyjadrim se radeji jen ke zminenemu clanku, abych se porad neopakoval.
1) distribuce obsahovala "neposveceny" snapshot GCC (2.96)
- tohle neni argument. Posledni zhruba dva roky se bezne pouzivaji
CVS snapshoty cehokoliv. Od XFree pres KDE k dalsim i obycejnejsim
nastrojum. Dela se to proto, ze v CVS jsou obvykle patche na zname
chyby. Cislo verze si nikdo nevymyslel, bylo normalne zavedeno
v aktualnim CVS.
- vsechny (cca 80) patche pro GCC 2.96 z CVS byly po vydani RH prijaty
GCC teamem, ktery pak oznamil, ze zvysi oznaceni na 2.97 (tj. v RH je
technicky spise skoro 2.97 nez 2.96)
- opravy se delaly zejmena pro Glibc a ne pro kompilator (ale opravy
se delaji porad a na vsechno, takze se nemusime divit - spis bychom
meli byt spokojeni, ze se bugreporty nezametaji pod koberec)
- pro nas pro vsechny je lepsi, kdyz se pouziji nove komponenty,
protoze latani starych je neproduktivni stejne jako vyroba
tisice zaplat. V novem RH bude novy kompilator, pouze se bude
udrzovat binarni kompatibilita (pokud se pro novejsi GCC zmeni)
Tim se usetri uzivatelum jeden krok v binarne nekompatibilnich
balicich (musel by se pouzit mezikrok, ktery by stejne porusil
binarni kompatibilitu s radou 6.x, takze se jeden usetril).
- je videt jasna tendence k pouzivani noveho kompilatoru a pokud
by ho distribuce uzivatelum neposkytla, omezovala by je, protoze
je funkcni. Novy kompilator je lepsi volbou, nez vsechny predchozi.
2) distribuce obsahuje prekladac kgcc pro preklad jadra
- prakticky vsechny distribuce pouzivaji pro preklad jadra jiny
prekladac, nez pro normalni programy. Je to zpusobeno tim, ze
jadro je velmi citlive na jeho zmenu a neni mozne vse jednoduse
otestovat (zejmena vsechny moduly)
- v tomto ohledu je kritika vety "nejde mi prekladacem XY prelozit
jadro" irelevantni, protoze se vztahuje na *vsechny* distribuce,
ktere pouzivaji zvlastni kompilator (prakticky vsechny distribuce)
3) Linux kritizuje Red Hat za pouziti gcc 2.96
- tohle Linus prehnal a posleze pozadal o zasilani patchu, ktere
prizpusobuji jadro pro tento prekladac. Nasledujici verze prekladace
budou pokracovat udanym smerem a *nebudou* se prizpusobovat jadru
(jiste, kazdy prekladac obsahuje chyby - proto se jadra prekladaji
overenymi starymi verzemi a zadny novejsi kompilator se nepouziva
zejmena pro radu 2.2.x)
- kompilator gcc 2.96 neni kompletne 'broken'. Po roce testovani a
vyvoje, kteremu se RH team venoval, je jim prelozena cela distribuce
bez nutnosti vyrabet backporty na nove verze programu (aby byly
kompilovatelne starsimi kompilatory). Linus povazuje za 'broken'
kompilatory podle toho, zda prelozi jadro, ale to neprelozi zadny
kompilator soucasnych distribuci (mini se 100%, v urcitych pripadech
to muze fungovat i s novejsimi)
- kompilator se nebude downgradovat, protoze by pak nebyl schopen
prekladu ostatnich programu v distribuci (zdrojaky jadra tvori
velmi male procento vsech zdrojaku v distribuci a nedovedu si
predstavit, ze by nekdo vyrabel (!zbytecne!) tisice zaplat tak,
aby vse slo kompilovat pomoci 'non-broken' kgcc
- gcc 2.96 je jediny kompilator, ktery nema problemy s kompilaci
vsech programu v distribuci a zaroven jejich kompilaci pro jine
platformy (Sparc, Alpha), je tedy vyrazne jednoticim prvkem
a spravnou volbou (take nejlepe podporovatelnou a nejlepe
udrzovatelnou).
- RH neobsahuje 'broken libraries', obsahuje oficilani verzi
Glibc 2.2. 'Broken' jsou blbe napsane aplikace (par jich je).
Je lepsi opravit aplikace, nez pouzivat stare knihovny.
- podobne vylevy jsem od Linuse cetl uz mnohokrat (na adresu vsech
kompilatoru) a ani tenhle nevybocuje z rady
4) Roztrzka nad balikem modutils
- vyvojar modutils si stezoval, ze s nim RH nespolupracuji a ze
s jinymi distribucemi ma lepsi vztahy. Stezoval si zejmena na to,
ze RH nedodava svoje patche. Bohuzel nadaval na patch, ktery mu nekdo
z RH poslal (takze prece jenom nejake dostava). Patch vracel zmeny
zpusobene prejmenovanim prepinacu, coz ho rozzurilo. Uvedeny patch
vzniknul proto, ze v RH se pouziva jiz dele jadro 2.4 (na zkousku)
a jsou k nemu potreba nove modutils. V oficialni distribuci ale je
jadro 2.2 a neni jednodussi reseni, nez tohle. Neni mozne najednou
uzivatelum jadra 2.2 predhodit neco, co neni kompatibilni s
predchozim stavem i kdyz jadro je stejne.
Rozpadani Open Source zpusobi spise neochota domluvit se, naslouchat
argumentum protistrany a videt veci v sirsich souvislostech, nez pouziti
zdrojaku z CVS.
Dalsi poznamky o tom, ze GCC nebude binarne kompatibilni s verzi 3.0 a
dalsi podobne nesmysly (nebo to jsou jen ucelove nepresna tvrzeni?) jsem
podeprel argumenty uz drive a lze je najit v archivu konference. Zkracene
se to da popsta tak, ze binarni kompatibilita na urovni jazyka C bude
zachovana o kompatibilte na urovni C++ se neda mluvit, protoze standard
jeste neni a neni jiste kdy bude (a tedy zda bude zachovan soucasny stav
nebo budou provedeny nejake dilci zmeny).
Urcite jsem na neco zapomel, ale skutecne me to neustale omilani unavuje.
Predpokladal jsem, ze jsme si to uz vysvetlili...., ale asi jsem se mylil.
--
Milan Kerslager
E-mail: milan.kerslager na spsselib.hiedu.cz
WWW: http://www.spsselib.hiedu.cz/~kerslage/
Další informace o konferenci Linux