Oprav si i Ty svůj oblíbený bug v OpenOffice.org! Jan Holešovský <kendy@suse.cz>
Ještě jednou, o čem že to bude? Něco o mně OpenOffice.org Kde vzít zdrojáky? Jak tu bestii zbuildit? Jak se v těch zdrojácích neztratit? Jak v nich něco změnit? Jak dát změnu světu? Jak tedy opravit bug? Jak mít OpenOffice.org po tom všem rád?
Něco o mně Jan Holešovský SUSE LINUX, s.r.o. [hledáme lidi! ;-) - jobs@suse.cz] Novellí OOo team vývojář OOo dříve KDE, 64bit port nyní věci okolo přístupu k souborům, startu, atd.
OpenOffice.org Kancelářský balík Svobodný software Původně StarDivision, dnes Sun Microsystems StarOffice -> OpenOffice.org -> StarOffice/go- oo/NeoOffice/... Writer (textový editor) Calc (tabulkový procesor) Impress (prezentace) Base (databáze) Draw (kreslení) ...dále grafy, makra, import/export mnoha formátů, ...
Kde vzít zdrojáky? Up-stream http://www.openoffice.org ooo-build http://go-oo.org up-stream checkout + sada patchů jednodušší build v obou případech rozděleny do více tarballů ale ooo-build sám řekne, které jsou potřeba
Jak to zbuildit? ooo-build configure ; ./download ; make ; bin/ooinstall wrappery pro up-stream build up-stream config_office/configure ./bootstrap cd instsetoo_native ; build –all v obou případech build, deliver => solver
Jak se neztratit [1] ./configure, instalace config_office, instsetoo_native nastavení proměnných prostředí pro kompilaci LinuxX86(-64)Env.Set.sh mnoho 3rd party knihoven stlport, jpeg, zlib, openssl, ...[mraky dalších] poznají se snadno, obsahují adresář 'download'
Jak se neztratit [2] abstrakce systému, widgety sal, vcl funkce/typy společné všem aplikacím svx, sfx2 soubory pro instalaci scp2 Writer, Calc, Impress + Draw, Base, Math sw, sc, sd, dbaccess, starmath
Jak se neztratit [3] http://go-oo.org/developers/ lxr – hledání funkcí, typů, textů bonsai – hledání commitů v CVS http://buildbot.go-oo.org bugzilla – zjednodušené odkazy irc.freenode.net #dev.openoffice.org #go-oo
Jak něco změnit? [1] http://wiki.services.openoffice.org/wiki/Hacking vcl/source/window/menu.cxx -aText( rStr ), +aText( OUString( RTL_CONSTASCII_USTRINGPARAM( „Blah“ ) ) Aha! Boj se stringy nečekejte const char * rtl_String, Ostring rtl_uString, OUString String (obsolete, neměl by se používat, ale je na spoustě míst)
Jak něco změnit? [2] Vypsání stringu v kódu: fprintf( stderr, rtl::OUStringToOString( ten_string, RTL_TEXTENCODING_UTF8 ).getStr() ); v gdb: p dbg_dump( ten_string ) v gdb (když to nejde pomocí dbg_dump() ) http://wiki.services.openoffice.org/wiki/Debugging Překlad s debug symboly build debug=true linkoo – vytvoří linky z instalace do stromu
Jak dát změnu světu? ooo-build (http://go-oo.org) stačí poslat na dev@lists.go-oo.org, poradíme, co dál v zásadě pouze commit patche do gnome svn up-stream specifikace iTeam IssueZilla CWS čekání :-( nicméně, to je místo, kde by ideálně všechny patche z ooo-buildu nakonec měly skončit
Jak tedy opravit bug? najít string a dát ho do lxr přebuildit daný modul s debug infem přečíst/vyzkoušet v debuggeru kód okolo ohackovat hotovo :-) ...ehm bug může být hlouběji, pak nutno přebuildit další moduly někdy i mimo OOo – už několik chyb v gcc!
Jak mít OOo rád? Je velký, ale nekouše ;-) moc by pomohlo rozdělení na menší části snažíme se to prosadit, ale up-stream vzdoruje, potřebují monolit :-( Ideální pro lidi, kteří se neradi nudí :-) pořád je co zlepšovat bohužel, nejčastěji jsou chyby v těch nejošklivějších zákoutích jaký je to však krásný pocit takové zákoutí vyčistit! Obrovská uživatelská základna fajn pocit dělat na projektu, který používají miliony lidí...